ptp: ocp: fix DPLL functions
BugLink: https://bugs.launchpad.net/bugs/2071621
[ Upstream commit a2c78977950da00aca83a3f8865d1f54e715770d ]
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: 09eeb3aecc ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
This commit is contained in:
committed by
Stefan Bader
parent
25d99bf9e2
commit
e15eb0947a
@@ -4277,7 +4277,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,
|
||||
@@ -4298,7 +4298,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;
|
||||
}
|
||||
|
||||
@@ -4315,7 +4315,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) {
|
||||
|
||||
Reference in New Issue
Block a user