greybus: fix gb_add_module() by enabling the device_add()
authorMatt Porter <mporter@linaro.org>
Fri, 3 Oct 2014 17:38:24 +0000 (13:38 -0400)
committerGreg Kroah-Hartman <greg@kroah.com>
Fri, 3 Oct 2014 18:51:58 +0000 (11:51 -0700)
Without the gb_module device being added, we have no parent
device for any of the greybus subdevs to be added. Do the
device_add() before creating subdevs as we need it then
to register any children in the various greybus protocol
drivers.

Signed-off-by: Matt Porter <mporter@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
drivers/staging/greybus/core.c

index 9669a34..8237f5f 100644 (file)
@@ -231,14 +231,20 @@ void gb_add_module(struct greybus_host_device *hd, u8 module_id,
        device_initialize(&gmod->dev);
        dev_set_name(&gmod->dev, "%d", module_id);
 
-       retval = gb_init_subdevs(gmod, &fake_greybus_module_id);
+       retval = device_add(&gmod->dev);
        if (retval)
                goto error;
 
-       // FIXME device_add(&gmod->dev);
+       retval = gb_init_subdevs(gmod, &fake_greybus_module_id);
+       if (retval)
+               goto error_subdevs;
 
        //return gmod;
        return;
+
+error_subdevs:
+       device_del(&gmod->dev);
+
 error:
        put_device(&gmod->dev);
        greybus_module_release(&gmod->dev);