Refreshed all patches.
Altered patches:
- 707-dpaa-ethernet-support-layerscape.patch
- 421-rtc-initialize.patch
Remove upstreamed:
- 161-MIPS-BCM47XX-Enable-USB-power-on-Netgear-WNDR3400v3.patch
Compile-tested on: cns3xxx
Runtime-tested on: cns3xxx
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
LINUX_RELEASE?=1
LINUX_VERSION-4.9 = .202
-LINUX_VERSION-4.14 = .154
+LINUX_VERSION-4.14 = .155
LINUX_KERNEL_HASH-4.9.202 = 8108ec1cd10fc40821c84e9f087dba10b1767aad66596f4a36925faef55e4ebf
-LINUX_KERNEL_HASH-4.14.154 = 86de4a24379a78d67fc08b2e249ccf7b689eb6c37fbe329fc3dfbe8ab4300603
+LINUX_KERNEL_HASH-4.14.155 = 77d61979556b81c95b81452fa10e1fe9368cbe2f9f80a13e4669b0464722e481
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
+++ /dev/null
-From 17cb62255ef8f6b6ac270024204a8fa65537b333 Mon Sep 17 00:00:00 2001
-From: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
-Date: Sun, 19 Aug 2018 21:23:14 +0300
-Subject: [PATCH] MIPS: BCM47XX: Enable USB power on Netgear WNDR3400v3
-
-Setting GPIO 21 high seems to be required to enable power to USB ports
-on the WNDR3400v3. As there is already similar code for WNR3500L,
-make the existing USB power GPIO code generic and use that.
-
-Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
----
- arch/mips/bcm47xx/workarounds.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
---- a/arch/mips/bcm47xx/workarounds.c
-+++ b/arch/mips/bcm47xx/workarounds.c
-@@ -5,9 +5,8 @@
- #include <bcm47xx_board.h>
- #include <bcm47xx.h>
-
--static void __init bcm47xx_workarounds_netgear_wnr3500l(void)
-+static void __init bcm47xx_workarounds_enable_usb_power(int usb_power)
- {
-- const int usb_power = 12;
- int err;
-
- err = gpio_request_one(usb_power, GPIOF_OUT_INIT_HIGH, "usb_power");
-@@ -23,7 +22,10 @@ void __init bcm47xx_workarounds(void)
-
- switch (board) {
- case BCM47XX_BOARD_NETGEAR_WNR3500L:
-- bcm47xx_workarounds_netgear_wnr3500l();
-+ bcm47xx_workarounds_enable_usb_power(12);
-+ break;
-+ case BCM47XX_BOARD_NETGEAR_WNDR3400_V3:
-+ bcm47xx_workarounds_enable_usb_power(21);
- break;
- default:
- /* No workaround(s) needed */
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -1722,10 +1722,8 @@ static int bcm_enet_probe(struct platfor
+@@ -1723,10 +1723,8 @@ static int bcm_enet_probe(struct platfor
const char *clk_name;
int i, ret;
res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
res_irq_rx = platform_get_resource(pdev, IORESOURCE_IRQ, 1);
-@@ -2700,11 +2698,8 @@ static int bcm_enetsw_probe(struct platf
+@@ -2701,11 +2699,8 @@ static int bcm_enetsw_probe(struct platf
struct resource *res_mem;
int ret, irq_rx, irq_tx;
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -1767,14 +1767,14 @@ static int bcm_enet_probe(struct platfor
+@@ -1768,14 +1768,14 @@ static int bcm_enet_probe(struct platfor
clk_name = "enet1";
}
/* initialize default and fetch platform data */
priv->rx_ring_size = BCMENET_DEF_RX_DESC;
-@@ -1802,7 +1802,7 @@ static int bcm_enet_probe(struct platfor
+@@ -1803,7 +1803,7 @@ static int bcm_enet_probe(struct platfor
if (priv->mac_id == 0 && priv->has_phy && !priv->use_external_mii) {
/* using internal PHY, enable clock */
if (IS_ERR(priv->phy_clk)) {
ret = PTR_ERR(priv->phy_clk);
priv->phy_clk = NULL;
-@@ -1810,7 +1810,7 @@ static int bcm_enet_probe(struct platfor
+@@ -1811,7 +1811,7 @@ static int bcm_enet_probe(struct platfor
}
ret = clk_prepare_enable(priv->phy_clk);
if (ret)
}
/* do minimal hardware init to be able to probe mii bus */
-@@ -1907,14 +1907,8 @@ out_uninit_hw:
+@@ -1908,14 +1908,8 @@ out_uninit_hw:
if (priv->phy_clk)
clk_disable_unprepare(priv->phy_clk);
out:
free_netdev(dev);
return ret;
-@@ -1950,12 +1944,10 @@ static int bcm_enet_remove(struct platfo
+@@ -1951,12 +1945,10 @@ static int bcm_enet_remove(struct platfo
}
/* disable hw block clocks */
free_netdev(dev);
return 0;
-@@ -2738,26 +2730,20 @@ static int bcm_enetsw_probe(struct platf
+@@ -2739,26 +2731,20 @@ static int bcm_enetsw_probe(struct platf
if (ret)
goto out;
priv->rx_chan = 0;
priv->tx_chan = 1;
-@@ -2789,15 +2775,6 @@ static int bcm_enetsw_probe(struct platf
+@@ -2790,15 +2776,6 @@ static int bcm_enetsw_probe(struct platf
out_disable_clk:
clk_disable_unprepare(priv->mac_clk);
out:
free_netdev(dev);
return ret;
-@@ -2809,20 +2786,13 @@ static int bcm_enetsw_remove(struct plat
+@@ -2810,20 +2787,13 @@ static int bcm_enetsw_remove(struct plat
{
struct bcm_enet_priv *priv;
struct net_device *dev;
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -1904,8 +1904,7 @@ out_free_mdio:
+@@ -1905,8 +1905,7 @@ out_free_mdio:
out_uninit_hw:
/* turn off mdc clock */
enet_writel(priv, 0, ENET_MIISC_REG);
out_disable_clk_mac:
clk_disable_unprepare(priv->mac_clk);
-@@ -1944,9 +1943,7 @@ static int bcm_enet_remove(struct platfo
+@@ -1945,9 +1944,7 @@ static int bcm_enet_remove(struct platfo
}
/* disable hw block clocks */
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -1719,7 +1719,6 @@ static int bcm_enet_probe(struct platfor
+@@ -1720,7 +1720,6 @@ static int bcm_enet_probe(struct platfor
struct bcm63xx_enet_platform_data *pd;
struct resource *res_mem, *res_irq, *res_irq_rx, *res_irq_tx;
struct mii_bus *bus;
int i, ret;
if (!bcm_enet_shared_base[0])
-@@ -1760,14 +1759,12 @@ static int bcm_enet_probe(struct platfor
+@@ -1761,14 +1760,12 @@ static int bcm_enet_probe(struct platfor
if (priv->mac_id == 0) {
priv->rx_chan = 0;
priv->tx_chan = 1;
/*
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -1755,15 +1755,6 @@ static int bcm_enet_probe(struct platfor
+@@ -1756,15 +1756,6 @@ static int bcm_enet_probe(struct platfor
priv->irq_tx = res_irq_tx->start;
priv->mac_id = pdev->id;
priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
if (IS_ERR(priv->mac_clk)) {
ret = PTR_ERR(priv->mac_clk);
-@@ -1795,6 +1786,8 @@ static int bcm_enet_probe(struct platfor
+@@ -1796,6 +1787,8 @@ static int bcm_enet_probe(struct platfor
priv->dma_chan_width = pd->dma_chan_width;
priv->dma_has_sram = pd->dma_has_sram;
priv->dma_desc_shift = pd->dma_desc_shift;
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -1790,7 +1790,7 @@ static int bcm_enet_probe(struct platfor
+@@ -1791,7 +1791,7 @@ static int bcm_enet_probe(struct platfor
priv->tx_chan = pd->tx_chan;
}
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -1753,7 +1753,6 @@ static int bcm_enet_probe(struct platfor
+@@ -1754,7 +1754,6 @@ static int bcm_enet_probe(struct platfor
dev->irq = priv->irq = res_irq->start;
priv->irq_rx = res_irq_rx->start;
priv->irq_tx = res_irq_tx->start;
priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
if (IS_ERR(priv->mac_clk)) {
-@@ -1821,7 +1820,7 @@ static int bcm_enet_probe(struct platfor
+@@ -1822,7 +1821,7 @@ static int bcm_enet_probe(struct platfor
bus->priv = priv;
bus->read = bcm_enet_mdio_read_phylib;
bus->write = bcm_enet_mdio_write_phylib;
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -1636,7 +1636,7 @@ static int bcm_enet_change_mtu(struct ne
+@@ -1637,7 +1637,7 @@ static int bcm_enet_change_mtu(struct ne
return -EBUSY;
/* add ethernet header + vlan tag size */
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -869,10 +869,8 @@ static int bcm_enet_open(struct net_devi
+@@ -870,10 +870,8 @@ static int bcm_enet_open(struct net_devi
struct bcm_enet_priv *priv;
struct sockaddr addr;
struct device *kdev;
void *p;
u32 val;
-@@ -880,40 +878,10 @@ static int bcm_enet_open(struct net_devi
+@@ -881,40 +879,10 @@ static int bcm_enet_open(struct net_devi
kdev = &priv->pdev->dev;
if (priv->has_phy) {
}
/* mask all interrupts and request them */
-@@ -923,7 +891,7 @@ static int bcm_enet_open(struct net_devi
+@@ -924,7 +892,7 @@ static int bcm_enet_open(struct net_devi
ret = request_irq(dev->irq, bcm_enet_isr_mac, 0, dev->name, dev);
if (ret)
ret = request_irq(priv->irq_rx, bcm_enet_isr_dma, 0,
dev->name, dev);
-@@ -1085,8 +1053,8 @@ static int bcm_enet_open(struct net_devi
+@@ -1086,8 +1054,8 @@ static int bcm_enet_open(struct net_devi
enet_dmac_writel(priv, priv->dma_chan_int_mask,
ENETDMAC_IRMASK, priv->tx_chan);
else
bcm_enet_adjust_link(dev);
-@@ -1127,10 +1095,6 @@ out_freeirq_rx:
+@@ -1128,10 +1096,6 @@ out_freeirq_rx:
out_freeirq:
free_irq(dev->irq, dev);
return ret;
}
-@@ -1235,10 +1199,6 @@ static int bcm_enet_stop(struct net_devi
+@@ -1236,10 +1200,6 @@ static int bcm_enet_stop(struct net_devi
free_irq(priv->irq_rx, dev);
free_irq(dev->irq, dev);
return 0;
}
-@@ -1804,14 +1764,49 @@ static int bcm_enet_probe(struct platfor
+@@ -1805,14 +1765,49 @@ static int bcm_enet_probe(struct platfor
/* do minimal hardware init to be able to probe mii bus */
bcm_enet_hw_preinit(priv);
}
bus = priv->mii_bus;
-@@ -1835,6 +1830,35 @@ static int bcm_enet_probe(struct platfor
+@@ -1836,6 +1831,35 @@ static int bcm_enet_probe(struct platfor
dev_err(&pdev->dev, "unable to register mdio bus\n");
goto out_free_mdio;
}
} else {
/* run platform code to initialize PHY device */
-@@ -1842,47 +1866,16 @@ static int bcm_enet_probe(struct platfor
+@@ -1843,47 +1867,16 @@ static int bcm_enet_probe(struct platfor
pd->mii_config(dev, 1, bcm_enet_mdio_read_mii,
bcm_enet_mdio_write_mii)) {
dev_err(&pdev->dev, "unable to configure mdio bus\n");
if (priv->mii_bus)
mdiobus_unregister(priv->mii_bus);
-@@ -1890,6 +1883,9 @@ out_free_mdio:
+@@ -1891,6 +1884,9 @@ out_free_mdio:
if (priv->mii_bus)
mdiobus_free(priv->mii_bus);
out_uninit_hw:
/* turn off mdc clock */
enet_writel(priv, 0, ENET_MIISC_REG);
-@@ -1920,6 +1916,7 @@ static int bcm_enet_remove(struct platfo
+@@ -1921,6 +1917,7 @@ static int bcm_enet_remove(struct platfo
enet_writel(priv, 0, ENET_MIISC_REG);
if (priv->has_phy) {
#define ENETSW_MDIOC_EXT_MASK (1 << 16)
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -2191,6 +2191,18 @@ static int bcm_enetsw_open(struct net_de
+@@ -2192,6 +2192,18 @@ static int bcm_enetsw_open(struct net_de
priv->sw_port_link[i] = 0;
}
#include <bcm63xx_dev_enet.h>
#include "bcm63xx_enet.h"
-@@ -1936,7 +1937,8 @@ static int bcm_enet_remove(struct platfo
+@@ -1937,7 +1938,8 @@ static int bcm_enet_remove(struct platfo
return 0;
}
.probe = bcm_enet_probe,
.remove = bcm_enet_remove,
.driver = {
-@@ -1945,6 +1947,42 @@ struct platform_driver bcm63xx_enet_driv
+@@ -1946,6 +1948,42 @@ struct platform_driver bcm63xx_enet_driv
},
};
/*
* switch mii access callbacks
*/
-@@ -2203,29 +2241,6 @@ static int bcm_enetsw_open(struct net_de
+@@ -2204,29 +2242,6 @@ static int bcm_enetsw_open(struct net_de
enetsw_writeb(priv, rgmii_ctrl, ENETSW_RGMII_CTRL_REG(i));
}
/* initialize flow control buffer allocation */
enet_dma_writel(priv, ENETDMA_BUFALLOC_FORCE_MASK | 0,
ENETDMA_BUFALLOC_REG(priv->rx_chan));
-@@ -2684,6 +2699,9 @@ static int bcm_enetsw_probe(struct platf
+@@ -2685,6 +2700,9 @@ static int bcm_enetsw_probe(struct platf
struct bcm63xx_enetsw_platform_data *pd;
struct resource *res_mem;
int ret, irq_rx, irq_tx;
if (!bcm_enet_shared_base[0])
return -EPROBE_DEFER;
-@@ -2766,6 +2784,43 @@ static int bcm_enetsw_probe(struct platf
+@@ -2767,6 +2785,43 @@ static int bcm_enetsw_probe(struct platf
priv->pdev = pdev;
priv->net_dev = dev;
return 0;
out_disable_clk:
-@@ -2787,6 +2842,9 @@ static int bcm_enetsw_remove(struct plat
+@@ -2788,6 +2843,9 @@ static int bcm_enetsw_remove(struct plat
priv = netdev_priv(dev);
unregister_netdev(dev);
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -2743,9 +2743,9 @@ static int bcm_enetsw_probe(struct platf
+@@ -2744,9 +2744,9 @@ static int bcm_enetsw_probe(struct platf
if (ret)
goto out;
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
-@@ -2238,6 +2238,10 @@ static int bcm_enetsw_open(struct net_de
+@@ -2239,6 +2239,10 @@ static int bcm_enetsw_open(struct net_de
rgmii_ctrl = enetsw_readb(priv, ENETSW_RGMII_CTRL_REG(i));
rgmii_ctrl |= ENETSW_RGMII_CTRL_GMII_CLK_EN;
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
-@@ -1280,11 +1280,13 @@ struct opp_table *dev_pm_opp_set_regulat
+@@ -1292,11 +1292,13 @@ struct opp_table *dev_pm_opp_set_regulat
if (!opp_table)
return ERR_PTR(-ENOMEM);
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
-@@ -1608,6 +1608,83 @@ put_table:
+@@ -1620,6 +1620,83 @@ put_table:
}
/**
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
-@@ -126,6 +126,27 @@ unsigned long dev_pm_opp_get_freq(struct
+@@ -131,6 +131,27 @@ unsigned long dev_pm_opp_get_freq(struct
}
EXPORT_SYMBOL_GPL(dev_pm_opp_get_freq);
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
-@@ -1652,6 +1652,7 @@ int dev_pm_opp_adjust_voltage(struct dev
+@@ -1664,6 +1664,7 @@ int dev_pm_opp_adjust_voltage(struct dev
struct opp_table *opp_table;
struct dev_pm_opp *new_opp, *tmp_opp, *opp = ERR_PTR(-ENODEV);
int r = 0;
/* keep the node allocated */
new_opp = kmalloc(sizeof(*new_opp), GFP_KERNEL);
-@@ -1688,6 +1689,10 @@ int dev_pm_opp_adjust_voltage(struct dev
+@@ -1700,6 +1701,10 @@ int dev_pm_opp_adjust_voltage(struct dev
/* plug in new node */
new_opp->supplies[0].u_volt = u_volt;
--- a/drivers/usb/host/xhci-mtk-sch.c
+++ b/drivers/usb/host/xhci-mtk-sch.c
-@@ -287,12 +287,13 @@ static bool need_bw_sch(struct usb_host_
+@@ -289,12 +289,13 @@ static bool need_bw_sch(struct usb_host_
int xhci_mtk_sch_init(struct xhci_hcd_mtk *mtk)
{
};
static const struct armada38x_rtc_data armada8k_data = {
-@@ -558,6 +580,17 @@ static __init int armada38x_rtc_probe(st
+@@ -558,6 +580,16 @@ static __init int armada38x_rtc_probe(st
+ if (ret)
dev_err(&pdev->dev, "Failed to register RTC device: %d\n", ret);
- return ret;
- }
-+
+
+ /*
+ * Try to detect if RTC is in uninitialized state.
+ * It is not definitive to know if the RTC is in an uninialized state or not,
+ * but the following call will read some bits in the RTC unit and guess if
+ * if it's in that state, and accordingly set it to sane default values.
+ */
-+ if (rtc->data->init_rtc) {
++ else if (rtc->data->init_rtc) {
+ rtc->data->init_rtc(rtc);
+ }
+
- return 0;
+ return ret;
}