| Message ID | 20260518153339.619947-6-paulk@sys-base.io (mailing list archive) |
|---|---|
| State | New |
| Headers |
Return-Path: <linux-sunxi+bounces-23495-sunxi=pue.re@lists.linux.dev> X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sto.lore.kernel.org (sto.lore.kernel.org [172.232.135.74]) by mxe881.netcup.net (Postfix) with ESMTPS id 8BC251C05D7 for <noreply@patchwork.local>; Mon, 18 May 2026 17:39:57 +0200 (CEST) Authentication-Results: mxe881; spf=pass (sender IP is 172.232.135.74) smtp.mailfrom=linux-sunxi+bounces-23495-noreply=patchwork.local@lists.linux.dev smtp.helo=sto.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.232.135.74 as permitted sender) client-ip=172.232.135.74; envelope-from=linux-sunxi+bounces-23495-noreply=patchwork.local@lists.linux.dev; helo=sto.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sto.lore.kernel.org (Postfix) with ESMTP id 79234302009C for <noreply@patchwork.local>; Mon, 18 May 2026 15:37:07 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A841C44E049; Mon, 18 May 2026 15:36:35 +0000 (UTC) X-Original-To: linux-sunxi@lists.linux.dev Received: from leonov.paulk.fr (leonov.paulk.fr [185.233.101.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 032334657F4 for <linux-sunxi@lists.linux.dev>; Mon, 18 May 2026 15:36:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.233.101.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779118595; cv=none; b=PVVDzKdVmSu/icyyDxbeBr6YSlKQKz20ACmhzCAaEI4yww4rXdB3wSITHk7qKLNPSvldWbDr4LNTUHuCh0SSz7e6hzW8mUQ9WnnRM19lJgoKT1wOSjp8vkTdHadTOPHOzRdxopN2QfvICHp1AxL19OVPEwiAItOe60LUv41vcFU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779118595; c=relaxed/simple; bh=wW6mi1lC/tTWTcY5/zt1YMBd7OCQ6zaDwKuLJKtd2Zc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y1OpABNy9USJhdDQZxk+0taSSKLkBKC4Go8w4cXm5vo4Os+A9a9f5DKRMPiOda/45lYpq5fQiGgltknEn0mSByGzAwDhOQcCq+SA/AVKSlkJcTDdw/Be7wqOjDuvSR/+rsiSNWESFPDgno6tDiqMf0Rh4sOdZGy+ENerFcY9Z1Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sys-base.io; spf=pass smtp.mailfrom=sys-base.io; arc=none smtp.client-ip=185.233.101.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sys-base.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sys-base.io Received: from laika.paulk.fr (12.234.24.109.rev.sfr.net [109.24.234.12]) by leonov.paulk.fr (Postfix) with ESMTPS id 85DAA1F8005C for <linux-sunxi@lists.linux.dev>; Mon, 18 May 2026 15:36:32 +0000 (UTC) Received: by laika.paulk.fr (Postfix, from userid 65534) id 1251AB40819; Mon, 18 May 2026 15:36:31 +0000 (UTC) X-Spam-Level: * Received: from collins (unknown [192.168.1.64]) by laika.paulk.fr (Postfix) with ESMTP id 0C162B40800; Mon, 18 May 2026 15:33:43 +0000 (UTC) From: Paul Kocialkowski <paulk@sys-base.io> To: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org Cc: Yong Deng <yong.deng@magewell.com>, Paul Kocialkowski <paulk@sys-base.io>, Mauro Carvalho Chehab <mchehab@kernel.org>, Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>, Conor Dooley <conor+dt@kernel.org>, Chen-Yu Tsai <wens@kernel.org>, Jernej Skrabec <jernej.skrabec@gmail.com>, Samuel Holland <samuel@sholland.org>, Michael Turquette <mturquette@baylibre.com>, Stephen Boyd <sboyd@kernel.org>, Brian Masney <bmasney@redhat.com>, Maxime Ripard <mripard@kernel.org>, Paul Kocialkowski <paul.kocialkowski@bootlin.com> Subject: [PATCH v9 5/9] ARM: dts: sun8i: v3s: Add nodes for MIPI CSI-2 support Date: Mon, 18 May 2026 17:33:34 +0200 Message-ID: <20260518153339.619947-6-paulk@sys-base.io> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518153339.619947-1-paulk@sys-base.io> References: <20260518153339.619947-1-paulk@sys-base.io> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: <linux-sunxi.lists.linux.dev> List-Subscribe: <mailto:linux-sunxi+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:linux-sunxi+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspamd-worker-8404 X-Spamd-Result: default: False [-0.66 / 15.00]; BAYES_HAM(-5.50)[100.00%]; RBL_SENDERSCORE(2.00)[172.232.135.74:from]; SUSPICIOUS_RECIPS(1.50)[]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; MAILLIST(-0.15)[generic]; MIME_GOOD(-0.10)[text/plain]; BAD_REP_POLICIES(0.10)[]; HAS_LIST_UNSUB(-0.01)[]; RCPT_COUNT_TWELVE(0.00)[19]; FREEMAIL_CC(0.00)[magewell.com,sys-base.io,kernel.org,gmail.com,sholland.org,baylibre.com,redhat.com,bootlin.com]; FUZZY_BLOCKED(0.00)[rspamd.com]; DMARC_NA(0.00)[sys-base.io]; DBL_BLOCKED_OPENRESOLVER(0.00)[sto.lore.kernel.org:rdns,sto.lore.kernel.org:helo,0.0.0.0:email,0.0.0.1:email,bootlin.com:email]; TAGGED_RCPT(0.00)[dt]; PRECEDENCE_BULK(0.00)[]; FROM_HAS_DN(0.00)[]; ARC_ALLOW(0.00)[subspace.kernel.org:s=arc-20240116:i=1]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; RCVD_TLS_LAST(0.00)[]; R_SPF_ALLOW(0.00)[+ip4:172.232.135.74:c]; TO_DN_SOME(0.00)[]; RCVD_COUNT_SEVEN(0.00)[7]; R_DKIM_NA(0.00)[]; TAGGED_FROM(0.00)[bounces-23495-noreply=patchwork.local]; MIME_TRACE(0.00)[0:+]; FROM_NEQ_ENVFROM(0.00)[paulk@sys-base.io,linux-sunxi@lists.linux.dev]; ASN(0.00)[asn:63949, ipnet:172.232.128.0/19, country:SG]; FORGED_SENDER_MAILLIST(0.00)[] X-Rspamd-Queue-Id: 8BC251C05D7 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= |
| Series |
Allwinner A31/A83T MIPI CSI-2 and A31 ISP / Platform Support
|
|
Commit Message
Paul Kocialkowski
May 18, 2026, 3:33 p.m. UTC
From: Paul Kocialkowski <paul.kocialkowski@bootlin.com> MIPI CSI-2 is supported on the V3s with an A31-based MIPI CSI-2 bridge controller. The controller uses a separate D-PHY, which is the same that is otherwise used for MIPI DSI, but used in Rx mode. On the V3s, the CSI0 controller is dedicated to MIPI CSI-2 as it does not have access to any parallel interface pins. Add all the necessary nodes (CSI0, MIPI CSI-2 bridge and D-PHY) to support the MIPI CSI-2 interface. Note that a fwnode graph link is created between CSI0 and MIPI CSI-2 even when no sensor is connected. This will result in a probe failure for the controller as long as no sensor is connected but this is fine since no other interface is available. The interconnects property is used to inherit the proper DMA offset. Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> --- arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+)
Comments
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] The `dphy` node is missing the required `interrupts` property and a SoC-specific compatible string. -- commit ceae1b5da24380c4a30d9a8b480a23eaee3c0814 Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com> ARM: dts: sun8i: v3s: Add nodes for MIPI CSI-2 support This commit adds MIPI CSI-2 support to the Allwinner V3s SoC. It introduces the device tree nodes for the CSI0 controller, the MIPI CSI-2 bridge, and the D-PHY block. > diff --git a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi > --- a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi > +++ b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi [ ... ] > + dphy: d-phy@1cb2000 { > + compatible = "allwinner,sun6i-a31-mipi-dphy"; Should a SoC-specific compatible string like "allwinner,sun8i-v3s-mipi-dphy" be included here alongside the generic a31 fallback? > + reg = <0x01cb2000 0x1000>; > + clocks = <&ccu CLK_BUS_CSI>, > + <&ccu CLK_MIPI_CSI>; > + clock-names = "bus", "mod"; > + resets = <&ccu RST_BUS_CSI>; Will this node fail dtbs_check schema validation? The existing device tree binding schema for "allwinner,sun6i-a31-mipi-dphy" requires an interrupts property, which appears to be missing here. If the V3s hardware physically lacks a D-PHY interrupt, would it be better to add the V3s-specific compatible string and update the binding schema to make the interrupts property conditionally optional for the V3s? > + allwinner,direction = "rx"; > + status = "disabled"; > + #phy-cells = <0>; > + }; > +
On Mon, May 18, 2026 at 6:12 PM <sashiko-bot@kernel.org> wrote: > > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > - [Medium] The `dphy` node is missing the required `interrupts` property and a SoC-specific compatible string. > -- > > commit ceae1b5da24380c4a30d9a8b480a23eaee3c0814 > Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com> > > ARM: dts: sun8i: v3s: Add nodes for MIPI CSI-2 support > > This commit adds MIPI CSI-2 support to the Allwinner V3s SoC. It introduces > the device tree nodes for the CSI0 controller, the MIPI CSI-2 bridge, and > the D-PHY block. > > > diff --git a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi > > --- a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi > > +++ b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi > [ ... ] > > + dphy: d-phy@1cb2000 { > > + compatible = "allwinner,sun6i-a31-mipi-dphy"; > > Should a SoC-specific compatible string like "allwinner,sun8i-v3s-mipi-dphy" > be included here alongside the generic a31 fallback? Following our general guideline, I believe it should. > > + reg = <0x01cb2000 0x1000>; > > + clocks = <&ccu CLK_BUS_CSI>, > > + <&ccu CLK_MIPI_CSI>; > > + clock-names = "bus", "mod"; > > + resets = <&ccu RST_BUS_CSI>; > > Will this node fail dtbs_check schema validation? The existing device tree > binding schema for "allwinner,sun6i-a31-mipi-dphy" requires an interrupts > property, which appears to be missing here. Yeah, this is definitely going to fail validation. > If the V3s hardware physically lacks a D-PHY interrupt, would it be better > to add the V3s-specific compatible string and update the binding schema > to make the interrupts property conditionally optional for the V3s? FWIW the vendor kernel has some code for the D-PHY's interrupt bits [1]. Could you add the interrupt (I'm guessing the MIPI-CSI interrupt?) and give it a quick test? Thanks ChenYu [1] https://github.com/gediz/v3s-linux-sdk/blob/master/linux-3.4/drivers/media/video/sunxi-vfe/mipi_csi/dphy/dphy_reg.c > > + allwinner,direction = "rx"; > > + status = "disabled"; > > + #phy-cells = <0>; > > + }; > > + > > -- > Sashiko AI review · https://sashiko.dev/#/patchset/20260518153339.619947-1-paulk@sys-base.io?part=5 >
Hi Chen-Yu, On Sun 24 May 26, 20:49, Chen-Yu Tsai wrote: > On Mon, May 18, 2026 at 6:12 PM <sashiko-bot@kernel.org> wrote: > > > > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > > - [Medium] The `dphy` node is missing the required `interrupts` property and a SoC-specific compatible string. > > -- > > > > commit ceae1b5da24380c4a30d9a8b480a23eaee3c0814 > > Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com> > > > > ARM: dts: sun8i: v3s: Add nodes for MIPI CSI-2 support > > > > This commit adds MIPI CSI-2 support to the Allwinner V3s SoC. It introduces > > the device tree nodes for the CSI0 controller, the MIPI CSI-2 bridge, and > > the D-PHY block. > > > > > diff --git a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi > > > --- a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi > > > +++ b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi > > [ ... ] > > > + dphy: d-phy@1cb2000 { > > > + compatible = "allwinner,sun6i-a31-mipi-dphy"; > > > > Should a SoC-specific compatible string like "allwinner,sun8i-v3s-mipi-dphy" > > be included here alongside the generic a31 fallback? > > Following our general guideline, I believe it should. Yes I guess it makes sense. I don't think we've been doing that in every case but it doesn't hurt. > > > + reg = <0x01cb2000 0x1000>; > > > + clocks = <&ccu CLK_BUS_CSI>, > > > + <&ccu CLK_MIPI_CSI>; > > > + clock-names = "bus", "mod"; > > > + resets = <&ccu RST_BUS_CSI>; > > > > Will this node fail dtbs_check schema validation? The existing device tree > > binding schema for "allwinner,sun6i-a31-mipi-dphy" requires an interrupts > > property, which appears to be missing here. > > Yeah, this is definitely going to fail validation. To be very clear about this, the interrupt is absolutely not required for proper operation of the unit and there's a chance we might eventually see a SoC that doesn't have it wired. I could just hook the interrupt for now and we could make it optional if ever needed, but I could also mark is as optional now if you prefer. > > If the V3s hardware physically lacks a D-PHY interrupt, would it be better > > to add the V3s-specific compatible string and update the binding schema > > to make the interrupts property conditionally optional for the V3s? > > FWIW the vendor kernel has some code for the D-PHY's interrupt bits [1]. > Could you add the interrupt (I'm guessing the MIPI-CSI interrupt?) and > give it a quick test? Thanks for digging this up! It really looks like it's just used for debug purposes. I have previously used the mipi csi-2 interrupt for the mipi csi-2 controller and never for the d-phy. There's a chance it's the same interrupt that is wired to both units (like it is for isp/csi). I'll give it a try when I get back home. If it doesn't trigger, it probbaly means it's not wired to the d-phy and should really be made optional. All the best, Paul > > > Thanks > ChenYu > > [1] https://github.com/gediz/v3s-linux-sdk/blob/master/linux-3.4/drivers/media/video/sunxi-vfe/mipi_csi/dphy/dphy_reg.c > > > > > + allwinner,direction = "rx"; > > > + status = "disabled"; > > > + #phy-cells = <0>; > > > + }; > > > + > > > > -- > > Sashiko AI review · https://sashiko.dev/#/patchset/20260518153339.619947-1-paulk@sys-base.io?part=5 > >
diff --git a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi index 02d6c62b3874..bfe02295f45d 100644 --- a/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi +++ b/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi @@ -671,6 +671,77 @@ gic: interrupt-controller@1c81000 { interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; }; + csi0: camera@1cb0000 { + compatible = "allwinner,sun8i-v3s-csi"; + reg = <0x01cb0000 0x1000>; + interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&ccu CLK_BUS_CSI>, + <&ccu CLK_CSI_SCLK>, + <&ccu CLK_DRAM_CSI>; + clock-names = "bus", "mod", "ram"; + resets = <&ccu RST_BUS_CSI>; + interconnects = <&mbus 5>; + interconnect-names = "dma-mem"; + status = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@1 { + reg = <1>; + + csi0_in_mipi_csi2: endpoint { + remote-endpoint = <&mipi_csi2_out_csi0>; + }; + }; + }; + }; + + mipi_csi2: csi@1cb1000 { + compatible = "allwinner,sun8i-v3s-mipi-csi2", + "allwinner,sun6i-a31-mipi-csi2"; + reg = <0x01cb1000 0x1000>; + interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&ccu CLK_BUS_CSI>, + <&ccu CLK_CSI_SCLK>; + clock-names = "bus", "mod"; + resets = <&ccu RST_BUS_CSI>; + status = "disabled"; + + phys = <&dphy>; + phy-names = "dphy"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + mipi_csi2_in: port@0 { + reg = <0>; + }; + + mipi_csi2_out: port@1 { + reg = <1>; + + mipi_csi2_out_csi0: endpoint { + remote-endpoint = <&csi0_in_mipi_csi2>; + }; + }; + }; + }; + + dphy: d-phy@1cb2000 { + compatible = "allwinner,sun6i-a31-mipi-dphy"; + reg = <0x01cb2000 0x1000>; + clocks = <&ccu CLK_BUS_CSI>, + <&ccu CLK_MIPI_CSI>; + clock-names = "bus", "mod"; + resets = <&ccu RST_BUS_CSI>; + allwinner,direction = "rx"; + status = "disabled"; + #phy-cells = <0>; + }; + csi1: camera@1cb4000 { compatible = "allwinner,sun8i-v3s-csi"; reg = <0x01cb4000 0x3000>;