Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ptp: ocp: fix DPLL functions

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>

authored by

Vadim Fedorenko and committed by
Jakub Kicinski
a2c78977 8c3b7565

+3 -3
+3 -3
drivers/ptp/ptp_ocp.c
··· 4562 4562 return -EOPNOTSUPP; 4563 4563 mode = direction == DPLL_PIN_DIRECTION_INPUT ? 4564 4564 SMA_MODE_IN : SMA_MODE_OUT; 4565 - return ptp_ocp_sma_store_val(bp, 0, mode, sma_nr); 4565 + return ptp_ocp_sma_store_val(bp, 0, mode, sma_nr + 1); 4566 4566 } 4567 4567 4568 4568 static int ptp_ocp_dpll_frequency_set(const struct dpll_pin *pin, ··· 4583 4583 tbl = bp->sma_op->tbl[sma->mode]; 4584 4584 for (i = 0; tbl[i].name; i++) 4585 4585 if (tbl[i].frequency == frequency) 4586 - return ptp_ocp_sma_store_val(bp, i, sma->mode, sma_nr); 4586 + return ptp_ocp_sma_store_val(bp, i, sma->mode, sma_nr + 1); 4587 4587 return -EINVAL; 4588 4588 } 4589 4589 ··· 4600 4600 u32 val; 4601 4601 int i; 4602 4602 4603 - val = bp->sma_op->get(bp, sma_nr); 4603 + val = bp->sma_op->get(bp, sma_nr + 1); 4604 4604 tbl = bp->sma_op->tbl[sma->mode]; 4605 4605 for (i = 0; tbl[i].name; i++) 4606 4606 if (val == tbl[i].value) {