Received: by 10.223.176.46 with SMTP id f43csp718490wra; Fri, 26 Jan 2018 05:56:22 -0800 (PST) X-Google-Smtp-Source: AH8x224pE+0Ag4mJLQYdsVJBB70TUGFbCiVuLM/54aF/zVmLBOPI6t5zwWhMMZ35liYRHy3dKmhE X-Received: by 10.98.155.157 with SMTP id e29mr19176294pfk.78.1516974981892; Fri, 26 Jan 2018 05:56:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516974981; cv=none; d=google.com; s=arc-20160816; b=H1oE+tJ0vZMVfaYwvZigL8RfQE9c5Xjuc2PHZ+qqyDgs+7atH9J3BiI4eHa1T3DGv4 SzoXrXlhcccKLDtEp/v1SYHjbNwtxxSeeCpDSm9vROZ8wlhDUpVubggHDziON0uS0DSy DbTFjfTOHIkBTkt3r7nBq2eR6OJCjkkif+EQYV7szdyCT2DyDTqjsbskxDE5qAqaoAc+ mdgfpgAVcZQL+SQ1bABukRHtJKcWWxdeeZzguo1VnIAYAtRuh2wZCTYGXtjVQWiPw27H qh+SluhEfduRneLbGH+MPK8P8KBKUexZgL41rhyN4fUi1rcdCRo2RxbqaUTWJLB6Z5Xv EBUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=/YbHZ9S5sHy4MfOzjDReUDX0He8jFAZdHZILqaTm47Q=; b=csGGskas9UgA11On54uSivgRsGZk/LulrPC0BnG7L1jmJNOKZNNX8/iOxuIRG5ZpRs a8DOUeVQbnXHhIEVoXRgmr0c/P5YK2uOreaUw62CdZbv8iVGykiUn5MNNRlXwU3YbiU/ 9dhKjk+G1JPzEM3MOkbcDMI6Psvnpcm8rrkJ/d+vpbUpcfHzeUHiFpKubCQKNbX1sThc 6dttMt5yBGJyiPhv9OmJNEDZUXCFXcI8TgBkhJHU4qhL72zjMCMTdtLg7W6H67zinDjw e2QpUVWcSltyiW3T8OthLR/HqpRreCDxLzlPVGgZPLL8znpDpWw0L/0IKsFjRB9g5aT0 W86g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u1si3023558pgc.802.2018.01.26.05.56.07; Fri, 26 Jan 2018 05:56:21 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753002AbeAZNzp (ORCPT + 99 others); Fri, 26 Jan 2018 08:55:45 -0500 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:38858 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752229AbeAZNzn (ORCPT ); Fri, 26 Jan 2018 08:55:43 -0500 X-Originating-IP: 31.157.216.129 Received: from w540.lan (unknown [31.157.216.129]) (Authenticated sender: jacopo@jmondi.org) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id F122B1720B4; Fri, 26 Jan 2018 14:55:36 +0100 (CET) From: Jacopo Mondi To: laurent.pinchart@ideasonboard.com, magnus.damm@gmail.com, geert@glider.be, hverkuil@xs4all.nl, mchehab@kernel.org, festevam@gmail.com, sakari.ailus@iki.fi, robh+dt@kernel.org, mark.rutland@arm.com, pombredanne@nexb.com Cc: Jacopo Mondi , linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-sh@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 00/11] Renesas Capture Engine Unit (CEU) V4L2 driver Date: Fri, 26 Jan 2018 14:55:19 +0100 Message-Id: <1516974930-11713-1-git-send-email-jacopo+renesas@jmondi.org> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, 7th round for CEU driver&friends. This series includes 2 new patches compared to v6 and it is now based on top of Hans' series: [PATCHv2 0/9] media: replace g/s_parm by g/s_frame_interval and makes use of newly introduced v4l2_g/s_parm_cap() functions from v4l2-common in CEU's g/s_parm() callbacks. A branch for testing is available at: git://jmondi.org/linux ceu/media-tree-parm/base with few patches for Migo-R and GR-Peach applied on top of Hans' media-tree/parm branch. The 2 new patches in the series: [11/11] has been added to silence a v4l2-compliance error, and modifies ov7670 driver to set all fields of 'struct v4l2_mbus_format' during set_format operation, including ycbcr_enc, quantization and xfer_func. As the patch commit reports, this suppresses the following v4l2-compliance error: fail: v4l2-test-formats.cpp(335): ycbcr_enc >= 0xff [7/11] has been required by Hans to add frame interval handling to ov772x driver. As this is quite a big change I kept it in a separate patch to ease review, it can eventually be squashed on [6/11] if accepted. If for TW9910 video decoder the same is required (frame interval handling) I'm in favour of moving that driver to staging as it was proposed for ov772x before this series. v4l2-compliance now reports a 0 error count: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 Hans, you asked me to run v4l2-compliance with the -f option, I cannot do that on my tiny GR-Peach as with its limited available system memory it cannot allocate the number of requested buffers for that test. I can try to tweak that if necessary. I won't stress here why I cannot do that on Migo-R, long story short, I need a special compiler with DSP support to run anything but the little initramfs I have received for SH7722. I've been able to tweak yavta to work and test capture and frame rate handling with it, but v4l2-compliance is much more complex and I don't think I'll be able run it on that platform. Below, v4l2-compliance output: ------------------------------------------------------------------------------- v4l2-compliance SHA : 20b6624f4bb84353e690d897688fd7ac12d6a881 Driver Info: Driver name : renesas-ceu Card type : Renesas CEU e8210000.ceu Bus info : platform:renesas-ceu-e8210000.c Driver version: 4.15.0 Capabilities : 0x84201000 Video Capture Multiplanar Streaming Extended Pix Format Device Capabilities Device Caps : 0x04201000 Video Capture Multiplanar Streaming Extended Pix Format Compliance test for device /dev/video0 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 1 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Test input 0: Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 12 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK fail: v4l2-test-formats.cpp(1162): ret && node->has_frmintervals test VIDIOC_G/S_PARM: OK test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK Test input 0: Total: 43, Succeeded: 43, Failed: 0, Warnings: 0 ------------------------------------------------------------------------------- Thanks j 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 (11): 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 media: i2c: ov7670: Fully set mbus frame fmt .../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/ov7670.c | 4 + drivers/media/i2c/ov772x.c | 1488 ++++++++++++++++++ drivers/media/i2c/tw9910.c | 1039 ++++++++++++ drivers/media/platform/Kconfig | 9 + drivers/media/platform/Makefile | 1 + drivers/media/platform/renesas-ceu.c | 1661 ++++++++++++++++++++ include/media/drv-intf/renesas-ceu.h | 26 + include/media/i2c/ov772x.h | 6 +- include/media/i2c/tw9910.h | 9 + 15 files changed, 4457 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