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: sta...@vger.kernel.org > Fixes: afe267f2d368 ("media: i2c: add DS90UB960 driver") > Reviewed-by: Jai Luthra <jai.lut...@ideasonboard.com> > Signed-off-by: Tomi Valkeinen <tomi.valkei...@ideasonboard.com> > Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com> > Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org>
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;