[PATCH v5 14/16] media: sony-starvis2: Only update bits for window mode
From: Dave Stevenson
Date: Mon Oct 19 2026 - 11:51:47 EST
IMX585 requires bit 4 of the WINMODE register (0x3018) to be
set, whilst the bottom nibble selects between all-pixel and
window mode.
Switch to using cci_update_bits so that only the bottom nibble
is updated, thereby working on all supported Starvis2 sensors.
Signed-off-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>
---
drivers/media/i2c/sony-starvis2.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/media/i2c/sony-starvis2.c b/drivers/media/i2c/sony-starvis2.c
index 8c21109b33c1..e2b161656a5c 100644
--- a/drivers/media/i2c/sony-starvis2.c
+++ b/drivers/media/i2c/sony-starvis2.c
@@ -88,6 +88,7 @@
/* Crop */
#define STARVIS2_REG_WINMODE CCI_REG8(0x3018)
+#define STARVIS2_REG_WINMODE_MASK 0x0f
#define STARVIS2_REG_PIX_HST CCI_REG16_LE(0x303c)
#define STARVIS2_REG_PIX_HWIDTH CCI_REG16_LE(0x303e)
#define STARVIS2_REG_PIX_VST CCI_REG16_LE(0x3044)
@@ -1459,7 +1460,8 @@ static int starvis2_program_window(struct starvis2 *starvis2,
int ret = 0;
cci_write(starvis2->cci, STARVIS2_REG_ADDMODE, 0x00, &ret);
- cci_write(starvis2->cci, STARVIS2_REG_WINMODE, 0x04, &ret);
+ cci_update_bits(starvis2->cci, STARVIS2_REG_WINMODE,
+ STARVIS2_REG_WINMODE_MASK, 0x04, &ret);
cci_write(starvis2->cci, STARVIS2_REG_PIX_HST,
crop->left - starvis2->variant->active_area.left, &ret);
cci_write(starvis2->cci, STARVIS2_REG_PIX_HWIDTH, crop->width, &ret);
--
2.34.1