Hi Andrew, You can find my comments below wrapped in <BW> ... </BW>
-----Original Message----- From: Andrew Lunn [mailto:and...@lunn.ch] Sent: Friday, February 12, 2016 12:11 PM To: Bryan Whitehead - C21958 Cc: da...@davemloft.net; netdev@vger.kernel.org Subject: Re: [PATCH net-next,V2] Add LAN9352 Ethernet Driver On Fri, Feb 12, 2016 at 04:51:49PM +0000, bryan.whiteh...@microchip.com wrote: > Hi Andrew, > > Sorry I still did not make this clear. And I'm not sure I understand your > question so I'll try to explain again, but please give me feedback if it's > still not clear. > > Also you can reference Figure 2-1 for an Internal Block Diagram on > page 9 of > http://ww1.microchip.com/downloads/en/DeviceDoc/00001923A.pdf > > Conceptually I think it's easier to ignore the switch all together, since the > driver really doesn't touch it. > > Imagine we have two separate components > 1) LAN9218 (which is a 10/100 Ethernet Controller) > 2) An external 3 port switch (which is actually embedded) > > This driver only operates on the Ethernet Controller, whose phy is in reality > just a virtual phy. > That virtual phy is connected directly to the embedded switch fabric, > which has the two physical phys that you are asking about. Since this > driver only operates on the Ethernet controller and its virtual phy. I > makes no sense to talk about phy-modes for the physical phys on the > switch. So the code implements an MDIO bus and registers it with the MDIO framework. <BW> Yes </BW> It then finds the first phy and connects it to the netdev. <BW> Yes </BW> When doing this, it passes the phy-mode. <BW> Yes </BW> My assumption is, the first PHY on the MDIO bus is the PHY connected to port 0 of the switch. <BW> Yes, that is the correct assumption </BW> So you are setting the phy-mode of this port. <BW> Yes </BW> This is a real phy, not a virtual phy. <BW> >From the software point of view it is a real phy, in that there is a real phy >register set that can be read and written. But from the hardware point of >view, it is virtual because it does not control a physical phy. The following is a clip from the spec. "The Virtual PHY provides a basic MII management interface (MDIO) per EEE 802.3 (clause 22) so that a MAC with an unmodified driver can be supported as if it was attached to a single port PHY. This functionality is designed to allow easy and quick integration of the device into designs with minimal driver modifications. The Virtual PHY provides a full bank of registers which comply with the IEEE 802.3 specification. This enables the Virtual PHY to provide various status and control bits similar to those provided by a real PHY. These include the output of speed selection, duplex, loopback, isolate, collision test, and Auto-Negotiation status." </BW> Andrew