Re: [PATCH net-next v1 08/14] net: phy: nxp-c45-tja11xx: enable LTC sampling on both ext_ts edges

From: Horatiu Vultur
Date: Mon Jun 19 2023 - 04:10:43 EST


The 06/16/2023 16:53, Radu Pirea (NXP OSS) wrote:

Hi Radu,

>
> The external trigger configuration for TJA1120 has changed. The PHY
> supports sampling of the LTC on rising and on falling edge.

>
> Signed-off-by: Radu Pirea (NXP OSS) <radu-nicolae.pirea@xxxxxxxxxxx>
> ---
> drivers/net/phy/nxp-c45-tja11xx.c | 64 +++++++++++++++++++++++++++----
> 1 file changed, 56 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/phy/nxp-c45-tja11xx.c b/drivers/net/phy/nxp-c45-tja11xx.c
> index 2160b9f8940c..6aa738396daf 100644
> --- a/drivers/net/phy/nxp-c45-tja11xx.c
> +++ b/drivers/net/phy/nxp-c45-tja11xx.c
> @@ -104,6 +104,10 @@
> #define VEND1_PTP_CONFIG 0x1102
> #define EXT_TRG_EDGE BIT(1)
>
> +#define TJA1120_SYNC_TRIG_FILTER 0x1010
> +#define PTP_TRIG_RISE_TS BIT(3)
> +#define PTP_TRIG_FALLING_TS BIT(2)
> +
> #define CLK_RATE_ADJ_LD BIT(15)
> #define CLK_RATE_ADJ_DIR BIT(14)
>
> @@ -240,6 +244,7 @@ struct nxp_c45_phy_data {
> const struct nxp_c45_phy_stats *stats;
> int n_stats;
> u8 ptp_clk_period;
> + bool ext_ts_both_edges;
> void (*counters_enable)(struct phy_device *phydev);
> void (*ptp_init)(struct phy_device *phydev);
> void (*ptp_enable)(struct phy_device *phydev, bool enable);
> @@ -682,9 +687,52 @@ static int nxp_c45_perout_enable(struct nxp_c45_phy *priv,
> return 0;
> }
>
> +static void nxp_c45_set_rising_or_falling(struct phy_device *phydev,
> + struct ptp_extts_request *extts)
> +{
> + /* Some enable request has only the PTP_ENABLE_FEATURE flag set and in
> + * this case external ts should be enabled on rising edge.
> + */
> + if (extts->flags & PTP_RISING_EDGE ||
> + extts->flags == PTP_ENABLE_FEATURE)
> + phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1,
> + VEND1_PTP_CONFIG, EXT_TRG_EDGE);

With this patch, are you not changing the behaviour for TJA1103?
In the way, before there was not check for extts->flags ==
PTP_ENABLE_FEATURE and now if that is set you configure to trigger on
raising edge. If that is the case, shouldn't be this in a different
patch?

> +
> + if (extts->flags & PTP_FALLING_EDGE)
> + phy_set_bits_mmd(phydev, MDIO_MMD_VEND1,
> + VEND1_PTP_CONFIG, EXT_TRG_EDGE);
> +}
> +


--
/Horatiu