mfd: core: Fix platform-device id generation
authorJohan Hovold <johan@kernel.org>
Fri, 26 Sep 2014 10:55:33 +0000 (12:55 +0200)
committerLee Jones <lee.jones@linaro.org>
Tue, 25 Nov 2014 16:18:43 +0000 (16:18 +0000)
Make sure to always honour multi-function devices registered with
PLATFORM_DEVID_NONE (-1) or PLATFORM_DEVID_AUTO (-2) as id base. In this
case it does not make sense to append the cell id to the mfd-id base and
potentially change the requested behaviour.

Specifically this will allow multi-function devices to be registered
with PLATFORM_DEVID_AUTO while still having non-zero cell ids.

Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/mfd-core.c

index f3338fe9d0691832ba9e13b984bf7aa428e65339..2a87f69be53db0a4ca1951fd7cbc3d7733e44007 100644 (file)
@@ -125,9 +125,15 @@ static int mfd_add_device(struct device *parent, int id,
        struct platform_device *pdev;
        struct device_node *np = NULL;
        int ret = -ENOMEM;
+       int platform_id;
        int r;
 
-       pdev = platform_device_alloc(cell->name, id + cell->id);
+       if (id < 0)
+               platform_id = id;
+       else
+               platform_id = id + cell->id;
+
+       pdev = platform_device_alloc(cell->name, platform_id);
        if (!pdev)
                goto fail_alloc;