kernel: update kernel 4.4 to version 4.4.9
[openwrt/staging/rmilecki.git] / target / linux / mediatek / patches-4.4 / 0089-net-mediatek-add-gsw-mt7530-driver.patch
index 85b80c8f01776c5cca65a389508bc179b0eb0123..8ddfb8d288fd6ddc8f49fe6908281c570577f437 100644 (file)
@@ -1,4 +1,4 @@
-From 4c23129f65d9bac10d9cf88c45fced58597400e6 Mon Sep 17 00:00:00 2001
+From 46f10e3c9c25668efb85babe9ac5e37d019c2794 Mon Sep 17 00:00:00 2001
 From: John Crispin <blogic@openwrt.org>
 Date: Mon, 11 Apr 2016 03:11:54 +0200
 Subject: [PATCH 89/91] net: mediatek add gsw/mt7530 driver
@@ -7,19 +7,17 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 ---
  drivers/net/ethernet/mediatek/Makefile      |    2 +-
  drivers/net/ethernet/mediatek/gsw_mt7620.h  |  251 +++++++
- drivers/net/ethernet/mediatek/gsw_mt7623.c  | 1081 +++++++++++++++++++++++++++
+ drivers/net/ethernet/mediatek/gsw_mt7623.c  | 1084 +++++++++++++++++++++++++++
  drivers/net/ethernet/mediatek/mt7530.c      |  808 ++++++++++++++++++++
  drivers/net/ethernet/mediatek/mt7530.h      |   20 +
  drivers/net/ethernet/mediatek/mtk_eth_soc.c |   59 +-
  drivers/net/ethernet/mediatek/mtk_eth_soc.h |    4 +
- 7 files changed, 2195 insertions(+), 30 deletions(-)
+ 7 files changed, 2198 insertions(+), 30 deletions(-)
  create mode 100644 drivers/net/ethernet/mediatek/gsw_mt7620.h
  create mode 100644 drivers/net/ethernet/mediatek/gsw_mt7623.c
  create mode 100644 drivers/net/ethernet/mediatek/mt7530.c
  create mode 100644 drivers/net/ethernet/mediatek/mt7530.h
 
-diff --git a/drivers/net/ethernet/mediatek/Makefile b/drivers/net/ethernet/mediatek/Makefile
-index aa3f1c8..82001c4 100644
 --- a/drivers/net/ethernet/mediatek/Makefile
 +++ b/drivers/net/ethernet/mediatek/Makefile
 @@ -2,4 +2,4 @@
@@ -28,9 +26,6 @@ index aa3f1c8..82001c4 100644
  
 -obj-$(CONFIG_NET_MEDIATEK_SOC)                        += mtk_eth_soc.o
 +obj-$(CONFIG_NET_MEDIATEK_SOC)                        += mt7530.o gsw_mt7623.o mtk_eth_soc.o
-diff --git a/drivers/net/ethernet/mediatek/gsw_mt7620.h b/drivers/net/ethernet/mediatek/gsw_mt7620.h
-new file mode 100644
-index 0000000..6fca8f2
 --- /dev/null
 +++ b/drivers/net/ethernet/mediatek/gsw_mt7620.h
 @@ -0,0 +1,251 @@
@@ -285,12 +280,9 @@ index 0000000..6fca8f2
 +void mt7620_handle_carrier(struct mtk_eth *eth);
 +
 +#endif
-diff --git a/drivers/net/ethernet/mediatek/gsw_mt7623.c b/drivers/net/ethernet/mediatek/gsw_mt7623.c
-new file mode 100644
-index 0000000..28df15a
 --- /dev/null
 +++ b/drivers/net/ethernet/mediatek/gsw_mt7623.c
-@@ -0,0 +1,1081 @@
+@@ -0,0 +1,1084 @@
 +/*   This program is free software; you can redistribute it and/or modify
 + *   it under the terms of the GNU General Public License as published by
 + *   the Free Software Foundation; version 2 of the License
@@ -1331,6 +1323,9 @@ index 0000000..28df15a
 +      if (ret)
 +              return ret;
 +
++      regmap_write(gsw->ethsys, 0x34, 0x800000);
++      regmap_write(gsw->ethsys, 0x34, 0x0);
++
 +      clk_prepare_enable(gsw->clk_trgpll);
 +
 +      gpio_direction_output(reset_pin, 0);
@@ -1372,9 +1367,6 @@ index 0000000..28df15a
 +MODULE_LICENSE("GPL");
 +MODULE_AUTHOR("John Crispin <blogic@openwrt.org>");
 +MODULE_DESCRIPTION("GBit switch driver for Mediatek MT7623 SoC");
-diff --git a/drivers/net/ethernet/mediatek/mt7530.c b/drivers/net/ethernet/mediatek/mt7530.c
-new file mode 100644
-index 0000000..2e9d280
 --- /dev/null
 +++ b/drivers/net/ethernet/mediatek/mt7530.c
 @@ -0,0 +1,808 @@
@@ -2186,9 +2178,6 @@ index 0000000..2e9d280
 +
 +      return 0;
 +}
-diff --git a/drivers/net/ethernet/mediatek/mt7530.h b/drivers/net/ethernet/mediatek/mt7530.h
-new file mode 100644
-index 0000000..1fc8c62
 --- /dev/null
 +++ b/drivers/net/ethernet/mediatek/mt7530.h
 @@ -0,0 +1,20 @@
@@ -2212,8 +2201,6 @@ index 0000000..1fc8c62
 +int mt7530_probe(struct device *dev, void __iomem *base, struct mii_bus *bus, int vlan);
 +
 +#endif
-diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-index b5e364c..eee4324a 100644
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 @@ -24,6 +24,9 @@
@@ -2226,7 +2213,7 @@ index b5e364c..eee4324a 100644
  static int mtk_msg_level = -1;
  module_param_named(msg_level, mtk_msg_level, int, 0);
  MODULE_PARM_DESC(msg_level, "Message level (-1=defaults,0=none,...,16=all)");
-@@ -69,7 +72,7 @@ static int mtk_mdio_busy_wait(struct mtk_eth *eth)
+@@ -69,7 +72,7 @@ static int mtk_mdio_busy_wait(struct mtk
                        return 0;
                if (time_after(jiffies, t_start + PHY_IAC_TIMEOUT))
                        break;
@@ -2235,7 +2222,7 @@ index b5e364c..eee4324a 100644
        }
  
        dev_err(eth->dev, "mdio: MDIO timeout\n");
-@@ -1407,15 +1410,6 @@ static int __init mtk_hw_init(struct mtk_eth *eth)
+@@ -1408,15 +1411,6 @@ static int __init mtk_hw_init(struct mtk
        reset_control_deassert(eth->rstc);
        usleep_range(10, 20);
  
@@ -2251,7 +2238,7 @@ index b5e364c..eee4324a 100644
        /* GE1, Force 1000M/FD, FC ON */
        mtk_w32(eth, MAC_MCR_FIXED_LINK, MTK_MAC_MCR(0));
  
-@@ -1438,6 +1432,8 @@ static int __init mtk_hw_init(struct mtk_eth *eth)
+@@ -1439,6 +1433,8 @@ static int __init mtk_hw_init(struct mtk
        if (err)
                return err;
  
@@ -2260,7 +2247,7 @@ index b5e364c..eee4324a 100644
        /* disable delay and normal interrupt */
        mtk_w32(eth, 0, MTK_QDMA_DELAY_INT);
        mtk_irq_disable(eth, MTK_TX_DONE_INT | MTK_RX_DONE_INT);
-@@ -1465,6 +1461,8 @@ static int __init mtk_hw_init(struct mtk_eth *eth)
+@@ -1466,6 +1462,8 @@ static int __init mtk_hw_init(struct mtk
                mtk_w32(eth, val, MTK_GDMA_FWD_CFG(i));
        }
  
@@ -2269,7 +2256,7 @@ index b5e364c..eee4324a 100644
        return 0;
  }
  
-@@ -1720,7 +1718,7 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
+@@ -1721,7 +1719,7 @@ static int mtk_add_mac(struct mtk_eth *e
  {
        struct mtk_mac *mac;
        const __be32 *_id = of_get_property(np, "reg", NULL);
@@ -2278,7 +2265,7 @@ index b5e364c..eee4324a 100644
  
        if (!_id) {
                dev_err(eth->dev, "missing mac id\n");
-@@ -1754,8 +1752,8 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
+@@ -1755,8 +1753,8 @@ static int mtk_add_mac(struct mtk_eth *e
                                     GFP_KERNEL);
        if (!mac->hw_stats) {
                dev_err(eth->dev, "failed to allocate counter memory\n");
@@ -2289,7 +2276,7 @@ index b5e364c..eee4324a 100644
        }
        spin_lock_init(&mac->hw_stats->stats_lock);
        mac->hw_stats->reg_offset = id * MTK_STAT_OFFSET;
-@@ -1769,21 +1767,9 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
+@@ -1770,21 +1768,9 @@ static int mtk_add_mac(struct mtk_eth *e
        eth->netdev[id]->features |= MTK_HW_FEATURES;
        eth->netdev[id]->ethtool_ops = &mtk_ethtool_ops;
  
@@ -2311,7 +2298,7 @@ index b5e364c..eee4324a 100644
  }
  
  static int mtk_probe(struct platform_device *pdev)
-@@ -1851,14 +1837,13 @@ static int mtk_probe(struct platform_device *pdev)
+@@ -1852,14 +1838,13 @@ static int mtk_probe(struct platform_dev
        clk_prepare_enable(eth->clk_gp1);
        clk_prepare_enable(eth->clk_gp2);
  
@@ -2329,7 +2316,7 @@ index b5e364c..eee4324a 100644
        for_each_child_of_node(pdev->dev.of_node, mac_np) {
                if (!of_device_is_compatible(mac_np,
                                             "mediatek,eth-mac"))
-@@ -1872,6 +1857,22 @@ static int mtk_probe(struct platform_device *pdev)
+@@ -1873,6 +1858,22 @@ static int mtk_probe(struct platform_dev
                        goto err_free_dev;
        }
  
@@ -2352,8 +2339,6 @@ index b5e364c..eee4324a 100644
        /* we run 2 devices on the same DMA ring so we need a dummy device
         * for NAPI to work
         */
-diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
-index bf158f8..5093518 100644
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
 @@ -406,6 +406,8 @@ struct mtk_eth {
@@ -2365,13 +2350,10 @@ index bf158f8..5093518 100644
  };
  
  /* struct mtk_mac -   the structure that holds the info about the MACs of the
-@@ -433,4 +435,6 @@ void mtk_stats_update_mac(struct mtk_mac *mac);
+@@ -433,4 +435,6 @@ void mtk_stats_update_mac(struct mtk_mac
  void mtk_w32(struct mtk_eth *eth, u32 val, unsigned reg);
  u32 mtk_r32(struct mtk_eth *eth, unsigned reg);
  
 +int mt7623_gsw_config(struct mtk_eth *eth);
 +
  #endif /* MTK_ETH_H */
--- 
-1.7.10.4
-