stmmac: dwmac-sti: Pass sysconfig register offset via syscon dt property.
[deliverable/linux.git] / drivers / net / ethernet / stmicro / stmmac / dwmac-sti.c
index 0e137751e76e45b4e904a9156c6a4a07aad58e09..bb6e2dc61bec7dc8baac541e7bf390759caf017f 100644 (file)
@@ -122,7 +122,7 @@ struct sti_dwmac {
        bool ext_phyclk;        /* Clock from external PHY */
        u32 tx_retime_src;      /* TXCLK Retiming*/
        struct clk *clk;        /* PHY clock */
-       int ctrl_reg;           /* GMAC glue-logic control register */
+       u32 ctrl_reg;           /* GMAC glue-logic control register */
        int clk_sel_reg;        /* GMAC ext clk selection register */
        struct device *dev;
        struct regmap *regmap;
@@ -285,11 +285,6 @@ static int sti_dwmac_parse_data(struct sti_dwmac *dwmac,
        if (!np)
                return -EINVAL;
 
-       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "sti-ethconf");
-       if (!res)
-               return -ENODATA;
-       dwmac->ctrl_reg = res->start;
-
        /* clk selection from extra syscfg register */
        dwmac->clk_sel_reg = -ENXIO;
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "sti-clkconf");
@@ -300,6 +295,12 @@ static int sti_dwmac_parse_data(struct sti_dwmac *dwmac,
        if (IS_ERR(regmap))
                return PTR_ERR(regmap);
 
+       err = of_property_read_u32_index(np, "st,syscon", 1, &dwmac->ctrl_reg);
+       if (err) {
+               dev_err(dev, "Can't get sysconfig ctrl offset (%d)\n", err);
+               return err;
+       }
+
        dwmac->dev = dev;
        dwmac->interface = of_get_phy_mode(np);
        dwmac->regmap = regmap;
@@ -309,16 +310,16 @@ static int sti_dwmac_parse_data(struct sti_dwmac *dwmac,
 
        if (IS_PHY_IF_MODE_GBIT(dwmac->interface)) {
                const char *rs;
-               dwmac->tx_retime_src = TX_RETIME_SRC_CLKGEN;
 
                err = of_property_read_string(np, "st,tx-retime-src", &rs);
-               if (err < 0)
+               if (err < 0) {
                        dev_warn(dev, "Use internal clock source\n");
-
-               if (!strcasecmp(rs, "clk_125"))
+                       dwmac->tx_retime_src = TX_RETIME_SRC_CLKGEN;
+               } else if (!strcasecmp(rs, "clk_125")) {
                        dwmac->tx_retime_src = TX_RETIME_SRC_CLK_125;
-               else if (!strcasecmp(rs, "txclk"))
+               } else if (!strcasecmp(rs, "txclk")) {
                        dwmac->tx_retime_src = TX_RETIME_SRC_TXCLK;
+               }
 
                dwmac->speed = SPEED_1000;
        }
This page took 0.025836 seconds and 5 git commands to generate.