From nobody Mon Jun 8 10:57:07 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011045.outbound.protection.outlook.com [40.107.130.45]) (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 77341333441; Fri, 29 May 2026 13:21:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780060912; cv=fail; b=eiWyFxXO7FXx+F0OcmmVzCp6JxzrX5YN4BxzWclk7ZdgrXQzEtv0q8ir1sgjTSlwhJALzYYQapL/bHSQDPFhQlmSBYDsRazNVwmdG+c+GdKaAbf91yNeVG10xArF9BBHOHwYbQsSiXYgq4leujByUuXga/uhmsvrVsbQCijpBms= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780060912; c=relaxed/simple; bh=uTd2UbU4fVNRT++LzilBJMXC8/uwSN+4hVk+nV/4vXM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=HDJYbzxotSY3M+SFGITBtEWfS7VmsxKLmLD6ualGI1gHV722AROJoUX4R2MIy1/ow8yk7ld9rix7t/1fBmfzEcSOo33oLKfKggponZs29Ja81WkSwDKP+iyEwDMyA+MmP2XWpK/sywURX0JCfN9FP6rzNdtNw+aJLdwlTYIV+RQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=JqNR/pqM; arc=fail smtp.client-ip=40.107.130.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="JqNR/pqM" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=My/udu+Eu44VVX+r2bUwsD0LefJCipMUi7gwG7aB+vDIU2F/HE37LCW83dOLTYpplcbq1sm518aZ1Ple5lGH9uykREiUaDvx1rpe3e4KUI/LYx7MJ5Fx/iGZ9kHJ6U5nq/UeQhjwKFdNUcRIFMRge5/vDosnuN7jhc7tisXtX9ZBqqxHgE4eu6QwKOFSI4vPiDRs/o1V4s/aSdZY9XvSNiK07aBfQUCqAPUrFJ4zL7xzZL66g9IXeQnx+jjWSqLH0iRD5rkt8qV3spa+zcYald5HhHYnZSaNL2/OBkneca9QT9I9VCs68xrON6apQuXA9jqg1bDC9d2FdcsRtIH46Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QgBxxnh4l05MuIXhRzKSLxxnP3rHPzQW78Rj2oCqrgg=; b=xXwNpPglJ/q9lvwDU9W07qZwfWcg/vV2Ep8GlcEtkfGp38a4r2c/3alU9ahktVpzZliwwrpVBDJHnvEdJR5FEcJA0czpqzjClCFCt4HdkZOIHhfaQDuQAUfwovZ+0IX60wgSGHZg6MNepofzrP6T7RbLOLvkWkpBRhNrLlrXJVFVX9dAGgcy1xGWfFnDVPqYQL6KeyLM+1WXo5eyYO9NRLk6Hc7kbYKEjLYQYgPeZLgcXoq7cjTjPSoH0wxJs2BSZKHv//ju1i7ddXmRali0Tjxl6BjjPonLf9tIgb7zDogac4suV29E6YtbPgfWC7XHyVqUknnYi77gYxysIgLtmA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QgBxxnh4l05MuIXhRzKSLxxnP3rHPzQW78Rj2oCqrgg=; b=JqNR/pqMuON0ZHSBu3+j8UzSisD3oOX19sRRa6sdN9pCs9JwUi80w5c+xP0NrVm/QGzMnHRftOtx0H2O+uzjVwWQCg7uRb3fKd/FBzkSY7K2JN7Svo2tVH3P42hDlu5SeRcvLp0JUff0r+oB19PNRgxae3R1OUDNuB6UB60eEdaAZivZ4ZjnrbQQRSeBSrEZSzI+7w314SwSNnk1vwGB3pQdeY8lh435zVg5D3COcVzoXTF3wFrcGUdiddpcuHYTbPnImCi+v49l9+S1F3jHyXe9KPmCzA9qmSvhinW118vcugJ5LJCHquraxv9ZY+ZyZ2yhENngG+d73dM9tW4UsQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB7821.eurprd04.prod.outlook.com (2603:10a6:102:c5::5) by PAWPR04MB11552.eurprd04.prod.outlook.com (2603:10a6:102:50f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.15; Fri, 29 May 2026 13:21:48 +0000 Received: from PA4PR04MB7821.eurprd04.prod.outlook.com ([fe80::67dc:4bd2:8552:9b50]) by PA4PR04MB7821.eurprd04.prod.outlook.com ([fe80::67dc:4bd2:8552:9b50%6]) with mapi id 15.21.0071.014; Fri, 29 May 2026 13:21:48 +0000 From: Robby Cai To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, Frank.Li@nxp.com, s.hauer@pengutronix.de, festevam@gmail.com, sebastian.krzyszkowiak@puri.sm, slongerbeam@gmail.com, sakari.ailus@linux.intel.com, mchehab@kernel.org, p.zabel@pengutronix.de Cc: kernel@pengutronix.de, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 1/2] arm64: dts: imx8mq-evk: Enable MIPI CSI and dual OV5640 cameras Date: Fri, 29 May 2026 21:23:33 +0800 Message-ID: <20260529132334.3333294-2-robby.cai@nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260529132334.3333294-1-robby.cai@nxp.com> References: <20260529132334.3333294-1-robby.cai@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0008.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:176::7) To PA4PR04MB7821.eurprd04.prod.outlook.com (2603:10a6:102:c5::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB7821:EE_|PAWPR04MB11552:EE_ X-MS-Office365-Filtering-Correlation-Id: ab5c80cc-a05c-4177-bd03-08debd853d19 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|7416014|376014|1800799024|19092799006|18002099003|22082099003|38350700014|921020|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: CjNybds5AR3ZcEjPjAEEAlMJgtbvARNJxIE4VtX49GCpyZthqoDksKvdJ6MRoBG7yAw8WzZCXO4AzSnDginvKW7PWBinGnfPjQH2SOd0LV+rNchIma5JgyjyxBGjrjEkfXLSnCZXBNMRB1BAHHgMEhVf8USDKnmlMfMyAnEBoyJvY+/pWiobhzwEyyfVYahL+BmGInlsUGFGWHXSXeuKl4RJ+fCcSzLiz0e3o6Zk7O6r2oIYQVbLanl5ubVj3wvKpIPSh+dLYtKo6qi+iX/X/pVH72PtYgv5NiWTNENMeiu3RG7w4bYHc5wLBxpjcDHbJdpfzXVxBZm6/Ep+MPx3x43I1ukQ62cbhDH+jNx7pSpWsBFTZMulr0qadGjUmpQ7FSYKKyBNE2vCZPvhmyyPqBPp2uEnf4DPjM8SW8mJcOI7tkYmCLTTEP5vM6kmpSyJvXdJW2st8UOzVondb9V1H9n/+uIniDj0blWU2DVmyO4aj70SzoCx8GfO/r4b52JGI6WbfwFZqdGMQH1kUVIaXsOH+jcJbqEr+Kl26J9JMH6dlmfFD+t0ByCWq6ifAFfzaqYag0pRqXLgkt2BuucaZxWe8xoUtO22gwxm4CqRvMkGZCCFK6BOvz9oTEKYAU8wyNLKWHDqZ0GzZM36KT/IZ6Kc+gjLBl75hY6jAFfhjq9ddfLC0c24idGvM+Sfbppz1/MrcAhEFlSdctN4LibcP8pPRVeJfM6IIiwqojsJtL1P4DkJ9gX6A6igoyLZ3W4YuiAQmNfLizm3hfnSJ8gniA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB7821.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(7416014)(376014)(1800799024)(19092799006)(18002099003)(22082099003)(38350700014)(921020)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o4JsY4r4DBIZ2t7hbPw1FTy9qyb5V6m81b3VVwOrNCWtxvSDTY1U/KpmFp48?= =?us-ascii?Q?ctiG6NW9RZLumQt0uDSnJgl0S7KDhdNXceeykhWmSyw8dNTLLLAN7dxXr3vT?= =?us-ascii?Q?JXZKXy24D4Y1gmA5KPgN1IrRzxsAD3jLNPAbIh1yzEU5iPxClaNq+Yv1jnHj?= =?us-ascii?Q?7zZwJTyUUx6AR2JGr9BIepjHD2qCaI7CW8LLak4bnqayLJxPQEqdH/fOB7i4?= =?us-ascii?Q?roSsMHCgp/KuP56paeaSxJHoxt/w8bWSQyCa68XYvC9O/TsbG7hEy/E1STQ7?= =?us-ascii?Q?mLOYuuRIH6qFJuAROuaMDRF5woZzZg7e5ISFXHAlK4f377loYDDLvdHg6ZlP?= =?us-ascii?Q?NPa/DotHsFINMPwr7qoj9yC7Kf54eJpRAKuy2+BvIZVIxbXs8XmBEAdokzVr?= =?us-ascii?Q?kjn6VOaPiXFaJtvkG64IQhhjUXZLFDLQWZJjm9Cfh3ot/nyJui9HXDlS9ugV?= =?us-ascii?Q?RvPQ72ECWRGrbyO6c/BjE2nGvppRxPBLXoMy36oh8ThQiqGxx1XP0wx6FNf6?= =?us-ascii?Q?QvMvOmlQEd0mCOvOzIzr+Azx554ZU9NJCogfmHSCZARefnx+SuulffOWExXQ?= =?us-ascii?Q?mIqAF8a18gdqut40Z9nSFoQAZahnhbp/jGifOuinIS7fS41U4dpsNPojiVSt?= =?us-ascii?Q?vdfielWXTI3ROEXs8W6prQ4lSlItC1kC0te55ocT3sqn+gXYmM8RbLEe2K5y?= =?us-ascii?Q?Z19Yce2Z/82IXGVbOaPc1ZwuUQFNuSggFJum2Bu5+EBQYf76RkfCu3xnYFfq?= =?us-ascii?Q?BFA4zIkb815fAsfXZd8PBtbQDoaWKK2m5XARgvu0UHqrXWmvt6Tvyc3bxPbx?= =?us-ascii?Q?p39HQOlQp2C4bqx+9kujYeiqtT1+InMT7K33kLE+PVlMbpZdmVVAVgSDcCPm?= =?us-ascii?Q?TUO53Rmzj8D3ZU2D24iz9iTHJlkySFvZHjgOpZEpBttcsVNB92231HdVYwsd?= =?us-ascii?Q?G75zHJK+eLOk9aMsg2B4TK/LRaXYNI6jh123zYWYSa8+mR4O8d7QcBbya+ku?= =?us-ascii?Q?2kmoPqnSMAS+wxUAWa1Uhq7v+EMKTyG1csqww/95WWnmFqM7mzYxKbyi9B9R?= =?us-ascii?Q?l7eAtphHln+PzigVALT/fk+JRIU96G2Mun3qbXYsH52PsDf2E67DNXKBcLpR?= =?us-ascii?Q?nTzOaI/BEuz1TuXDAQ8Cbwc7wTssqHG7pS2gqRGjUTmlY6k9Z0wS95spLR24?= =?us-ascii?Q?NBYr+njSfYDaRjRPkNUR0/jAwqpzb2wN4sMXtyv7sz02a5MSqxAPY7Q0DqJH?= =?us-ascii?Q?hK6YgR1+4VW4/3piyOb5MQYxhcMqogQ43Dbq1vJ28yP2ni3gaBj7RmZKNHRW?= =?us-ascii?Q?17os2Zjkq5krqo7Az/ZlsUfHT6C1rseku96rCuw2isfevcg3FY2FTriOeAS6?= =?us-ascii?Q?uYst+SvDcOsB9iCACAqyQSKSMfcn7eau9FWBxzGbszdNLdiWFPI3cYlm2RPb?= =?us-ascii?Q?iIUW3YbppXSuzAxnvmHRVSSzn/bbvff/Mi1NEhSUFWhzraLlTQXkjmSLAXDU?= =?us-ascii?Q?piSAly6Hk6PW1HuhAJ+Hto7TioYD8leVCvmb3hfE91x2E65YpxS4Z883oPCG?= =?us-ascii?Q?J3CopcgpNEl6zviU+1vWm+CQDdDpSyLq1G1uQPW1zPTFBHKwA3uiAQ9v5FnG?= =?us-ascii?Q?QzdsVt8ckcBQQKU/1thZiorO2v3D2gCiaz9nsCnSFvU+JQ04ppMCJ93cnajr?= =?us-ascii?Q?mzj3Vdc+H3hnleqtLB1kMOn7DBhib+wF5nJ+iGVM+KlD4iVCAhm4NDFSkRRd?= =?us-ascii?Q?/50G+ZGcRQ=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab5c80cc-a05c-4177-bd03-08debd853d19 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB7821.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2026 13:21:48.8530 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ml6bS7Dw4DS6HYr+xxpnep5lNIW8cLvh2k/wJLbL0LE/2CT5wLlHeWaHzGmopKHMp/uOngaubjVrChSJ1Za/KA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR04MB11552 Content-Type: text/plain; charset="utf-8" Enable the MIPI CSI-2 host controllers and CSI bridges, and add two OV5640 sensors on I2C1 and I2C2, forming two media pipelines: - OV5640 (I2C2) -> MIPI CSI1 -> CSI1 bridge - OV5640 (I2C1) -> MIPI CSI2 -> CSI2 bridge On the i.MX8MQ EVK, both sensors share a single reset GPIO line, while each sensor has an independent powerdown (PWDN) GPIO. Both sensors also share the same MCLK source (CLKO2), configured identically as required by the hardware design. Signed-off-by: Robby Cai --- arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 150 +++++++++++++++++++ 1 file changed, 150 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts b/arch/arm64/boot= /dts/freescale/imx8mq-evk.dts index d48f901487d4..7ff1a763890a 100644 --- a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts +++ b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts @@ -6,6 +6,7 @@ =20 /dts-v1/; =20 +#include #include "imx8mq.dtsi" =20 / { @@ -50,6 +51,20 @@ reg_usdhc2_vmmc: regulator-vsd-3v3 { enable-active-high; }; =20 + reg_1v5: regulator-1v5 { + compatible =3D "regulator-fixed"; + regulator-name =3D "DVDD_1V5"; + regulator-min-microvolt =3D <1500000>; + regulator-max-microvolt =3D <1500000>; + }; + + reg_2v8: regulator-2v8 { + compatible =3D "regulator-fixed"; + regulator-name =3D "AVDD_2V8"; + regulator-min-microvolt =3D <2800000>; + regulator-max-microvolt =3D <2800000>; + }; + buck2_reg: regulator-buck2 { pinctrl-names =3D "default"; pinctrl-0 =3D <&pinctrl_buck2>; @@ -172,6 +187,14 @@ &A53_3 { cpu-supply =3D <&buck2_reg>; }; =20 +&csi1 { + status =3D "okay"; +}; + +&csi2 { + status =3D "okay"; +}; + &ddrc { operating-points-v2 =3D <&ddrc_opp_table>; status =3D "okay"; @@ -330,12 +353,103 @@ vgen6_reg: vgen6 { }; }; }; + + camera@3c { + compatible =3D "ovti,ov5640"; + reg =3D <0x3c>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_camera2_pwdn>; + clocks =3D <&clk IMX8MQ_CLK_CLKO2>; + clock-names =3D "xclk"; + assigned-clocks =3D <&clk IMX8MQ_CLK_CLKO2>; + assigned-clock-parents =3D <&clk IMX8MQ_SYS2_PLL_200M>; + assigned-clock-rates =3D <20000000>; + powerdown-gpios =3D <&gpio1 5 GPIO_ACTIVE_HIGH>; + reset-gpios =3D <&gpio1 6 GPIO_ACTIVE_LOW>; + DOVDD-supply =3D <&sw4_reg>; + AVDD-supply =3D <®_2v8>; + DVDD-supply =3D <®_1v5>; + + port { + camera2_ep: endpoint { + remote-endpoint =3D <&mipi_csi2_in_ep>; + clock-lanes =3D <0>; + data-lanes =3D <1 2>; + }; + }; + }; +}; + +&i2c2 { + clock-frequency =3D <100000>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_i2c2>; + status =3D "okay"; + + camera@3c { + compatible =3D "ovti,ov5640"; + reg =3D <0x3c>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_camera1_pwdn>; + clocks =3D <&clk IMX8MQ_CLK_CLKO2>; + clock-names =3D "xclk"; + assigned-clocks =3D <&clk IMX8MQ_CLK_CLKO2>; + assigned-clock-parents =3D <&clk IMX8MQ_SYS2_PLL_200M>; + assigned-clock-rates =3D <20000000>; + powerdown-gpios =3D <&gpio1 3 GPIO_ACTIVE_HIGH>; + reset-gpios =3D <&gpio1 6 GPIO_ACTIVE_LOW>; + DOVDD-supply =3D <&sw4_reg>; + AVDD-supply =3D <®_2v8>; + DVDD-supply =3D <®_1v5>; + + port { + camera1_ep: endpoint { + remote-endpoint =3D <&mipi_csi1_in_ep>; + clock-lanes =3D <0>; + data-lanes =3D <1 2>; + }; + }; + }; }; =20 &lcdif { status =3D "okay"; }; =20 +&mipi_csi1 { + assigned-clock-rates =3D <266000000>, <200000000>, <66000000>; + status =3D "okay"; + + ports { + port@0 { + reg =3D <0>; + + mipi_csi1_in_ep: endpoint { + remote-endpoint =3D <&camera1_ep>; + data-lanes =3D <1 2>; + bus-type =3D ; + }; + }; + }; +}; + +&mipi_csi2 { + assigned-clock-rates =3D <266000000>, <200000000>, <66000000>; + status =3D "okay"; + + ports { + port@0 { + reg =3D <0>; + + mipi_csi2_in_ep: endpoint { + remote-endpoint =3D <&camera2_ep>; + data-lanes =3D <1 2>; + bus-type =3D ; + }; + }; + }; +}; + &mipi_dsi { #address-cells =3D <1>; #size-cells =3D <0>; @@ -532,12 +646,34 @@ &wdog1 { }; =20 &iomuxc { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_mclk>, <&pinctrl_camera_reset>; + pinctrl_buck2: vddarmgrp { fsl,pins =3D < MX8MQ_IOMUXC_GPIO1_IO13_GPIO1_IO13 0x19 >; }; =20 + pinctrl_camera1_pwdn: camera1pwdngrp { + fsl,pins =3D < + MX8MQ_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x19 + >; + }; + + pinctrl_camera2_pwdn: camera2pwdngrp { + fsl,pins =3D < + MX8MQ_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x19 + >; + }; + + /* Shared reset line for cameras on CSI1 and CSI2. */ + pinctrl_camera_reset: cameraresetgrp { + fsl,pins =3D < + MX8MQ_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x19 + >; + }; + pinctrl_fec1: fec1grp { fsl,pins =3D < MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3 @@ -565,12 +701,26 @@ MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x4000007f >; }; =20 + pinctrl_i2c2: i2c2grp { + fsl,pins =3D < + MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x4000007f + MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x4000007f + >; + }; + pinctrl_ir: irgrp { fsl,pins =3D < MX8MQ_IOMUXC_GPIO1_IO12_GPIO1_IO12 0x4f >; }; =20 + /* Shared MCLK for cameras on CSI1 and CSI2. */ + pinctrl_mclk: mclkgrp { + fsl,pins =3D < + MX8MQ_IOMUXC_GPIO1_IO15_CCMSRCGPCMIX_CLKO2 0x59 + >; + }; + pinctrl_mipi_dsi: mipidsigrp { fsl,pins =3D < MX8MQ_IOMUXC_ECSPI1_SCLK_GPIO5_IO6 0x16 --=20 2.50.1 From nobody Mon Jun 8 10:57:07 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013061.outbound.protection.outlook.com [52.101.72.61]) (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 BEAA233D509; Fri, 29 May 2026 13:21:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780060918; cv=fail; b=q0/7Jg8hDZ7f8VtICayChSR7AWACfk6VxmQolnfJ88yZ7YlaZUC6L830mPOl5qPF819E800YaqLqo2rMztlRKTbmUxNRlVyiaDh7S4N6zrn6ygnIMq9UlRCITPh3nuEbuG9saGKj2Cl2TOsd81IfWCwHvwpKRPDaxrk+jxcAh14= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780060918; c=relaxed/simple; bh=CHlpqZl44jVGETamKjtLYbM38KXyxxFB1yybSCtwNv4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CE4ggrpcVz7TAgMWTZJL+4iQQoJGU8F5UsFoFg7Mng+BteIb0MaRT3uXTzT9BzOgV/WO92ETxBidsP8IGOHJOWpvD5V1bkdQhvnQ1uwtlI+6+zx+47xC00tjQpKMDkYhjyEVw3NAEuYJfsWcFOOKknZsg8ORciJHR15ZQcJvqV4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=JX7BEbET; arc=fail smtp.client-ip=52.101.72.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="JX7BEbET" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BU5EMnT0Vu8KlfxVc+/bDjb58W3JiDQ9KFwKcbQYgG9jTSq5nyzUjkbiN6X8zf0/eO5MZlz2FUQ0DVxX2wSOKqjnG35V0iaJNJIVJcdr3fdQ6yppcARuwl7YzfOFE10yqqxBfz433hXPAHrTgHMyT/xckmg0X8YRsNW0U6yN8UmfhO5n3R+EpFOyPoHhxCfG9VYHQLzebOzvYphhzv8q8/Zd7DUDfZOLuoZqUb18UCvx0i67x7uaMOuhg0BK6qE2MOij/NoI2JGZiCJ+jNuamoeQxie8Cv1k343l2GHA7KRIasI+EnexURxPadOiu9xEpyk7F5qGkCqqOehdWhOcNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XSb47Cwjjyi4lLhMuJy/ixAmcAa1E+xis6XgYKRGOlE=; b=FGHF6oBnMxL4McWHzNOHSEGSUR/d3ln/mdaw5P1RqEQhmSgA1ygQzHxvdIZA+uTcY87t1jaLsgz3l5v98/zpMJwEQy5w5jFliah9NZapdLELYZD8/zv3Bqb+cYcRZcdE08UYIt1NdM0rd2K1w4NTOhf/C9C+XGkcuFNncxU+83PmuasZVhB5gNnWepmm//SoxvHIVw8WL4FGkLckSnL3Rf66bdRxk2/+1mqEpJGt4wUz/wZc7vZcscMS9jAlxrwUVLC68O074ijyQ8uLU1m/JGWYrB14VlAGVnXplU9CyYl29pzk909Kg+4nEgXB9Pp9dnSPVHTd5BZctLXIOWY+Gg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XSb47Cwjjyi4lLhMuJy/ixAmcAa1E+xis6XgYKRGOlE=; b=JX7BEbETBlEsgEYfmmO5eE4JBPiP7fsrMCJTBw0EdEGOn/bR5YV28Z8Azgz8J4x2FuANo8RHdaCNVlnVh0TMVHYiwHVTE1TSVKuwhJELkfVKaDCcvwpsLTsvX766H+ZSXTIDxPUUIjzLP91zXzwhuRMh01BlZU2J4b2P/PY7DG+k2TMEnOVaYkUCgy8W9k9+6hBK3DOGVAz7d+sFX6LWYKOITbur+nX8S1Q6AqKz8O0lmwZ4vtC8kSQw2OMxFg8LLyBCypGMorMkQWCed4aLuN8Tmen+5Qb9jy7OId+h+WxH/N+4C7eAREUvwkoschf1oCn4JU12VBze3irWEfjbMg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB7821.eurprd04.prod.outlook.com (2603:10a6:102:c5::5) by PAWPR04MB11552.eurprd04.prod.outlook.com (2603:10a6:102:50f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.15; Fri, 29 May 2026 13:21:54 +0000 Received: from PA4PR04MB7821.eurprd04.prod.outlook.com ([fe80::67dc:4bd2:8552:9b50]) by PA4PR04MB7821.eurprd04.prod.outlook.com ([fe80::67dc:4bd2:8552:9b50%6]) with mapi id 15.21.0071.014; Fri, 29 May 2026 13:21:54 +0000 From: Robby Cai To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, Frank.Li@nxp.com, s.hauer@pengutronix.de, festevam@gmail.com, sebastian.krzyszkowiak@puri.sm, slongerbeam@gmail.com, sakari.ailus@linux.intel.com, mchehab@kernel.org, p.zabel@pengutronix.de Cc: kernel@pengutronix.de, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/2] media: i2c: ov5640: Use reset control framework to support shared reset Date: Fri, 29 May 2026 21:23:34 +0800 Message-ID: <20260529132334.3333294-3-robby.cai@nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260529132334.3333294-1-robby.cai@nxp.com> References: <20260529132334.3333294-1-robby.cai@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA5P287CA0008.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:176::7) To PA4PR04MB7821.eurprd04.prod.outlook.com (2603:10a6:102:c5::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB7821:EE_|PAWPR04MB11552:EE_ X-MS-Office365-Filtering-Correlation-Id: 6379659b-e3c3-41f7-9541-08debd854038 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|7416014|376014|1800799024|19092799006|18002099003|22082099003|38350700014|921020|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: wx2bF16JIESa+GjDPNVcCExJh7ICm2TsQDB6/RHkHotZREXHp8h7YmTnt+yPo3iRfcGy/raQ9BXxi0qN1K16yZ0eUro0//CU5FiyXAWwEGovxRPFIjfNAPbDypCSXSqeEzAvPAIt7KKSwDQQAUu1Ku6DrJkgfL9Q+u2UbTF9AVyubUsd73lIQXTcwOTYKpF0c1una6KwlKgUv1qieqtB46wLfDJKpF4mzNKmg86wWTHj5EILZbAZDcRyEx3lM8W5My+w3/DxKts+RbUZy6GGfR6ta5TzREpPDkOjbVTAMvG4Hb2/TGNmpR2x/UfeqRAbUPm5ex2l2OWtCWkqkOgE15CRf/AbWNTwC59JiXuPae/dcmwqOTuejRWoAFiN2sOO1W9TCLuBR0+abANY75AfFoaxFDLdr64pL+1FhThacOrqU0vvewp6scTR/J6EA3+2Nmu+XbBYQj9lHD6WkpTi9SV1RoPZjHOUKMSlcYuILNYDanVK6r70ZEt92Kw9OgF/KId24EMxYeXzQM7Dry3Hu1f+tupTKcEe2XmVnlX6Xupxz0k++bnBzN7uWNXg3v0kjfTgAB8XJSeqgv0x6ZBBYonAbPux6cRttVTVOrfDBx5val1P3G4Vn+svUy72eV09ydTqyFXr+wCM2RZGD+M4C/9Fusp9MEwYsPWDzfs35u4C/bfGOHg6kjP9f1pWODXM5h9Od2YXGO27pkTfy+FA4X+tZUk+dRIGTh97pcIbwCivCeSQduZyUgdylDADB4hMNdzhIM9adhjJeiDJreeRRQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB7821.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(7416014)(376014)(1800799024)(19092799006)(18002099003)(22082099003)(38350700014)(921020)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ltMx2skOxh5pE26Vues2YhgrzJRBeGctfLJYz3mBsfjUNUTEOd07th9jubUX?= =?us-ascii?Q?tjjdor6CiDxWrRGJbJkydUEwN9EF+NIaaMzQoZeSWuBtFpDtjGGFmzo6nwtl?= =?us-ascii?Q?IPNxN91HVRVgj6kqG4rWOdq1DRxGMnbdf2VjQhHJ29ua+oItDxOg7MbhFB4B?= =?us-ascii?Q?JAO/SVG7enLIaTEf2g0tdInjuhelBDh5mkhGGmHWI5ozkQhuNaiLXmVxLlL6?= =?us-ascii?Q?N/3jGCSJfROkkQU843qwOkE544n1jOdedkXiz0VCr6maMpUnUm6ClbL2eVUp?= =?us-ascii?Q?y8y06IT9cN4kI03Sa5U6eKJ68pIzfPw6li+55ArhHGCaIfbvsXQX3y6wT/Sn?= =?us-ascii?Q?slYY9kqYLalM1dcc0om8t+SUxjf44UAKVaEYDEvr3ad6gCS3jGJIVaIVo7Vu?= =?us-ascii?Q?Jafaowrh8nvFhHwvec5tghVRLCz8VRCtkVN7vGnbif6HQ85PZOTECSBeL8LK?= =?us-ascii?Q?R0h+2ko2UQ/tV04WEUUWcUQ7wXKtJE+Ls3qC8lg2DE9/ujXtExvOw0l5dZfy?= =?us-ascii?Q?IaGyhM4Tcbf0zCq+Dd84utmA0ekq8MbeRedYnLzDKekOLzU3z+Gm/p0VynZ5?= =?us-ascii?Q?eQjkDnyk+rxy5w2HFNjo2Pgr6SkA7it9nX2P+1OAH4q4obAiHD+I2wWKx66J?= =?us-ascii?Q?cRQLApd7AhcgFHyj31ouD9nFL6cwSMDaPgezBAvqJomcA7UUehWjlnfDsYkX?= =?us-ascii?Q?RiSU5lhGdhEVzY2aPzGaa7wvIysVSpzvF8dUapL3JbzmhXqvGEE6xq/eqh3T?= =?us-ascii?Q?dZRmBdcfAQMXlbZyecppJt3r5zckUOfCNrw/9A2dyxW8XQhvPs80eNhAt0PB?= =?us-ascii?Q?psqP8prixO741ByAtL9fGmXmiVXmbCVMeMzNNulbCj/FK4EhjvZZD0mGGalJ?= =?us-ascii?Q?eOOQGx4PvDX8nczNaoBacRVQG4sdG55MJUrI7PVy+GuVwMEO4IOA5TqHgCof?= =?us-ascii?Q?MiUoUnvvzWI4mctG3znLSe7mGk6zAQkQ/hwP4aalVJRMdLpjjkOI69IZLkoo?= =?us-ascii?Q?qljkk4lCrw2BwKLeEW3lh8FiF0ipzH3JhJlxjbuylZltt12Ug6vsV2vxvL0Q?= =?us-ascii?Q?6IaPmP63CwzJhRw7M3kFqpn4zjp/Ig/5YpVkuPnkgKIgDJE0Vjq5unxD1yv6?= =?us-ascii?Q?AExO4mhndC1fNS+7bbOoVPEO8JiQ3TK/go5DscGzZ+kdzcElkfKebLW1v3HR?= =?us-ascii?Q?frWrizivm086zTwTpMKwqrj5f0bmlliKnd00wunFOK1hZ2ZBDK2rcp5PqO87?= =?us-ascii?Q?OWMVazH958Sq0Jw/PCezAUMeXMsmORnV3YEcTTgGbDc/wSyz8Ra7FSVdJTgq?= =?us-ascii?Q?Mq6GoBTtBJUJmEDdE8B0g2JfPC8Xl3tquZlWoMHt4Ypgpz3Y9Rrilsn1RwnJ?= =?us-ascii?Q?L3IizZAQiUNMcIRGG949TbiWo5MSsX8HUEO9IKMQVywFBfj6oB8FQkd188EK?= =?us-ascii?Q?1YhYrHYWrouI5epoNMVDWF/17BIKIBH9EkJpjsBemquzOTgfp+ED01VRE6oQ?= =?us-ascii?Q?0gPwhyVRIidY4hegx2RdBWS+zaW+zU2O402aB6jik0P7BI0fSAIeWOIEdh14?= =?us-ascii?Q?GweVjwQWJUh8TfqigpWmRvwHuL7l6YPqtmgUUJ/Qih88yTUX6xHWahooaSfb?= =?us-ascii?Q?CvDHxCDQYIg04kuWouGBX5RWGw/5RWqVqrAQ6ev+DsuCHkwcx2wHlDkk/kPo?= =?us-ascii?Q?zg/3MGrF6TfDHvYA8cY+2pP74TwmnJn+hq3JCddEw4Ns5+OvaFihVObcW7pY?= =?us-ascii?Q?olIOMbvgSA=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6379659b-e3c3-41f7-9541-08debd854038 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB7821.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2026 13:21:54.1757 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: n0/hsvDsddqQ0Vth82SxzaxVhb0lpY1Tn0IjmUJujCQDMv/qAyYLvrBCnjur5QGWeANN5GHDehS7bqCmLwZpPw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR04MB11552 Content-Type: text/plain; charset="utf-8" Replace the direct GPIO-based reset handling with the reset control framework. Use devm_reset_control_get_optional_shared() to acquire the reset line, allowing the driver to support both dedicated and shared reset signals described via reset-gpios in DT. This simplifies the driver by delegating reset handling and sharing semantics to the reset framework instead of managing GPIOs directly. Signed-off-by: Robby Cai --- drivers/media/i2c/ov5640.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c index 85ecc23b3587..754be6573b8d 100644 --- a/drivers/media/i2c/ov5640.c +++ b/drivers/media/i2c/ov5640.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -442,7 +443,7 @@ struct ov5640_dev { u32 xclk_freq; =20 struct regulator_bulk_data supplies[OV5640_NUM_SUPPLIES]; - struct gpio_desc *reset_gpio; + struct reset_control *reset; struct gpio_desc *pwdn_gpio; bool upside_down; =20 @@ -2448,12 +2449,12 @@ static void ov5640_power(struct ov5640_dev *sensor,= bool enable) * * In such cases, this gpio should be mapped to pwdn_gpio in the driver, a= nd we * should still toggle the pwdn_gpio below with the appropriate delays, wh= ile - * the calls to reset_gpio will be ignored. + * the calls to reset will be ignored. */ static void ov5640_powerup_sequence(struct ov5640_dev *sensor) { if (sensor->pwdn_gpio) { - gpiod_set_value_cansleep(sensor->reset_gpio, 1); + reset_control_assert(sensor->reset); =20 /* camera power cycle */ ov5640_power(sensor, false); @@ -2461,7 +2462,7 @@ static void ov5640_powerup_sequence(struct ov5640_dev= *sensor) ov5640_power(sensor, true); usleep_range(1000, 2000); /* t3 */ =20 - gpiod_set_value_cansleep(sensor->reset_gpio, 0); + reset_control_deassert(sensor->reset); } else { /* software reset */ ov5640_write_reg(sensor, OV5640_REG_SYS_CTRL0, @@ -3914,11 +3915,10 @@ static int ov5640_probe(struct i2c_client *client) if (IS_ERR(sensor->pwdn_gpio)) return PTR_ERR(sensor->pwdn_gpio); =20 - /* request optional reset pin */ - sensor->reset_gpio =3D devm_gpiod_get_optional(dev, "reset", - GPIOD_OUT_HIGH); - if (IS_ERR(sensor->reset_gpio)) - return PTR_ERR(sensor->reset_gpio); + sensor->reset =3D devm_reset_control_get_optional_shared(dev, NULL); + if (IS_ERR(sensor->reset)) + return dev_err_probe(dev, PTR_ERR(sensor->reset), + "Failed to get reset\n"); =20 v4l2_i2c_subdev_init(&sensor->sd, client, &ov5640_subdev_ops); sensor->sd.internal_ops =3D &ov5640_internal_ops; --=20 2.50.1