Files
openwrt-armor-g5/target/linux/bcm27xx/patches-6.6/950-0663-media-i2c-ov9282-Read-chip-ID-via-2-reads.patch
domenico 27c9d80f51
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Initial commit
2025-06-24 12:51:15 +02:00

39 lines
1.2 KiB
Diff

From eff15cfea957f6a9714e305cf99ebe641a343144 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Wed, 11 Oct 2023 11:12:41 +0100
Subject: [PATCH 0663/1085] media: i2c: ov9282: Read chip ID via 2 reads
Vision Components have made an OV9281 module which blocks reading
back the majority of registers to comply with NDAs, and in doing
so doesn't allow auto-increment register reading as used when
reading the chip ID.
Use two reads and manually combine the results.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
drivers/media/i2c/ov9282.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
--- a/drivers/media/i2c/ov9282.c
+++ b/drivers/media/i2c/ov9282.c
@@ -1078,12 +1078,16 @@ error_unlock:
static int ov9282_detect(struct ov9282 *ov9282)
{
int ret;
- u32 val;
+ u32 val, msb;
- ret = ov9282_read_reg(ov9282, OV9282_REG_ID, 2, &val);
+ ret = ov9282_read_reg(ov9282, OV9282_REG_ID + 1, 1, &val);
+ if (ret)
+ return ret;
+ ret = ov9282_read_reg(ov9282, OV9282_REG_ID, 1, &msb);
if (ret)
return ret;
+ val |= (msb << 8);
if (val != OV9282_ID) {
dev_err(ov9282->dev, "chip id mismatch: %x!=%x",
OV9282_ID, val);