OSDN Git Service

net: ethernet: stmmac: Add support for syscfg clock
authorChristophe Roullier <christophe.roullier@st.com>
Thu, 7 Nov 2019 08:47:54 +0000 (09:47 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 8 Nov 2019 19:21:04 +0000 (11:21 -0800)
Add optional support for syscfg clock in dwmac-stm32.c
Now Syscfg clock is activated automatically when syscfg
registers are used

Signed-off-by: Christophe Roullier <christophe.roullier@st.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c

index 595af2e..95ffaec 100644 (file)
@@ -155,18 +155,14 @@ static int stm32mp1_clk_prepare(struct stm32_dwmac *dwmac, bool prepare)
                ret = clk_prepare_enable(dwmac->syscfg_clk);
                if (ret)
                        return ret;
-
-               if (dwmac->clk_eth_ck) {
-                       ret = clk_prepare_enable(dwmac->clk_eth_ck);
-                       if (ret) {
-                               clk_disable_unprepare(dwmac->syscfg_clk);
+               ret = clk_prepare_enable(dwmac->clk_eth_ck);
+               if (ret) {
+                       clk_disable_unprepare(dwmac->syscfg_clk);
                                return ret;
-                       }
                }
        } else {
                clk_disable_unprepare(dwmac->syscfg_clk);
-               if (dwmac->clk_eth_ck)
-                       clk_disable_unprepare(dwmac->clk_eth_ck);
+               clk_disable_unprepare(dwmac->clk_eth_ck);
        }
        return ret;
 }
@@ -320,12 +316,10 @@ static int stm32mp1_parse_data(struct stm32_dwmac *dwmac,
                return PTR_ERR(dwmac->clk_ethstp);
        }
 
-       /*  Clock for sysconfig */
+       /*  Optional Clock for sysconfig */
        dwmac->syscfg_clk = devm_clk_get(dev, "syscfg-clk");
-       if (IS_ERR(dwmac->syscfg_clk)) {
-               dev_err(dev, "No syscfg clock provided...\n");
-               return PTR_ERR(dwmac->syscfg_clk);
-       }
+       if (IS_ERR(dwmac->syscfg_clk))
+               dwmac->syscfg_clk = NULL;
 
        /* Get IRQ information early to have an ability to ask for deferred
         * probe if needed before we went too far with resource allocation.
@@ -437,8 +431,7 @@ static int stm32mp1_suspend(struct stm32_dwmac *dwmac)
 
        clk_disable_unprepare(dwmac->clk_tx);
        clk_disable_unprepare(dwmac->syscfg_clk);
-       if (dwmac->clk_eth_ck)
-               clk_disable_unprepare(dwmac->clk_eth_ck);
+       clk_disable_unprepare(dwmac->clk_eth_ck);
 
        return ret;
 }