Hi Maxime On Thu, Nov 30, 2023 at 09:34:41PM +0100, Maxime Chevallier wrote: > Hello, > > On Thu, 30 Nov 2023 22:59:32 +0300 > Serge Semin <fancer.lancer@xxxxxxxxx> wrote: > > > On Thu, Nov 30, 2023 at 06:26:13PM +0100, Andrew Lunn wrote: > > > > I will check with the xpcs maintainer how can we add indirect access > > > > to the xpcs module. > > > > > > https://elixir.bootlin.com/linux/latest/source/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c#L449 > > > > > > It creates a regmap for the memory range. On top of that it creates an > > > MDIO bus. You can then access the PCS in the normal way. > > > > Actually Synopsys DW XPCS can be synthesized with two types of the CSR > > interfaces: > > 1. MDIO: device looks as a normal MDIO device. This option is currently > > supported by the STMMAC MDIO driver. > > 2. MCI/APB3: device MMD CSRs are directly (all CSRs are visible) or > > indirectly (paged-base access) accessible over the system memory bus. > > > > In addition to the above XPCS device can be equipped with separate > > clock sources (at least to feed the MCI or APB3 interface) and may > > have dedicated IRQ line to signal various events like link > > establishing, failures, etc. From that perspective XPCS in both cases > > looks as a normal platform device for which would be better to have a > > special DT-node defined with all those resources supplied. Then the > > XPCS DT-node could be passed to the DW MAC DT-node via the already > > standardized "pcs-handle" DT-property. > > To my understanding, this should work, there's another PCS that works > this way : > https://elixir.bootlin.com/linux/v6.7-rc3/source/drivers/net/pcs/pcs-rzn1-miic.c It is similar to that, but since DW XPCS can reside on the normal MDIO bus and in the system memory I took a liberty to implement the DW XPCS MCI/APB3 interface support in the framework of the MDIO subsystem, especially seeing Synopsys call them just "Management Interfaces", the MMD CSRs can be indirectly accessible and since potentially there can be more than one XPCS device on the same MCI/APB3 bus. > > Are you still able to use the mdio-regmap glue that Andrew mentioned, > to avoid the duplication between the mdio and mmio register accesses ? Andrew cited the glue code using the Lynx PCS driver. In my case it's DW XPCS driver. In anycase my patchset is designed in a way so not to break (hopefully) the current DW XPCS driver users (STMMAC Eth for sure, WangSun XGBE, SJA1105 DSA). So it will be still possible to create a dedicated MDIO bus (using mdio-regmap API too) with the XPCS device being detectable on it. -Serge(y) > > Maxime