Message ID | 20240809094804.391441-4-francesco@dolcini.it (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: fec: add PPS channel configuration | expand |
> -----Original Message----- > From: Francesco Dolcini <francesco@dolcini.it> > Sent: 2024年8月9日 17:48 > To: Wei Fang <wei.fang@nxp.com>; Shenwei Wang > <shenwei.wang@nxp.com>; Clark Wang <xiaoning.wang@nxp.com>; David S. > Miller <davem@davemloft.net>; Eric Dumazet <edumazet@google.com>; > Jakub Kicinski <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; > Richard Cochran <richardcochran@gmail.com> > Cc: Francesco Dolcini <francesco.dolcini@toradex.com>; imx@lists.linux.dev; > netdev@vger.kernel.org; linux-kernel@vger.kernel.org; Frank Li > <frank.li@nxp.com>; Rafael Beims <rafael.beims@toradex.com> > Subject: [PATCH net-next v3 3/3] net: fec: make PPS channel configurable > > From: Francesco Dolcini <francesco.dolcini@toradex.com> > > Depending on the SoC where the FEC is integrated into the PPS channel might > be routed to different timer instances. Make this configurable from the > devicetree. > > When the related DT property is not present fallback to the previous default > and use channel 0. > > Reviewed-by: Frank Li <Frank.Li@nxp.com> > Tested-by: Rafael Beims <rafael.beims@toradex.com> > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> > --- > v3: added net-next subject prefix > v2: add Reviewed|Tested-by > --- > drivers/net/ethernet/freescale/fec_ptp.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/freescale/fec_ptp.c > b/drivers/net/ethernet/freescale/fec_ptp.c > index 25f988b9c7cf..2e05083cbf29 100644 > --- a/drivers/net/ethernet/freescale/fec_ptp.c > +++ b/drivers/net/ethernet/freescale/fec_ptp.c > @@ -529,8 +529,6 @@ static int fec_ptp_enable(struct ptp_clock_info *ptp, > unsigned long flags; > int ret = 0; > > - fep->pps_channel = DEFAULT_PPS_CHANNEL; > - > if (rq->type == PTP_CLK_REQ_PPS) { > fep->reload_period = PPS_OUPUT_RELOAD_PERIOD; > > @@ -712,12 +710,16 @@ void fec_ptp_init(struct platform_device *pdev, int > irq_idx) { > struct net_device *ndev = platform_get_drvdata(pdev); > struct fec_enet_private *fep = netdev_priv(ndev); > + struct device_node *np = fep->pdev->dev.of_node; nit struct device_node *np = pdev->dev.of_node; > int irq; > int ret; > > fep->ptp_caps.owner = THIS_MODULE; > strscpy(fep->ptp_caps.name, "fec ptp", sizeof(fep->ptp_caps.name)); > > + fep->pps_channel = DEFAULT_PPS_CHANNEL; > + of_property_read_u32(np, "fsl,pps-channel", &fep->pps_channel); > + > fep->ptp_caps.max_adj = 250000000; > fep->ptp_caps.n_alarm = 0; > fep->ptp_caps.n_ext_ts = 0; > -- > 2.39.2
diff --git a/drivers/net/ethernet/freescale/fec_ptp.c b/drivers/net/ethernet/freescale/fec_ptp.c index 25f988b9c7cf..2e05083cbf29 100644 --- a/drivers/net/ethernet/freescale/fec_ptp.c +++ b/drivers/net/ethernet/freescale/fec_ptp.c @@ -529,8 +529,6 @@ static int fec_ptp_enable(struct ptp_clock_info *ptp, unsigned long flags; int ret = 0; - fep->pps_channel = DEFAULT_PPS_CHANNEL; - if (rq->type == PTP_CLK_REQ_PPS) { fep->reload_period = PPS_OUPUT_RELOAD_PERIOD; @@ -712,12 +710,16 @@ void fec_ptp_init(struct platform_device *pdev, int irq_idx) { struct net_device *ndev = platform_get_drvdata(pdev); struct fec_enet_private *fep = netdev_priv(ndev); + struct device_node *np = fep->pdev->dev.of_node; int irq; int ret; fep->ptp_caps.owner = THIS_MODULE; strscpy(fep->ptp_caps.name, "fec ptp", sizeof(fep->ptp_caps.name)); + fep->pps_channel = DEFAULT_PPS_CHANNEL; + of_property_read_u32(np, "fsl,pps-channel", &fep->pps_channel); + fep->ptp_caps.max_adj = 250000000; fep->ptp_caps.n_alarm = 0; fep->ptp_caps.n_ext_ts = 0;