Message ID | 1564479919-18835-1-git-send-email-claudiu.manoil@nxp.com |
---|---|
Headers | show |
Series | enetc: Add mdio bus driver for the PCIe MDIO endpoint | expand |
On Tue, Jul 30, 2019 at 12:45:17PM +0300, Claudiu Manoil wrote: > ENETC ports can manage the MDIO bus via local register > interface. However there's also a centralized way > to manage the MDIO bus, via the MDIO PCIe endpoint > device integrated by the same root complex that also > integrates the ENETC ports (eth controllers). > > Depending on board design and use case, centralized > access to MDIO may be better than using local ENETC > port registers. For instance, on the LS1028A QDS board > where MDIO muxing is required. Also, the LS1028A on-chip > switch doesn't have a local MDIO register interface. > > The current patch registers the above PCIe endpoint as a > separate MDIO bus and provides a driver for it by re-using > the code used for local MDIO access. It also allows the > ENETC port PHYs to be managed by this driver if the local > "mdio" node is missing from the ENETC port node. > > Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
From: Claudiu Manoil <claudiu.manoil@nxp.com> Date: Tue, 30 Jul 2019 12:45:15 +0300 > First patch fixes a sparse issue and cleans up accessors to avoid > casting to __iomem. > Second patch just registers the PCIe endpoint device containing > the MDIO registers as a standalone MDIO bus driver, to allow > an alternative way to control the MDIO bus. The same code used > by the ENETC ports (eth controllers) to manage MDIO via local > registers applies and is reused. > > Bindings are provided for the new MDIO node, similarly to ENETC > port nodes bindings. > > Last patch enables the ENETC port 1 and its RGMII PHY on the > LS1028A QDS board, where the MDIO muxing configuration relies > on the MDIO support provided in the first patch. ... Series applied, thank you.
From: David Miller <davem@davemloft.net> Date: Tue, 30 Jul 2019 09:44:36 -0700 (PDT) > From: Claudiu Manoil <claudiu.manoil@nxp.com> > Date: Tue, 30 Jul 2019 12:45:15 +0300 > >> First patch fixes a sparse issue and cleans up accessors to avoid >> casting to __iomem. >> Second patch just registers the PCIe endpoint device containing >> the MDIO registers as a standalone MDIO bus driver, to allow >> an alternative way to control the MDIO bus. The same code used >> by the ENETC ports (eth controllers) to manage MDIO via local >> registers applies and is reused. >> >> Bindings are provided for the new MDIO node, similarly to ENETC >> port nodes bindings. >> >> Last patch enables the ENETC port 1 and its RGMII PHY on the >> LS1028A QDS board, where the MDIO muxing configuration relies >> on the MDIO support provided in the first patch. > ... > > Series applied, thank you. Actually this doesn't compile, I had to revert: In file included from ./include/linux/phy.h:20, from ./include/linux/of_mdio.h:11, from drivers/net/ethernet/freescale/enetc/enetc_mdio.c:5: drivers/net/ethernet/freescale/enetc/enetc_mdio.c:284:26: error: ‘enetc_mdio_id_table’ undeclared here (not in a function); did you mean ‘enetc_pci_mdio_id_table’? MODULE_DEVICE_TABLE(pci, enetc_mdio_id_table); ^~~~~~~~~~~~~~~~~~~ ./include/linux/module.h:230:15: note: in definition of macro ‘MODULE_DEVICE_TABLE’ extern typeof(name) __mod_##type##__##name##_device_table \ ^~~~ ./include/linux/module.h:230:21: error: ‘__mod_pci__enetc_mdio_id_table_device_table’ aliased to undefined symbol ‘enetc_mdio_id_table’ extern typeof(name) __mod_##type##__##name##_device_table \ ^~~~~~ drivers/net/ethernet/freescale/enetc/enetc_mdio.c:284:1: note: in expansion of macro ‘MODULE_DEVICE_TABLE’ MODULE_DEVICE_TABLE(pci, enetc_mdio_id_table); ^~~~~~~~~~~~~~~~~~~
>-----Original Message----- >From: David Miller <davem@davemloft.net> >Sent: Tuesday, July 30, 2019 7:54 PM >To: Claudiu Manoil <claudiu.manoil@nxp.com> >Cc: andrew@lunn.ch; robh+dt@kernel.org; Leo Li <leoyang.li@nxp.com>; >Alexandru Marginean <alexandru.marginean@nxp.com>; >netdev@vger.kernel.org; devicetree@vger.kernel.org; linux-arm- >kernel@lists.infradead.org; linux-kernel@vger.kernel.org >Subject: Re: [PATCH net-next v4 0/4] enetc: Add mdio bus driver for the PCIe >MDIO endpoint > >From: David Miller <davem@davemloft.net> >Date: Tue, 30 Jul 2019 09:44:36 -0700 (PDT) > >> From: Claudiu Manoil <claudiu.manoil@nxp.com> >> Date: Tue, 30 Jul 2019 12:45:15 +0300 >> >>> First patch fixes a sparse issue and cleans up accessors to avoid >>> casting to __iomem. >>> Second patch just registers the PCIe endpoint device containing >>> the MDIO registers as a standalone MDIO bus driver, to allow >>> an alternative way to control the MDIO bus. The same code used >>> by the ENETC ports (eth controllers) to manage MDIO via local >>> registers applies and is reused. >>> >>> Bindings are provided for the new MDIO node, similarly to ENETC >>> port nodes bindings. >>> >>> Last patch enables the ENETC port 1 and its RGMII PHY on the >>> LS1028A QDS board, where the MDIO muxing configuration relies >>> on the MDIO support provided in the first patch. >> ... >> >> Series applied, thank you. > >Actually this doesn't compile, I had to revert: > Sorry, I overlooked the module part. Turns out I have to define a separate module for this driver (mdio), refactor common code between the mdio module and the enetc-pf module, clean up the Makefile... and do more checks.