[PATCH RFC 2/3] dt:net:stmmac: Add support to dwmac version 3.610 and 3.710
Giuseppe CAVALLARO
peppe.cavallaro at st.com
Tue Jul 2 03:20:18 EST 2013
On 7/1/2013 1:43 PM, Srinivas KANDAGATLA wrote:
> From: Srinivas Kandagatla <srinivas.kandagatla at st.com>
>
> 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 at st.com>
> ---
> Documentation/devicetree/bindings/net/stmmac.txt | 4 +++
> .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 25 ++++++++++++++++++++
> 2 files changed, 29 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt
> index 060bbf0..e1ddfcc 100644
> --- a/Documentation/devicetree/bindings/net/stmmac.txt
> +++ b/Documentation/devicetree/bindings/net/stmmac.txt
> @@ -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
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> index 5907920..060758d 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> @@ -29,17 +29,26 @@
> #include "stmmac.h"
>
> #ifdef CONFIG_OF
> +
> static int stmmac_probe_config_dt(struct platform_device *pdev,
> struct plat_stmmacenet_data *plat,
> 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);
> @@ -51,11 +60,25 @@ static int stmmac_probe_config_dt(struct platform_device *pdev,
> */
> if (of_device_is_compatible(np, "st,spear600-gmac") ||
> of_device_is_compatible(np, "snps,dwmac-3.70a") ||
> + of_device_is_compatible(np, "snps,dwmac-3.610") ||
> of_device_is_compatible(np, "snps,dwmac")) {
> plat->has_gmac = 1;
> 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;
> + }
I think some these shouldn't be forced here. Maybe plat->enh_desc could
be set because for new syn mac cores.
Also pmt could not be forced because it is an extra module so it could
happen that a new chip has no PMT block.
> +
> + dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*dma_cfg), GFP_KERNEL);
> + 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
> @@ -230,7 +253,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 */ }
> };
>
More information about the devicetree-discuss
mailing list