[PATCH v3 00/10] media: ar0521: Add analog gain, rework clock tree

Jacopo Mondi
2022-11-04T14:28:26Z

Hello,
this series adds a few features to the ar0521 driver to enable its usage
with libcamera.

In particular:
- enum_frame_sizes
- global analog gain control
- LINK_FREQ
- Rework blanking handligs

v3 (Dave)
- Check __v4l2_ctrl_modify_range() return value
- Make LINK_FREQ readonly to avoid additional churn in s_ctrl
- Fix trivial early return in s_ctrl
- Use exposure's default value when modifying the controls' limits
- Change the exposure default to 0x70 to match the register default value

v2:
- I have dropped the most controverse part that allows to change the link
frequency to obtain 60FPS. It can be eventually be applied on top.
- Use register 0x3028 to control analog gain not to overwrite the global digital
gain.
- Fix the HBLANK/VBLANK max by using the values read from on-chip registers.
- Fix handling of LINK_FREQ in s_cltr (but do not make the control read only).
- Fix errors reported by 0-days:
- use do_div() for 64-bit division
- declare variables in function scope and not in case scope in s_ctrl

Jacopo Mondi (10):
media: ar0521: Implement enum_frame_sizes
media: ar0521: Add V4L2_CID_ANALOG_GAIN
media: ar0521: Set maximum resolution to 2592x1944
media: ar0521: Rework PLL computation
media: ar0521: Refuse unsupported controls
media: ar0521: Add LINK_FREQ control
media: ar0521: Adjust exposure and blankings limits
media: ar0521: Setup controls at s_stream time
media: ar0521: Rework startup sequence
media: ar0521: Tab-align definitions

drivers/media/i2c/ar0521.c | 352 ++++++++++++++++++++++++++-----------
1 file changed, 250 insertions(+), 102 deletions(-)

--
2.38.1