All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Add Omnivision OV4689 image sensor driver
@ 2022-09-11 20:01 Mikhail Rudenko
  2022-09-11 20:01 ` [PATCH v2 1/2] media: dt-bindings: media: i2c: document OV4689 DT bindings Mikhail Rudenko
                   ` (3 more replies)
  0 siblings, 4 replies; 41+ messages in thread
From: Mikhail Rudenko @ 2022-09-11 20:01 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
	Sakari Ailus, Hans Verkuil, Jacopo Mondi, Shawn Tu, Jimmy Su,
	Arnd Bergmann, Arec Kao, Laurent Pinchart, Marek Vasut
  Cc: Mikhail Rudenko, linux-media, devicetree, linux-kernel

Hello,

this series implements support for Omnivision OV4689 image
sensor. The Omnivision OV4689 is a high performance, 1/3-inch, 4
megapixel image sensor. Ihis chip supports high frame rate speeds up
to 90 fps at 2688x1520 resolution. It is programmable through an I2C
interface, and sensor output is sent via 1/2/4 lane MIPI CSI-2
connection.

The driver is based on Rockchip BSP kernel [1]. It implements 4-lane CSI-2
and single 2688x1520 @ 30 fps mode. The driver was tested on Rockchip
3399-based FriendlyElec NanoPi M4 board with MCAM400 camera module.

While porting the driver, I stumbled upon two issues:

(1) In the original driver, horizontal total size (HTS) was set to a
value (2584) lower then the frame width (2688), resulting in negative
hblank. In this driver, I increased HTS to 2688, but fps dropped from
29.88 to 28.73. What is the preferred way to handle this?

(2) The original driver exposes analog gain range 0x0 - 0x7ff, but the
gain is not linear across that range. Instead, it is piecewise linear
(and discontinuous). 0x0-0xff register values result in 0x-2x gain,
0x100-0x1ff to 0x-4x, 0x300-0x3ff to 0x-8x, and 0x700-0x7ff to 0x-16x,
with more linear segments in between. Rockchip's camera engine code
chooses one of the above segments depenging on the desired gain
value. The question is, how should we proceed keeping in mind
libcamera use case? Should the whole 0x0-0x7ff be exposed as-is and
libcamera will do the mapping, or the driver will do the mapping
itself and expose some logical gain units not tied to the actual gain
register value? Meanwhile, this driver conservatively exposes only
0x0-0xf8 gain register range.

[1] https://github.com/rockchip-linux/kernel/blob/develop-4.19/drivers/media/i2c/ov4689.c

changes in v2:
- bindings: reword descriptions
- bindings: move clock description to clocks property
- bindings: add data-lanes and link-frequencies properties to port
- driver: validate media bus configuration when probing

Mikhail Rudenko (2):
  media: dt-bindings: media: i2c: document OV4689 DT bindings
  media: i2c: add support for ov4689

 .../bindings/media/i2c/ovti,ov4689.yaml       | 141 +++
 MAINTAINERS                                   |   8 +
 drivers/media/i2c/Kconfig                     |  14 +
 drivers/media/i2c/Makefile                    |   1 +
 drivers/media/i2c/ov4689.c                    | 951 ++++++++++++++++++
 5 files changed, 1115 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml
 create mode 100644 drivers/media/i2c/ov4689.c

--
2.37.3

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2022-09-26 13:41 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-11 20:01 [PATCH v2 0/2] Add Omnivision OV4689 image sensor driver Mikhail Rudenko
2022-09-11 20:01 ` [PATCH v2 1/2] media: dt-bindings: media: i2c: document OV4689 DT bindings Mikhail Rudenko
2022-09-12 10:55   ` Krzysztof Kozlowski
2022-09-15 12:16     ` Mikhail Rudenko
2022-09-16  9:42       ` Krzysztof Kozlowski
2022-09-13 14:05   ` Tommaso Merciai
2022-09-15 20:11     ` Mikhail Rudenko
2022-09-16 13:15       ` Tommaso Merciai
2022-09-16 13:42         ` Mikhail Rudenko
2022-09-19 13:16           ` Laurent Pinchart
2022-09-11 20:01 ` [PATCH v2 2/2] media: i2c: add support for ov4689 Mikhail Rudenko
2022-09-11 22:52   ` kernel test robot
2022-09-12 10:56   ` Krzysztof Kozlowski
2022-09-15 20:40     ` Mikhail Rudenko
2022-09-16  9:43       ` Krzysztof Kozlowski
2022-09-16 21:51         ` Sakari Ailus
2022-09-14 15:51   ` Tommaso Merciai
2022-09-15 20:50     ` Mikhail Rudenko
2022-09-16 13:34       ` Tommaso Merciai
2022-09-16 13:44         ` Mikhail Rudenko
2022-09-19  7:08           ` Tommaso Merciai
2022-09-19  6:33         ` Sakari Ailus
2022-09-19  7:11           ` Tommaso Merciai
2022-09-22  9:53   ` Sakari Ailus
2022-09-22 15:23     ` Mikhail Rudenko
2022-09-22 20:39       ` Sakari Ailus
2022-09-22 10:54   ` Dave Stevenson
2022-09-22 14:56     ` Mikhail Rudenko
2022-09-14  9:58 ` [PATCH v2 0/2] Add Omnivision OV4689 image sensor driver Dave Stevenson
2022-09-15 21:27   ` Mikhail Rudenko
2022-09-19  6:40     ` Sakari Ailus
2022-09-19  7:01       ` Mikhail Rudenko
2022-09-19 10:31         ` Sakari Ailus
2022-09-19 13:49           ` Laurent Pinchart
2022-09-20 15:55             ` Mikhail Rudenko
2022-09-20 20:31             ` Mikhail Rudenko
2022-09-21 13:16               ` Sakari Ailus
2022-09-22  9:53 ` Sakari Ailus
2022-09-22 10:43   ` Dave Stevenson
2022-09-22 15:13     ` Mikhail Rudenko
2022-09-26 10:47     ` Mikhail Rudenko

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.