[PATCH RESEND] dts: arm64: amlogic: Add ISP related nodes for C3

Keke Li via B4 Relay posted 1 patch 4 months, 3 weeks ago
.../boot/dts/amlogic/amlogic-c3-c308l-aw419.dts    | 84 +++++++++++++++++++++
arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi        | 88 ++++++++++++++++++++++
2 files changed, 172 insertions(+)
[PATCH RESEND] dts: arm64: amlogic: Add ISP related nodes for C3
Posted by Keke Li via B4 Relay 4 months, 3 weeks ago
From: Keke Li <keke.li@amlogic.com>

Add the IMX290 sensor node description to the device tree file,
which will be controlled via I2C bus with image data transmission
through MIPI CSI-2 interface.

Add CSI-2, adapter and ISP nodes for C3 family.

Signed-off-by: Keke Li <keke.li@amlogic.com>
---
The C3 ISP driver and device-tree bindings have been
submitted. To facilitate using the C3 ISP driver, the
related device nodes need to be added.
---
 .../boot/dts/amlogic/amlogic-c3-c308l-aw419.dts    | 84 +++++++++++++++++++++
 arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi        | 88 ++++++++++++++++++++++
 2 files changed, 172 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts b/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
index 45f8631f9feb..e026604c55e6 100644
--- a/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
+++ b/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
@@ -17,6 +17,7 @@ / {
 	aliases {
 		serial0 = &uart_b;
 		spi0 = &spifc;
+		i2c2 = &i2c2;
 	};
 
 	memory@0 {
@@ -146,6 +147,36 @@ sdcard: regulator-sdcard {
 		regulator-boot-on;
 		regulator-always-on;
 	};
+
+	camera_vdddo_1v8: regulator-camera-1v8 {
+		compatible = "regulator-fixed";
+		regulator-name = "CAMERA_VDDDO";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		vin-supply = <&vcc_3v3>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	camera_vdda_2v9: regulator-camera-2v9 {
+		compatible = "regulator-fixed";
+		regulator-name = "CAMERA_VDDA";
+		regulator-min-microvolt = <2900000>;
+		regulator-max-microvolt = <2900000>;
+		vin-supply = <&vcc_5v>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	camera_vddd_1v2: regulator-camera-1v2 {
+		compatible = "regulator-fixed";
+		regulator-name = "CAMERA_VDDD";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <1200000>;
+		vin-supply = <&vcc_3v3>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
 };
 
 &uart_b {
@@ -258,3 +289,56 @@ &sd {
 	vmmc-supply = <&sdcard>;
 	vqmmc-supply = <&sdcard>;
 };
+
+&i2c2 {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c2_pins1>;
+	clock-frequency = <100000>; /* default 100k */
+
+	imx290: sensor0@1a {
+		compatible = "sony,imx290";
+		reg = <0x1a>;
+		clocks = <&clkc_pll CLKID_MCLK0>;
+		clock-names = "xclk";
+		clock-frequency = <37125000>;
+		assigned-clocks = <&clkc_pll CLKID_MCLK_PLL>,
+				  <&clkc_pll CLKID_MCLK0>;
+		assigned-clock-rates = <74250000>, <37125000>;
+
+		vdddo-supply = <&camera_vdddo_1v8>;
+		vdda-supply = <&camera_vdda_2v9>;
+		vddd-supply = <&camera_vddd_1v2>;
+
+		reset-gpios = <&gpio GPIOE_4 GPIO_ACTIVE_LOW>;
+
+		port {
+			imx290_out: endpoint {
+				data-lanes = <1 2 3 4>;
+				link-frequencies = /bits/ 64 <222750000 148500000>;
+				remote-endpoint = <&c3_mipi_csi_in>;
+			};
+		};
+	};
+};
+
+&csi2 {
+	status = "okay";
+
+	ports {
+		port@0 {
+			c3_mipi_csi_in: endpoint {
+				remote-endpoint = <&imx290_out>;
+				data-lanes = <1 2 3 4>;
+			};
+		};
+	};
+};
+
+&adap {
+	status = "okay";
+};
+
+&isp {
+	status = "okay";
+};
diff --git a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi
index cb9ea3ca6ee0..a62fd8534209 100644
--- a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi
+++ b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi
@@ -992,5 +992,93 @@ mdio0: mdio {
 				#size-cells = <0>;
 			};
 		};
+
+		csi2: csi2@ff018000 {
+			compatible = "amlogic,c3-mipi-csi2";
+			reg = <0x0 0xff018000 0x0 0x100>,
+			      <0x0 0xff019000 0x0 0x300>,
+			      <0x0 0xff01a000 0x0 0x100>;
+			reg-names = "aphy", "dphy", "host";
+			power-domains = <&pwrc PWRC_C3_MIPI_ISP_WRAP_ID>;
+			clocks = <&clkc_periphs CLKID_VAPB>,
+				 <&clkc_periphs CLKID_CSI_PHY0>;
+			clock-names = "vapb", "phy0";
+			assigned-clocks = <&clkc_periphs CLKID_VAPB>,
+					  <&clkc_periphs CLKID_CSI_PHY0>;
+			assigned-clock-rates = <0>, <200000000>;
+			status = "disabled";
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				port@0 {
+					reg = <0>;
+				};
+
+				port@1 {
+					reg = <1>;
+					c3_mipi_csi_out: endpoint {
+						remote-endpoint = <&c3_adap_in>;
+					};
+				};
+			};
+		};
+
+		adap: adap@ff010000 {
+			compatible = "amlogic,c3-mipi-adapter";
+			reg = <0x0 0xff010000 0x0 0x100>,
+			      <0x0 0xff01b000 0x0 0x100>,
+			      <0x0 0xff01d000 0x0 0x200>;
+			reg-names = "top", "fd", "rd";
+			power-domains = <&pwrc PWRC_C3_ISP_TOP_ID>;
+			clocks = <&clkc_periphs CLKID_VAPB>,
+				 <&clkc_periphs CLKID_ISP0>;
+			clock-names = "vapb", "isp0";
+			assigned-clocks = <&clkc_periphs CLKID_VAPB>,
+					  <&clkc_periphs CLKID_ISP0>;
+			assigned-clock-rates = <0>, <400000000>;
+			status = "disabled";
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				port@0 {
+					reg = <0>;
+					c3_adap_in: endpoint {
+						remote-endpoint = <&c3_mipi_csi_out>;
+					};
+				};
+
+				port@1 {
+					reg = <1>;
+					c3_adap_out: endpoint {
+						remote-endpoint = <&c3_isp_in>;
+					};
+				};
+			};
+		};
+
+		isp: isp@ff000000 {
+			compatible = "amlogic,c3-isp";
+			reg = <0x0 0xff000000 0x0 0xf000>;
+			reg-names = "isp";
+			power-domains = <&pwrc PWRC_C3_ISP_TOP_ID>;
+			clocks = <&clkc_periphs CLKID_VAPB>,
+				 <&clkc_periphs CLKID_ISP0>;
+			clock-names = "vapb", "isp0";
+			assigned-clocks = <&clkc_periphs CLKID_VAPB>,
+					  <&clkc_periphs CLKID_ISP0>;
+			assigned-clock-rates = <0>, <400000000>;
+			interrupts = <GIC_SPI 145 IRQ_TYPE_EDGE_RISING>;
+			status = "disabled";
+
+			port {
+				c3_isp_in: endpoint {
+					remote-endpoint = <&c3_adap_out>;
+				};
+			};
+		};
 	};
 };

---
base-commit: 84b92a499e7eca54ba1df6f6c6e01766025943f1
change-id: 20250731-b4-c3isp-16531391a1cb

Best regards,
-- 
Keke Li <keke.li@amlogic.com>
Re: [PATCH RESEND] dts: arm64: amlogic: Add ISP related nodes for C3
Posted by Neil Armstrong 3 months, 2 weeks ago
Hi,

On Thu, 18 Sep 2025 16:35:09 +0800, Keke Li wrote:
> Add the IMX290 sensor node description to the device tree file,
> which will be controlled via I2C bus with image data transmission
> through MIPI CSI-2 interface.
> 
> Add CSI-2, adapter and ISP nodes for C3 family.
> 
> 
> [...]

Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v6.19/arm64-dt)

[1/1] dts: arm64: amlogic: Add ISP related nodes for C3
      https://git.kernel.org/amlogic/c/63aa70a1f84f5dfabbac28d60e12949705876648

These changes has been applied on the intermediate git tree [1].

The v6.19/arm64-dt branch will then be sent via a formal Pull Request to the Linux SoC maintainers
for inclusion in their intermediate git branches in order to be sent to Linus during
the next merge window, or sooner if it's a set of fixes.

In the cases of fixes, those will be merged in the current release candidate
kernel and as soon they appear on the Linux master branch they will be
backported to the previous Stable and Long-Stable kernels [2].

The intermediate git branches are merged daily in the linux-next tree [3],
people are encouraged testing these pre-release kernels and report issues on the
relevant mailing-lists.

If problems are discovered on those changes, please submit a signed-off-by revert
patch followed by a corrective changeset.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
[3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

-- 
Neil
Re: [PATCH RESEND] dts: arm64: amlogic: Add ISP related nodes for C3
Posted by Neil Armstrong 4 months, 2 weeks ago
On 18/09/2025 10:35, Keke Li via B4 Relay wrote:
> From: Keke Li <keke.li@amlogic.com>
> 
> Add the IMX290 sensor node description to the device tree file,
> which will be controlled via I2C bus with image data transmission
> through MIPI CSI-2 interface.
> 
> Add CSI-2, adapter and ISP nodes for C3 family.
> 
> Signed-off-by: Keke Li <keke.li@amlogic.com>
> ---
> The C3 ISP driver and device-tree bindings have been
> submitted. To facilitate using the C3 ISP driver, the
> related device nodes need to be added.

No need to resend until the bindings are merged.

Neil

> ---
>   .../boot/dts/amlogic/amlogic-c3-c308l-aw419.dts    | 84 +++++++++++++++++++++
>   arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi        | 88 ++++++++++++++++++++++
>   2 files changed, 172 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts b/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
> index 45f8631f9feb..e026604c55e6 100644
> --- a/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
> +++ b/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
> @@ -17,6 +17,7 @@ / {
>   	aliases {
>   		serial0 = &uart_b;
>   		spi0 = &spifc;
> +		i2c2 = &i2c2;
>   	};
>   
>   	memory@0 {
> @@ -146,6 +147,36 @@ sdcard: regulator-sdcard {
>   		regulator-boot-on;
>   		regulator-always-on;
>   	};
> +
> +	camera_vdddo_1v8: regulator-camera-1v8 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "CAMERA_VDDDO";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <1800000>;
> +		vin-supply = <&vcc_3v3>;
> +		regulator-boot-on;
> +		regulator-always-on;
> +	};
> +
> +	camera_vdda_2v9: regulator-camera-2v9 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "CAMERA_VDDA";
> +		regulator-min-microvolt = <2900000>;
> +		regulator-max-microvolt = <2900000>;
> +		vin-supply = <&vcc_5v>;
> +		regulator-boot-on;
> +		regulator-always-on;
> +	};
> +
> +	camera_vddd_1v2: regulator-camera-1v2 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "CAMERA_VDDD";
> +		regulator-min-microvolt = <1200000>;
> +		regulator-max-microvolt = <1200000>;
> +		vin-supply = <&vcc_3v3>;
> +		regulator-boot-on;
> +		regulator-always-on;
> +	};
>   };
>   
>   &uart_b {
> @@ -258,3 +289,56 @@ &sd {
>   	vmmc-supply = <&sdcard>;
>   	vqmmc-supply = <&sdcard>;
>   };
> +
> +&i2c2 {
> +	status = "okay";
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c2_pins1>;
> +	clock-frequency = <100000>; /* default 100k */
> +
> +	imx290: sensor0@1a {
> +		compatible = "sony,imx290";
> +		reg = <0x1a>;
> +		clocks = <&clkc_pll CLKID_MCLK0>;
> +		clock-names = "xclk";
> +		clock-frequency = <37125000>;
> +		assigned-clocks = <&clkc_pll CLKID_MCLK_PLL>,
> +				  <&clkc_pll CLKID_MCLK0>;
> +		assigned-clock-rates = <74250000>, <37125000>;
> +
> +		vdddo-supply = <&camera_vdddo_1v8>;
> +		vdda-supply = <&camera_vdda_2v9>;
> +		vddd-supply = <&camera_vddd_1v2>;
> +
> +		reset-gpios = <&gpio GPIOE_4 GPIO_ACTIVE_LOW>;
> +
> +		port {
> +			imx290_out: endpoint {
> +				data-lanes = <1 2 3 4>;
> +				link-frequencies = /bits/ 64 <222750000 148500000>;
> +				remote-endpoint = <&c3_mipi_csi_in>;
> +			};
> +		};
> +	};
> +};
> +
> +&csi2 {
> +	status = "okay";
> +
> +	ports {
> +		port@0 {
> +			c3_mipi_csi_in: endpoint {
> +				remote-endpoint = <&imx290_out>;
> +				data-lanes = <1 2 3 4>;
> +			};
> +		};
> +	};
> +};
> +
> +&adap {
> +	status = "okay";
> +};
> +
> +&isp {
> +	status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi
> index cb9ea3ca6ee0..a62fd8534209 100644
> --- a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi
> +++ b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi
> @@ -992,5 +992,93 @@ mdio0: mdio {
>   				#size-cells = <0>;
>   			};
>   		};
> +
> +		csi2: csi2@ff018000 {
> +			compatible = "amlogic,c3-mipi-csi2";
> +			reg = <0x0 0xff018000 0x0 0x100>,
> +			      <0x0 0xff019000 0x0 0x300>,
> +			      <0x0 0xff01a000 0x0 0x100>;
> +			reg-names = "aphy", "dphy", "host";
> +			power-domains = <&pwrc PWRC_C3_MIPI_ISP_WRAP_ID>;
> +			clocks = <&clkc_periphs CLKID_VAPB>,
> +				 <&clkc_periphs CLKID_CSI_PHY0>;
> +			clock-names = "vapb", "phy0";
> +			assigned-clocks = <&clkc_periphs CLKID_VAPB>,
> +					  <&clkc_periphs CLKID_CSI_PHY0>;
> +			assigned-clock-rates = <0>, <200000000>;
> +			status = "disabled";
> +
> +			ports {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				port@0 {
> +					reg = <0>;
> +				};
> +
> +				port@1 {
> +					reg = <1>;
> +					c3_mipi_csi_out: endpoint {
> +						remote-endpoint = <&c3_adap_in>;
> +					};
> +				};
> +			};
> +		};
> +
> +		adap: adap@ff010000 {
> +			compatible = "amlogic,c3-mipi-adapter";
> +			reg = <0x0 0xff010000 0x0 0x100>,
> +			      <0x0 0xff01b000 0x0 0x100>,
> +			      <0x0 0xff01d000 0x0 0x200>;
> +			reg-names = "top", "fd", "rd";
> +			power-domains = <&pwrc PWRC_C3_ISP_TOP_ID>;
> +			clocks = <&clkc_periphs CLKID_VAPB>,
> +				 <&clkc_periphs CLKID_ISP0>;
> +			clock-names = "vapb", "isp0";
> +			assigned-clocks = <&clkc_periphs CLKID_VAPB>,
> +					  <&clkc_periphs CLKID_ISP0>;
> +			assigned-clock-rates = <0>, <400000000>;
> +			status = "disabled";
> +
> +			ports {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +
> +				port@0 {
> +					reg = <0>;
> +					c3_adap_in: endpoint {
> +						remote-endpoint = <&c3_mipi_csi_out>;
> +					};
> +				};
> +
> +				port@1 {
> +					reg = <1>;
> +					c3_adap_out: endpoint {
> +						remote-endpoint = <&c3_isp_in>;
> +					};
> +				};
> +			};
> +		};
> +
> +		isp: isp@ff000000 {
> +			compatible = "amlogic,c3-isp";
> +			reg = <0x0 0xff000000 0x0 0xf000>;
> +			reg-names = "isp";
> +			power-domains = <&pwrc PWRC_C3_ISP_TOP_ID>;
> +			clocks = <&clkc_periphs CLKID_VAPB>,
> +				 <&clkc_periphs CLKID_ISP0>;
> +			clock-names = "vapb", "isp0";
> +			assigned-clocks = <&clkc_periphs CLKID_VAPB>,
> +					  <&clkc_periphs CLKID_ISP0>;
> +			assigned-clock-rates = <0>, <400000000>;
> +			interrupts = <GIC_SPI 145 IRQ_TYPE_EDGE_RISING>;
> +			status = "disabled";
> +
> +			port {
> +				c3_isp_in: endpoint {
> +					remote-endpoint = <&c3_adap_out>;
> +				};
> +			};
> +		};
>   	};
>   };
> 
> ---
> base-commit: 84b92a499e7eca54ba1df6f6c6e01766025943f1
> change-id: 20250731-b4-c3isp-16531391a1cb
> 
> Best regards,
Re: [PATCH RESEND] dts: arm64: amlogic: Add ISP related nodes for C3
Posted by Keke Li 4 months, 2 weeks ago
Hi Neil

Thanks for your reply.

On 2025/9/19 22:43, Neil Armstrong wrote:
> [You don't often get email from neil.armstrong@linaro.org. Learn why 
> this is important at https://aka.ms/LearnAboutSenderIdentification ]
>
> [ EXTERNAL EMAIL ]
>
> On 18/09/2025 10:35, Keke Li via B4 Relay wrote:
>> From: Keke Li <keke.li@amlogic.com>
>>
>> Add the IMX290 sensor node description to the device tree file,
>> which will be controlled via I2C bus with image data transmission
>> through MIPI CSI-2 interface.
>>
>> Add CSI-2, adapter and ISP nodes for C3 family.
>>
>> Signed-off-by: Keke Li <keke.li@amlogic.com>
>> ---
>> The C3 ISP driver and device-tree bindings have been
>> submitted. To facilitate using the C3 ISP driver, the
>> related device nodes need to be added.
>
> No need to resend until the bindings are merged.
>
> Neil
>
https://lore.kernel.org/all/20250427-c3isp-v9-1-e0fe09433d94@amlogic.com/

https://lore.kernel.org/all/20250427-c3isp-v9-3-e0fe09433d94@amlogic.com/

https://lore.kernel.org/all/20250427-c3isp-v9-5-e0fe09433d94@amlogic.com/

The device-tree bindings for C3 ISP have been merged into the Linux 
kernel v6.16.

Thanks.

>> ---
>>   .../boot/dts/amlogic/amlogic-c3-c308l-aw419.dts    | 84 
>> +++++++++++++++++++++
>>   arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi        | 88 
>> ++++++++++++++++++++++
>>   2 files changed, 172 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts 
>> b/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
>> index 45f8631f9feb..e026604c55e6 100644
>> --- a/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
>> +++ b/arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
>> @@ -17,6 +17,7 @@ / {
>>       aliases {
>>               serial0 = &uart_b;
>>               spi0 = &spifc;
>> +             i2c2 = &i2c2;
>>       };
>>
>>       memory@0 {
>> @@ -146,6 +147,36 @@ sdcard: regulator-sdcard {
>>               regulator-boot-on;
>>               regulator-always-on;
>>       };
>> +
>> +     camera_vdddo_1v8: regulator-camera-1v8 {
>> +             compatible = "regulator-fixed";
>> +             regulator-name = "CAMERA_VDDDO";
>> +             regulator-min-microvolt = <1800000>;
>> +             regulator-max-microvolt = <1800000>;
>> +             vin-supply = <&vcc_3v3>;
>> +             regulator-boot-on;
>> +             regulator-always-on;
>> +     };
>> +
>> +     camera_vdda_2v9: regulator-camera-2v9 {
>> +             compatible = "regulator-fixed";
>> +             regulator-name = "CAMERA_VDDA";
>> +             regulator-min-microvolt = <2900000>;
>> +             regulator-max-microvolt = <2900000>;
>> +             vin-supply = <&vcc_5v>;
>> +             regulator-boot-on;
>> +             regulator-always-on;
>> +     };
>> +
>> +     camera_vddd_1v2: regulator-camera-1v2 {
>> +             compatible = "regulator-fixed";
>> +             regulator-name = "CAMERA_VDDD";
>> +             regulator-min-microvolt = <1200000>;
>> +             regulator-max-microvolt = <1200000>;
>> +             vin-supply = <&vcc_3v3>;
>> +             regulator-boot-on;
>> +             regulator-always-on;
>> +     };
>>   };
>>
>>   &uart_b {
>> @@ -258,3 +289,56 @@ &sd {
>>       vmmc-supply = <&sdcard>;
>>       vqmmc-supply = <&sdcard>;
>>   };
>> +
>> +&i2c2 {
>> +     status = "okay";
>> +     pinctrl-names = "default";
>> +     pinctrl-0 = <&i2c2_pins1>;
>> +     clock-frequency = <100000>; /* default 100k */
>> +
>> +     imx290: sensor0@1a {
>> +             compatible = "sony,imx290";
>> +             reg = <0x1a>;
>> +             clocks = <&clkc_pll CLKID_MCLK0>;
>> +             clock-names = "xclk";
>> +             clock-frequency = <37125000>;
>> +             assigned-clocks = <&clkc_pll CLKID_MCLK_PLL>,
>> +                               <&clkc_pll CLKID_MCLK0>;
>> +             assigned-clock-rates = <74250000>, <37125000>;
>> +
>> +             vdddo-supply = <&camera_vdddo_1v8>;
>> +             vdda-supply = <&camera_vdda_2v9>;
>> +             vddd-supply = <&camera_vddd_1v2>;
>> +
>> +             reset-gpios = <&gpio GPIOE_4 GPIO_ACTIVE_LOW>;
>> +
>> +             port {
>> +                     imx290_out: endpoint {
>> +                             data-lanes = <1 2 3 4>;
>> +                             link-frequencies = /bits/ 64 <222750000 
>> 148500000>;
>> +                             remote-endpoint = <&c3_mipi_csi_in>;
>> +                     };
>> +             };
>> +     };
>> +};
>> +
>> +&csi2 {
>> +     status = "okay";
>> +
>> +     ports {
>> +             port@0 {
>> +                     c3_mipi_csi_in: endpoint {
>> +                             remote-endpoint = <&imx290_out>;
>> +                             data-lanes = <1 2 3 4>;
>> +                     };
>> +             };
>> +     };
>> +};
>> +
>> +&adap {
>> +     status = "okay";
>> +};
>> +
>> +&isp {
>> +     status = "okay";
>> +};
>> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi 
>> b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi
>> index cb9ea3ca6ee0..a62fd8534209 100644
>> --- a/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi
>> +++ b/arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi
>> @@ -992,5 +992,93 @@ mdio0: mdio {
>>                               #size-cells = <0>;
>>                       };
>>               };
>> +
>> +             csi2: csi2@ff018000 {
>> +                     compatible = "amlogic,c3-mipi-csi2";
>> +                     reg = <0x0 0xff018000 0x0 0x100>,
>> +                           <0x0 0xff019000 0x0 0x300>,
>> +                           <0x0 0xff01a000 0x0 0x100>;
>> +                     reg-names = "aphy", "dphy", "host";
>> +                     power-domains = <&pwrc PWRC_C3_MIPI_ISP_WRAP_ID>;
>> +                     clocks = <&clkc_periphs CLKID_VAPB>,
>> +                              <&clkc_periphs CLKID_CSI_PHY0>;
>> +                     clock-names = "vapb", "phy0";
>> +                     assigned-clocks = <&clkc_periphs CLKID_VAPB>,
>> +                                       <&clkc_periphs CLKID_CSI_PHY0>;
>> +                     assigned-clock-rates = <0>, <200000000>;
>> +                     status = "disabled";
>> +
>> +                     ports {
>> +                             #address-cells = <1>;
>> +                             #size-cells = <0>;
>> +
>> +                             port@0 {
>> +                                     reg = <0>;
>> +                             };
>> +
>> +                             port@1 {
>> +                                     reg = <1>;
>> +                                     c3_mipi_csi_out: endpoint {
>> +                                             remote-endpoint = 
>> <&c3_adap_in>;
>> +                                     };
>> +                             };
>> +                     };
>> +             };
>> +
>> +             adap: adap@ff010000 {
>> +                     compatible = "amlogic,c3-mipi-adapter";
>> +                     reg = <0x0 0xff010000 0x0 0x100>,
>> +                           <0x0 0xff01b000 0x0 0x100>,
>> +                           <0x0 0xff01d000 0x0 0x200>;
>> +                     reg-names = "top", "fd", "rd";
>> +                     power-domains = <&pwrc PWRC_C3_ISP_TOP_ID>;
>> +                     clocks = <&clkc_periphs CLKID_VAPB>,
>> +                              <&clkc_periphs CLKID_ISP0>;
>> +                     clock-names = "vapb", "isp0";
>> +                     assigned-clocks = <&clkc_periphs CLKID_VAPB>,
>> +                                       <&clkc_periphs CLKID_ISP0>;
>> +                     assigned-clock-rates = <0>, <400000000>;
>> +                     status = "disabled";
>> +
>> +                     ports {
>> +                             #address-cells = <1>;
>> +                             #size-cells = <0>;
>> +
>> +                             port@0 {
>> +                                     reg = <0>;
>> +                                     c3_adap_in: endpoint {
>> +                                             remote-endpoint = 
>> <&c3_mipi_csi_out>;
>> +                                     };
>> +                             };
>> +
>> +                             port@1 {
>> +                                     reg = <1>;
>> +                                     c3_adap_out: endpoint {
>> +                                             remote-endpoint = 
>> <&c3_isp_in>;
>> +                                     };
>> +                             };
>> +                     };
>> +             };
>> +
>> +             isp: isp@ff000000 {
>> +                     compatible = "amlogic,c3-isp";
>> +                     reg = <0x0 0xff000000 0x0 0xf000>;
>> +                     reg-names = "isp";
>> +                     power-domains = <&pwrc PWRC_C3_ISP_TOP_ID>;
>> +                     clocks = <&clkc_periphs CLKID_VAPB>,
>> +                              <&clkc_periphs CLKID_ISP0>;
>> +                     clock-names = "vapb", "isp0";
>> +                     assigned-clocks = <&clkc_periphs CLKID_VAPB>,
>> +                                       <&clkc_periphs CLKID_ISP0>;
>> +                     assigned-clock-rates = <0>, <400000000>;
>> +                     interrupts = <GIC_SPI 145 IRQ_TYPE_EDGE_RISING>;
>> +                     status = "disabled";
>> +
>> +                     port {
>> +                             c3_isp_in: endpoint {
>> +                                     remote-endpoint = <&c3_adap_out>;
>> +                             };
>> +                     };
>> +             };
>>       };
>>   };
>>
>> ---
>> base-commit: 84b92a499e7eca54ba1df6f6c6e01766025943f1
>> change-id: 20250731-b4-c3isp-16531391a1cb
>>
>> Best regards,
>