diff mbox series

[net] net: stmmac: fix order of dwmac5 FlexPPS parametrization sequence

Message ID 20230210143937.3427483-1-j.zink@pengutronix.de (mailing list archive)
State New, archived
Headers show
Series [net] net: stmmac: fix order of dwmac5 FlexPPS parametrization sequence | expand

Commit Message

Johannes Zink Feb. 10, 2023, 2:39 p.m. UTC
So far changing the period by just setting new period values while
running did not work.

The order as indicated by the publicly available reference manual of the i.MX8MP [1]
indicates a sequence:

 * initiate the programming sequence
 * set the values for PPS period and start time
 * start the pulse train generation.

This is currently not used in dwmac5_flex_pps_config(), which instead does:

 * initiate the programming sequence and immediately start the pulse train generation
 * set the values for PPS period and start time

This caused the period values written not to take effect until the FlexPPS output was
disabled and re-enabled again.

This patch fix the order and allows the period to be set immediately.

[1] https://www.nxp.com/webapp/Download?colCode=IMX8MPRM

Fixes: 9a8a02c9d46d ("net: stmmac: Add Flexible PPS support")
Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---

This fix is not super critical, but if you do another cycle anyway,
feel free to take or review it.

drivers/net/ethernet/stmicro/stmmac/dwmac5.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--
2.30.2

Comments

patchwork-bot+netdevbpf@kernel.org Feb. 14, 2023, 4:10 a.m. UTC | #1
Hello:

This patch was applied to netdev/net.git (master)
by Jakub Kicinski <kuba@kernel.org>:

On Fri, 10 Feb 2023 15:39:37 +0100 you wrote:
> So far changing the period by just setting new period values while
> running did not work.
> 
> The order as indicated by the publicly available reference manual of the i.MX8MP [1]
> indicates a sequence:
> 
>  * initiate the programming sequence
>  * set the values for PPS period and start time
>  * start the pulse train generation.
> 
> [...]

Here is the summary with links:
  - [net] net: stmmac: fix order of dwmac5 FlexPPS parametrization sequence
    https://git.kernel.org/netdev/net/c/4562c65ec852

You are awesome, thank you!
diff mbox series

Patch

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac5.c b/drivers/net/ethernet/stmicro/stmmac/dwmac5.c
index 413f66017219..e95d35f1e5a0 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac5.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac5.c
@@ -541,9 +541,9 @@  int dwmac5_flex_pps_config(void __iomem *ioaddr, int index,
 		return 0;
 	}

-	val |= PPSCMDx(index, 0x2);
 	val |= TRGTMODSELx(index, 0x2);
 	val |= PPSEN0;
+	writel(val, ioaddr + MAC_PPS_CONTROL);

 	writel(cfg->start.tv_sec, ioaddr + MAC_PPSx_TARGET_TIME_SEC(index));

@@ -568,6 +568,7 @@  int dwmac5_flex_pps_config(void __iomem *ioaddr, int index,
 	writel(period - 1, ioaddr + MAC_PPSx_WIDTH(index));

 	/* Finally, activate it */
+	val |= PPSCMDx(index, 0x2);
 	writel(val, ioaddr + MAC_PPS_CONTROL);
 	return 0;
 }