Message ID | 1388880647-7611-5-git-send-email-hauke@hauke-m.de |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
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(+) > 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 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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 + * 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. + */ + 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); + } + } + err = bgmac_dma_alloc(bgmac); if (err) { bgmac_err(bgmac, "Unable to alloc memory for DMA\n");