Thread (4 messages) 4 messages, 3 authors, 2025-10-21

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

From: Keke Li <keke.li@amlogic.com>
Date: 2025-09-22 08:44:01
Also in: linux-amlogic, linux-devicetree, lkml

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:
quoted
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/ (local)

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

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

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

Thanks.
quoted
---
  .../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,
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help