]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: rcar_gen4_ptp: Move control fields to users
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Tue, 4 Nov 2025 22:24:15 +0000 (23:24 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 7 Nov 2025 01:38:25 +0000 (17:38 -0800)
The struct rcar_gen4_ptp_private provides two fields for convenience of
its users, tstamp_tx_ctrl and tstamp_rx_ctrl. These fields are not used
by the rcar_gen4_ptp driver itself but only by the drivers using it.

Upcoming work will enable the RAVB driver currently only supporting gPTP
on pre-Gen4 SoCs to use the Gen4 implementation as well. To facilitate
this the convenience of having these fields in struct
rcar_gen4_ptp_private becomes a problem as the RAVB driver already have
it's own driver specific fields for the same thing.

Move the fields from struct rcar_gen4_ptp_private to each driver using
the Gen4 gPTP clocks own private data structures. There is no functional
change.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20251104222420.882731-3-niklas.soderlund+renesas@ragnatech.se
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/renesas/rcar_gen4_ptp.h
drivers/net/ethernet/renesas/rswitch.h
drivers/net/ethernet/renesas/rswitch_main.c
drivers/net/ethernet/renesas/rtsn.c

index 536badd798ccefd21301c7c710b94fccfcca2f5b..1a1e43add129b2732b16f853814bf7c8c8c2cb06 100644 (file)
@@ -23,8 +23,6 @@ struct rcar_gen4_ptp_private {
        struct ptp_clock *clock;
        struct ptp_clock_info info;
        spinlock_t lock;        /* For multiple registers access */
-       u32 tstamp_tx_ctrl;
-       u32 tstamp_rx_ctrl;
        s64 default_addend;
        bool initialized;
 };
index a1d4a877e5bd4d3186544649695ddcebb7975032..3b348ebf6742b52b3423d3886a90a83ed0a45b41 100644 (file)
@@ -1063,6 +1063,9 @@ struct rswitch_private {
        bool etha_no_runtime_change;
        bool gwca_halt;
        struct net_device *offload_brdev;
+
+       u32 tstamp_tx_ctrl;
+       u32 tstamp_rx_ctrl;
 };
 
 bool is_rdev(const struct net_device *ndev);
index 24ed33ac4bcd8c8e6c2fd4b927f258345cfc28f1..31aabc6fc462dd42aad39c14ead12780e482f441 100644 (file)
@@ -845,7 +845,7 @@ static bool rswitch_rx(struct net_device *ndev, int *quota)
                if (!skb)
                        goto out;
 
-               get_ts = rdev->priv->ptp_priv->tstamp_rx_ctrl & RCAR_GEN4_RXTSTAMP_TYPE_V2_L2_EVENT;
+               get_ts = rdev->priv->tstamp_rx_ctrl & RCAR_GEN4_RXTSTAMP_TYPE_V2_L2_EVENT;
                if (get_ts) {
                        struct skb_shared_hwtstamps *shhwtstamps;
                        struct timespec64 ts;
@@ -1799,14 +1799,13 @@ static int rswitch_hwstamp_get(struct net_device *ndev,
                               struct kernel_hwtstamp_config *config)
 {
        struct rswitch_device *rdev = netdev_priv(ndev);
-       struct rcar_gen4_ptp_private *ptp_priv;
-
-       ptp_priv = rdev->priv->ptp_priv;
+       struct rswitch_private *priv = rdev->priv;
 
        config->flags = 0;
-       config->tx_type = ptp_priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON :
-                                                   HWTSTAMP_TX_OFF;
-       switch (ptp_priv->tstamp_rx_ctrl & RCAR_GEN4_RXTSTAMP_TYPE) {
+       config->tx_type =
+               priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF;
+
+       switch (priv->tstamp_rx_ctrl & RCAR_GEN4_RXTSTAMP_TYPE) {
        case RCAR_GEN4_RXTSTAMP_TYPE_V2_L2_EVENT:
                config->rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
                break;
@@ -1856,8 +1855,8 @@ static int rswitch_hwstamp_set(struct net_device *ndev,
                break;
        }
 
-       rdev->priv->ptp_priv->tstamp_tx_ctrl = tstamp_tx_ctrl;
-       rdev->priv->ptp_priv->tstamp_rx_ctrl = tstamp_rx_ctrl;
+       rdev->priv->tstamp_tx_ctrl = tstamp_tx_ctrl;
+       rdev->priv->tstamp_rx_ctrl = tstamp_rx_ctrl;
 
        return 0;
 }
index 15a043e85431f2931695b99d3c6cb13809914e05..958c198084728aae47d7f340f323bcaf9f970b0d 100644 (file)
@@ -62,6 +62,9 @@ struct rtsn_private {
 
        int tx_data_irq;
        int rx_data_irq;
+
+       u32 tstamp_tx_ctrl;
+       u32 tstamp_rx_ctrl;
 };
 
 static u32 rtsn_read(struct rtsn_private *priv, enum rtsn_reg reg)
@@ -162,7 +165,7 @@ static int rtsn_rx(struct net_device *ndev, int budget)
        unsigned int i;
        bool get_ts;
 
-       get_ts = priv->ptp_priv->tstamp_rx_ctrl &
+       get_ts = priv->tstamp_rx_ctrl &
                RCAR_GEN4_RXTSTAMP_TYPE_V2_L2_EVENT;
 
        ndescriptors = priv->dirty_rx + priv->num_rx_ring - priv->cur_rx;
@@ -1122,21 +1125,19 @@ static int rtsn_do_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
 static int rtsn_hwtstamp_get(struct net_device *ndev,
                             struct kernel_hwtstamp_config *config)
 {
-       struct rcar_gen4_ptp_private *ptp_priv;
        struct rtsn_private *priv;
 
        if (!netif_running(ndev))
                return -ENODEV;
 
        priv = netdev_priv(ndev);
-       ptp_priv = priv->ptp_priv;
 
        config->flags = 0;
 
        config->tx_type =
-               ptp_priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF;
+               priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF;
 
-       switch (ptp_priv->tstamp_rx_ctrl & RCAR_GEN4_RXTSTAMP_TYPE) {
+       switch (priv->tstamp_rx_ctrl & RCAR_GEN4_RXTSTAMP_TYPE) {
        case RCAR_GEN4_RXTSTAMP_TYPE_V2_L2_EVENT:
                config->rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
                break;
@@ -1155,7 +1156,6 @@ static int rtsn_hwtstamp_set(struct net_device *ndev,
                             struct kernel_hwtstamp_config *config,
                             struct netlink_ext_ack *extack)
 {
-       struct rcar_gen4_ptp_private *ptp_priv;
        struct rtsn_private *priv;
        u32 tstamp_rx_ctrl;
        u32 tstamp_tx_ctrl;
@@ -1164,7 +1164,6 @@ static int rtsn_hwtstamp_set(struct net_device *ndev,
                return -ENODEV;
 
        priv = netdev_priv(ndev);
-       ptp_priv = priv->ptp_priv;
 
        if (config->flags)
                return -EINVAL;
@@ -1195,8 +1194,8 @@ static int rtsn_hwtstamp_set(struct net_device *ndev,
                break;
        }
 
-       ptp_priv->tstamp_tx_ctrl = tstamp_tx_ctrl;
-       ptp_priv->tstamp_rx_ctrl = tstamp_rx_ctrl;
+       priv->tstamp_tx_ctrl = tstamp_tx_ctrl;
+       priv->tstamp_rx_ctrl = tstamp_rx_ctrl;
 
        return 0;
 }