NET: designware: fix clock enable
authorEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Tue, 6 Feb 2018 14:12:09 +0000 (17:12 +0300)
committerJoe Hershberger <joe.hershberger@ni.com>
Mon, 26 Feb 2018 21:49:26 +0000 (15:49 -0600)
After commit ba1f966725223 ("net: designware: add clock support")
we got NET broken on axs101 and axs103 platforms.

Some clock don't support gating so their clock drivers don't
implement .enable/.disable callbacks. In such case clk_enable
returns -ENOSYS.
Also some clock drivers implement .enable/.disable callbacks not for all
clock IDs and return -ENOSYS (or -ENOTSUPP) for others.

If we have such clock in 'clocks' list of designware ethernet controller
node we fail to probe designware ethernet.

Fix it.

Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
drivers/net/designware.c

index 6d5307128d866ca23f9e9fbbc0f8945aa12f0460..43670a7d0c91ac0f9f62eb163026285da0db5a70 100644 (file)
@@ -684,7 +684,7 @@ int designware_eth_probe(struct udevice *dev)
                                break;
 
                        err = clk_enable(&priv->clocks[i]);
-                       if (err) {
+                       if (err && err != -ENOSYS && err != -ENOTSUPP) {
                                pr_err("failed to enable clock %d\n", i);
                                clk_free(&priv->clocks[i]);
                                goto clk_err;