X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fgeneric%2Fpatches-4.4%2F773-bgmac-add-srab-switch.patch;h=5e358c38c1d0b4a338ee98d123449438eefe8a24;hb=de350550ef648d9728351b986b0516fa29465c45;hp=46f01d03a81beeb653d19f4735f4f217fc96b62d;hpb=9e9617a864c2dcb886ca8cd1b1e009e8841c8e8b;p=openwrt%2Fopenwrt.git diff --git a/target/linux/generic/patches-4.4/773-bgmac-add-srab-switch.patch b/target/linux/generic/patches-4.4/773-bgmac-add-srab-switch.patch index 46f01d03a8..5e358c38c1 100644 --- a/target/linux/generic/patches-4.4/773-bgmac-add-srab-switch.patch +++ b/target/linux/generic/patches-4.4/773-bgmac-add-srab-switch.patch @@ -4,17 +4,17 @@ Signed-off-by: Hauke Mehrtens --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -17,6 +17,7 @@ - #include - #include - #include +@@ -11,6 +11,7 @@ + + #include + #include +#include #include + #include "bgmac.h" - static const struct bcma_device_id bgmac_bcma_tbl[] = { -@@ -1544,6 +1545,17 @@ static void bgmac_mii_unregister(struct - mdiobus_free(mii_bus); - } +@@ -1403,6 +1404,17 @@ static const struct ethtool_ops bgmac_et + .get_drvinfo = bgmac_get_drvinfo, + }; +static struct b53_platform_data bgmac_b53_pdata = { +}; @@ -28,13 +28,13 @@ Signed-off-by: Hauke Mehrtens +}; + /************************************************** - * BCMA bus ops + * MII **************************************************/ -@@ -1686,6 +1698,14 @@ static int bgmac_probe(struct bcma_devic +@@ -1549,6 +1561,14 @@ int bgmac_enet_probe(struct bgmac *bgmac net_dev->hw_features = net_dev->features; net_dev->vlan_features = net_dev->features; -+ if (bgmac_is_bcm4707_family(bgmac) && !bgmac_b53_pdata.regs) { ++ if ((bgmac->feature_flags & BGMAC_FEAT_SRAB) && !bgmac_b53_pdata.regs) { + bgmac_b53_pdata.regs = ioremap_nocache(0x18007000, 0x1000); + + err = platform_device_register(&bgmac_b53_dev); @@ -44,27 +44,45 @@ Signed-off-by: Hauke Mehrtens + err = register_netdev(bgmac->net_dev); if (err) { - bgmac_err(bgmac, "Cannot register net device\n"); -@@ -1712,6 +1732,10 @@ static void bgmac_remove(struct bcma_dev - { - struct bgmac *bgmac = bcma_get_drvdata(core); + dev_err(bgmac->dev, "Cannot register net device\n"); +@@ -1571,6 +1591,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe); + void bgmac_enet_remove(struct bgmac *bgmac) + { + if (bgmac->b53_device) + platform_device_unregister(&bgmac_b53_dev); + bgmac->b53_device = NULL; + unregister_netdev(bgmac->net_dev); - bgmac_mii_unregister(bgmac); + phy_disconnect(bgmac->net_dev->phydev); netif_napi_del(&bgmac->napi); --- a/drivers/net/ethernet/broadcom/bgmac.h +++ b/drivers/net/ethernet/broadcom/bgmac.h -@@ -463,6 +463,9 @@ struct bgmac { - bool has_robosw; +@@ -409,6 +409,7 @@ + #define BGMAC_FEAT_CC4_IF_SW_TYPE BIT(17) + #define BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII BIT(18) + #define BGMAC_FEAT_CC7_IF_TYPE_RGMII BIT(19) ++#define BGMAC_FEAT_SRAB BIT(20) - bool loopback; + struct bgmac_slot_info { + union { +@@ -513,6 +514,9 @@ struct bgmac { + u32 (*get_bus_clock)(struct bgmac *bgmac); + void (*cmn_maskset32)(struct bgmac *bgmac, u16 offset, u32 mask, + u32 set); + + /* platform device for associated switch */ + struct platform_device *b53_device; }; - static inline u32 bgmac_read(struct bgmac *bgmac, u16 offset) + struct bgmac *bgmac_alloc(struct device *dev); +--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c ++++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c +@@ -230,6 +230,7 @@ static int bgmac_probe(struct bcma_devic + bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; + bgmac->feature_flags |= BGMAC_FEAT_NO_RESET; + bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500; ++ bgmac->feature_flags |= BGMAC_FEAT_SRAB; + break; + case BCMA_CHIP_ID_BCM53573: + bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;