On Fri Dec 6 10:26:41 2024 +0200, Tomi Valkeinen wrote:
> The driver uses a static CSI-2 virtual channel mapping where all virtual
> channels from an RX port are mapped to a virtual channel number matching
> the RX port number.
>
> The UB960 and UB9702 have different registers for the purpose, and the
> UB9702 version is not correct. Each of the VC_ID_MAP registers do not
> contain a single mapping, as the driver currently thinks, but two.
>
> This can cause received VCs other than 0 to be mapped in a wrong way.
>
> Fix this by writing both mappings to each register.
>
> Cc: [email protected]
> Fixes: afe267f2d368 ("media: i2c: add DS90UB960 driver")
> Reviewed-by: Jai Luthra <[email protected]>
> Signed-off-by: Tomi Valkeinen <[email protected]>
> Signed-off-by: Sakari Ailus <[email protected]>
> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
Patch committed.
Thanks,
Mauro Carvalho Chehab
drivers/media/i2c/ds90ub960.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
---
diff --git a/drivers/media/i2c/ds90ub960.c b/drivers/media/i2c/ds90ub960.c
index e28baf7944f3..1393425f6a6d 100644
--- a/drivers/media/i2c/ds90ub960.c
+++ b/drivers/media/i2c/ds90ub960.c
@@ -2532,7 +2532,7 @@ static int ub960_configure_ports_for_streaming(struct
ub960_data *priv,
for (i = 0; i < 8; i++)
ub960_rxport_write(priv, nport,
UB960_RR_VC_ID_MAP(i),
- nport);
+ (nport << 4) |
nport);
}
break;