Message ID | 20230526173955.797226-2-tomm.merciai@gmail.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp665076vqr; Fri, 26 May 2023 11:11:10 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6y9OhAbmJEcBXRaTUAO9bvddVcO1NY7ETY4S6+jREq2aIsTRlbrNUGG1qzAofouqL8hU2q X-Received: by 2002:a17:902:d4c8:b0:1ad:1c29:80ef with SMTP id o8-20020a170902d4c800b001ad1c2980efmr4149663plg.18.1685124669987; Fri, 26 May 2023 11:11:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685124669; cv=none; d=google.com; s=arc-20160816; b=m64f5gTFRJP2VQB3mn0qJXg1S+KdXoTqFp5Qf6kUleyzJ+zvbp8tJs/pSt5ZKeggr7 bgeuiHQtyh9m82Wl3sY+EVeZjk7auvGI4ughqcc1mWi+ru0tpdLFLqJH4Ai+d+C5EN2R cXyhdY4RtfaijuGjGsizyWHVqIkHB6fzMqlc5lwOPgOWq0Xh7QuDAPdDQCezm2eF/tdt zRseU3ax8cJcRl5bUNEXvo81M7p9BX3qU3KuxI2+1+u3wbJWLXUX8/kv2untzWD6UkIa Iws8cM1CLdzWmeN3uzm8yXJopvlIp06IE/548yfN5h5e4t5D4E/DngC+HGg9cJejBU4B uBVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:from :dkim-signature; bh=lYe7XFcsN7P4IISHtfY7TK64+2c++idDy6uCthqs0d4=; b=VpGd2wyHhDidW5/h4O/RV1+AqqejhWPdOSHzMPRBKP+q1SB7IoMcP4qEgcTgtUsIZj K1cwik3eEVuo2kn53peNNIaq7/0l4mQoyGhZw9IOS8AKe0Aq9Jquh3PZk9yyWlgiz0pu sVxMi09LM33FfN92fwRSa9gxCr03hrQEhNPeavr6AwS90ljyOIkxTmhXctdFI2BKhKr4 5yBeP+1joF2ExyTjX/nf0toXqxC62GELmkOnGIkYEwljgaX4ZKLsTHS/ZAKYfLH/1G9V /mOWIQ2pTl4N1bFFwFkXLsPPDZv1XB0v8nHplU1T9vtb8FaZcdl7IuIdx+C2QtTU1fQb /m/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20221208 header.b=b5clFHIp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m20-20020a170902bb9400b001a6dfb35f63si4177552pls.385.2023.05.26.11.10.55; Fri, 26 May 2023 11:11:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20221208 header.b=b5clFHIp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230272AbjEZRkW (ORCPT <rfc822;zhanglyra.2023@gmail.com> + 99 others); Fri, 26 May 2023 13:40:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242685AbjEZRkS (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Fri, 26 May 2023 13:40:18 -0400 Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B532E1BF; Fri, 26 May 2023 10:40:13 -0700 (PDT) Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-96fdc081cb3so148648066b.2; Fri, 26 May 2023 10:40:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685122812; x=1687714812; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lYe7XFcsN7P4IISHtfY7TK64+2c++idDy6uCthqs0d4=; b=b5clFHIpFN6AOxog0y+pOhfNdJ6dYF9YBUWffs5fWvUiFS0/m6qzp41FIZC2omFHhl MQWoUdNOVxxfnyUWmKwINBo56p2ci7d86p8myMP4sYPVdA9qIYwNbsKC+kBO52P+5K5t VwIYtoJb24vZqIaBWqJUyLZZ+rPyL+UX9sEvHTr12mOQGJ9FcAnmHo2n+EbsPFgy4m2v J5b5GODcVmrcaqkh2a2jV/q76d/5hApFXoXS3f+9ZzeXZghIrek98D+X5bcSe2dXOyUt amDO+1BDOxoBS+3CNdrYfrzDdt0eShP9yVS2l6YXOr1ogaGLKLHnTB9RUnmdTmQ8Gk7Z q86g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685122812; x=1687714812; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lYe7XFcsN7P4IISHtfY7TK64+2c++idDy6uCthqs0d4=; b=Y0ku4CBSNOyaAUJLfYlrRgxywqqU/m2KaVZZ5bsHgi4iQKMtMQyLNrlYgTKW2kwpmM GIgtFzuIUUs5PtJvWKtiOqbeaGSNOAZVDMNMZHbvVf/cp21Cx0t1PQVJwKW2WYzt23zq RijMZTYxr792NYYqQrjEBoLQHPXlJDgVfWaZiUHLkgfkGvHaPcApceCZwh8aXsVbvj4W Ie2LkOww5nL8TTfQN2p374rMucqR+WN4t3JyKmS6wabpvI6jXt+GCFWbn+Qz6r9jF1n3 i0TZzRQkq+ZWzBDqReJUE1K7/MGDA/bNngagQx7PgxifDQEAKPuU/gg9EAuNXYgJZqvF 2Itg== X-Gm-Message-State: AC+VfDxIxJvzguDiUdR/1h9a6PrBFSqxufOOHowvHoKwS/OTnO2pezXq 9JmdRnCQZXHH9o/5yFEZzpI= X-Received: by 2002:a17:907:6e8e:b0:94f:356d:cd0 with SMTP id sh14-20020a1709076e8e00b0094f356d0cd0mr3895814ejc.33.1685122812029; Fri, 26 May 2023 10:40:12 -0700 (PDT) Received: from tom-HP-ZBook-Fury-15-G7-Mobile-Workstation.station (net-188-217-50-121.cust.vodafonedsl.it. [188.217.50.121]) by smtp.gmail.com with ESMTPSA id dk5-20020a170906f0c500b00965b2d3968csm2367723ejb.84.2023.05.26.10.40.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 May 2023 10:40:11 -0700 (PDT) From: Tommaso Merciai <tomm.merciai@gmail.com> Cc: jacopo.mondi@ideasonboard.com, laurent.pinchart@ideasonboard.com, martin.hecht@avnet.eu, linuxfancy@googlegroups.com, Tommaso Merciai <tomm.merciai@gmail.com>, Mauro Carvalho Chehab <mchehab@kernel.org>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, Sakari Ailus <sakari.ailus@linux.intel.com>, Hans Verkuil <hverkuil@xs4all.nl>, Marco Felsch <m.felsch@pengutronix.de>, Gerald Loacker <gerald.loacker@wolfvision.net>, =?utf-8?q?Krzysztof_Ha?= =?utf-8?q?=C5=82asa?= <khalasa@piap.pl>, Shawn Tu <shawnx.tu@intel.com>, Linus Walleij <linus.walleij@linaro.org>, Benjamin Mugnier <benjamin.mugnier@foss.st.com>, Mikhail Rudenko <mike.rudenko@gmail.com>, Nicholas Roth <nicholas@rothemail.net>, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/2] media: dt-bindings: alvium: add document YAML binding Date: Fri, 26 May 2023 19:39:43 +0200 Message-Id: <20230526173955.797226-2-tomm.merciai@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230526173955.797226-1-tomm.merciai@gmail.com> References: <20230526173955.797226-1-tomm.merciai@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1766981286449410168?= X-GMAIL-MSGID: =?utf-8?q?1766981286449410168?= |
Series |
media: i2c: Add support for alvium camera
|
|
Commit Message
Tommaso Merciai
May 26, 2023, 5:39 p.m. UTC
Add documentation of device tree in YAML schema for the ALVIUM
Camera from Allied Vision Inc.
References:
- https://www.alliedvision.com/en/products/embedded-vision-solutions
Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com>
---
Changes since v1:
- Fixed build error as suggested by RHerring bot
.../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++
1 file changed, 115 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml
Comments
Hey Tommaso, On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > Add documentation of device tree in YAML schema for the ALVIUM > Camera from Allied Vision Inc. > > References: > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > --- > Changes since v1: > - Fixed build error as suggested by RHerring bot > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > 1 file changed, 115 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > new file mode 100644 > index 000000000000..81e9e560c99d > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > @@ -0,0 +1,115 @@ > +# SPDX-License-Identifier: GPL-2.0 No dual license? > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Alliedvision Alvium Camera > + > +maintainers: > + - Tommaso Merciai <tomm.merciai@gmail.com> > + - Martin Hecht <martin.hecht@avnet.eu> > + > +allOf: > + - $ref: /schemas/media/video-interface-devices.yaml# > + > +properties: > + compatible: > + const: alliedvision,alvium > + > + reg: > + maxItems: 1 > + > + clocks: > + description: XCLK Input Clock Description is a bit moot when you have the clock name and there's only one. No harm done I suppose. > + > + clock-names: > + const: xclk > + > + powerdown-gpios: > + maxItems: 1 > + description: > You don't have any newlines, so you don't need a > > + Reference to the GPIO connected to the powerdown pin, if any. > + > + reset-gpios: > + maxItems: 1 > + description: > > + Reference to the GPIO connected to the reset pin, if any. > + > + streamon-delay: > + maxItems: 1 > + description: > > + Delay before camera start capturing frames in us. > + > + rotation: > + enum: > + - 0 > + - 180 Could style this as enum: [0, 180], but I don't mind which you do. > + port: > + description: Digital Output Port > + $ref: /schemas/graph.yaml#/$defs/port-base > + additionalProperties: false > + > + properties: > + endpoint: > + $ref: /schemas/media/video-interfaces.yaml# > + unevaluatedProperties: false > + > + properties: > + clock-lanes: > + const: 0 > + data-lanes: > + minItems: 1 > + maxItems: 4 > + link-frequencies: true > + > + required: > + - data-lanes > + - link-frequencies > + > +required: > + - compatible > + - reg > + - clocks > + - clock-names > + - port > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/gpio/gpio.h> > + #include <dt-bindings/clock/imx8mp-clock.h> > + > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + camera: alvium@3c { Label does not seem to be used & the generic node name should probably be "camera", no? > + compatible = "alliedvision,alvium"; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > + reg = <0x3c>; > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > + clock-names = "xclk"; > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > + assigned-clock-rates = <24000000>; > + streamon-delay = <20>; > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > + status = "okay"; > + > + port { > + alvium_out: endpoint { Ditto here, drop the unused label? Otherwise, looks grand to me. Cheers, Conor. > + remote-endpoint = <&mipi_csi_0_in>; > + data-lanes = <1 2 3 4>; > + link-frequencies = /bits/ 64 <681250000>; > + clock-lanes = <0>; > + }; > + }; > + }; > + }; > + > +... > -- > 2.34.1 >
Hi Tommaso, On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > Add documentation of device tree in YAML schema for the ALVIUM > Camera from Allied Vision Inc. > > References: > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > --- > Changes since v1: > - Fixed build error as suggested by RHerring bot > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > 1 file changed, 115 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > new file mode 100644 > index 000000000000..81e9e560c99d > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > @@ -0,0 +1,115 @@ > +# SPDX-License-Identifier: GPL-2.0 > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Alliedvision Alvium Camera > + > +maintainers: > + - Tommaso Merciai <tomm.merciai@gmail.com> > + - Martin Hecht <martin.hecht@avnet.eu> > + > +allOf: > + - $ref: /schemas/media/video-interface-devices.yaml# > + > +properties: > + compatible: > + const: alliedvision,alvium > + > + reg: > + maxItems: 1 > + > + clocks: > + description: XCLK Input Clock > + > + clock-names: > + const: xclk I'd also drop this as you have a single clock only: it's redundant. > + > + powerdown-gpios: > + maxItems: 1 > + description: > > + Reference to the GPIO connected to the powerdown pin, if any. > + > + reset-gpios: > + maxItems: 1 > + description: > > + Reference to the GPIO connected to the reset pin, if any. > + > + streamon-delay: > + maxItems: 1 > + description: > > + Delay before camera start capturing frames in us. > + > + rotation: > + enum: > + - 0 > + - 180 > + > + port: > + description: Digital Output Port > + $ref: /schemas/graph.yaml#/$defs/port-base > + additionalProperties: false > + > + properties: > + endpoint: > + $ref: /schemas/media/video-interfaces.yaml# > + unevaluatedProperties: false > + > + properties: > + clock-lanes: > + const: 0 The driver can know this, no need to have it in DT, i.e. please drop it. > + data-lanes: > + minItems: 1 > + maxItems: 4 > + link-frequencies: true > + > + required: > + - data-lanes > + - link-frequencies > + > +required: > + - compatible > + - reg > + - clocks > + - clock-names > + - port > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/gpio/gpio.h> > + #include <dt-bindings/clock/imx8mp-clock.h> > + > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + camera: alvium@3c { > + compatible = "alliedvision,alvium"; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > + reg = <0x3c>; > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > + clock-names = "xclk"; > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > + assigned-clock-rates = <24000000>; > + streamon-delay = <20>; > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > + status = "okay"; > + > + port { > + alvium_out: endpoint { > + remote-endpoint = <&mipi_csi_0_in>; > + data-lanes = <1 2 3 4>; > + link-frequencies = /bits/ 64 <681250000>; > + clock-lanes = <0>; > + }; > + }; > + }; > + }; > + > +...
On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > Add documentation of device tree in YAML schema for the ALVIUM > > Camera from Allied Vision Inc. > > > > References: > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > --- > > Changes since v1: > > - Fixed build error as suggested by RHerring bot > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > 1 file changed, 115 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > new file mode 100644 > > index 000000000000..81e9e560c99d > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > @@ -0,0 +1,115 @@ > > +# SPDX-License-Identifier: GPL-2.0 > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Alliedvision Alvium Camera s/Alliedvision/Allied Vision/ > > + > > +maintainers: > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > + - Martin Hecht <martin.hecht@avnet.eu> > > + > > +allOf: > > + - $ref: /schemas/media/video-interface-devices.yaml# > > + > > +properties: > > + compatible: > > + const: alliedvision,alvium The name is very generic. There are Alvium camera modules that have a GMSL or FPD-Link interface, and I'm pretty sure those will require a different driver. I would add module-specific compatible strings (e.g. "alliedvision,alvium-1500c", ...) here, with a generic fallback. "alliedvision,alvium" isn't good as it won't cover GMSL or FPD-Link, maybe "alliedvision,alvium-csi2" would be an option. > > + > > + reg: > > + maxItems: 1 > > + > > + clocks: > > + description: XCLK Input Clock > > + > > + clock-names: > > + const: xclk > > I'd also drop this as you have a single clock only: it's redundant. > > > + > > + powerdown-gpios: > > + maxItems: 1 > > + description: > > > + Reference to the GPIO connected to the powerdown pin, if any. > > + > > + reset-gpios: > > + maxItems: 1 > > + description: > > > + Reference to the GPIO connected to the reset pin, if any. Reading the Alvium CSI-2 Cameras User Guide, I don't see any powerdown or reset pin on the 22-pin connector. Am I missing something ? There are however two GPIOs (in addition to the I2C signals that are also documented as GPIOs), do you plan to support those ? > > + > > + streamon-delay: > > + maxItems: 1 > > + description: > > > + Delay before camera start capturing frames in us. Add "-us" to the property name to indicate the unit. This is a vendor-specific property, and should thus have a vendor prefix. A longer description is needed, from that single line I have no idea what the property does exactly. > > + > > + rotation: > > + enum: > > + - 0 > > + - 180 Why is the rotation restricted to 0 or 180 ? Someone could mount the module with 90 degrees rotation, shouldn't the DT bindings allow describing that ? You need a property for the vcc-ext-in supply. > > + > > + port: > > + description: Digital Output Port > > + $ref: /schemas/graph.yaml#/$defs/port-base > > + additionalProperties: false > > + > > + properties: > > + endpoint: > > + $ref: /schemas/media/video-interfaces.yaml# > > + unevaluatedProperties: false > > + > > + properties: > > + clock-lanes: > > + const: 0 > > The driver can know this, no need to have it in DT, i.e. please drop it. > > > + data-lanes: > > + minItems: 1 > > + maxItems: 4 > > + link-frequencies: true > > + > > + required: > > + - data-lanes > > + - link-frequencies > > + > > +required: > > + - compatible > > + - reg > > + - clocks > > + - clock-names > > + - port > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + #include <dt-bindings/gpio/gpio.h> > > + #include <dt-bindings/clock/imx8mp-clock.h> > > + > > + i2c { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + camera: alvium@3c { > > + compatible = "alliedvision,alvium"; The "alliedvision" prefix is missing from Documentation/devicetree/bindings/vendor-prefixes.yaml. > > + pinctrl-names = "default"; > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; I'd drop pinctrl, it makes the example longer without adding much value. > > + reg = <0x3c>; > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > + clock-names = "xclk"; > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > + assigned-clock-rates = <24000000>; > > + streamon-delay = <20>; > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > + status = "okay"; > > + > > + port { > > + alvium_out: endpoint { > > + remote-endpoint = <&mipi_csi_0_in>; > > + data-lanes = <1 2 3 4>; > > + link-frequencies = /bits/ 64 <681250000>; > > + clock-lanes = <0>; > > + }; > > + }; > > + }; > > + }; > > + > > +...
On Mon, May 29, 2023 at 09:39:13AM +0300, Laurent Pinchart wrote: > On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > > Add documentation of device tree in YAML schema for the ALVIUM > > > Camera from Allied Vision Inc. > > > > > > References: > > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > > --- > > > Changes since v1: > > > - Fixed build error as suggested by RHerring bot > > > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > > 1 file changed, 115 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > new file mode 100644 > > > index 000000000000..81e9e560c99d > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > @@ -0,0 +1,115 @@ > > > +# SPDX-License-Identifier: GPL-2.0 > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Alliedvision Alvium Camera > > s/Alliedvision/Allied Vision/ > > > > + > > > +maintainers: > > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > > + - Martin Hecht <martin.hecht@avnet.eu> > > > + > > > +allOf: > > > + - $ref: /schemas/media/video-interface-devices.yaml# > > > + > > > +properties: > > > + compatible: > > > + const: alliedvision,alvium > > The name is very generic. There are Alvium camera modules that have a > GMSL or FPD-Link interface, and I'm pretty sure those will require a > different driver. I would add module-specific compatible strings (e.g. > "alliedvision,alvium-1500c", ...) here, with a generic fallback. > "alliedvision,alvium" isn't good as it won't cover GMSL or FPD-Link, > maybe "alliedvision,alvium-csi2" would be an option. Actually, "alvium-1500c" as a specific compatible string won't do. You need the exact model in the compatible string, otherwise it won't be possible for the driver to handle device-specific configuration (for instance accessing registers of the camera sensor for fine-grained configuration). I would thus recommend using "alliedvision,alvium-1500c" and "alliedvision,alvium-1800c" as generic fallbacks, along compatible strings that include the exact device model. > > > + > > > + reg: > > > + maxItems: 1 > > > + > > > + clocks: > > > + description: XCLK Input Clock > > > + > > > + clock-names: > > > + const: xclk > > > > I'd also drop this as you have a single clock only: it's redundant. > > > > > + > > > + powerdown-gpios: > > > + maxItems: 1 > > > + description: > > > > + Reference to the GPIO connected to the powerdown pin, if any. > > > + > > > + reset-gpios: > > > + maxItems: 1 > > > + description: > > > > + Reference to the GPIO connected to the reset pin, if any. > > Reading the Alvium CSI-2 Cameras User Guide, I don't see any powerdown > or reset pin on the 22-pin connector. Am I missing something ? There are > however two GPIOs (in addition to the I2C signals that are also > documented as GPIOs), do you plan to support those ? > > > > + > > > + streamon-delay: > > > + maxItems: 1 > > > + description: > > > > + Delay before camera start capturing frames in us. > > Add "-us" to the property name to indicate the unit. > > This is a vendor-specific property, and should thus have a vendor > prefix. > > A longer description is needed, from that single line I have no idea > what the property does exactly. > > > > + > > > + rotation: > > > + enum: > > > + - 0 > > > + - 180 > > Why is the rotation restricted to 0 or 180 ? Someone could mount the > module with 90 degrees rotation, shouldn't the DT bindings allow > describing that ? > > You need a property for the vcc-ext-in supply. > > > > + > > > + port: > > > + description: Digital Output Port > > > + $ref: /schemas/graph.yaml#/$defs/port-base > > > + additionalProperties: false > > > + > > > + properties: > > > + endpoint: > > > + $ref: /schemas/media/video-interfaces.yaml# > > > + unevaluatedProperties: false > > > + > > > + properties: > > > + clock-lanes: > > > + const: 0 > > > > The driver can know this, no need to have it in DT, i.e. please drop it. > > > > > + data-lanes: > > > + minItems: 1 > > > + maxItems: 4 > > > + link-frequencies: true > > > + > > > + required: > > > + - data-lanes > > > + - link-frequencies > > > + > > > +required: > > > + - compatible > > > + - reg > > > + - clocks > > > + - clock-names > > > + - port > > > + > > > +additionalProperties: false > > > + > > > +examples: > > > + - | > > > + #include <dt-bindings/gpio/gpio.h> > > > + #include <dt-bindings/clock/imx8mp-clock.h> > > > + > > > + i2c { > > > + #address-cells = <1>; > > > + #size-cells = <0>; > > > + > > > + camera: alvium@3c { > > > + compatible = "alliedvision,alvium"; > > The "alliedvision" prefix is missing from > Documentation/devicetree/bindings/vendor-prefixes.yaml. > > > > + pinctrl-names = "default"; > > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > I'd drop pinctrl, it makes the example longer without adding much value. > > > > + reg = <0x3c>; > > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > + clock-names = "xclk"; > > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > > + assigned-clock-rates = <24000000>; > > > + streamon-delay = <20>; > > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > > + status = "okay"; > > > + > > > + port { > > > + alvium_out: endpoint { > > > + remote-endpoint = <&mipi_csi_0_in>; > > > + data-lanes = <1 2 3 4>; > > > + link-frequencies = /bits/ 64 <681250000>; > > > + clock-lanes = <0>; > > > + }; > > > + }; > > > + }; > > > + }; > > > + > > > +...
Hi Conor, Thanks for the review. On Fri, May 26, 2023 at 08:00:05PM +0100, Conor Dooley wrote: > Hey Tommaso, > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > Add documentation of device tree in YAML schema for the ALVIUM > > Camera from Allied Vision Inc. > > > > References: > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > --- > > Changes since v1: > > - Fixed build error as suggested by RHerring bot > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > 1 file changed, 115 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > new file mode 100644 > > index 000000000000..81e9e560c99d > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > @@ -0,0 +1,115 @@ > > +# SPDX-License-Identifier: GPL-2.0 > > No dual license? Yep, agree. Thanks. > > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Alliedvision Alvium Camera > > + > > +maintainers: > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > + - Martin Hecht <martin.hecht@avnet.eu> > > + > > +allOf: > > + - $ref: /schemas/media/video-interface-devices.yaml# > > + > > +properties: > > + compatible: > > + const: alliedvision,alvium > > + > > + reg: > > + maxItems: 1 > > + > > + clocks: > > + description: XCLK Input Clock > > Description is a bit moot when you have the clock name and there's only > one. No harm done I suppose. Agree, we can drop description. > > > + > > + clock-names: > > + const: xclk > > + > > + powerdown-gpios: > > + maxItems: 1 > > + description: > > > You don't have any newlines, so you don't need a > Thanks, I found the same ">" into ov5640 .yaml > > > + Reference to the GPIO connected to the powerdown pin, if any. > > + > > + reset-gpios: > > + maxItems: 1 > > + description: > > > + Reference to the GPIO connected to the reset pin, if any. > > + > > + streamon-delay: > > + maxItems: 1 > > + description: > > > + Delay before camera start capturing frames in us. > > + > > + rotation: > > + enum: > > + - 0 > > + - 180 > > Could style this as enum: [0, 180], but I don't mind which you do. For now this property is unused. I'll drop this. > > > + port: > > + description: Digital Output Port > > + $ref: /schemas/graph.yaml#/$defs/port-base > > + additionalProperties: false > > + > > + properties: > > + endpoint: > > + $ref: /schemas/media/video-interfaces.yaml# > > + unevaluatedProperties: false > > + > > + properties: > > + clock-lanes: > > + const: 0 > > + data-lanes: > > + minItems: 1 > > + maxItems: 4 > > + link-frequencies: true > > + > > + required: > > + - data-lanes > > + - link-frequencies > > + > > +required: > > + - compatible > > + - reg > > + - clocks > > + - clock-names > > + - port > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + #include <dt-bindings/gpio/gpio.h> > > + #include <dt-bindings/clock/imx8mp-clock.h> > > + > > + i2c { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + camera: alvium@3c { > > Label does not seem to be used & the generic node name should probably > be "camera", no? What about using: "alvium: camera@3c {" ? Like in some .yaml of ov sensors? > > > + compatible = "alliedvision,alvium"; > > + pinctrl-names = "default"; > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > + reg = <0x3c>; > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > + clock-names = "xclk"; > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > + assigned-clock-rates = <24000000>; > > + streamon-delay = <20>; > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > + status = "okay"; > > + > > + port { > > + alvium_out: endpoint { > > Ditto here, drop the unused label? I think we need this. Thanks! Regards, Tommaso > > Otherwise, looks grand to me. > > Cheers, > Conor. > > > + remote-endpoint = <&mipi_csi_0_in>; > > + data-lanes = <1 2 3 4>; > > + link-frequencies = /bits/ 64 <681250000>; > > + clock-lanes = <0>; > > + }; > > + }; > > + }; > > + }; > > + > > +... > > -- > > 2.34.1 > >
Hi Sakari, On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > Hi Tommaso, > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > Add documentation of device tree in YAML schema for the ALVIUM > > Camera from Allied Vision Inc. > > > > References: > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > --- > > Changes since v1: > > - Fixed build error as suggested by RHerring bot > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > 1 file changed, 115 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > new file mode 100644 > > index 000000000000..81e9e560c99d > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > @@ -0,0 +1,115 @@ > > +# SPDX-License-Identifier: GPL-2.0 > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Alliedvision Alvium Camera > > + > > +maintainers: > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > + - Martin Hecht <martin.hecht@avnet.eu> > > + > > +allOf: > > + - $ref: /schemas/media/video-interface-devices.yaml# > > + > > +properties: > > + compatible: > > + const: alliedvision,alvium > > + > > + reg: > > + maxItems: 1 > > + > > + clocks: > > + description: XCLK Input Clock > > + > > + clock-names: > > + const: xclk > > I'd also drop this as you have a single clock only: it's redundant. Then you suggest also to drop devm_clk_get(dev, "xclk"); into the driver code and use devm_clk_get(&pdev->dev, NULL); right? > > > + > > + powerdown-gpios: > > + maxItems: 1 > > + description: > > > + Reference to the GPIO connected to the powerdown pin, if any. > > + > > + reset-gpios: > > + maxItems: 1 > > + description: > > > + Reference to the GPIO connected to the reset pin, if any. > > + > > + streamon-delay: > > + maxItems: 1 > > + description: > > > + Delay before camera start capturing frames in us. > > + > > + rotation: > > + enum: > > + - 0 > > + - 180 > > + > > + port: > > + description: Digital Output Port > > + $ref: /schemas/graph.yaml#/$defs/port-base > > + additionalProperties: false > > + > > + properties: > > + endpoint: > > + $ref: /schemas/media/video-interfaces.yaml# > > + unevaluatedProperties: false > > + > > + properties: > > + clock-lanes: > > + const: 0 > > The driver can know this, no need to have it in DT, i.e. please drop it. Oks. > > > + data-lanes: > > + minItems: 1 > > + maxItems: 4 > > + link-frequencies: true > > + > > + required: > > + - data-lanes > > + - link-frequencies > > + > > +required: > > + - compatible > > + - reg > > + - clocks > > + - clock-names > > + - port > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + #include <dt-bindings/gpio/gpio.h> > > + #include <dt-bindings/clock/imx8mp-clock.h> > > + > > + i2c { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + camera: alvium@3c { > > + compatible = "alliedvision,alvium"; > > + pinctrl-names = "default"; > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > + reg = <0x3c>; > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > + clock-names = "xclk"; > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > + assigned-clock-rates = <24000000>; > > + streamon-delay = <20>; > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > + status = "okay"; > > + > > + port { > > + alvium_out: endpoint { > > + remote-endpoint = <&mipi_csi_0_in>; > > + data-lanes = <1 2 3 4>; > > + link-frequencies = /bits/ 64 <681250000>; > > + clock-lanes = <0>; > > + }; > > + }; > > + }; > > + }; > > + > > +... Thanks, Tommaso > > -- > Kind regards, > > Sakari Ailus
Hi Tommaso, On Mon, May 29, 2023 at 09:41:23AM +0200, Tommaso Merciai wrote: > On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > > Add documentation of device tree in YAML schema for the ALVIUM > > > Camera from Allied Vision Inc. > > > > > > References: > > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > > --- > > > Changes since v1: > > > - Fixed build error as suggested by RHerring bot > > > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > > 1 file changed, 115 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > new file mode 100644 > > > index 000000000000..81e9e560c99d > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > @@ -0,0 +1,115 @@ > > > +# SPDX-License-Identifier: GPL-2.0 > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Alliedvision Alvium Camera > > > + > > > +maintainers: > > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > > + - Martin Hecht <martin.hecht@avnet.eu> > > > + > > > +allOf: > > > + - $ref: /schemas/media/video-interface-devices.yaml# > > > + > > > +properties: > > > + compatible: > > > + const: alliedvision,alvium > > > + > > > + reg: > > > + maxItems: 1 > > > + > > > + clocks: > > > + description: XCLK Input Clock > > > + > > > + clock-names: > > > + const: xclk > > > > I'd also drop this as you have a single clock only: it's redundant. > > Then you suggest also to drop devm_clk_get(dev, "xclk"); > into the driver code and use devm_clk_get(&pdev->dev, NULL); > right? Actually, I don't see any clock input pin in the 22-pins FPC connector. Are you sure the camera module needs an external clock ? > > > + > > > + powerdown-gpios: > > > + maxItems: 1 > > > + description: > > > > + Reference to the GPIO connected to the powerdown pin, if any. > > > + > > > + reset-gpios: > > > + maxItems: 1 > > > + description: > > > > + Reference to the GPIO connected to the reset pin, if any. > > > + > > > + streamon-delay: > > > + maxItems: 1 > > > + description: > > > > + Delay before camera start capturing frames in us. > > > + > > > + rotation: > > > + enum: > > > + - 0 > > > + - 180 > > > + > > > + port: > > > + description: Digital Output Port > > > + $ref: /schemas/graph.yaml#/$defs/port-base > > > + additionalProperties: false > > > + > > > + properties: > > > + endpoint: > > > + $ref: /schemas/media/video-interfaces.yaml# > > > + unevaluatedProperties: false > > > + > > > + properties: > > > + clock-lanes: > > > + const: 0 > > > > The driver can know this, no need to have it in DT, i.e. please drop it. > > Oks. > > > > > > + data-lanes: > > > + minItems: 1 > > > + maxItems: 4 > > > + link-frequencies: true > > > + > > > + required: > > > + - data-lanes > > > + - link-frequencies > > > + > > > +required: > > > + - compatible > > > + - reg > > > + - clocks > > > + - clock-names > > > + - port > > > + > > > +additionalProperties: false > > > + > > > +examples: > > > + - | > > > + #include <dt-bindings/gpio/gpio.h> > > > + #include <dt-bindings/clock/imx8mp-clock.h> > > > + > > > + i2c { > > > + #address-cells = <1>; > > > + #size-cells = <0>; > > > + > > > + camera: alvium@3c { > > > + compatible = "alliedvision,alvium"; > > > + pinctrl-names = "default"; > > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > > + reg = <0x3c>; > > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > + clock-names = "xclk"; > > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > > + assigned-clock-rates = <24000000>; > > > + streamon-delay = <20>; > > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > > + status = "okay"; > > > + > > > + port { > > > + alvium_out: endpoint { > > > + remote-endpoint = <&mipi_csi_0_in>; > > > + data-lanes = <1 2 3 4>; > > > + link-frequencies = /bits/ 64 <681250000>; > > > + clock-lanes = <0>; > > > + }; > > > + }; > > > + }; > > > + }; > > > + > > > +...
Hello Laurent, On Mon, May 29, 2023 at 09:39:07AM +0300, Laurent Pinchart wrote: > On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > > Add documentation of device tree in YAML schema for the ALVIUM > > > Camera from Allied Vision Inc. > > > > > > References: > > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > > --- > > > Changes since v1: > > > - Fixed build error as suggested by RHerring bot > > > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > > 1 file changed, 115 insertions(+) > > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > new file mode 100644 > > > index 000000000000..81e9e560c99d > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > @@ -0,0 +1,115 @@ > > > +# SPDX-License-Identifier: GPL-2.0 > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Alliedvision Alvium Camera > > s/Alliedvision/Allied Vision/ Arg... Thanks :) > > > > + > > > +maintainers: > > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > > + - Martin Hecht <martin.hecht@avnet.eu> > > > + > > > +allOf: > > > + - $ref: /schemas/media/video-interface-devices.yaml# > > > + > > > +properties: > > > + compatible: > > > + const: alliedvision,alvium > > The name is very generic. There are Alvium camera modules that have a > GMSL or FPD-Link interface, and I'm pretty sure those will require a > different driver. I would add module-specific compatible strings (e.g. > "alliedvision,alvium-1500c", ...) here, with a generic fallback. > "alliedvision,alvium" isn't good as it won't cover GMSL or FPD-Link, > maybe "alliedvision,alvium-csi2" would be an option. > > > > + > > > + reg: > > > + maxItems: 1 > > > + > > > + clocks: > > > + description: XCLK Input Clock > > > + > > > + clock-names: > > > + const: xclk > > > > I'd also drop this as you have a single clock only: it's redundant. > > > > > + > > > + powerdown-gpios: > > > + maxItems: 1 > > > + description: > > > > + Reference to the GPIO connected to the powerdown pin, if any. > > > + > > > + reset-gpios: > > > + maxItems: 1 > > > + description: > > > > + Reference to the GPIO connected to the reset pin, if any. > > Reading the Alvium CSI-2 Cameras User Guide, I don't see any powerdown > or reset pin on the 22-pin connector. Am I missing something ? There are > however two GPIOs (in addition to the I2C signals that are also > documented as GPIOs), do you plan to support those ? You are completely right I will drop rst and pwdn pins. About 2 gpios, we don't use those for now. > > > > + > > > + streamon-delay: > > > + maxItems: 1 > > > + description: > > > > + Delay before camera start capturing frames in us. > > Add "-us" to the property name to indicate the unit. > > This is a vendor-specific property, and should thus have a vendor > prefix. > > A longer description is needed, from that single line I have no idea > what the property does exactly. Thanks for the suggestion. I will provide a cleared description on v3. > > > > + > > > + rotation: > > > + enum: > > > + - 0 > > > + - 180 > > Why is the rotation restricted to 0 or 180 ? Someone could mount the > module with 90 degrees rotation, shouldn't the DT bindings allow > describing that ? I'll drop rotation. > > You need a property for the vcc-ext-in supply. Can you give me more details about this? Thanks. > > > > + > > > + port: > > > + description: Digital Output Port > > > + $ref: /schemas/graph.yaml#/$defs/port-base > > > + additionalProperties: false > > > + > > > + properties: > > > + endpoint: > > > + $ref: /schemas/media/video-interfaces.yaml# > > > + unevaluatedProperties: false > > > + > > > + properties: > > > + clock-lanes: > > > + const: 0 > > > > The driver can know this, no need to have it in DT, i.e. please drop it. > > > > > + data-lanes: > > > + minItems: 1 > > > + maxItems: 4 > > > + link-frequencies: true > > > + > > > + required: > > > + - data-lanes > > > + - link-frequencies > > > + > > > +required: > > > + - compatible > > > + - reg > > > + - clocks > > > + - clock-names > > > + - port > > > + > > > +additionalProperties: false > > > + > > > +examples: > > > + - | > > > + #include <dt-bindings/gpio/gpio.h> > > > + #include <dt-bindings/clock/imx8mp-clock.h> > > > + > > > + i2c { > > > + #address-cells = <1>; > > > + #size-cells = <0>; > > > + > > > + camera: alvium@3c { > > > + compatible = "alliedvision,alvium"; > > The "alliedvision" prefix is missing from > Documentation/devicetree/bindings/vendor-prefixes.yaml. oks > > > > + pinctrl-names = "default"; > > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > I'd drop pinctrl, it makes the example longer without adding much value. oks > > > > + reg = <0x3c>; > > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > + clock-names = "xclk"; > > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > > + assigned-clock-rates = <24000000>; > > > + streamon-delay = <20>; > > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > > + status = "okay"; > > > + > > > + port { > > > + alvium_out: endpoint { > > > + remote-endpoint = <&mipi_csi_0_in>; > > > + data-lanes = <1 2 3 4>; > > > + link-frequencies = /bits/ 64 <681250000>; > > > + clock-lanes = <0>; > > > + }; > > > + }; > > > + }; > > > + }; > > > + > > > +... Thanks for your time. Regards, Tommaso > > -- > Regards, > > Laurent Pinchart
On Mon, May 29, 2023 at 09:57:45AM +0200, Tommaso Merciai wrote: > On Mon, May 29, 2023 at 09:39:07AM +0300, Laurent Pinchart wrote: > > On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > > > Add documentation of device tree in YAML schema for the ALVIUM > > > > Camera from Allied Vision Inc. > > > > > > > > References: > > > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > > > --- > > > > Changes since v1: > > > > - Fixed build error as suggested by RHerring bot > > > > > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > > > 1 file changed, 115 insertions(+) > > > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > new file mode 100644 > > > > index 000000000000..81e9e560c99d > > > > --- /dev/null > > > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > @@ -0,0 +1,115 @@ > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > +%YAML 1.2 > > > > +--- > > > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > + > > > > +title: Alliedvision Alvium Camera > > > > s/Alliedvision/Allied Vision/ > > Arg... Thanks :) > > > > > + > > > > +maintainers: > > > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > > > + - Martin Hecht <martin.hecht@avnet.eu> > > > > + > > > > +allOf: > > > > + - $ref: /schemas/media/video-interface-devices.yaml# > > > > + > > > > +properties: > > > > + compatible: > > > > + const: alliedvision,alvium > > > > The name is very generic. There are Alvium camera modules that have a > > GMSL or FPD-Link interface, and I'm pretty sure those will require a > > different driver. I would add module-specific compatible strings (e.g. > > "alliedvision,alvium-1500c", ...) here, with a generic fallback. > > "alliedvision,alvium" isn't good as it won't cover GMSL or FPD-Link, > > maybe "alliedvision,alvium-csi2" would be an option. > > > > > > + > > > > + reg: > > > > + maxItems: 1 > > > > + > > > > + clocks: > > > > + description: XCLK Input Clock > > > > + > > > > + clock-names: > > > > + const: xclk > > > > > > I'd also drop this as you have a single clock only: it's redundant. > > > > > > > + > > > > + powerdown-gpios: > > > > + maxItems: 1 > > > > + description: > > > > > + Reference to the GPIO connected to the powerdown pin, if any. > > > > + > > > > + reset-gpios: > > > > + maxItems: 1 > > > > + description: > > > > > + Reference to the GPIO connected to the reset pin, if any. > > > > Reading the Alvium CSI-2 Cameras User Guide, I don't see any powerdown > > or reset pin on the 22-pin connector. Am I missing something ? There are > > however two GPIOs (in addition to the I2C signals that are also > > documented as GPIOs), do you plan to support those ? > > You are completely right I will drop rst and pwdn pins. > About 2 gpios, we don't use those for now. > > > > > + > > > > + streamon-delay: > > > > + maxItems: 1 > > > > + description: > > > > > + Delay before camera start capturing frames in us. > > > > Add "-us" to the property name to indicate the unit. > > > > This is a vendor-specific property, and should thus have a vendor > > prefix. > > > > A longer description is needed, from that single line I have no idea > > what the property does exactly. > > Thanks for the suggestion. > I will provide a cleared description on v3. > > > > > + > > > > + rotation: > > > > + enum: > > > > + - 0 > > > > + - 180 > > > > Why is the rotation restricted to 0 or 180 ? Someone could mount the > > module with 90 degrees rotation, shouldn't the DT bindings allow > > describing that ? > > I'll drop rotation. > > > You need a property for the vcc-ext-in supply. > > Can you give me more details about this? > Thanks. The 22-pin connector has power supply pins, you need a corresponding -supply property in DT to reference the regulator that provides the supply (and you need to handle it in the driver too). > > > > + > > > > + port: > > > > + description: Digital Output Port > > > > + $ref: /schemas/graph.yaml#/$defs/port-base > > > > + additionalProperties: false > > > > + > > > > + properties: > > > > + endpoint: > > > > + $ref: /schemas/media/video-interfaces.yaml# > > > > + unevaluatedProperties: false > > > > + > > > > + properties: > > > > + clock-lanes: > > > > + const: 0 > > > > > > The driver can know this, no need to have it in DT, i.e. please drop it. > > > > > > > + data-lanes: > > > > + minItems: 1 > > > > + maxItems: 4 > > > > + link-frequencies: true > > > > + > > > > + required: > > > > + - data-lanes > > > > + - link-frequencies > > > > + > > > > +required: > > > > + - compatible > > > > + - reg > > > > + - clocks > > > > + - clock-names > > > > + - port > > > > + > > > > +additionalProperties: false > > > > + > > > > +examples: > > > > + - | > > > > + #include <dt-bindings/gpio/gpio.h> > > > > + #include <dt-bindings/clock/imx8mp-clock.h> > > > > + > > > > + i2c { > > > > + #address-cells = <1>; > > > > + #size-cells = <0>; > > > > + > > > > + camera: alvium@3c { > > > > + compatible = "alliedvision,alvium"; > > > > The "alliedvision" prefix is missing from > > Documentation/devicetree/bindings/vendor-prefixes.yaml. > > oks > > > > > > > + pinctrl-names = "default"; > > > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > > > I'd drop pinctrl, it makes the example longer without adding much value. > > oks > > > > > > > + reg = <0x3c>; > > > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > + clock-names = "xclk"; > > > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > > > + assigned-clock-rates = <24000000>; > > > > + streamon-delay = <20>; > > > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > > > + status = "okay"; > > > > + > > > > + port { > > > > + alvium_out: endpoint { > > > > + remote-endpoint = <&mipi_csi_0_in>; > > > > + data-lanes = <1 2 3 4>; > > > > + link-frequencies = /bits/ 64 <681250000>; > > > > + clock-lanes = <0>; > > > > + }; > > > > + }; > > > > + }; > > > > + }; > > > > + > > > > +...
On 26/05/2023 19:39, Tommaso Merciai wrote: > Add documentation of device tree in YAML schema for the ALVIUM > Camera from Allied Vision Inc. > > + > + camera: alvium@3c { > + compatible = "alliedvision,alvium"; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > + reg = <0x3c>; > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > + clock-names = "xclk"; > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > + assigned-clock-rates = <24000000>; > + streamon-delay = <20>; > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > + status = "okay"; Please apply all my comments from v1. I don't see improvements. Best regards, Krzysztof
Hi Laurent, On Mon, May 29, 2023 at 09:43:26AM +0300, Laurent Pinchart wrote: > On Mon, May 29, 2023 at 09:39:13AM +0300, Laurent Pinchart wrote: > > On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > > > Add documentation of device tree in YAML schema for the ALVIUM > > > > Camera from Allied Vision Inc. > > > > > > > > References: > > > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > > > --- > > > > Changes since v1: > > > > - Fixed build error as suggested by RHerring bot > > > > > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > > > 1 file changed, 115 insertions(+) > > > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > new file mode 100644 > > > > index 000000000000..81e9e560c99d > > > > --- /dev/null > > > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > @@ -0,0 +1,115 @@ > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > +%YAML 1.2 > > > > +--- > > > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > + > > > > +title: Alliedvision Alvium Camera > > > > s/Alliedvision/Allied Vision/ > > > > > > + > > > > +maintainers: > > > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > > > + - Martin Hecht <martin.hecht@avnet.eu> > > > > + > > > > +allOf: > > > > + - $ref: /schemas/media/video-interface-devices.yaml# > > > > + > > > > +properties: > > > > + compatible: > > > > + const: alliedvision,alvium > > > > The name is very generic. There are Alvium camera modules that have a > > GMSL or FPD-Link interface, and I'm pretty sure those will require a > > different driver. I would add module-specific compatible strings (e.g. > > "alliedvision,alvium-1500c", ...) here, with a generic fallback. > > "alliedvision,alvium" isn't good as it won't cover GMSL or FPD-Link, > > maybe "alliedvision,alvium-csi2" would be an option. > > Actually, "alvium-1500c" as a specific compatible string won't do. You > need the exact model in the compatible string, otherwise it won't be > possible for the driver to handle device-specific configuration (for > instance accessing registers of the camera sensor for fine-grained > configuration). I would thus recommend using "alliedvision,alvium-1500c" > and "alliedvision,alvium-1800c" as generic fallbacks, along compatible > strings that include the exact device model. Agree with alliedvision,alvium-csi2 and thanks for your suggestion. In my opinion we don’t need names for 1500c and others because the same driver can drive all the alvium models. Alvium is taking care of different sensor abstractions. I test with this driver with the following models: - 1800 C-1240c - 1800 C-040c - 1500 C-500 What do you think about? Thanks, Tommaso > > > > > + > > > > + reg: > > > > + maxItems: 1 > > > > + > > > > + clocks: > > > > + description: XCLK Input Clock > > > > + > > > > + clock-names: > > > > + const: xclk > > > > > > I'd also drop this as you have a single clock only: it's redundant. > > > > > > > + > > > > + powerdown-gpios: > > > > + maxItems: 1 > > > > + description: > > > > > + Reference to the GPIO connected to the powerdown pin, if any. > > > > + > > > > + reset-gpios: > > > > + maxItems: 1 > > > > + description: > > > > > + Reference to the GPIO connected to the reset pin, if any. > > > > Reading the Alvium CSI-2 Cameras User Guide, I don't see any powerdown > > or reset pin on the 22-pin connector. Am I missing something ? There are > > however two GPIOs (in addition to the I2C signals that are also > > documented as GPIOs), do you plan to support those ? > > > > > > + > > > > + streamon-delay: > > > > + maxItems: 1 > > > > + description: > > > > > + Delay before camera start capturing frames in us. > > > > Add "-us" to the property name to indicate the unit. > > > > This is a vendor-specific property, and should thus have a vendor > > prefix. > > > > A longer description is needed, from that single line I have no idea > > what the property does exactly. > > > > > > + > > > > + rotation: > > > > + enum: > > > > + - 0 > > > > + - 180 > > > > Why is the rotation restricted to 0 or 180 ? Someone could mount the > > module with 90 degrees rotation, shouldn't the DT bindings allow > > describing that ? > > > > You need a property for the vcc-ext-in supply. > > > > > > + > > > > + port: > > > > + description: Digital Output Port > > > > + $ref: /schemas/graph.yaml#/$defs/port-base > > > > + additionalProperties: false > > > > + > > > > + properties: > > > > + endpoint: > > > > + $ref: /schemas/media/video-interfaces.yaml# > > > > + unevaluatedProperties: false > > > > + > > > > + properties: > > > > + clock-lanes: > > > > + const: 0 > > > > > > The driver can know this, no need to have it in DT, i.e. please drop it. > > > > > > > + data-lanes: > > > > + minItems: 1 > > > > + maxItems: 4 > > > > + link-frequencies: true > > > > + > > > > + required: > > > > + - data-lanes > > > > + - link-frequencies > > > > + > > > > +required: > > > > + - compatible > > > > + - reg > > > > + - clocks > > > > + - clock-names > > > > + - port > > > > + > > > > +additionalProperties: false > > > > + > > > > +examples: > > > > + - | > > > > + #include <dt-bindings/gpio/gpio.h> > > > > + #include <dt-bindings/clock/imx8mp-clock.h> > > > > + > > > > + i2c { > > > > + #address-cells = <1>; > > > > + #size-cells = <0>; > > > > + > > > > + camera: alvium@3c { > > > > + compatible = "alliedvision,alvium"; > > > > The "alliedvision" prefix is missing from > > Documentation/devicetree/bindings/vendor-prefixes.yaml. > > > > > > + pinctrl-names = "default"; > > > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > > > I'd drop pinctrl, it makes the example longer without adding much value. > > > > > > + reg = <0x3c>; > > > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > + clock-names = "xclk"; > > > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > > > + assigned-clock-rates = <24000000>; > > > > + streamon-delay = <20>; > > > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > > > + status = "okay"; > > > > + > > > > + port { > > > > + alvium_out: endpoint { > > > > + remote-endpoint = <&mipi_csi_0_in>; > > > > + data-lanes = <1 2 3 4>; > > > > + link-frequencies = /bits/ 64 <681250000>; > > > > + clock-lanes = <0>; > > > > + }; > > > > + }; > > > > + }; > > > > + }; > > > > + > > > > +... > > -- > Regards, > > Laurent Pinchart
Hi Tommaso, On Wed, May 31, 2023 at 12:20:47PM +0200, Tommaso Merciai wrote: > On Mon, May 29, 2023 at 09:43:26AM +0300, Laurent Pinchart wrote: > > On Mon, May 29, 2023 at 09:39:13AM +0300, Laurent Pinchart wrote: > > > On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > > > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > > > > Add documentation of device tree in YAML schema for the ALVIUM > > > > > Camera from Allied Vision Inc. > > > > > > > > > > References: > > > > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > > > > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > > > > --- > > > > > Changes since v1: > > > > > - Fixed build error as suggested by RHerring bot > > > > > > > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > > > > 1 file changed, 115 insertions(+) > > > > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > new file mode 100644 > > > > > index 000000000000..81e9e560c99d > > > > > --- /dev/null > > > > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > @@ -0,0 +1,115 @@ > > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > > +%YAML 1.2 > > > > > +--- > > > > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > > + > > > > > +title: Alliedvision Alvium Camera > > > > > > s/Alliedvision/Allied Vision/ > > > > > > > > + > > > > > +maintainers: > > > > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > > > > + - Martin Hecht <martin.hecht@avnet.eu> > > > > > + > > > > > +allOf: > > > > > + - $ref: /schemas/media/video-interface-devices.yaml# > > > > > + > > > > > +properties: > > > > > + compatible: > > > > > + const: alliedvision,alvium > > > > > > The name is very generic. There are Alvium camera modules that have a > > > GMSL or FPD-Link interface, and I'm pretty sure those will require a > > > different driver. I would add module-specific compatible strings (e.g. > > > "alliedvision,alvium-1500c", ...) here, with a generic fallback. > > > "alliedvision,alvium" isn't good as it won't cover GMSL or FPD-Link, > > > maybe "alliedvision,alvium-csi2" would be an option. > > > > Actually, "alvium-1500c" as a specific compatible string won't do. You > > need the exact model in the compatible string, otherwise it won't be > > possible for the driver to handle device-specific configuration (for > > instance accessing registers of the camera sensor for fine-grained > > configuration). I would thus recommend using "alliedvision,alvium-1500c" > > and "alliedvision,alvium-1800c" as generic fallbacks, along compatible > > strings that include the exact device model. > > Agree with alliedvision,alvium-csi2 and thanks for your suggestion. > In my opinion we don’t need names for 1500c and > others because the same driver can drive all the alvium models. > Alvium is taking care of different sensor abstractions. > > I test with this driver with the following models: > > - 1800 C-1240c > - 1800 C-040c > - 1500 C-500 > > What do you think about? As far as I understand, the camera modules allow accessing sensors registers from the host (through the ISP) for fine-grained configuration. Even if that's not implemented in the driver at the moment, I think it's an important feature to eventually support, and it will require a way for the system to identify the camera module precisely, to know which sensor the module uses. That's why I would like that information to be available in DT, in the form of a compatible string. For instance, compatible = "alliedvision,alvium-1500c-1240c", "alliedvision,alvium-1500c"; The driver will only need DT match entries for "alliedvision,alvium-1500c" and "alliedvision,alvium-1800c". > > > > > + > > > > > + reg: > > > > > + maxItems: 1 > > > > > + > > > > > + clocks: > > > > > + description: XCLK Input Clock > > > > > + > > > > > + clock-names: > > > > > + const: xclk > > > > > > > > I'd also drop this as you have a single clock only: it's redundant. > > > > > > > > > + > > > > > + powerdown-gpios: > > > > > + maxItems: 1 > > > > > + description: > > > > > > + Reference to the GPIO connected to the powerdown pin, if any. > > > > > + > > > > > + reset-gpios: > > > > > + maxItems: 1 > > > > > + description: > > > > > > + Reference to the GPIO connected to the reset pin, if any. > > > > > > Reading the Alvium CSI-2 Cameras User Guide, I don't see any powerdown > > > or reset pin on the 22-pin connector. Am I missing something ? There are > > > however two GPIOs (in addition to the I2C signals that are also > > > documented as GPIOs), do you plan to support those ? > > > > > > > > + > > > > > + streamon-delay: > > > > > + maxItems: 1 > > > > > + description: > > > > > > + Delay before camera start capturing frames in us. > > > > > > Add "-us" to the property name to indicate the unit. > > > > > > This is a vendor-specific property, and should thus have a vendor > > > prefix. > > > > > > A longer description is needed, from that single line I have no idea > > > what the property does exactly. > > > > > > > > + > > > > > + rotation: > > > > > + enum: > > > > > + - 0 > > > > > + - 180 > > > > > > Why is the rotation restricted to 0 or 180 ? Someone could mount the > > > module with 90 degrees rotation, shouldn't the DT bindings allow > > > describing that ? > > > > > > You need a property for the vcc-ext-in supply. > > > > > > > > + > > > > > + port: > > > > > + description: Digital Output Port > > > > > + $ref: /schemas/graph.yaml#/$defs/port-base > > > > > + additionalProperties: false > > > > > + > > > > > + properties: > > > > > + endpoint: > > > > > + $ref: /schemas/media/video-interfaces.yaml# > > > > > + unevaluatedProperties: false > > > > > + > > > > > + properties: > > > > > + clock-lanes: > > > > > + const: 0 > > > > > > > > The driver can know this, no need to have it in DT, i.e. please drop it. > > > > > > > > > + data-lanes: > > > > > + minItems: 1 > > > > > + maxItems: 4 > > > > > + link-frequencies: true > > > > > + > > > > > + required: > > > > > + - data-lanes > > > > > + - link-frequencies > > > > > + > > > > > +required: > > > > > + - compatible > > > > > + - reg > > > > > + - clocks > > > > > + - clock-names > > > > > + - port > > > > > + > > > > > +additionalProperties: false > > > > > + > > > > > +examples: > > > > > + - | > > > > > + #include <dt-bindings/gpio/gpio.h> > > > > > + #include <dt-bindings/clock/imx8mp-clock.h> > > > > > + > > > > > + i2c { > > > > > + #address-cells = <1>; > > > > > + #size-cells = <0>; > > > > > + > > > > > + camera: alvium@3c { > > > > > + compatible = "alliedvision,alvium"; > > > > > > The "alliedvision" prefix is missing from > > > Documentation/devicetree/bindings/vendor-prefixes.yaml. > > > > > > > > + pinctrl-names = "default"; > > > > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > > > > > I'd drop pinctrl, it makes the example longer without adding much value. > > > > > > > > + reg = <0x3c>; > > > > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > > + clock-names = "xclk"; > > > > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > > > > + assigned-clock-rates = <24000000>; > > > > > + streamon-delay = <20>; > > > > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > > > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > > > > + status = "okay"; > > > > > + > > > > > + port { > > > > > + alvium_out: endpoint { > > > > > + remote-endpoint = <&mipi_csi_0_in>; > > > > > + data-lanes = <1 2 3 4>; > > > > > + link-frequencies = /bits/ 64 <681250000>; > > > > > + clock-lanes = <0>; > > > > > + }; > > > > > + }; > > > > > + }; > > > > > + }; > > > > > + > > > > > +...
Hi Laurent, On Wed, May 31, 2023 at 02:06:00PM +0300, Laurent Pinchart wrote: > Hi Tommaso, > > On Wed, May 31, 2023 at 12:20:47PM +0200, Tommaso Merciai wrote: > > On Mon, May 29, 2023 at 09:43:26AM +0300, Laurent Pinchart wrote: > > > On Mon, May 29, 2023 at 09:39:13AM +0300, Laurent Pinchart wrote: > > > > On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > > > > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > > > > > Add documentation of device tree in YAML schema for the ALVIUM > > > > > > Camera from Allied Vision Inc. > > > > > > > > > > > > References: > > > > > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > > > > > > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > > > > > --- > > > > > > Changes since v1: > > > > > > - Fixed build error as suggested by RHerring bot > > > > > > > > > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > > > > > 1 file changed, 115 insertions(+) > > > > > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > new file mode 100644 > > > > > > index 000000000000..81e9e560c99d > > > > > > --- /dev/null > > > > > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > @@ -0,0 +1,115 @@ > > > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > > > +%YAML 1.2 > > > > > > +--- > > > > > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > > > + > > > > > > +title: Alliedvision Alvium Camera > > > > > > > > s/Alliedvision/Allied Vision/ > > > > > > > > > > + > > > > > > +maintainers: > > > > > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > > > > > + - Martin Hecht <martin.hecht@avnet.eu> > > > > > > + > > > > > > +allOf: > > > > > > + - $ref: /schemas/media/video-interface-devices.yaml# > > > > > > + > > > > > > +properties: > > > > > > + compatible: > > > > > > + const: alliedvision,alvium > > > > > > > > The name is very generic. There are Alvium camera modules that have a > > > > GMSL or FPD-Link interface, and I'm pretty sure those will require a > > > > different driver. I would add module-specific compatible strings (e.g. > > > > "alliedvision,alvium-1500c", ...) here, with a generic fallback. > > > > "alliedvision,alvium" isn't good as it won't cover GMSL or FPD-Link, > > > > maybe "alliedvision,alvium-csi2" would be an option. > > > > > > Actually, "alvium-1500c" as a specific compatible string won't do. You > > > need the exact model in the compatible string, otherwise it won't be > > > possible for the driver to handle device-specific configuration (for > > > instance accessing registers of the camera sensor for fine-grained > > > configuration). I would thus recommend using "alliedvision,alvium-1500c" > > > and "alliedvision,alvium-1800c" as generic fallbacks, along compatible > > > strings that include the exact device model. > > > > Agree with alliedvision,alvium-csi2 and thanks for your suggestion. > > In my opinion we don’t need names for 1500c and > > others because the same driver can drive all the alvium models. > > Alvium is taking care of different sensor abstractions. > > > > I test with this driver with the following models: > > > > - 1800 C-1240c > > - 1800 C-040c > > - 1500 C-500 > > > > What do you think about? > > As far as I understand, the camera modules allow accessing sensors > registers from the host (through the ISP) for fine-grained > configuration. Even if that's not implemented in the driver at the > moment, I think it's an important feature to eventually support, and it > will require a way for the system to identify the camera module > precisely, to know which sensor the module uses. That's why I would like > that information to be available in DT, in the form of a compatible > string. For instance, > > compatible = "alliedvision,alvium-1500c-1240c", > "alliedvision,alvium-1500c"; > > The driver will only need DT match entries for > "alliedvision,alvium-1500c" and "alliedvision,alvium-1800c". Thanks for your feedback. Some clarification: The Alvium doesn't allow direct access on the sensor. Alvium hides the particular sensor totally. For this reason I would prefer to keep generic "alvium-csi2" name. What do you think? Thanks, Tommaso > > > > > > > + > > > > > > + reg: > > > > > > + maxItems: 1 > > > > > > + > > > > > > + clocks: > > > > > > + description: XCLK Input Clock > > > > > > + > > > > > > + clock-names: > > > > > > + const: xclk > > > > > > > > > > I'd also drop this as you have a single clock only: it's redundant. > > > > > > > > > > > + > > > > > > + powerdown-gpios: > > > > > > + maxItems: 1 > > > > > > + description: > > > > > > > + Reference to the GPIO connected to the powerdown pin, if any. > > > > > > + > > > > > > + reset-gpios: > > > > > > + maxItems: 1 > > > > > > + description: > > > > > > > + Reference to the GPIO connected to the reset pin, if any. > > > > > > > > Reading the Alvium CSI-2 Cameras User Guide, I don't see any powerdown > > > > or reset pin on the 22-pin connector. Am I missing something ? There are > > > > however two GPIOs (in addition to the I2C signals that are also > > > > documented as GPIOs), do you plan to support those ? > > > > > > > > > > + > > > > > > + streamon-delay: > > > > > > + maxItems: 1 > > > > > > + description: > > > > > > > + Delay before camera start capturing frames in us. > > > > > > > > Add "-us" to the property name to indicate the unit. > > > > > > > > This is a vendor-specific property, and should thus have a vendor > > > > prefix. > > > > > > > > A longer description is needed, from that single line I have no idea > > > > what the property does exactly. > > > > > > > > > > + > > > > > > + rotation: > > > > > > + enum: > > > > > > + - 0 > > > > > > + - 180 > > > > > > > > Why is the rotation restricted to 0 or 180 ? Someone could mount the > > > > module with 90 degrees rotation, shouldn't the DT bindings allow > > > > describing that ? > > > > > > > > You need a property for the vcc-ext-in supply. > > > > > > > > > > + > > > > > > + port: > > > > > > + description: Digital Output Port > > > > > > + $ref: /schemas/graph.yaml#/$defs/port-base > > > > > > + additionalProperties: false > > > > > > + > > > > > > + properties: > > > > > > + endpoint: > > > > > > + $ref: /schemas/media/video-interfaces.yaml# > > > > > > + unevaluatedProperties: false > > > > > > + > > > > > > + properties: > > > > > > + clock-lanes: > > > > > > + const: 0 > > > > > > > > > > The driver can know this, no need to have it in DT, i.e. please drop it. > > > > > > > > > > > + data-lanes: > > > > > > + minItems: 1 > > > > > > + maxItems: 4 > > > > > > + link-frequencies: true > > > > > > + > > > > > > + required: > > > > > > + - data-lanes > > > > > > + - link-frequencies > > > > > > + > > > > > > +required: > > > > > > + - compatible > > > > > > + - reg > > > > > > + - clocks > > > > > > + - clock-names > > > > > > + - port > > > > > > + > > > > > > +additionalProperties: false > > > > > > + > > > > > > +examples: > > > > > > + - | > > > > > > + #include <dt-bindings/gpio/gpio.h> > > > > > > + #include <dt-bindings/clock/imx8mp-clock.h> > > > > > > + > > > > > > + i2c { > > > > > > + #address-cells = <1>; > > > > > > + #size-cells = <0>; > > > > > > + > > > > > > + camera: alvium@3c { > > > > > > + compatible = "alliedvision,alvium"; > > > > > > > > The "alliedvision" prefix is missing from > > > > Documentation/devicetree/bindings/vendor-prefixes.yaml. > > > > > > > > > > + pinctrl-names = "default"; > > > > > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > > > > > > > I'd drop pinctrl, it makes the example longer without adding much value. > > > > > > > > > > + reg = <0x3c>; > > > > > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > > > + clock-names = "xclk"; > > > > > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > > > > > + assigned-clock-rates = <24000000>; > > > > > > + streamon-delay = <20>; > > > > > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > > > > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > > > > > + status = "okay"; > > > > > > + > > > > > > + port { > > > > > > + alvium_out: endpoint { > > > > > > + remote-endpoint = <&mipi_csi_0_in>; > > > > > > + data-lanes = <1 2 3 4>; > > > > > > + link-frequencies = /bits/ 64 <681250000>; > > > > > > + clock-lanes = <0>; > > > > > > + }; > > > > > > + }; > > > > > > + }; > > > > > > + }; > > > > > > + > > > > > > +... > > -- > Regards, > > Laurent Pinchart
Hi Tommaso, On Wed, May 31, 2023 at 04:01:57PM +0200, Tommaso Merciai wrote: > On Wed, May 31, 2023 at 02:06:00PM +0300, Laurent Pinchart wrote: > > On Wed, May 31, 2023 at 12:20:47PM +0200, Tommaso Merciai wrote: > > > On Mon, May 29, 2023 at 09:43:26AM +0300, Laurent Pinchart wrote: > > > > On Mon, May 29, 2023 at 09:39:13AM +0300, Laurent Pinchart wrote: > > > > > On Sun, May 28, 2023 at 09:16:05PM +0000, Sakari Ailus wrote: > > > > > > On Fri, May 26, 2023 at 07:39:43PM +0200, Tommaso Merciai wrote: > > > > > > > Add documentation of device tree in YAML schema for the ALVIUM > > > > > > > Camera from Allied Vision Inc. > > > > > > > > > > > > > > References: > > > > > > > - https://www.alliedvision.com/en/products/embedded-vision-solutions > > > > > > > > > > > > > > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com> > > > > > > > --- > > > > > > > Changes since v1: > > > > > > > - Fixed build error as suggested by RHerring bot > > > > > > > > > > > > > > .../media/i2c/alliedvision,alvium.yaml | 115 ++++++++++++++++++ > > > > > > > 1 file changed, 115 insertions(+) > > > > > > > create mode 100644 Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > > new file mode 100644 > > > > > > > index 000000000000..81e9e560c99d > > > > > > > --- /dev/null > > > > > > > +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml > > > > > > > @@ -0,0 +1,115 @@ > > > > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > > > > +%YAML 1.2 > > > > > > > +--- > > > > > > > +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# > > > > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > > > > + > > > > > > > +title: Alliedvision Alvium Camera > > > > > > > > > > s/Alliedvision/Allied Vision/ > > > > > > > > > > > > + > > > > > > > +maintainers: > > > > > > > + - Tommaso Merciai <tomm.merciai@gmail.com> > > > > > > > + - Martin Hecht <martin.hecht@avnet.eu> > > > > > > > + > > > > > > > +allOf: > > > > > > > + - $ref: /schemas/media/video-interface-devices.yaml# > > > > > > > + > > > > > > > +properties: > > > > > > > + compatible: > > > > > > > + const: alliedvision,alvium > > > > > > > > > > The name is very generic. There are Alvium camera modules that have a > > > > > GMSL or FPD-Link interface, and I'm pretty sure those will require a > > > > > different driver. I would add module-specific compatible strings (e.g. > > > > > "alliedvision,alvium-1500c", ...) here, with a generic fallback. > > > > > "alliedvision,alvium" isn't good as it won't cover GMSL or FPD-Link, > > > > > maybe "alliedvision,alvium-csi2" would be an option. > > > > > > > > Actually, "alvium-1500c" as a specific compatible string won't do. You > > > > need the exact model in the compatible string, otherwise it won't be > > > > possible for the driver to handle device-specific configuration (for > > > > instance accessing registers of the camera sensor for fine-grained > > > > configuration). I would thus recommend using "alliedvision,alvium-1500c" > > > > and "alliedvision,alvium-1800c" as generic fallbacks, along compatible > > > > strings that include the exact device model. > > > > > > Agree with alliedvision,alvium-csi2 and thanks for your suggestion. > > > In my opinion we don’t need names for 1500c and > > > others because the same driver can drive all the alvium models. > > > Alvium is taking care of different sensor abstractions. > > > > > > I test with this driver with the following models: > > > > > > - 1800 C-1240c > > > - 1800 C-040c > > > - 1500 C-500 > > > > > > What do you think about? > > > > As far as I understand, the camera modules allow accessing sensors > > registers from the host (through the ISP) for fine-grained > > configuration. Even if that's not implemented in the driver at the > > moment, I think it's an important feature to eventually support, and it > > will require a way for the system to identify the camera module > > precisely, to know which sensor the module uses. That's why I would like > > that information to be available in DT, in the form of a compatible > > string. For instance, > > > > compatible = "alliedvision,alvium-1500c-1240c", > > "alliedvision,alvium-1500c"; > > > > The driver will only need DT match entries for > > "alliedvision,alvium-1500c" and "alliedvision,alvium-1800c". > > Thanks for your feedback. > > Some clarification: > > The Alvium doesn't allow direct access on the sensor. > Alvium hides the particular sensor totally. I think I got misled by the "Direct Register Access (DRA) to control the cameras via registers for advanced users" mention on the Allied Vision website, and thought direct register access to the sensor was possible. > For this reason I would prefer to keep generic > "alvium-csi2" name. Given that the camera has device identification registers, that should be OK. > > > > > > > + > > > > > > > + reg: > > > > > > > + maxItems: 1 > > > > > > > + > > > > > > > + clocks: > > > > > > > + description: XCLK Input Clock > > > > > > > + > > > > > > > + clock-names: > > > > > > > + const: xclk > > > > > > > > > > > > I'd also drop this as you have a single clock only: it's redundant. > > > > > > > > > > > > > + > > > > > > > + powerdown-gpios: > > > > > > > + maxItems: 1 > > > > > > > + description: > > > > > > > > + Reference to the GPIO connected to the powerdown pin, if any. > > > > > > > + > > > > > > > + reset-gpios: > > > > > > > + maxItems: 1 > > > > > > > + description: > > > > > > > > + Reference to the GPIO connected to the reset pin, if any. > > > > > > > > > > Reading the Alvium CSI-2 Cameras User Guide, I don't see any powerdown > > > > > or reset pin on the 22-pin connector. Am I missing something ? There are > > > > > however two GPIOs (in addition to the I2C signals that are also > > > > > documented as GPIOs), do you plan to support those ? > > > > > > > > > > > > + > > > > > > > + streamon-delay: > > > > > > > + maxItems: 1 > > > > > > > + description: > > > > > > > > + Delay before camera start capturing frames in us. > > > > > > > > > > Add "-us" to the property name to indicate the unit. > > > > > > > > > > This is a vendor-specific property, and should thus have a vendor > > > > > prefix. > > > > > > > > > > A longer description is needed, from that single line I have no idea > > > > > what the property does exactly. > > > > > > > > > > > > + > > > > > > > + rotation: > > > > > > > + enum: > > > > > > > + - 0 > > > > > > > + - 180 > > > > > > > > > > Why is the rotation restricted to 0 or 180 ? Someone could mount the > > > > > module with 90 degrees rotation, shouldn't the DT bindings allow > > > > > describing that ? > > > > > > > > > > You need a property for the vcc-ext-in supply. > > > > > > > > > > > > + > > > > > > > + port: > > > > > > > + description: Digital Output Port > > > > > > > + $ref: /schemas/graph.yaml#/$defs/port-base > > > > > > > + additionalProperties: false > > > > > > > + > > > > > > > + properties: > > > > > > > + endpoint: > > > > > > > + $ref: /schemas/media/video-interfaces.yaml# > > > > > > > + unevaluatedProperties: false > > > > > > > + > > > > > > > + properties: > > > > > > > + clock-lanes: > > > > > > > + const: 0 > > > > > > > > > > > > The driver can know this, no need to have it in DT, i.e. please drop it. > > > > > > > > > > > > > + data-lanes: > > > > > > > + minItems: 1 > > > > > > > + maxItems: 4 > > > > > > > + link-frequencies: true > > > > > > > + > > > > > > > + required: > > > > > > > + - data-lanes > > > > > > > + - link-frequencies > > > > > > > + > > > > > > > +required: > > > > > > > + - compatible > > > > > > > + - reg > > > > > > > + - clocks > > > > > > > + - clock-names > > > > > > > + - port > > > > > > > + > > > > > > > +additionalProperties: false > > > > > > > + > > > > > > > +examples: > > > > > > > + - | > > > > > > > + #include <dt-bindings/gpio/gpio.h> > > > > > > > + #include <dt-bindings/clock/imx8mp-clock.h> > > > > > > > + > > > > > > > + i2c { > > > > > > > + #address-cells = <1>; > > > > > > > + #size-cells = <0>; > > > > > > > + > > > > > > > + camera: alvium@3c { > > > > > > > + compatible = "alliedvision,alvium"; > > > > > > > > > > The "alliedvision" prefix is missing from > > > > > Documentation/devicetree/bindings/vendor-prefixes.yaml. > > > > > > > > > > > > + pinctrl-names = "default"; > > > > > > > + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; > > > > > > > > > > I'd drop pinctrl, it makes the example longer without adding much value. > > > > > > > > > > > > + reg = <0x3c>; > > > > > > > + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > > > > + clock-names = "xclk"; > > > > > > > + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; > > > > > > > + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; > > > > > > > + assigned-clock-rates = <24000000>; > > > > > > > + streamon-delay = <20>; > > > > > > > + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; > > > > > > > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > > > > > > > + status = "okay"; > > > > > > > + > > > > > > > + port { > > > > > > > + alvium_out: endpoint { > > > > > > > + remote-endpoint = <&mipi_csi_0_in>; > > > > > > > + data-lanes = <1 2 3 4>; > > > > > > > + link-frequencies = /bits/ 64 <681250000>; > > > > > > > + clock-lanes = <0>; > > > > > > > + }; > > > > > > > + }; > > > > > > > + }; > > > > > > > + }; > > > > > > > + > > > > > > > +...
diff --git a/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml new file mode 100644 index 000000000000..81e9e560c99d --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/alliedvision,alvium.yaml @@ -0,0 +1,115 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Alliedvision Alvium Camera + +maintainers: + - Tommaso Merciai <tomm.merciai@gmail.com> + - Martin Hecht <martin.hecht@avnet.eu> + +allOf: + - $ref: /schemas/media/video-interface-devices.yaml# + +properties: + compatible: + const: alliedvision,alvium + + reg: + maxItems: 1 + + clocks: + description: XCLK Input Clock + + clock-names: + const: xclk + + powerdown-gpios: + maxItems: 1 + description: > + Reference to the GPIO connected to the powerdown pin, if any. + + reset-gpios: + maxItems: 1 + description: > + Reference to the GPIO connected to the reset pin, if any. + + streamon-delay: + maxItems: 1 + description: > + Delay before camera start capturing frames in us. + + rotation: + enum: + - 0 + - 180 + + port: + description: Digital Output Port + $ref: /schemas/graph.yaml#/$defs/port-base + additionalProperties: false + + properties: + endpoint: + $ref: /schemas/media/video-interfaces.yaml# + unevaluatedProperties: false + + properties: + clock-lanes: + const: 0 + data-lanes: + minItems: 1 + maxItems: 4 + link-frequencies: true + + required: + - data-lanes + - link-frequencies + +required: + - compatible + - reg + - clocks + - clock-names + - port + +additionalProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + #include <dt-bindings/clock/imx8mp-clock.h> + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + camera: alvium@3c { + compatible = "alliedvision,alvium"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>; + reg = <0x3c>; + clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; + clock-names = "xclk"; + assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>; + assigned-clock-parents = <&clk IMX8MP_CLK_24M>; + assigned-clock-rates = <24000000>; + streamon-delay = <20>; + powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; + status = "okay"; + + port { + alvium_out: endpoint { + remote-endpoint = <&mipi_csi_0_in>; + data-lanes = <1 2 3 4>; + link-frequencies = /bits/ 64 <681250000>; + clock-lanes = <0>; + }; + }; + }; + }; + +...