[PATCH 00/19] Omnivision OV4689 refactoring and improvements

From: Mikhail Rudenko
Date: Mon Dec 11 2023 - 12:50:58 EST


Hi,

This series contains refactoring and new features implementation for
the Omnivision OV4689 sensor driver. Specifically, patches 1, 2, 4, 5,
6, 9, 14, 15, 17, and 18 are refactorings, and are not supposed to
introduce any functional change. Patches 3 and 7 perform migration to
CCI helpers and subdevice active state respectively, and should not
introduce any hardware- and/or user-visible change either.

Patches 10-13 expose more sensor controls to the userspace, such as
(read-write) HBLANK, VFLIP/HFLIP, digital gain, and color
balance. Patch 16 implements configurable analogue crop rectangle via
.set_selection callback. And finally, patch 19 enables 2x2 binning
option. It should be noted that publicly available sensor
documentation is lacking description of many registers and their value
ranges, so a lot of values had to be found by experimentation.

Any comments and reviews are welcome!

Mikhail Rudenko (19):
media: i2c: ov4689: Clean up and annotate the register table
media: i2c: ov4689: Fix typo in a comment
media: i2c: ov4689: CCI conversion
media: i2c: ov4689: Remove i2c_client from ov4689 struct
media: i2c: ov4689: Refactor ov4689_set_ctrl
media: i2c: ov4689: Set gain in one 16 bit write
media: i2c: ov4689: Use sub-device active state
media: i2c: ov4689: Enable runtime PM before registering sub-device
media: i2c: ov4689: Remove max_fps field from struct ov4689_mode
media: i2c: ov4689: Make horizontal blanking configurable
media: i2c: ov4689: Implement vflip/hflip controls
media: i2c: ov4689: Implement digital gain control
media: i2c: ov4689: Implement manual color balance controls
media: i2c: ov4689: Move pixel array size out of struct ov4689_mode
media: i2c: ov4689: Set timing registers programmatically
media: i2c: ov4689: Configurable analogue crop
media: i2c: ov4689: Eliminate struct ov4689_mode
media: i2c: ov4689: Refactor ov4689_s_stream
media: i2c: ov4689: Implement 2x2 binning

drivers/media/i2c/Kconfig | 1 +
drivers/media/i2c/ov4689.c | 951 ++++++++++++++++++++++---------------
2 files changed, 579 insertions(+), 373 deletions(-)

--
2.43.0