]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
dt:net:stmmac: Add support to dwmac version 3.610 and 3.710
[karo-tx-linux.git] / drivers / net / ethernet / stmicro / stmmac / stmmac_platform.c
index adfb9a3ce6c574df4e0df7154f81d7ce16362cad..03de76c7a177b6c9b54d571370e92d697c9a9ef6 100644 (file)
@@ -34,12 +34,20 @@ static int stmmac_probe_config_dt(struct platform_device *pdev,
                                  const char **mac)
 {
        struct device_node *np = pdev->dev.of_node;
+       struct stmmac_dma_cfg *dma_cfg;
 
        if (!np)
                return -ENODEV;
 
        *mac = of_get_mac_address(np);
        plat->interface = of_get_phy_mode(np);
+
+       plat->bus_id = of_alias_get_id(np, "ethernet");
+       if (plat->bus_id < 0)
+               plat->bus_id = 0;
+
+       of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr);
+
        plat->mdio_bus_data = devm_kzalloc(&pdev->dev,
                                           sizeof(struct stmmac_mdio_bus_data),
                                           GFP_KERNEL);
@@ -56,6 +64,22 @@ static int stmmac_probe_config_dt(struct platform_device *pdev,
                plat->pmt = 1;
        }
 
+       if (of_device_is_compatible(np, "snps,dwmac-3.610") ||
+               of_device_is_compatible(np, "snps,dwmac-3.710")) {
+               plat->enh_desc = 1;
+               plat->bugged_jumbo = 1;
+               plat->force_sf_dma_mode = 1;
+       }
+
+       dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*dma_cfg), GFP_KERNEL);
+       if (!dma_cfg)
+               return -ENOMEM;
+
+       plat->dma_cfg = dma_cfg;
+       of_property_read_u32(np, "snps,pbl", &dma_cfg->pbl);
+       dma_cfg->fixed_burst = of_property_read_bool(np, "snps,fixed-burst");
+       dma_cfg->mixed_burst = of_property_read_bool(np, "snps,mixed-burst");
+
        return 0;
 }
 #else
@@ -228,7 +252,9 @@ static const struct dev_pm_ops stmmac_pltfr_pm_ops;
 
 static const struct of_device_id stmmac_dt_ids[] = {
        { .compatible = "st,spear600-gmac"},
+       { .compatible = "snps,dwmac-3.610"},
        { .compatible = "snps,dwmac-3.70a"},
+       { .compatible = "snps,dwmac-3.710"},
        { .compatible = "snps,dwmac"},
        { /* sentinel */ }
 };