Messages in this thread | | | From | "Katakam, Harini" <> | Subject | RE: [PATCH net-next v4 2/2] phy: mscc: Add support for RGMII delay configuration | Date | Wed, 24 May 2023 11:38:15 +0000 |
| |
Hi Vladimir,
> -----Original Message----- > From: Vladimir Oltean <vladimir.oltean@nxp.com> > Sent: Wednesday, May 24, 2023 3:39 PM > To: Katakam, Harini <harini.katakam@amd.com> > Cc: andrew@lunn.ch; hkallweit1@gmail.com; linux@armlinux.org.uk; > davem@davemloft.net; kuba@kernel.org; edumazet@google.com; > pabeni@redhat.com; wsa+renesas@sang-engineering.com; > simon.horman@corigine.com; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org; harinikatakamlinux@gmail.com; Simek, Michal > <michal.simek@amd.com>; Pandey, Radhey Shyam > <radhey.shyam.pandey@amd.com> > Subject: Re: [PATCH net-next v4 2/2] phy: mscc: Add support for RGMII delay > configuration > > On Mon, May 22, 2023 at 05:58:29PM +0530, Harini Katakam wrote: > > diff --git a/drivers/net/phy/mscc/mscc_main.c > b/drivers/net/phy/mscc/mscc_main.c > > index 91010524e03d..9e856231e464 100644 > > --- a/drivers/net/phy/mscc/mscc_main.c > > +++ b/drivers/net/phy/mscc/mscc_main.c > > @@ -525,17 +525,14 @@ static int vsc85xx_rgmii_set_skews(struct > phy_device *phydev, u32 rgmii_cntl, > > { > > u16 rgmii_rx_delay_pos = ffs(rgmii_rx_delay_mask) - 1; > > u16 rgmii_tx_delay_pos = ffs(rgmii_tx_delay_mask) - 1; > > + struct vsc8531_private *vsc8531 = phydev->priv; > > u16 reg_val = 0; > > int rc; > > > > mutex_lock(&phydev->lock); > > > > - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID || > > - phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) > > - reg_val |= RGMII_CLK_DELAY_2_0_NS << rgmii_rx_delay_pos; > > - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID || > > - phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) > > - reg_val |= RGMII_CLK_DELAY_2_0_NS << rgmii_tx_delay_pos; > > + reg_val |= vsc8531->rx_delay << rgmii_rx_delay_pos; > > + reg_val |= vsc8531->tx_delay << rgmii_tx_delay_pos; > > What about vsc8584_config_init() -> vsc85xx_rgmii_set_skews()? Who will > have configured rx_delay and tx_delay for that call path?
In my current series "rx_delay" and "tx_delay" would end up 0 and a delay of 0.2 ns will be programmed (default for that field). I guess if the phy-mode is RGMII/-ID on VSC8584, 2ns will not be programmed. This will be a problem for any device not using vsc85xx_config_init
> > Isn't it better to absorb the device tree parsing logic into > vsc85xx_rgmii_set_skews(), I wonder?
Yes, that is possible, let me respin. That will ensure existing values are not broken for any VSC85xx user, if they do not have delay properties in the DT.
> > And if we do that, is it still necessary to use struct vsc8531_private > as temporary storage space from vsc85xx_config_init() to > vsc85xx_rgmii_set_skews(), > or will two local variables (rx_delay, tx_delay) serve that purpose just fine?
No need of the structure member, local variables will do.
> > > > > rc = phy_modify_paged(phydev, MSCC_PHY_PAGE_EXTENDED_2, > > rgmii_cntl, > > @@ -1808,10 +1805,34 @@ static irqreturn_t > vsc8584_handle_interrupt(struct phy_device *phydev) > > return IRQ_HANDLED; > > } > > > > +static const int vsc8531_internal_delay[] = {200, 800, 1100, 1700, 2000, > 2300, > > + 2600, 3400}; > > Could you please avoid intermingling this with the function code, and > move it at the top of mscc_main.c? > > Also, vsc8531_internal_delay[] or vsc85xx_internal_delay[]? The values > are also good for VSC8572, the other caller of vsc85xx_rgmii_set_skews().
vsc85xx_internal_delay is more appropriate, will change.
Thanks for the review.
Regards, Harini
| |