On Tue, Oct 12, 2021 at 11:18 AM Sean Anderson <sean.anderson@xxxxxxxx> wrote: > > Hi Rob, > > On 10/12/21 9:16 AM, Rob Herring wrote: > > On Tue, Oct 05, 2021 at 10:39:36AM +0100, Russell King (Oracle) wrote: > >> On Mon, Oct 04, 2021 at 03:15:12PM -0400, Sean Anderson wrote: > >> > Add a property for associating PCS devices with ethernet controllers. > >> > Because PCS has no generic analogue like PHY, I have left off the > >> > -handle suffix. > >> > >> For PHYs, we used to have phy and phy-device as property names, but the > >> modern name is "phy-handle". I think we should do the same here, so I > >> would suggest using "pcs-handle". > > > > On 1G and up ethernet, we have 2 PHYs. There's the external (typically) > > ethernet PHY which is what the above properties are for. Then there's > > the on-chip serdes PHY similar to SATA, PCIe, etc. which includes the > > PCS part. For this part, we should use the generic PHY binding. I think > > we already have bindings doing that. > > In the 802.3 models, there are several components which convert between > the MII (from the MAC) and the MDI (the physical protocol on the wire). > These are the Physical Coding Sublayer (PCS), Physical Medium Attachment > (PMA) sublayer, and Physical Medium Dependent (PMD) sublayer. The PMD > converts between the physical layer signaling and the on-chip (or > on-board) signalling. The PMA performs clock recovery and converts the > serial data from the PMD into parallel data for the PCS. The PCS handles > autonegotiation, CSMA/CD, and conversion to the apripriate MII for > communicating with the MAC. > > In the above model, generic serdes devices generally correspond to the > PMA/PMD sublayers. The PCS is generally a separate device, both > on the hardware and software level. It provides an ethernet-specific > layer on top of the more generic underlying encoding. For this reason, > the PCS should be modeled as its own device, which may then contain a > reference to the appropriate serdes. On the h/w I've worked on, PCS was an additional block instantiated within the PHY, so it looked like one block to s/w. But that's been almost 10 years ago now. If you do have 2 h/w blocks, one option is doing something like this: phys = <&pcs_phy>, <&sgmii_phy>; I'm okay with 'pcs-handle', but just want to make sure we're not using it where 'phys' would work. > The above model describes physical layers such as 1000BASE-X or > 10GBASE-X where the PCS/PMA/PMD is the last layer before the physical > medium. In that case, the PCS could be modeled as a traditional PHY. > However, when using (e.g.) SGMII, it is common for the "MDI" to be > SGMII, and for another PHY to convert to 1000BASE-T. To model this > correctly, the PCS/PMA/PMD layer must be considered independently from > the PHY which will ultimately convert the MII to the MDI.