[PATCH v10 00/10] Renesas Capture Engine Unit (CEU) V4L2 driver

From: Jacopo Mondi
Date: Wed Feb 21 2018 - 12:48:23 EST


Hello,
10th round, one step closer to finalize CEU inclusion (hopefully).

I have dropped patch 11/11 of v9 as it is still a debated topic and I would
like to have it clarified without blocking this series.

In patch [3/10] Hans noticed that after changing input, format should be set on
CEU again to make sure userspace can start streaming operations. While
there's no clear preference if applying default formats to the newly selected
input is the best option, I went for this one. While at there I renamed the
"ceu_init_formats()" function to "ceu_init_mbus_fmt()" and moved field
selection to "ceu_set[_default]_fmt()" functions.

In patch [7/10] I have dropped two redundant memsets and closed a few warnings
received from 0-day running sparse on the patch. I have declared two fields as
static, and transformed an "if" clause in a "switch" one, to catch all possible
cases with a "default" one and while at there replaced the frame interval array
size definition with an explicit ARRAY_SIZE().

Apart from that, all patches are now acked/reviewed, apart from 03/10 that has
Hans' ack still pending.

Diff from v9 is so short, I captured it here for the interested ones:
https://paste.debian.net/hidden/91567755

Thanks
j

v9->v10:
- Close 0-days warning on ov772x frame interval
- Set default format on CEU after input change
- Drop ov7670 mbus frame format set not to block this series while topic
gets clarified

v8->v9:
- Address Laurent's review of ov772x frame rate
- Address Sergei comment on ceu node name

v7->v8:
- Calculate PLL divider/multiplier and do not use static tables
- Change RZ/A1-H to RZ/A1H (same for L) in bindings documentation
- Use rounded clock rate in Migo-R board code as SH clk_set_clk()
implementation does not perform rounding
- Set ycbcr_enc and other fields of v4l2_mbus_format for ov772x as patch
[11/11] does for ov7670

v6->v7:
- Add patch to handle ycbr_enc and other fields of v4l2_mbus_format for ov7670
- Add patch to handle frame interval for ov772x
- Rebased on Hans' media-tree/parm branch with v4l2_g/s_parm_cap
- Drop const modifier in CEU releated fields of Migo-R setup.c board file
to silence complier warnings.

v5->v6:
- Add Hans' Acked-by to most patches
- Fix a bad change in ov772x get_selection
- Add .buf_prepare callack to CEU and verify plane sizes there
- Remove VB2_USERPTR from supported io_modes in CEU driver
- Remove read() fops in CEU driver

v4->v5:
- Added Rob's and Laurent's Reviewed-by tag to DT bindings
- Change CEU driver module license to "GPL v2" to match SPDX identifier as
suggested by Philippe Ombredanne
- Make struct ceu_data static as suggested by Laurent and add his
Reviewed-by to CEU driver.

v3->v4:
- Drop generic fallback compatible string "renesas,ceu"
- Addressed Laurent's comments on [3/9]
- Fix error messages on irq get/request
- Do not leak ceudev if irq_get fails
- Make irq_mask a const field

v2->v3:
- Improved DT bindings removing standard properties (pinctrl- ones and
remote-endpoint) not specific to this driver and improved description of
compatible strings
- Remove ov772x's xlkc_rate property and set clock rate in Migo-R board file
- Made 'xclk' clock private to ov772x driver in Migo-R board file
- Change 'rstb' GPIO active output level and changed ov772x and tw9910 drivers
accordingly as suggested by Fabio
- Minor changes in CEU driver to address Laurent's comments
- Moved Migo-R setup patch to the end of the series to silence 0-day bot
- Renamed tw9910 clock to 'xti' as per video decoder manual
- Changed all SPDX identifiers to GPL-2.0 from previous GPL-2.0+

v1->v2:
- DT
-- Addressed Geert's comments and added clocks for CEU to mstp6 clock source
-- Specified supported generic video iterfaces properties in dt-bindings and
simplified example

- CEU driver
-- Re-worked interrupt handler, interrupt management, reset(*) and capture
start operation
-- Re-worked querycap/enum_input/enum_frameintervals to fix some
v4l2_compliance failures
-- Removed soc_camera legacy operations g/s_mbus_format
-- Update to new notifier implementation
-- Fixed several comments from Hans, Laurent and Sakari

- Migo-R
-- Register clocks and gpios for sensor drivers in Migo-R setup
-- Updated sensors (tw9910 and ov772x) drivers headers and drivers to close
remarks from Hans and Laurent:
--- Removed platform callbacks and handle clocks and gpios from sensor drivers
--- Remove g/s_mbus_config operations

Jacopo Mondi (10):
dt-bindings: media: Add Renesas CEU bindings
include: media: Add Renesas CEU driver interface
media: platform: Add Renesas CEU driver
ARM: dts: r7s72100: Add Capture Engine Unit (CEU)
media: i2c: Copy ov772x soc_camera sensor driver
media: i2c: ov772x: Remove soc_camera dependencies
media: i2c: ov772x: Support frame interval handling
media: i2c: Copy tw9910 soc_camera sensor driver
media: i2c: tw9910: Remove soc_camera dependencies
arch: sh: migor: Use new renesas-ceu camera driver

.../devicetree/bindings/media/renesas,ceu.txt | 81 +
arch/arm/boot/dts/r7s72100.dtsi | 15 +-
arch/sh/boards/mach-migor/setup.c | 225 ++-
arch/sh/kernel/cpu/sh4a/clock-sh7722.c | 2 +-
drivers/media/i2c/Kconfig | 20 +
drivers/media/i2c/Makefile | 2 +
drivers/media/i2c/ov772x.c | 1365 ++++++++++++++++
drivers/media/i2c/tw9910.c | 1039 ++++++++++++
drivers/media/platform/Kconfig | 9 +
drivers/media/platform/Makefile | 1 +
drivers/media/platform/renesas-ceu.c | 1670 ++++++++++++++++++++
include/media/drv-intf/renesas-ceu.h | 26 +
include/media/i2c/ov772x.h | 6 +-
include/media/i2c/tw9910.h | 9 +
14 files changed, 4339 insertions(+), 131 deletions(-)
create mode 100644 Documentation/devicetree/bindings/media/renesas,ceu.txt
create mode 100644 drivers/media/i2c/ov772x.c
create mode 100644 drivers/media/i2c/tw9910.c
create mode 100644 drivers/media/platform/renesas-ceu.c
create mode 100644 include/media/drv-intf/renesas-ceu.h

--
2.7.4