kernel: replace bgmac patches for BCM47094 with final ones

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 48756
This commit is contained in:
Rafał Miłecki 2016-02-24 22:43:43 +00:00
parent 319863f60e
commit 9e9617a864
5 changed files with 57 additions and 41 deletions

View File

@ -1,6 +1,6 @@
From 1b49522dc7154751401512977d07ad01e5182c47 Mon Sep 17 00:00:00 2001 From 387b75f8b31437792e8334390fdf5cf060d1e3da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
Date: Sat, 30 Jan 2016 00:35:37 +0100 Date: Tue, 2 Feb 2016 07:47:14 +0100
Subject: [PATCH] bgmac: add helper checking for BCM4707 / BCM53018 chip id Subject: [PATCH] bgmac: add helper checking for BCM4707 / BCM53018 chip id
MIME-Version: 1.0 MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8 Content-Type: text/plain; charset=UTF-8
@ -11,9 +11,10 @@ places in the code. It's likely there will be more IDs to check in the
future. To simplify it add this trivial helper. future. To simplify it add this trivial helper.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
--- ---
drivers/net/ethernet/broadcom/bgmac.c | 29 ++++++++++++++++------------- drivers/net/ethernet/broadcom/bgmac.c | 30 ++++++++++++++++--------------
1 file changed, 16 insertions(+), 13 deletions(-) 1 file changed, 16 insertions(+), 14 deletions(-)
--- a/drivers/net/ethernet/broadcom/bgmac.c --- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c
@ -69,7 +70,13 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
rxq_ctl = bgmac_read(bgmac, BGMAC_RXQ_CTL); rxq_ctl = bgmac_read(bgmac, BGMAC_RXQ_CTL);
rxq_ctl &= ~BGMAC_RXQ_CTL_MDP_MASK; rxq_ctl &= ~BGMAC_RXQ_CTL_MDP_MASK;
bp_clk = bcma_pmu_get_bus_clock(&bgmac->core->bus->drv_cc) / bp_clk = bcma_pmu_get_bus_clock(&bgmac->core->bus->drv_cc) /
@@ -1473,8 +1479,7 @@ static int bgmac_mii_register(struct bgm @@ -1467,14 +1473,12 @@ static int bgmac_fixed_phy_register(stru
static int bgmac_mii_register(struct bgmac *bgmac)
{
- struct bcma_chipinfo *ci = &bgmac->core->bus->chipinfo;
struct mii_bus *mii_bus;
struct phy_device *phy_dev;
char bus_id[MII_BUS_ID_SIZE + 3]; char bus_id[MII_BUS_ID_SIZE + 3];
int i, err = 0; int i, err = 0;
@ -79,7 +86,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
return bgmac_fixed_phy_register(bgmac); return bgmac_fixed_phy_register(bgmac);
mii_bus = mdiobus_alloc(); mii_bus = mdiobus_alloc();
@@ -1545,7 +1550,6 @@ static void bgmac_mii_unregister(struct @@ -1545,7 +1549,6 @@ static void bgmac_mii_unregister(struct
/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipattach */ /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipattach */
static int bgmac_probe(struct bcma_device *core) static int bgmac_probe(struct bcma_device *core)
{ {
@ -87,7 +94,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
struct net_device *net_dev; struct net_device *net_dev;
struct bgmac *bgmac; struct bgmac *bgmac;
struct ssb_sprom *sprom = &core->bus->sprom; struct ssb_sprom *sprom = &core->bus->sprom;
@@ -1626,8 +1630,7 @@ static int bgmac_probe(struct bcma_devic @@ -1626,8 +1629,7 @@ static int bgmac_probe(struct bcma_devic
bgmac_chip_reset(bgmac); bgmac_chip_reset(bgmac);
/* For Northstar, we have to take all GMAC core out of reset */ /* For Northstar, we have to take all GMAC core out of reset */

View File

@ -0,0 +1,39 @@
From 9e4e6206c67ae11d68fc96882256f37c237087d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
Date: Mon, 22 Feb 2016 22:51:13 +0100
Subject: [PATCH] bgmac: support Ethernet device on BCM47094 SoC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It needs very similar workarounds to the one on BCM4707. It was tested
on D-Link DIR-885L home router.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/ethernet/broadcom/bgmac.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -30,6 +30,7 @@ static inline bool bgmac_is_bcm4707_fami
{
switch (bgmac->core->bus->chipinfo.id) {
case BCMA_CHIP_ID_BCM4707:
+ case BCMA_CHIP_ID_BCM47094:
case BCMA_CHIP_ID_BCM53018:
return true;
default:
@@ -1047,8 +1048,9 @@ static void bgmac_chip_reset(struct bgma
(ci->id == BCMA_CHIP_ID_BCM53572 && ci->pkg == BCMA_PKG_ID_BCM47188))
iost &= ~BGMAC_BCMA_IOST_ATTACHED;
- /* 3GMAC: for BCM4707, only do core reset at bgmac_probe() */
- if (ci->id != BCMA_CHIP_ID_BCM4707) {
+ /* 3GMAC: for BCM4707 & BCM47094, only do core reset at bgmac_probe() */
+ if (ci->id != BCMA_CHIP_ID_BCM4707 &&
+ ci->id != BCMA_CHIP_ID_BCM47094) {
flags = 0;
if (iost & BGMAC_BCMA_IOST_ATTACHED) {
flags = BGMAC_BCMA_IOCTL_SW_CLKEN;

View File

@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
--- a/drivers/net/ethernet/broadcom/bgmac.c --- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -1641,8 +1641,11 @@ static int bgmac_probe(struct bcma_devic @@ -1645,8 +1645,11 @@ static int bgmac_probe(struct bcma_devic
ns_core = bcma_find_core_unit(core->bus, ns_core = bcma_find_core_unit(core->bus,
BCMA_CORE_MAC_GBIT, BCMA_CORE_MAC_GBIT,
ns_gmac); ns_gmac);

View File

@ -1,30 +0,0 @@
From 64a1905f49391e41e660dd5d079e2c61d5344920 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
Date: Sat, 30 Jan 2016 14:05:37 +0100
Subject: [PATCH] bgmac: support Ethernet device on BCM47094 SoC
It needs very similar workarounds to the one on BCM4707.
---
drivers/net/ethernet/broadcom/bgmac.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -30,6 +30,7 @@ static inline bool bgmac_is_bcm4707_fami
{
switch (bgmac->core->bus->chipinfo.id) {
case BCMA_CHIP_ID_BCM4707:
+ case BCMA_CHIP_ID_BCM47094:
case BCMA_CHIP_ID_BCM53018:
return true;
default:
@@ -1048,7 +1049,8 @@ static void bgmac_chip_reset(struct bgma
iost &= ~BGMAC_BCMA_IOST_ATTACHED;
/* 3GMAC: for BCM4707, only do core reset at bgmac_probe() */
- if (ci->id != BCMA_CHIP_ID_BCM4707) {
+ if (ci->id != BCMA_CHIP_ID_BCM4707 &&
+ ci->id != BCMA_CHIP_ID_BCM47094) {
flags = 0;
if (iost & BGMAC_BCMA_IOST_ATTACHED) {
flags = BGMAC_BCMA_IOCTL_SW_CLKEN;

View File

@ -12,7 +12,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
#include <linux/bcm47xx_nvram.h> #include <linux/bcm47xx_nvram.h>
static const struct bcma_device_id bgmac_bcma_tbl[] = { static const struct bcma_device_id bgmac_bcma_tbl[] = {
@@ -1545,6 +1546,17 @@ static void bgmac_mii_unregister(struct @@ -1544,6 +1545,17 @@ static void bgmac_mii_unregister(struct
mdiobus_free(mii_bus); mdiobus_free(mii_bus);
} }
@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
/************************************************** /**************************************************
* BCMA bus ops * BCMA bus ops
**************************************************/ **************************************************/
@@ -1687,6 +1699,14 @@ static int bgmac_probe(struct bcma_devic @@ -1686,6 +1698,14 @@ static int bgmac_probe(struct bcma_devic
net_dev->hw_features = net_dev->features; net_dev->hw_features = net_dev->features;
net_dev->vlan_features = net_dev->features; net_dev->vlan_features = net_dev->features;
@ -45,7 +45,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
err = register_netdev(bgmac->net_dev); err = register_netdev(bgmac->net_dev);
if (err) { if (err) {
bgmac_err(bgmac, "Cannot register net device\n"); bgmac_err(bgmac, "Cannot register net device\n");
@@ -1713,6 +1733,10 @@ static void bgmac_remove(struct bcma_dev @@ -1712,6 +1732,10 @@ static void bgmac_remove(struct bcma_dev
{ {
struct bgmac *bgmac = bcma_get_drvdata(core); struct bgmac *bgmac = bcma_get_drvdata(core);