diff options
Diffstat (limited to 'target/linux/sunxi/patches-3.13/151-4-stmmac-fixup-4.patch')
-rw-r--r-- | target/linux/sunxi/patches-3.13/151-4-stmmac-fixup-4.patch | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/target/linux/sunxi/patches-3.13/151-4-stmmac-fixup-4.patch b/target/linux/sunxi/patches-3.13/151-4-stmmac-fixup-4.patch deleted file mode 100644 index e006fda..0000000 --- a/target/linux/sunxi/patches-3.13/151-4-stmmac-fixup-4.patch +++ /dev/null @@ -1,214 +0,0 @@ -From 523f11b5d4fd72efb72b04cd7006bfd1d1d4f341 Mon Sep 17 00:00:00 2001 -From: Srinivas Kandagatla <srinivas.kandagatla@st.com> -Date: Thu, 16 Jan 2014 10:52:14 +0000 -Subject: [PATCH] net: stmmac: move hardware setup for stmmac_open to new - function - -This patch moves hardware setup part of the code in stmmac_open to a new -function stmmac_hw_setup, the reason for doing this is to make hw -initialization independent function so that PM functions can re-use it to -re-initialize the IP after returning from low power state. -This will also avoid code duplication across stmmac_resume/restore and -stmmac_open. - -Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com> -Acked-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 155 ++++++++++++---------- - 1 file changed, 88 insertions(+), 67 deletions(-) - -diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -index 532f2b4..341c8dc3 100644 ---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -1586,6 +1586,86 @@ static void stmmac_init_tx_coalesce(struct stmmac_priv *priv) - } - - /** -+ * stmmac_hw_setup: setup mac in a usable state. -+ * @dev : pointer to the device structure. -+ * Description: -+ * This function sets up the ip in a usable state. -+ * Return value: -+ * 0 on success and an appropriate (-)ve integer as defined in errno.h -+ * file on failure. -+ */ -+static int stmmac_hw_setup(struct net_device *dev) -+{ -+ struct stmmac_priv *priv = netdev_priv(dev); -+ int ret; -+ -+ ret = init_dma_desc_rings(dev); -+ if (ret < 0) { -+ pr_err("%s: DMA descriptors initialization failed\n", __func__); -+ return ret; -+ } -+ /* DMA initialization and SW reset */ -+ ret = stmmac_init_dma_engine(priv); -+ if (ret < 0) { -+ pr_err("%s: DMA engine initialization failed\n", __func__); -+ return ret; -+ } -+ -+ /* Copy the MAC addr into the HW */ -+ priv->hw->mac->set_umac_addr(priv->ioaddr, dev->dev_addr, 0); -+ -+ /* If required, perform hw setup of the bus. */ -+ if (priv->plat->bus_setup) -+ priv->plat->bus_setup(priv->ioaddr); -+ -+ /* Initialize the MAC Core */ -+ priv->hw->mac->core_init(priv->ioaddr); -+ -+ /* Enable the MAC Rx/Tx */ -+ stmmac_set_mac(priv->ioaddr, true); -+ -+ /* Set the HW DMA mode and the COE */ -+ stmmac_dma_operation_mode(priv); -+ -+ stmmac_mmc_setup(priv); -+ -+ ret = stmmac_init_ptp(priv); -+ if (ret) -+ pr_warn("%s: failed PTP initialisation\n", __func__); -+ -+#ifdef CONFIG_STMMAC_DEBUG_FS -+ ret = stmmac_init_fs(dev); -+ if (ret < 0) -+ pr_warn("%s: failed debugFS registration\n", __func__); -+#endif -+ /* Start the ball rolling... */ -+ pr_debug("%s: DMA RX/TX processes started...\n", dev->name); -+ priv->hw->dma->start_tx(priv->ioaddr); -+ priv->hw->dma->start_rx(priv->ioaddr); -+ -+ /* Dump DMA/MAC registers */ -+ if (netif_msg_hw(priv)) { -+ priv->hw->mac->dump_regs(priv->ioaddr); -+ priv->hw->dma->dump_regs(priv->ioaddr); -+ } -+ priv->tx_lpi_timer = STMMAC_DEFAULT_TWT_LS; -+ -+ priv->eee_enabled = stmmac_eee_init(priv); -+ -+ stmmac_init_tx_coalesce(priv); -+ -+ if ((priv->use_riwt) && (priv->hw->dma->rx_watchdog)) { -+ priv->rx_riwt = MAX_DMA_RIWT; -+ priv->hw->dma->rx_watchdog(priv->ioaddr, MAX_DMA_RIWT); -+ } -+ -+ if (priv->pcs && priv->hw->mac->ctrl_ane) -+ priv->hw->mac->ctrl_ane(priv->ioaddr, 0); -+ -+ return 0; -+} -+ -+/** - * stmmac_open - open entry point of the driver - * @dev : pointer to the device structure. - * Description: -@@ -1613,6 +1693,10 @@ static int stmmac_open(struct net_device *dev) - } - } - -+ /* Extra statistics */ -+ memset(&priv->xstats, 0, sizeof(struct stmmac_extra_stats)); -+ priv->xstats.threshold = tc; -+ - /* Create and initialize the TX/RX descriptors chains. */ - priv->dma_tx_size = STMMAC_ALIGN(dma_txsize); - priv->dma_rx_size = STMMAC_ALIGN(dma_rxsize); -@@ -1624,28 +1708,14 @@ static int stmmac_open(struct net_device *dev) - goto dma_desc_error; - } - -- ret = init_dma_desc_rings(dev); -+ ret = stmmac_hw_setup(dev); - if (ret < 0) { -- pr_err("%s: DMA descriptors initialization failed\n", __func__); -- goto dma_desc_error; -- } -- -- /* DMA initialization and SW reset */ -- ret = stmmac_init_dma_engine(priv); -- if (ret < 0) { -- pr_err("%s: DMA engine initialization failed\n", __func__); -+ pr_err("%s: Hw setup failed\n", __func__); - goto init_error; - } - -- /* Copy the MAC addr into the HW */ -- priv->hw->mac->set_umac_addr(priv->ioaddr, dev->dev_addr, 0); -- -- /* If required, perform hw setup of the bus. */ -- if (priv->plat->bus_setup) -- priv->plat->bus_setup(priv->ioaddr); -- -- /* Initialize the MAC Core */ -- priv->hw->mac->core_init(priv->ioaddr); -+ if (priv->phydev) -+ phy_start(priv->phydev); - - /* Request the IRQ lines */ - ret = request_irq(dev->irq, stmmac_interrupt, -@@ -1678,55 +1748,6 @@ static int stmmac_open(struct net_device *dev) - } - } - -- /* Enable the MAC Rx/Tx */ -- stmmac_set_mac(priv->ioaddr, true); -- -- /* Set the HW DMA mode and the COE */ -- stmmac_dma_operation_mode(priv); -- -- /* Extra statistics */ -- memset(&priv->xstats, 0, sizeof(struct stmmac_extra_stats)); -- priv->xstats.threshold = tc; -- -- stmmac_mmc_setup(priv); -- -- ret = stmmac_init_ptp(priv); -- if (ret) -- pr_warn("%s: failed PTP initialisation\n", __func__); -- --#ifdef CONFIG_STMMAC_DEBUG_FS -- ret = stmmac_init_fs(dev); -- if (ret < 0) -- pr_warn("%s: failed debugFS registration\n", __func__); --#endif -- /* Start the ball rolling... */ -- pr_debug("%s: DMA RX/TX processes started...\n", dev->name); -- priv->hw->dma->start_tx(priv->ioaddr); -- priv->hw->dma->start_rx(priv->ioaddr); -- -- /* Dump DMA/MAC registers */ -- if (netif_msg_hw(priv)) { -- priv->hw->mac->dump_regs(priv->ioaddr); -- priv->hw->dma->dump_regs(priv->ioaddr); -- } -- -- if (priv->phydev) -- phy_start(priv->phydev); -- -- priv->tx_lpi_timer = STMMAC_DEFAULT_TWT_LS; -- -- priv->eee_enabled = stmmac_eee_init(priv); -- -- stmmac_init_tx_coalesce(priv); -- -- if ((priv->use_riwt) && (priv->hw->dma->rx_watchdog)) { -- priv->rx_riwt = MAX_DMA_RIWT; -- priv->hw->dma->rx_watchdog(priv->ioaddr, MAX_DMA_RIWT); -- } -- -- if (priv->pcs && priv->hw->mac->ctrl_ane) -- priv->hw->mac->ctrl_ane(priv->ioaddr, 0); -- - napi_enable(&priv->napi); - netif_start_queue(dev); - --- -1.8.5.5 - |