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>
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);