Re: [PATCH 2/2] media: i2c: og0va1b: Add OmniVision OG0VA1B camera sensor

From: Vladimir Zapolskiy

Date: Thu Jun 18 2026 - 09:10:47 EST


On 6/18/26 15:36, Wenmeng Liu wrote:


On 6/18/2026 6:50 PM, Vladimir Zapolskiy wrote:
Hello Wenmeng.

On 6/18/26 13:37, Wenmeng Liu wrote:
Add V4L2 sub device driver for OmniVision OG0VA1B image sensor.
OmniVision OG0VA1B is an image sensor, which produces frames in 10-bit
raw output format (Y10) over a 1-lane MIPI CSI-2 interface and supports
the 640x480 (VGA) resolution.

Signed-off-by: Wenmeng Liu <wenmeng.liu@xxxxxxxxxxxxxxxx>
---
  MAINTAINERS                 |   1 +
  drivers/media/i2c/Kconfig   |  10 +
  drivers/media/i2c/Makefile  |   1 +
  drivers/media/i2c/og0va1b.c | 867 ++++++++++++++++++++++++++++++++++
++++++++++
  4 files changed, 879 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index
5aa846c8479b20651291d5bd2e316308310f826c..85a06eb9eacc410a565b80d56979eaa565515d0e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -19891,6 +19891,7 @@ M:    Wenmeng Liu <wenmeng.liu@xxxxxxxxxxxxxxxx>
  L:    linux-media@xxxxxxxxxxxxxxx
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/i2c/ovti,og0va1b.yaml
+F:    drivers/media/i2c/og0va1b.c
  OMNIVISION OG0VE1B SENSOR DRIVER
  M:    Vladimir Zapolskiy <vladimir.zapolskiy@xxxxxxxxxx>
diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
index
5d173e0ecf424f2f204f8d426be818e44357f8e4..56680772f5f47b4629c4e17f5a5feba08b1d94fc 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -363,6 +363,16 @@ config VIDEO_OG01A1B
        To compile this driver as a module, choose M here: the
        module will be called og01a1b.
+config VIDEO_OG0VA1B
+    tristate "OmniVision OG0VA1B sensor support"
+    select V4L2_CCI_I2C
+    help
+      This is a Video4Linux2 sensor driver for the OmniVision
+      OG0VA1B camera.
+
+      To compile this driver as a module, choose M here: the
+      module will be called og0va1b.
+
  config VIDEO_OG0VE1B
      tristate "OmniVision OG0VE1B sensor support"
      select V4L2_CCI_I2C
diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
index
e45359efe0e41e13e3c0869e5ead7d6cf4aca3a7..c60851c7fe07e3bdc511c5f482525ba7a044f48e 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -83,6 +83,7 @@ obj-$(CONFIG_VIDEO_MT9V011) += mt9v011.o
  obj-$(CONFIG_VIDEO_MT9V032) += mt9v032.o
  obj-$(CONFIG_VIDEO_MT9V111) += mt9v111.o
  obj-$(CONFIG_VIDEO_OG01A1B) += og01a1b.o
+obj-$(CONFIG_VIDEO_OG0VA1B) += og0va1b.o
  obj-$(CONFIG_VIDEO_OG0VE1B) += og0ve1b.o
  obj-$(CONFIG_VIDEO_OS05B10) += os05b10.o
  obj-$(CONFIG_VIDEO_OV01A10) += ov01a10.o
diff --git a/drivers/media/i2c/og0va1b.c b/drivers/media/i2c/og0va1b.c
new file mode 100644
index
0000000000000000000000000000000000000000..f0505b7ba7f329ad57ffafa8f90a24204f002d3c
--- /dev/null
+++ b/drivers/media/i2c/og0va1b.c
@@ -0,0 +1,867 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * OmniVision OG0VA1B Camera Sensor Driver
+ *
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries
+ */
+
+#include <linux/clk.h>
+#include <linux/delay.h>
+#include <linux/gpio/consumer.h>
+#include <linux/i2c.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/pm_runtime.h>
+#include <linux/regulator/consumer.h>
+
+#include <media/v4l2-cci.h>
+#include <media/v4l2-ctrls.h>
+#include <media/v4l2-device.h>
+#include <media/v4l2-fwnode.h>
+#include <media/v4l2-subdev.h>
+
+#define OG0VA1B_REG_CHIP_ID        CCI_REG16(0x300a)
+#define OG0VA1B_CHIP_ID            0xC756

This is the same chip id as of the OG0VE1B sensor device.

What's the difference between these two sensors, and do you find it
possible
to add support of OG0VA1B sensor/modes into OG0VE1B sensor driver? Or is
it just the same device?

Hardware specifics described in dt changes also does not show a difference
in comparison to ovti,og0ve1b.yaml.


Hi Vladimir,

Both OG0VE1B and OG0VA1B belong to the same OmniVision VGA monochrome
sensor family. They share the same resolution, power rails, reset GPIO
behavior and power management framework.

But they are different:
OG0VE1B: 8-bit RAW, lower FPS

The current OG0VE1B driver supports 640x480@120 FPS, 8-bit mode, however
the sensor itself has 10-bit image output format mode support also.

OG0VA1B: 10-bit RAW, higher FPS
and some registers are not same.

The very first one, which I'd like to see in the driver, is the difference
in the CHIP_IP register value.


The DT bindings can be reused, but would it be more appropriate for the
driver to remain independent?


It depends on the actual difference between two devices, if it is lightly
maintainable, then it makes no sense to add another driver IMHO, but this
should be established.

If the difference is about different mode programming, I'd say it can be
kept under one device driver.

FWIW on OmniVision website there are "OG0VE" and "OG0VA" product briefs,
the devices are very similar, but not identical. Obviously there are
Linux device drivers, in particular image sensor drivers, which support
multiple different devices, so having a single device driver is at least
a viable option to consider.

It'd be great to get comments from other developers on the subject.

--
Best wishes,
Vladimir