[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <36345378-6fd5-4a48-b5ea-0fcb6abda7ba@linaro.org>
Date: Fri, 19 Sep 2025 16:43:26 +0200
From: Neil Armstrong <neil.armstrong@...aro.org>
To: keke.li@...ogic.com, Kevin Hilman <khilman@...libre.com>,
Jerome Brunet <jbrunet@...libre.com>,
Martin Blumenstingl <martin.blumenstingl@...glemail.com>,
Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>
Cc: linux-arm-kernel@...ts.infradead.org, linux-amlogic@...ts.infradead.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH RESEND] dts: arm64: amlogic: Add ISP related nodes for C3
On 18/09/2025 10:35, Keke Li via B4 Relay wrote:
> From: Keke Li <keke.li@...ogic.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@...ogic.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@...18000 {
> + 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@...10000 {
> + 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@...00000 {
> + 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,
Powered by blists - more mailing lists