Message ID | 20240815055126.137437-2-wei.fang@nxp.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | add "nxp,reverse-mode" to instead of "nxp,rmii-refclk-in" | expand |
On Thu, Aug 15, 2024 at 01:51:24PM +0800, Wei Fang wrote: > Per the MII and RMII specifications, for the standard RMII mode, > the REF_CLK is sourced from MAC to PHY or from an external source. > For the standard MII mode, the RX_CLK and TX_CLK are both sourced > by the PHY. But for TJA11xx PHYs, they support reverse mode, that > is, for revRMII mode, the REF_CLK is output, and for revMII mode, > the TX_CLK and RX_CLK are inputs to the PHY. > Previously the "nxp,rmii-refclk-in" was added to indicate that in > RMII mode, if this property present, REF_CLK is input to the PHY, > otherwise it is output. This seems inappropriate now. Firstly, for > the standard RMII mode, REF_CLK is originally input, and there is > no need to add the "nxp,rmii-refclk-in" property to indicate that > REF_CLK is input. Secondly, this property is not generic for TJA > PHYs, because it cannot cover the settings of TX_CLK and RX_CLK in > MII mode. Therefore, add new property "nxp,reverse-mode" to instead > of the "nxp,rmii-refclk-in" property. Please could you add some justification why using PHY_INTERFACE_MODE_REVRMII is not possible. Andrew
> -----Original Message----- > From: Andrew Lunn <andrew@lunn.ch> > Sent: 2024年8月15日 22:33 > To: Wei Fang <wei.fang@nxp.com> > Cc: davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > pabeni@redhat.com; robh@kernel.org; krzk+dt@kernel.org; > conor+dt@kernel.org; f.fainelli@gmail.com; hkallweit1@gmail.com; > linux@armlinux.org.uk; Andrei Botila (OSS) <andrei.botila@oss.nxp.com>; > netdev@vger.kernel.org; devicetree@vger.kernel.org; > linux-kernel@vger.kernel.org > Subject: Re: [PATCH net-next 1/3] dt-bindings: net: tja11xx: use reverse-mode > to instead of rmii-refclk-in > > On Thu, Aug 15, 2024 at 01:51:24PM +0800, Wei Fang wrote: > > Per the MII and RMII specifications, for the standard RMII mode, the > > REF_CLK is sourced from MAC to PHY or from an external source. > > For the standard MII mode, the RX_CLK and TX_CLK are both sourced by > > the PHY. But for TJA11xx PHYs, they support reverse mode, that is, for > > revRMII mode, the REF_CLK is output, and for revMII mode, the TX_CLK > > and RX_CLK are inputs to the PHY. > > Previously the "nxp,rmii-refclk-in" was added to indicate that in RMII > > mode, if this property present, REF_CLK is input to the PHY, otherwise > > it is output. This seems inappropriate now. Firstly, for the standard > > RMII mode, REF_CLK is originally input, and there is no need to add > > the "nxp,rmii-refclk-in" property to indicate that REF_CLK is input. > > Secondly, this property is not generic for TJA PHYs, because it cannot > > cover the settings of TX_CLK and RX_CLK in MII mode. Therefore, add > > new property "nxp,reverse-mode" to instead of the "nxp,rmii-refclk-in" > > property. > > Please could you add some justification why using > PHY_INTERFACE_MODE_REVRMII is not possible. > According to the commit message c858d436be8b ("net: phy: introduce PHY_INTERFACE_MODE_REVRMII"), my understanding is that PHY_INTERFACE_MODE_REVRMII and PHY_INTERFACE_MODE_REVMII are used for MAC to MAC connections, which means the MAC behaves link an RMII/MII PHY. For the MAC to PHY connection, I think these two macros are not applicable. Currently PHY_INTERFACE_MODE_REVMII is used in both TJA11xx drivers, and if my understanding is correct I think they will need to be removed in the future.
> According to the commit message c858d436be8b ("net: phy: introduce > PHY_INTERFACE_MODE_REVRMII"), my understanding is that > PHY_INTERFACE_MODE_REVRMII and PHY_INTERFACE_MODE_REVMII > are used for MAC to MAC connections, which means the MAC behaves > link an RMII/MII PHY. For the MAC to PHY connection, I think these two > macros are not applicable. In MAC to MAC connections, REVRMII means that end plays the role of a PHY, even though it is a MAC. What is actually happening when you use these properties/register setting on the PHY? It is playing the role of a MAC? In order to have a working link, do you need to tell the MAC to play the role of the PHY? Andrew
> -----Original Message----- > From: Andrew Lunn <andrew@lunn.ch> > Sent: 2024年8月16日 10:33 > To: Wei Fang <wei.fang@nxp.com> > Cc: davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > pabeni@redhat.com; robh@kernel.org; krzk+dt@kernel.org; > conor+dt@kernel.org; f.fainelli@gmail.com; hkallweit1@gmail.com; > linux@armlinux.org.uk; Andrei Botila (OSS) <andrei.botila@oss.nxp.com>; > netdev@vger.kernel.org; devicetree@vger.kernel.org; > linux-kernel@vger.kernel.org > Subject: Re: [PATCH net-next 1/3] dt-bindings: net: tja11xx: use reverse-mode > to instead of rmii-refclk-in > > > According to the commit message c858d436be8b ("net: phy: introduce > > PHY_INTERFACE_MODE_REVRMII"), my understanding is that > > PHY_INTERFACE_MODE_REVRMII and PHY_INTERFACE_MODE_REVMII > > are used for MAC to MAC connections, which means the MAC behaves > > link an RMII/MII PHY. For the MAC to PHY connection, I think these two > > macros are not applicable. > > In MAC to MAC connections, REVRMII means that end plays the role of a > PHY, even though it is a MAC. > > What is actually happening when you use these properties/register > setting on the PHY? It is playing the role of a MAC? In order to have > a working link, do you need to tell the MAC to play the role of the > PHY? > Based on the TJA data sheet, like TJA1103/TJA1104, if the reverse mode is set. If XMII_MODE is set to MII, the device operates in revMII mode (TXCLK and RXCLK are input). If XMII_MODE is set to RMII, the device operates in revRMII mode (REF_CLK is output). So it's just that the input and output directions of xx_CLK are reversed. we don't need to tell the MAC to play the role of the PHY, in our case, we just need the PHY to provide the reference clock in RMII mode.
> Based on the TJA data sheet, like TJA1103/TJA1104, if the reverse mode > is set. If XMII_MODE is set to MII, the device operates in revMII mode > (TXCLK and RXCLK are input). If XMII_MODE is set to RMII, the device > operates in revRMII mode (REF_CLK is output). So it's just that the input > and output directions of xx_CLK are reversed. > we don't need to tell the MAC to play the role of the PHY, in our case, we > just need the PHY to provide the reference clock in RMII mode. If this is purely about providing a reference clock, normally 25Mhz, there are a few PHY drivers which support this. Find one and copy it. There is no need to invent something new. Andrew
> -----Original Message----- > From: Andrew Lunn <andrew@lunn.ch> > Sent: 2024年8月16日 11:28 > To: Wei Fang <wei.fang@nxp.com> > Cc: davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > pabeni@redhat.com; robh@kernel.org; krzk+dt@kernel.org; > conor+dt@kernel.org; f.fainelli@gmail.com; hkallweit1@gmail.com; > linux@armlinux.org.uk; Andrei Botila (OSS) <andrei.botila@oss.nxp.com>; > netdev@vger.kernel.org; devicetree@vger.kernel.org; > linux-kernel@vger.kernel.org > Subject: Re: [PATCH net-next 1/3] dt-bindings: net: tja11xx: use reverse-mode > to instead of rmii-refclk-in > > > Based on the TJA data sheet, like TJA1103/TJA1104, if the reverse mode > > is set. If XMII_MODE is set to MII, the device operates in revMII mode > > (TXCLK and RXCLK are input). If XMII_MODE is set to RMII, the device > > operates in revRMII mode (REF_CLK is output). So it's just that the input > > and output directions of xx_CLK are reversed. > > we don't need to tell the MAC to play the role of the PHY, in our case, we > > just need the PHY to provide the reference clock in RMII mode. > > If this is purely about providing a reference clock, normally 25Mhz, > there are a few PHY drivers which support this. Find one and copy > it. There is no need to invent something new. > Sorry, I didn't find the correct PHY driver, could you point me to which PHY driver that I can refer to? The PHY drivers I searched for using the "clk" keyword all seem to set the clock via a vendor defined property. Such as, realtek: "realtek,clkout-disable" dp83867 and dp83869: "ti,clk-output-sel" and "ti,sgmii-ref-clock-output-enable" motorcomm: " motorcomm,tx-clk-1000-inverted" micrel: "rmii-ref"
> -----Original Message----- > From: Wei Fang > Sent: 2024年8月16日 13:02 > To: Andrew Lunn <andrew@lunn.ch> > Cc: davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > pabeni@redhat.com; robh@kernel.org; krzk+dt@kernel.org; > conor+dt@kernel.org; f.fainelli@gmail.com; hkallweit1@gmail.com; > linux@armlinux.org.uk; Andrei Botila (OSS) <andrei.botila@oss.nxp.com>; > netdev@vger.kernel.org; devicetree@vger.kernel.org; > linux-kernel@vger.kernel.org > Subject: RE: [PATCH net-next 1/3] dt-bindings: net: tja11xx: use reverse-mode > to instead of rmii-refclk-in > > > -----Original Message----- > > From: Andrew Lunn <andrew@lunn.ch> > > Sent: 2024年8月16日 11:28 > > To: Wei Fang <wei.fang@nxp.com> > > Cc: davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > > pabeni@redhat.com; robh@kernel.org; krzk+dt@kernel.org; > > conor+dt@kernel.org; f.fainelli@gmail.com; hkallweit1@gmail.com; > > linux@armlinux.org.uk; Andrei Botila (OSS) > > <andrei.botila@oss.nxp.com>; netdev@vger.kernel.org; > > devicetree@vger.kernel.org; linux-kernel@vger.kernel.org > > Subject: Re: [PATCH net-next 1/3] dt-bindings: net: tja11xx: use > > reverse-mode to instead of rmii-refclk-in > > > > > Based on the TJA data sheet, like TJA1103/TJA1104, if the reverse > > > mode is set. If XMII_MODE is set to MII, the device operates in > > > revMII mode (TXCLK and RXCLK are input). If XMII_MODE is set to > > > RMII, the device operates in revRMII mode (REF_CLK is output). So > > > it's just that the input and output directions of xx_CLK are reversed. > > > we don't need to tell the MAC to play the role of the PHY, in our > > > case, we just need the PHY to provide the reference clock in RMII mode. > > > > If this is purely about providing a reference clock, normally 25Mhz, > > there are a few PHY drivers which support this. Find one and copy it. > > There is no need to invent something new. > > > > Sorry, I didn't find the correct PHY driver, could you point me to which PHY > driver that I can refer to? > The PHY drivers I searched for using the "clk" keyword all seem to set the > clock via a vendor defined property. Such as, > realtek: "realtek,clkout-disable" > dp83867 and dp83869: "ti,clk-output-sel" and > "ti,sgmii-ref-clock-output-enable" > motorcomm: " motorcomm,tx-clk-1000-inverted" > micrel: "rmii-ref" Hi Andrew, I still cannot find a generic method in other PHY drivers to provide reference clock by PHY. So I think this patch is the best I could do, at least it's more reasonable than the "nxp,rmii-refclk-in" property.
> > Sorry, I didn't find the correct PHY driver, could you point me to which PHY > > driver that I can refer to? > > The PHY drivers I searched for using the "clk" keyword all seem to set the > > clock via a vendor defined property. Such as, > > realtek: "realtek,clkout-disable" > > dp83867 and dp83869: "ti,clk-output-sel" and > > "ti,sgmii-ref-clock-output-enable" > > motorcomm: " motorcomm,tx-clk-1000-inverted" > > micrel: "rmii-ref" > > Hi Andrew, > I still cannot find a generic method in other PHY drivers to provide > reference clock by PHY. So I think this patch is the best I could do, at > least it's more reasonable than the "nxp,rmii-refclk-in" property. I did not say there was a generic method. I just said copy one. We have too many different ways of doing the same thing, so we should not add another one. Which of these is closest to what you want? You should use your own vendor part, but copy clk-output-sel, rmii-ref, etc, and implement the same behaviour in your driver. Andrew
> -----Original Message----- > From: Andrew Lunn <andrew@lunn.ch> > Sent: 2024年8月20日 21:25 > To: Wei Fang <wei.fang@nxp.com> > Cc: davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > pabeni@redhat.com; robh@kernel.org; krzk+dt@kernel.org; > conor+dt@kernel.org; f.fainelli@gmail.com; hkallweit1@gmail.com; > linux@armlinux.org.uk; Andrei Botila (OSS) <andrei.botila@oss.nxp.com>; > netdev@vger.kernel.org; devicetree@vger.kernel.org; > linux-kernel@vger.kernel.org > Subject: Re: [PATCH net-next 1/3] dt-bindings: net: tja11xx: use reverse-mode > to instead of rmii-refclk-in > > > > Sorry, I didn't find the correct PHY driver, could you point me to which PHY > > > driver that I can refer to? > > > The PHY drivers I searched for using the "clk" keyword all seem to set the > > > clock via a vendor defined property. Such as, > > > realtek: "realtek,clkout-disable" > > > dp83867 and dp83869: "ti,clk-output-sel" and > > > "ti,sgmii-ref-clock-output-enable" > > > motorcomm: " motorcomm,tx-clk-1000-inverted" > > > micrel: "rmii-ref" > > > > Hi Andrew, > > I still cannot find a generic method in other PHY drivers to provide > > reference clock by PHY. So I think this patch is the best I could do, at > > least it's more reasonable than the "nxp,rmii-refclk-in" property. > > I did not say there was a generic method. I just said copy one. We > have too many different ways of doing the same thing, so we should not > add another one. Which of these is closest to what you want? You > should use your own vendor part, but copy clk-output-sel, rmii-ref, > etc, and implement the same behaviour in your driver. > Sorry, I misunderstood your meaning. So "reverse-mode" does not seem to be easy to understand its real purpose. Referring to the "adi,phy-output-reference-clock" property, for TJA11xx PHY, we can use the "nxp,phy-output-refclk" to make the PHY provide reference clock.
diff --git a/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml b/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml index 85bfa45f5122..e8ab2cf8d4d4 100644 --- a/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml +++ b/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml @@ -32,21 +32,14 @@ patternProperties: description: The ID number for the child PHY. Should be +1 of parent PHY. - nxp,rmii-refclk-in: + nxp,reverse-mode: type: boolean description: | - The REF_CLK is provided for both transmitted and received data - in RMII mode. This clock signal is provided by the PHY and is - typically derived from an external 25MHz crystal. Alternatively, - a 50MHz clock signal generated by an external oscillator can be - connected to pin REF_CLK. A third option is to connect a 25MHz - clock to pin CLK_IN_OUT. So, the REF_CLK should be configured - as input or output according to the actual circuit connection. - If present, indicates that the REF_CLK will be configured as - interface reference clock input when RMII mode enabled. - If not present, the REF_CLK will be configured as interface - reference clock output when RMII mode enabled. - Only supported on TJA1100 and TJA1101. + If present, the TJA11xx PHY will operate in "reversed" role mode. + If XMII_MODE is set to MII, the device operates in revMII mode + (TXCLK and RXCLK are input). + If XMII_MODE is set to RMII, the device operates in revRMII mode + (REF_CLK is output). required: - reg @@ -61,7 +54,7 @@ examples: tja1101_phy0: ethernet-phy@4 { reg = <0x4>; - nxp,rmii-refclk-in; + nxp,reverse-mode; }; }; - |
Per the MII and RMII specifications, for the standard RMII mode, the REF_CLK is sourced from MAC to PHY or from an external source. For the standard MII mode, the RX_CLK and TX_CLK are both sourced by the PHY. But for TJA11xx PHYs, they support reverse mode, that is, for revRMII mode, the REF_CLK is output, and for revMII mode, the TX_CLK and RX_CLK are inputs to the PHY. Previously the "nxp,rmii-refclk-in" was added to indicate that in RMII mode, if this property present, REF_CLK is input to the PHY, otherwise it is output. This seems inappropriate now. Firstly, for the standard RMII mode, REF_CLK is originally input, and there is no need to add the "nxp,rmii-refclk-in" property to indicate that REF_CLK is input. Secondly, this property is not generic for TJA PHYs, because it cannot cover the settings of TX_CLK and RX_CLK in MII mode. Therefore, add new property "nxp,reverse-mode" to instead of the "nxp,rmii-refclk-in" property. Signed-off-by: Wei Fang <wei.fang@nxp.com> --- .../devicetree/bindings/net/nxp,tja11xx.yaml | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-)