dt:net:stmmac: Add support to dwmac version 3.610 and 3.710
This patch adds dt support to dwmac version 3.610 and 3.710 these versions are integrated in STiH415 and STiH416 ARM A9 SOCs. To support these IP version, some of the device tree properties are extended. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d741434c3e
commit
25c83b5c2e
|
@ -12,6 +12,10 @@ Required properties:
|
|||
property
|
||||
- phy-mode: String, operation mode of the PHY interface.
|
||||
Supported values are: "mii", "rmii", "gmii", "rgmii".
|
||||
- snps,phy-addr phy address to connect to.
|
||||
- snps,pbl Programmable Burst Length
|
||||
- snps,fixed-burst Program the DMA to use the fixed burst mode
|
||||
- snps,mixed-burst Program the DMA to use the mixed burst mode
|
||||
|
||||
Optional properties:
|
||||
- mac-address: 6 bytes, mac address
|
||||
|
|
|
@ -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 */ }
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue