ptp: ocp: fix DPLL functions
authorVadim Fedorenko <vadim.fedorenko@linux.dev>
Wed, 8 May 2024 13:21:11 +0000 (13:21 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 10 May 2024 03:25:11 +0000 (20:25 -0700)
In ptp_ocp driver pin actions assume sma_nr starts with 1, but for DPLL
subsystem callback 0-based index was used. Fix it providing proper index.

Fixes: 09eeb3aecc6c ("ptp_ocp: implement DPLL ops")
Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://lore.kernel.org/r/20240508132111.11545-1-vadim.fedorenko@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/ptp/ptp_ocp.c

index 6506cfb89aa9430160a289e5b26be96c2c671f03..ee2ced88ab34faba382b7afc2051f8eea24ad4df 100644 (file)
@@ -4562,7 +4562,7 @@ static int ptp_ocp_dpll_direction_set(const struct dpll_pin *pin,
                return -EOPNOTSUPP;
        mode = direction == DPLL_PIN_DIRECTION_INPUT ?
                            SMA_MODE_IN : SMA_MODE_OUT;
-       return ptp_ocp_sma_store_val(bp, 0, mode, sma_nr);
+       return ptp_ocp_sma_store_val(bp, 0, mode, sma_nr + 1);
 }
 
 static int ptp_ocp_dpll_frequency_set(const struct dpll_pin *pin,
@@ -4583,7 +4583,7 @@ static int ptp_ocp_dpll_frequency_set(const struct dpll_pin *pin,
        tbl = bp->sma_op->tbl[sma->mode];
        for (i = 0; tbl[i].name; i++)
                if (tbl[i].frequency == frequency)
-                       return ptp_ocp_sma_store_val(bp, i, sma->mode, sma_nr);
+                       return ptp_ocp_sma_store_val(bp, i, sma->mode, sma_nr + 1);
        return -EINVAL;
 }
 
@@ -4600,7 +4600,7 @@ static int ptp_ocp_dpll_frequency_get(const struct dpll_pin *pin,
        u32 val;
        int i;
 
-       val = bp->sma_op->get(bp, sma_nr);
+       val = bp->sma_op->get(bp, sma_nr + 1);
        tbl = bp->sma_op->tbl[sma->mode];
        for (i = 0; tbl[i].name; i++)
                if (val == tbl[i].value) {