Hi Paolo, > On 7/1/25 1:49 PM, Lukasz Majewski wrote: > > +static int mtip_sw_probe(struct platform_device *pdev) > > +{ > > + struct device_node *np = pdev->dev.of_node; > > + const struct mtip_devinfo *dev_info; > > + struct switch_enet_private *fep; > > + int ret; > > + > > + fep = devm_kzalloc(&pdev->dev, sizeof(*fep), GFP_KERNEL); > > + if (!fep) > > + return -ENOMEM; > > + > > + dev_info = of_device_get_match_data(&pdev->dev); > > + if (dev_info) > > + fep->quirks = dev_info->quirks; > > + > > + fep->pdev = pdev; > > + platform_set_drvdata(pdev, fep); > > + > > + fep->enet_addr = devm_platform_ioremap_resource(pdev, 0); > > + if (IS_ERR(fep->enet_addr)) > > + return PTR_ERR(fep->enet_addr); > > + > > + fep->irq = platform_get_irq_byname(pdev, "enet_switch"); > > + if (fep->irq < 0) > > + return fep->irq; > > + > > + ret = mtip_parse_of(fep, np); > > + if (ret < 0) > > + return dev_err_probe(&pdev->dev, ret, > > + "OF parse error\n"); > > + > > + /* Create an Ethernet device instance. > > + * The switch lookup address memory starts at 0x800FC000 > > + */ > > + fep->hwp_enet = fep->enet_addr; > > + fep->hwp = fep->enet_addr + ENET_SWI_PHYS_ADDR_OFFSET; > > + fep->hwentry = (struct mtip_addr_table __iomem *) > > + (fep->hwp + MCF_ESW_LOOKUP_MEM_OFFSET); > > + > > + ret = devm_regulator_get_enable_optional(&pdev->dev, > > "phy"); > > + if (ret) > > + return dev_err_probe(&pdev->dev, ret, > > + "Unable to get and enable > > 'phy'\n"); + > > + fep->clk_ipg = devm_clk_get_enabled(&pdev->dev, "ipg"); > > + if (IS_ERR(fep->clk_ipg)) > > + return dev_err_probe(&pdev->dev, > > PTR_ERR(fep->clk_ipg), > > + "Unable to acquire 'ipg' > > clock\n"); + > > + fep->clk_ahb = devm_clk_get_enabled(&pdev->dev, "ahb"); > > + if (IS_ERR(fep->clk_ahb)) > > + return dev_err_probe(&pdev->dev, > > PTR_ERR(fep->clk_ahb), > > + "Unable to acquire 'ahb' > > clock\n"); + > > + fep->clk_enet_out = > > devm_clk_get_optional_enabled(&pdev->dev, > > + > > "enet_out"); > > + if (IS_ERR(fep->clk_enet_out)) > > + return dev_err_probe(&pdev->dev, > > PTR_ERR(fep->clk_enet_out), > > + "Unable to acquire 'enet_out' > > clock\n"); + > > + /* setup MII interface for external switch ports */ > > + mtip_enet_init(fep, 1); > > + mtip_enet_init(fep, 2); > > + > > + spin_lock_init(&fep->learn_lock); > > + spin_lock_init(&fep->hw_lock); > > + spin_lock_init(&fep->mii_lock); > > `mii_lock` is apparently unused in the whole series. Thanks for spotting it. Indeed this shall have been removed when I added support for MII operations' polling. > > /P > Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Johanna Denk, Tabea Lutz HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de