bcma: fill core details for every device
authorRafał Miłecki <zajec5@gmail.com>
Fri, 3 Oct 2014 15:00:24 +0000 (17:00 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 27 Oct 2014 18:16:13 +0000 (14:16 -0400)
We were setting things like dma_dev, IRQ, etc. during core registration
only. We need such info for cores handled internally (e.g. ChipCommon)
as well.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/bcma/bcma_private.h
drivers/bcma/main.c
drivers/bcma/scan.c

index b6412b2d748dd11d6236963432c3984dd537f704..314ae4032f3e7347ee2f4d391bab32964fad0594 100644 (file)
@@ -24,6 +24,7 @@ struct bcma_bus;
 /* main.c */
 bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value,
                     int timeout);
+void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core);
 int bcma_bus_register(struct bcma_bus *bus);
 void bcma_bus_unregister(struct bcma_bus *bus);
 int __init bcma_bus_early_register(struct bcma_bus *bus,
index d1656c2f70afa43198066681f6a02ded26eab80b..9b229c9c35e5086b36b82035b2ed52962673b946 100644 (file)
@@ -169,10 +169,8 @@ static void bcma_of_fill_device(struct platform_device *parent,
 }
 #endif /* CONFIG_OF */
 
-static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core)
+void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core)
 {
-       int err;
-
        core->dev.release = bcma_release_core_dev;
        core->dev.bus = &bcma_bus_type;
        dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index);
@@ -196,6 +194,11 @@ static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core)
        case BCMA_HOSTTYPE_SDIO:
                break;
        }
+}
+
+static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core)
+{
+       int err;
 
        err = device_register(&core->dev);
        if (err) {
index 14b56561a36f10713cc5c470b838b25da4687999..917520776879255c94350f5458e079ecb07df062 100644 (file)
@@ -505,6 +505,7 @@ int bcma_bus_scan(struct bcma_bus *bus)
                bus->nr_cores++;
                other_core = bcma_find_core_reverse(bus, core->id.id);
                core->core_unit = (other_core == NULL) ? 0 : other_core->core_unit + 1;
+               bcma_prepare_core(bus, core);
 
                bcma_info(bus, "Core %d found: %s (manuf 0x%03X, id 0x%03X, rev 0x%02X, class 0x%X)\n",
                          core->core_index, bcma_device_name(&core->id),