Commit ab54bc84 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by John W. Linville

bcma: fill core details for every device

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: default avatarRafał Miłecki <zajec5@gmail.com>
Acked-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 490f0dc4
...@@ -24,6 +24,7 @@ struct bcma_bus; ...@@ -24,6 +24,7 @@ struct bcma_bus;
/* main.c */ /* main.c */
bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value, bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value,
int timeout); int timeout);
void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core);
int bcma_bus_register(struct bcma_bus *bus); int bcma_bus_register(struct bcma_bus *bus);
void bcma_bus_unregister(struct bcma_bus *bus); void bcma_bus_unregister(struct bcma_bus *bus);
int __init bcma_bus_early_register(struct bcma_bus *bus, int __init bcma_bus_early_register(struct bcma_bus *bus,
......
...@@ -169,10 +169,8 @@ static void bcma_of_fill_device(struct platform_device *parent, ...@@ -169,10 +169,8 @@ static void bcma_of_fill_device(struct platform_device *parent,
} }
#endif /* CONFIG_OF */ #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.release = bcma_release_core_dev;
core->dev.bus = &bcma_bus_type; core->dev.bus = &bcma_bus_type;
dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index); 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) ...@@ -196,6 +194,11 @@ static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core)
case BCMA_HOSTTYPE_SDIO: case BCMA_HOSTTYPE_SDIO:
break; break;
} }
}
static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core)
{
int err;
err = device_register(&core->dev); err = device_register(&core->dev);
if (err) { if (err) {
......
...@@ -505,6 +505,7 @@ int bcma_bus_scan(struct bcma_bus *bus) ...@@ -505,6 +505,7 @@ int bcma_bus_scan(struct bcma_bus *bus)
bus->nr_cores++; bus->nr_cores++;
other_core = bcma_find_core_reverse(bus, core->id.id); other_core = bcma_find_core_reverse(bus, core->id.id);
core->core_unit = (other_core == NULL) ? 0 : other_core->core_unit + 1; 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", 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), core->core_index, bcma_device_name(&core->id),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment