Skip to content

Commit

Permalink
bcma: init sprom struct earlier
Browse files Browse the repository at this point in the history
The PCIe host driver and the chip common initialisation accesses the
sprom struct, but it is not initialized when these functions are run.
Move the sprom parsing up in to do it earlier.
As we need the chip common core rev and some other attributes from the
chip common core, the early initialization is done before accessing the
sprom.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Hauke Mehrtens authored and John W. Linville committed Oct 19, 2012
1 parent 49655bb commit 30cfb02
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions drivers/bcma/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,20 @@ int __devinit bcma_bus_register(struct bcma_bus *bus)
return -1;
}

/* Early init CC core */
core = bcma_find_core(bus, bcma_cc_core_id(bus));
if (core) {
bus->drv_cc.core = core;
bcma_core_chipcommon_early_init(&bus->drv_cc);
}

/* Try to get SPROM */
err = bcma_sprom_get(bus);
if (err == -ENOENT) {
bcma_err(bus, "No SPROM available\n");
} else if (err)
bcma_err(bus, "Failed to get SPROM: %d\n", err);

/* Init CC core */
core = bcma_find_core(bus, bcma_cc_core_id(bus));
if (core) {
Expand Down Expand Up @@ -210,13 +224,6 @@ int __devinit bcma_bus_register(struct bcma_bus *bus)
bcma_core_gmac_cmn_init(&bus->drv_gmac_cmn);
}

/* Try to get SPROM */
err = bcma_sprom_get(bus);
if (err == -ENOENT) {
bcma_err(bus, "No SPROM available\n");
} else if (err)
bcma_err(bus, "Failed to get SPROM: %d\n", err);

/* Register found cores */
bcma_register_cores(bus);

Expand Down

0 comments on commit 30cfb02

Please sign in to comment.