Re: [PATCH v3 4/5] bgmac: reset all cores on Northstar SoC
From: Sergei Shtylyov <hidden>
Date: 2014-01-05 13:10:07
Hello. On 05-01-2014 4:10, Hauke Mehrtens wrote:
On the Northstar SoC (BCM4707 and BCM53018) we have to enable all GMAC cores when we just want to use on. We iterate over all the cores and activate them.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Acked-by: Rafał Miłecki <zajec5@gmail.com> --- drivers/net/ethernet/broadcom/bgmac.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c index 88ec69e..2cdacb8 100644 --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c@@ -1446,6 +1446,27 @@ static int bgmac_probe(struct bcma_device *core) bgmac_chip_reset(bgmac); + /* For Northstar, we have to take all GMAC core out of reset */ + if (core->id.id == BCMA_CHIP_ID_BCM4707 || + core->id.id == BCMA_CHIP_ID_BCM53018) { + struct bcma_device *ns_core; + int ns_gmac; + + /* Northstar has 4 GMAC cores */ + for (ns_gmac = 0; ns_gmac < 4; ns_gmac++) { + /* As northstar requirement, we have to reset all GAMCs
Sorry for grammar nitpicking but s/GAMCs/GMACs/? And "northstar" probaby
should be capitalized.
+ * before accessing one. bgmac_chip_reset() call + * bcma_core_enable() for this core. Then the other + * three GAMCs didn't reset. We do it here.
GMACs again?
+ */ + ns_core = bcma_find_core_unit(core->bus, + BCMA_CORE_MAC_GBIT, + ns_gmac); + if (ns_core && !bcma_core_is_enabled(ns_core)) + bcma_core_enable(ns_core, 0); + } + } +
WBR, Sergei