diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2011-07-22 19:20:07 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-08-08 14:29:24 -0400 |
commit | 517f43e5a922d51ac960424de4f72676fe6a7390 (patch) | |
tree | 02920911d43c4e480ac0eba21c15587776b16d6b /drivers/bcma/driver_chipcommon.c | |
parent | 67a5c29e1623edda5ff3f0355af533e72a245ad9 (diff) |
bcma: add functions to scan cores needed on SoCs
The chip common and mips core have to be setup early in the boot
process to get the cpu clock.
bcma_bus_early_register() gets pointers to some space to store the core
data and searches for the chip common and mips core and initializes
chip common. After that was done and the kernel is out of early boot we
just have to run bcma_bus_register() and it will search for the other
cores, initialize and register them.
The cores are getting the same numbers as before.
Acked-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/bcma/driver_chipcommon.c')
-rw-r--r-- | drivers/bcma/driver_chipcommon.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/bcma/driver_chipcommon.c b/drivers/bcma/driver_chipcommon.c index 851e05bc948a..acca327db3de 100644 --- a/drivers/bcma/driver_chipcommon.c +++ b/drivers/bcma/driver_chipcommon.c | |||
@@ -26,6 +26,9 @@ void bcma_core_chipcommon_init(struct bcma_drv_cc *cc) | |||
26 | u32 leddc_on = 10; | 26 | u32 leddc_on = 10; |
27 | u32 leddc_off = 90; | 27 | u32 leddc_off = 90; |
28 | 28 | ||
29 | if (cc->setup_done) | ||
30 | return; | ||
31 | |||
29 | if (cc->core->id.rev >= 11) | 32 | if (cc->core->id.rev >= 11) |
30 | cc->status = bcma_cc_read32(cc, BCMA_CC_CHIPSTAT); | 33 | cc->status = bcma_cc_read32(cc, BCMA_CC_CHIPSTAT); |
31 | cc->capabilities = bcma_cc_read32(cc, BCMA_CC_CAP); | 34 | cc->capabilities = bcma_cc_read32(cc, BCMA_CC_CAP); |
@@ -52,6 +55,8 @@ void bcma_core_chipcommon_init(struct bcma_drv_cc *cc) | |||
52 | ((leddc_on << BCMA_CC_GPIOTIMER_ONTIME_SHIFT) | | 55 | ((leddc_on << BCMA_CC_GPIOTIMER_ONTIME_SHIFT) | |
53 | (leddc_off << BCMA_CC_GPIOTIMER_OFFTIME_SHIFT))); | 56 | (leddc_off << BCMA_CC_GPIOTIMER_OFFTIME_SHIFT))); |
54 | } | 57 | } |
58 | |||
59 | cc->setup_done = true; | ||
55 | } | 60 | } |
56 | 61 | ||
57 | /* Set chip watchdog reset timer to fire in 'ticks' backplane cycles */ | 62 | /* Set chip watchdog reset timer to fire in 'ticks' backplane cycles */ |