We need priv->ptp_caps to hold a structure and not just a pointer,
because we use container_of in the various PTP callbacks.

Therefore, the sja1105_ptp_caps structure declared in the global memory
of the driver serves no further purpose after copying it into
priv->ptp_caps.

So just populate priv->ptp_caps with the needed operations and remove
sja1105_ptp_caps.

Signed-off-by: Vladimir Oltean <olte...@gmail.com>
---
 drivers/net/dsa/sja1105/sja1105_ptp.c | 29 +++++++++++++--------------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/drivers/net/dsa/sja1105/sja1105_ptp.c 
b/drivers/net/dsa/sja1105/sja1105_ptp.c
index d8e8dd59f3d1..d0c93d0449dc 100644
--- a/drivers/net/dsa/sja1105/sja1105_ptp.c
+++ b/drivers/net/dsa/sja1105/sja1105_ptp.c
@@ -347,29 +347,28 @@ static void sja1105_ptp_overflow_check(struct work_struct 
*work)
        schedule_delayed_work(&priv->refresh_work, SJA1105_REFRESH_INTERVAL);
 }
 
-static const struct ptp_clock_info sja1105_ptp_caps = {
-       .owner          = THIS_MODULE,
-       .name           = "SJA1105 PHC",
-       .adjfine        = sja1105_ptp_adjfine,
-       .adjtime        = sja1105_ptp_adjtime,
-       .gettime64      = sja1105_ptp_gettime,
-       .settime64      = sja1105_ptp_settime,
-       .max_adj        = SJA1105_MAX_ADJ_PPB,
-};
-
 int sja1105_ptp_clock_register(struct sja1105_private *priv)
 {
        struct dsa_switch *ds = priv->ds;
 
        /* Set up the cycle counter */
        priv->tstamp_cc = (struct cyclecounter) {
-               .read = sja1105_ptptsclk_read,
-               .mask = CYCLECOUNTER_MASK(64),
-               .shift = SJA1105_CC_SHIFT,
-               .mult = SJA1105_CC_MULT,
+               .read           = sja1105_ptptsclk_read,
+               .mask           = CYCLECOUNTER_MASK(64),
+               .shift          = SJA1105_CC_SHIFT,
+               .mult           = SJA1105_CC_MULT,
        };
+       priv->ptp_caps = (struct ptp_clock_info) {
+               .owner          = THIS_MODULE,
+               .name           = "SJA1105 PHC",
+               .adjfine        = sja1105_ptp_adjfine,
+               .adjtime        = sja1105_ptp_adjtime,
+               .gettime64      = sja1105_ptp_gettime,
+               .settime64      = sja1105_ptp_settime,
+               .max_adj        = SJA1105_MAX_ADJ_PPB,
+       };
+
        mutex_init(&priv->ptp_lock);
-       priv->ptp_caps = sja1105_ptp_caps;
 
        priv->clock = ptp_clock_register(&priv->ptp_caps, ds->dev);
        if (IS_ERR_OR_NULL(priv->clock))
-- 
2.17.1

Reply via email to