On 7/30/19 5:50 PM, Helen Koike wrote: > > > On 7/30/19 5:15 PM, Hans Verkuil wrote: >> On 7/30/19 8:42 PM, Helen Koike wrote: >>> Hello, >>> >>> I'm re-sending a new version of ISP(Camera) v4l2 driver for rockchip >>> rk3399 SoC. >>> >>> I didn't change much from the last version, just applying the >>> suggestions made in the previous one. >>> >>> This patchset is also available at: >>> https://gitlab.collabora.com/koike/linux/tree/rockchip/isp/v8 >>> >>> Libcamera patched to work with this version: >>> https://gitlab.collabora.com/koike/libcamera >>> (also sent to the mailing list) >>> >>> I tested on the rockpi 4 with a rpi v1.3 sensor and also with the >>> Scarlet Chromebook. >>> >>> Known issues (same as in v7): >>> ------------- >>> - Reloading the module doesn't work (there is some missing cleanup when >>> unloading) >>> - When capturing in bayer format, changing the size doesn't seem to >>> affect the image. >>> - crop needs more tests >>> - v4l2-compliance error: >>> fail: v4l2-test-controls.cpp(824): subscribe event for control 'Image Processing Controls' failed >>> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL >> >> Can you mail me the full v4l2-compliance output? > > Sure, please check here: http://ix.io/1Q5u > I updated v4l-utils with the latest version and I re-ran bootstrap/configure/make, > but for some reason the hash from the link above is not the latest commit, probably some > old configuration somewhere. I'll resend this log as soon as I get v4l2-compliance > properly updated. Please see the output of v4l2-compliance here with an updated v4l-utils: http://ix.io/1Q6A > > Thanks > Helen > >> >> Regards, >> >> Hans >> >>> It seems that if controls are supported, v4l2-compliance says that >>> controls of type 'Image Processing Controls' are mandatory, is this >>> correct? >>> - It seems there are still some issues with interrupts, but I couldn't >>> isolate them yet. >>> >>> Previous changelog: >>> ------------------- >>> >>> changes in V6: >>> - add mipi txrx phy support >>> - remove bool and enum from uapi header >>> - add buf_prepare op >>> - correct some spelling problems >>> - return all queued buffers when starting stream failed >>> >>> changes in V5: Sync with local changes, >>> - fix the SP height limit >>> - speed up the second stream capture >>> - the second stream can't force sync for rsz when start/stop streaming >>> - add frame id to param vb2 buf >>> - enable luminance maximum threshold >>> >>> changes in V4: >>> - fix some bugs during development >>> - move quantization settings to rkisp1 subdev >>> - correct some spelling problems >>> - describe ports in dt-binding documents >>> >>> changes in V3: >>> - add some comments >>> - fix wrong use of v4l2_async_subdev_notifier_register >>> - optimize two paths capture at a time >>> - remove compose >>> - re-struct headers >>> - add a tmp wiki page: http://opensource.rock-chips.com/wiki_Rockchip-isp1 >>> >>> changes in V2: >>> mipi-phy: >>> - use async probing >>> - make it be a child device of the GRF >>> isp: >>> - add dummy buffer >>> - change the way to get bus configuration, which make it possible to >>> add parallel sensor support in the future(without mipi-phy driver). >>> >>> ------------------ >>> >>> Changes in v8: >>> - Add SPDX in the header >>> - Remove emacs configs >>> - Fix doc style >>> - Remove boiler plate license text >>> >>> Changes in v7: >>> - s/IPU3/RK_ISP1 >>> - s/correspond/corresponding >>> - s/use/uses >>> - s/docuemnt/document >>> - Fix checkpatch errors (lines over 80 and SPDX) >>> - Add TODO to improve docs >>> - Migrate dphy specific code from >>> drivers/media/platform/rockchip/isp1/mipi_dphy_sy.c >>> to drivers/phy/rockchip/phy-rockchip-dphy.c >>> - Drop support for rk3288 >>> - Drop support for dphy txrx >>> - code styling and checkpatch fixes >>> - fixed warning because of unknown entity type >>> - fixed v4l2-compliance errors regarding rkisp1 formats, try formats >>> and default values >>> - fix typo riksp1/rkisp1 >>> - redesign: remove mipi/csi subdevice, sensors connect directly to the >>> isp subdevice in the media topology now. As a consequence, remove the >>> hack in mipidphy_g_mbus_config() where information from the sensor was >>> being propagated through the topology. >>> - From the old dphy: >>> * cache get_remote_sensor() in s_stream >>> * use V4L2_CID_PIXEL_RATE instead of V4L2_CID_LINK_FREQ >>> - Replace stream state with a boolean >>> - code styling and checkpatch fixes >>> - fix stop_stream (return after calling stop, do not reenable the stream) >>> - fix rkisp1_isp_sd_get_selection when V4L2_SUBDEV_FORMAT_TRY is set >>> - fix get format in output (isp_sd->out_fmt.mbus_code was being ignored) >>> - s/intput/input >>> - remove #define sd_to_isp_sd(_sd), add a static inline as it will be >>> reused by the capture >>> - s/strlcpy/strscpy >>> - sort out the locks in isp stats >>> - code styling and checkpatch fixes >>> - s/strlcpy/strscpy >>> - s/strcpy/strscpy >>> - fix config lsc error >>> LSC data table size is 17x17, but when configuring data to ISP, >>> should be aligned to 18x17. That means every last data of last >>> line should be filled with 0, and not filled with the data of >>> next line. >>> - Update new ISP parameters immediately >>> For those sub modules that have shadow registers in core isp, the >>> new programing parameters would not be active if both >>> CIF_ISP_CTRL_ISP_CFG_UPD_PERMANENT and CFG_UPD are not set. Now >>> we configure CFG_UPD to force update the shadow registers when new >>> ISP parameters are configured. >>> - fix some ISP parameters config error >>> Some ISP parameter config functions may override the old enable >>> bit value, because the enable bits of these modules are in the >>> same registers with parameters. So we should save the old enable >>> bits firstly. >>> - code styling and checkpatch fixes >>> - s/strlcpy/strscpy >>> - Fix v4l2-compliance issues: >>> * remove input ioctls >>> media api can be used to define the topology, this input api is not >>> required. Besides it, if an input is enumerated, v4l2-compliance is not >>> happy with G_FMT returning the default colorspace instead of something >>> more specific. >>> * return the pixelformat to the userspace >>> G_/S_/TRY_ FORMAT should return a valid pixelformat to the user, even if >>> the user gave an invalid one >>> * add missing default colorspace and ycbcr >>> * fix wrong pixformat in mp_fmts[] table >>> * add buf type check in s_/g_selection >>> * queue_setup - check sizes >>> * normalize bus_info name >>> * fix field any v4l2-compliance -s complain - set field none >>> when streaming >>> - Fix compiling error: s/vidioc_enum_fmt_vid_cap_mplane/vidioc_enum_fmt_vid_cap >>> - Replace stream state with a boolean >>> The rkisp1_state enum consists only of 3 entries, where 1 is completely >>> unused and the other two respectively mean not streaming or streaming. >>> Replace it with a boolean called "streaming". >>> - Simplify MI interrupt handling >>> Rather than adding unnecessary indirection, just use stream index to >>> handle MI interrupt enable/disable/clear, since the stream index matches >>> the order of bits now, thanks to previous patch. While at it, remove >>> some dead code. >>> - code styling and checkpatch fixes >>> - add link_validate: don't allow a link with bayer/non-bayer mismatch >>> - VIDEO_ROCKCHIP_ISP1 selects VIDEOBUF2_VMALLOC >>> - add PHY_ROCKCHIP_DPHY as a dependency for VIDEO_ROCKCHIP_ISP1 >>> - Fix compilation and runtime errors due to bitrotting >>> The code has bit-rotten since March 2018, fix compilation errors. >>> The new V4L2 async notifier API requires notifiers to be initialized by >>> a call to v4l2_async_notifier_init() before being used, do so. >>> - Add missing module device table >>> - use clk_bulk framework >>> - add missing notifiers cleanups >>> - s/strlcpy/strscpy >>> - normalize bus_info name >>> - fix s_stream error path, stream_cnt wans't being decremented properly >>> - use devm_platform_ioremap_resource() helper >>> - s/deice/device >>> - redesign: remove mipi/csi subdevice, sensors connect directly to the >>> isp subdevice in the media topology now. >>> - remove "saved_state" member from rkisp1_stream struct >>> - Reverse the order of MIs >>> - Simplify MI interrupt handling >>> Rather than adding unnecessary indirection, just use stream index to >>> handle MI interrupt enable/disable/clear, since the stream index matches >>> the order of bits now, thanks to previous patch. While at it, remove >>> some dead code. >>> - code styling and checkpatch fixes >>> - update document with new design and tested example >>> - updated doc with new design and tested example >>> - add phy properties >>> - add ports >>> - add phy-cells >>> >>> Helen Koike (1): >>> MAINTAINERS: add entry for Rockchip ISP1 driver >>> >>> Jacob Chen (9): >>> media: doc: add document for rkisp1 meta buffer format >>> media: rkisp1: add Rockchip MIPI Synopsys DPHY driver >>> media: rkisp1: add Rockchip ISP1 subdev driver >>> media: rkisp1: add ISP1 statistics driver >>> media: rkisp1: add ISP1 params driver >>> media: rkisp1: add capture device driver >>> media: rkisp1: add rockchip isp1 core driver >>> dt-bindings: Document the Rockchip ISP1 bindings >>> dt-bindings: Document the Rockchip MIPI RX D-PHY bindings >>> >>> Jeffy Chen (1): >>> media: rkisp1: Add user space ABI definitions >>> >>> Shunqian Zheng (3): >>> media: videodev2.h, v4l2-ioctl: add rkisp1 meta buffer format >>> arm64: dts: rockchip: add isp0 node for rk3399 >>> arm64: dts: rockchip: add rx0 mipi-phy for rk3399 >>> >>> .../bindings/media/rockchip-isp1.txt | 71 + >>> .../bindings/media/rockchip-mipi-dphy.txt | 38 + >>> Documentation/media/uapi/v4l/meta-formats.rst | 2 + >>> .../uapi/v4l/pixfmt-meta-rkisp1-params.rst | 23 + >>> .../uapi/v4l/pixfmt-meta-rkisp1-stat.rst | 22 + >>> MAINTAINERS | 8 + >>> arch/arm64/boot/dts/rockchip/rk3399.dtsi | 36 + >>> drivers/media/platform/Kconfig | 12 + >>> drivers/media/platform/Makefile | 1 + >>> drivers/media/platform/rockchip/isp1/Makefile | 7 + >>> .../media/platform/rockchip/isp1/capture.c | 1754 +++++++++++++++++ >>> .../media/platform/rockchip/isp1/capture.h | 164 ++ >>> drivers/media/platform/rockchip/isp1/common.h | 101 + >>> drivers/media/platform/rockchip/isp1/dev.c | 675 +++++++ >>> drivers/media/platform/rockchip/isp1/dev.h | 97 + >>> .../media/platform/rockchip/isp1/isp_params.c | 1604 +++++++++++++++ >>> .../media/platform/rockchip/isp1/isp_params.h | 50 + >>> .../media/platform/rockchip/isp1/isp_stats.c | 508 +++++ >>> .../media/platform/rockchip/isp1/isp_stats.h | 60 + >>> drivers/media/platform/rockchip/isp1/regs.c | 223 +++ >>> drivers/media/platform/rockchip/isp1/regs.h | 1525 ++++++++++++++ >>> drivers/media/platform/rockchip/isp1/rkisp1.c | 1286 ++++++++++++ >>> drivers/media/platform/rockchip/isp1/rkisp1.h | 111 ++ >>> drivers/media/v4l2-core/v4l2-ioctl.c | 2 + >>> drivers/phy/rockchip/Kconfig | 8 + >>> drivers/phy/rockchip/Makefile | 1 + >>> drivers/phy/rockchip/phy-rockchip-dphy.c | 408 ++++ >>> include/uapi/linux/rkisp1-config.h | 816 ++++++++ >>> include/uapi/linux/videodev2.h | 4 + >>> 29 files changed, 9617 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/media/rockchip-isp1.txt >>> create mode 100644 Documentation/devicetree/bindings/media/rockchip-mipi-dphy.txt >>> create mode 100644 Documentation/media/uapi/v4l/pixfmt-meta-rkisp1-params.rst >>> create mode 100644 Documentation/media/uapi/v4l/pixfmt-meta-rkisp1-stat.rst >>> create mode 100644 drivers/media/platform/rockchip/isp1/Makefile >>> create mode 100644 drivers/media/platform/rockchip/isp1/capture.c >>> create mode 100644 drivers/media/platform/rockchip/isp1/capture.h >>> create mode 100644 drivers/media/platform/rockchip/isp1/common.h >>> create mode 100644 drivers/media/platform/rockchip/isp1/dev.c >>> create mode 100644 drivers/media/platform/rockchip/isp1/dev.h >>> create mode 100644 drivers/media/platform/rockchip/isp1/isp_params.c >>> create mode 100644 drivers/media/platform/rockchip/isp1/isp_params.h >>> create mode 100644 drivers/media/platform/rockchip/isp1/isp_stats.c >>> create mode 100644 drivers/media/platform/rockchip/isp1/isp_stats.h >>> create mode 100644 drivers/media/platform/rockchip/isp1/regs.c >>> create mode 100644 drivers/media/platform/rockchip/isp1/regs.h >>> create mode 100644 drivers/media/platform/rockchip/isp1/rkisp1.c >>> create mode 100644 drivers/media/platform/rockchip/isp1/rkisp1.h >>> create mode 100644 drivers/phy/rockchip/phy-rockchip-dphy.c >>> create mode 100644 include/uapi/linux/rkisp1-config.h >>> >>