| From a77c50b44cfb663ad03faba9800fec19bdf83577 Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <johan@kernel.org> |
| Date: Wed, 25 Mar 2015 12:07:05 +0100 |
| Subject: mfd: core: Fix platform-device name collisions |
| |
| From: Johan Hovold <johan@kernel.org> |
| |
| commit a77c50b44cfb663ad03faba9800fec19bdf83577 upstream. |
| |
| Since commit 6e3f62f0793e ("mfd: core: Fix platform-device id |
| generation") we honour PLATFORM_DEVID_AUTO and PLATFORM_DEVID_NONE when |
| registering mfd-devices. |
| |
| Unfortunately, some mfd-drivers rely on the old behaviour of generating |
| platform-device ids by adding the cell id also to the special value of |
| PLATFORM_DEVID_NONE. The resulting platform ids are not only used to |
| generate device-unique names, but are also used instead of the cell id |
| to identify cells when probing subdevices. |
| |
| These drivers should be updated to use PLATFORM_DEVID_AUTO, which would |
| also allow more than one device to be registered without resorting to |
| hacks (see for example wm831x), but lets fix the regression first by |
| partially reverting the above mentioned commit with respect to |
| PLATFORM_DEVID_NONE. |
| |
| Fixes: 6e3f62f0793e ("mfd: core: Fix platform-device id generation") |
| Reported-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> |
| Signed-off-by: Lee Jones <lee.jones@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/mfd/mfd-core.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/mfd/mfd-core.c |
| +++ b/drivers/mfd/mfd-core.c |
| @@ -128,7 +128,7 @@ static int mfd_add_device(struct device |
| int platform_id; |
| int r; |
| |
| - if (id < 0) |
| + if (id == PLATFORM_DEVID_AUTO) |
| platform_id = id; |
| else |
| platform_id = id + cell->id; |