On Wed, Mar 21, 2018 at 03:47:02PM -0700, Richard Cochran wrote: > On Wed, Mar 21, 2018 at 11:16:52PM +0100, Andrew Lunn wrote: > > The MAC drivers are clients of this device. They then use a phandle > > and specifier: > > > > eth0: ethernet-controller@72000 { > > compatible = "marvell,kirkwood-eth"; > > #address-cells = <1>; > > #size-cells = <0>; > > reg = <0x72000 0x4000>; > > > > timerstamper = <×tamper 2> > > } > > > > The 2 indicates this MAC is using port 2. > > > > The MAC driver can then do the standard device tree things to follow > > the phandle to get access to the device and use the API it exports. > > But that would require hacking every last MAC driver. > > I happy to improve the modeling, but the solution should be generic > and work for every MAC driver. Well, the solution is generic, in that the phandle can point to a device anywhere. It could be MMIO, it could be on an MDIO bus, etc. You just need to make sure you API makes no assumption about how the device driver talks to the hardware. How clever is this device? Can it tell the difference between 1000Base-X and SGMII? Can it figure out that the MAC is repeating every bit 100 times and so has dropped to 10Mbits? Does it understand EEE? Does it need to know if RGMII or RGMII-ID is being used? Can such a device really operation without the MAC being involved? My feeling is it needs to understand how the MII bus is being used. It might also be that the device is less capable than the MAC, so you need to turn off some of the MAC features. I think you are going to need the MAC actively involved in this. Andrew -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html