mbox series

[0/2] media: Driver for OV1063x camera sensor

Message ID 20210104053945.12409-1-laurent.pinchart@ideasonboard.com
Headers show
Series media: Driver for OV1063x camera sensor | expand

Message

Laurent Pinchart Jan. 4, 2021, 5:39 a.m. UTC
Hello,

This patch series adds a driver for the OV10633 and OV10635 camera
sensors, along with corresponding DT bindings.

As detailed in the commit message of patch 2/2, the driver originates
from a submission from Phil Edworthy 7 and a half years ago. It went
through the TI kernel tree, and is now a candidate for mainline again.

Large parts of the driver have been rewritten compared to the version
present in the TI kernel, to bring the code to the latest kernel APIs,
fix issues and apply various cleanups. There are known issues, listed in
TODO comments in the driver, and some of them will require access to
more documentation in order to develop fixes (I only have a leaked
OV10633 datasheet).

I'd appreciate if reviewers could have a look at the TODO comment and
let me know which issues are blocking and which could be addressed
later. The code is functional, and has been tested successfully with
multiple resolutions, with a TI AM572x EVM and the TI VIP capture driver
(which I will submit in the near future in a separate series).

One potential blocker is the split of the driver in multiple subdevs as
that would affect the userspace API. I will work on this, but I maye be
limited by lack of information in the documentation I have access to, as
it's not always clear what the exact hardware features are.

Still, a best effort split is likely possible. On this topic, the sensor
seems to support vertical skipping in the pixel array by a factor of 2
or 4 (this isn't entirely clear), and horizontal and vertical
sub-sampling (using either summing, averaging or skipping) in the ISP,
the latter seemingly in the YUV domain (I kid you not...). There's also
an analog crop rectangle that can crop any portion of the image
vertically but is limited to a centered region of 1312, 768 or 656
pixels horizontally, and a digital crop rectangle that seems more
standard, applied (if I'm not mistaken) after pixel array vertical
skipping and before ISP sub-sampling. Advices on how to meaningfully
expose these features through the subdev API would be welcome (cursing
hardware designers is not mandatory).

Benoit Parrot (1):
  dt-bindings: media: Add bindings for OmniVision OV1063x sensors

Laurent Pinchart (1):
  media: i2c: Add OV1063x sensor driver

 .../bindings/media/i2c/ov1063x.yaml           |   97 +
 MAINTAINERS                                   |    9 +
 drivers/media/i2c/Kconfig                     |   12 +
 drivers/media/i2c/Makefile                    |    1 +
 drivers/media/i2c/ov1063x.c                   | 1692 +++++++++++++++++
 drivers/media/i2c/ov1063x_regs.h              |  626 ++++++
 6 files changed, 2437 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/ov1063x.yaml
 create mode 100644 drivers/media/i2c/ov1063x.c
 create mode 100644 drivers/media/i2c/ov1063x_regs.h