Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> --- drivers/base/driver.c | 3 +++ drivers/base/platform.c | 16 ++++++++-------- include/driver.h | 1 + 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/base/driver.c b/drivers/base/driver.c index dfd81c5..33eb016 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -120,6 +120,9 @@ int register_device(struct device_d *new_device) new_device->bus = &platform_bus; } + if (!new_device->parent && new_device->bus == &platform_bus) + dev_add_child(&platform_bus_device, new_device); + list_add_tail(&new_device->list, &device_list); INIT_LIST_HEAD(&new_device->children); INIT_LIST_HEAD(&new_device->cdevs); diff --git a/drivers/base/platform.c b/drivers/base/platform.c index e0dd9ea..60c87d3 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -21,6 +21,7 @@ */ #include <common.h> #include <driver.h> +#include <init.h> static int platform_match(struct device_d *dev, struct driver_d *drv) { @@ -44,15 +45,14 @@ struct bus_type platform_bus = { .remove = platform_remove, }; -#if 0 -LIST_HEAD(bus_list); -EXPORT_SYMBOL(bus_list); +struct device_d platform_bus_device = { + .id = -1, + .name = "platform", +}; -int bus_register(struct bus_type *bus) +static int platform_bus_init(void) { - list_add_tail(&bus->list, &bus_list); - + register_bus_device(&platform_bus_device); return 0; } -#endif - +postcore_initcall(platform_bus_init); diff --git a/include/driver.h b/include/driver.h index ab7424e..c122cf2 100644 --- a/include/driver.h +++ b/include/driver.h @@ -370,6 +370,7 @@ struct bus_type { }; extern struct bus_type platform_bus; +extern struct device_d platform_bus_device; struct file_operations { /*! Called in response of reading from this device. Required */ -- 1.7.5.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox