]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
dts: arm64: amlogic: Add ISP related nodes for C3
authorKeke Li <keke.li@amlogic.com>
Thu, 18 Sep 2025 08:35:09 +0000 (16:35 +0800)
committerNeil Armstrong <neil.armstrong@linaro.org>
Wed, 26 Nov 2025 08:35:42 +0000 (09:35 +0100)
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>
Link: https://patch.msgid.link/20250918-b4-c3isp-v1-1-5f48db6516c9@amlogic.com
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
arch/arm64/boot/dts/amlogic/amlogic-c3-c308l-aw419.dts
arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi

index 45f8631f9feb6e5f2bd7effecef91bd3c2cb68da..e026604c55e620a8b431eeb1250a607c7fa8a9e2 100644 (file)
@@ -17,6 +17,7 @@
        aliases {
                serial0 = &uart_b;
                spi0 = &spifc;
+               i2c2 = &i2c2;
        };
 
        memory@0 {
                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 {
        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";
+};
index 07aaaf71ea9aed8235a035730ff899438cb0ff6b..13b7ac03f9b201bc112e5a52acfa55dc6e0786d8 100644 (file)
                                #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>;
+                               };
+                       };
+               };
        };
 };