diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts index 60f98a3e19d8f4d856fbee8d19db49ada0933944..b71e062a4d4ad06c3cd59a69617f176df6a6180a 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts @@ -34,6 +34,33 @@ reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; }; + cam_v_ana: camera-reg@0 { + compatible = "regulator-fixed"; + regulator-name = "cam_v_ana"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + cam_v_dig: camera-reg@1 { + compatible = "regulator-fixed"; + regulator-name = "cam_v_dig"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + cam_v_ddl: camera-reg@2 { + compatible = "regulator-fixed"; + regulator-name = "cam_v_ddl"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + vcc12v_dcin: dc-12v { compatible = "regulator-fixed"; regulator-name = "vcc12v_dcin"; @@ -437,9 +464,38 @@ }; &i2c4 { - i2c-scl-rising-time-ns = <600>; - i2c-scl-falling-time-ns = <20>; status = "okay"; + clock-frequency = <400000>; + + imx219: sensor@10 { + status = "okay"; + compatible = "sony,imx219"; + reg = <0x10>; + pinctrl-names = "default"; + pinctrl-0 = <&cam_en>; + clocks = <&imx219_clk>; + clock-names = "xclk"; + xclr-gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; + VANA-supply = <&cam_v_ana>; + VDIG-supply = <&cam_v_dig>; + VDDL-supply = <&cam_v_ddl>; + + imx219_clk: camera-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; + + port { + csi1_out_1: endpoint { + remote-endpoint = <&csi1_ep1>; + clock-lanes = <0>; + data-lanes = <1 2>; + clock-noncontinuous; + link-frequencies = /bits/ 64 <456000000>; + }; + }; + }; }; &i2s0 { @@ -553,6 +609,13 @@ }; }; + cam_pins { + cam_en: i2c4-enable-pins { + rockchip,pins = + <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + wifi { wifi_enable_h: wifi-enable-h { rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; @@ -562,6 +625,17 @@ rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; }; }; + + cam_pins { + enable: enable-pins { + rockchip,pins = + <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; + }; + camled: cam_led_pins { + rockchip,pins = + <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; }; &pwm2 { @@ -733,3 +807,28 @@ &vopl_mmu { status = "okay"; }; + +&i2c6 { + status = "okay"; +}; + +&i2c4 { +}; + +&mipi_dphy_rx0 { + status = "okay"; +}; + +&isp0 { + status = "okay"; + + ports { + port@0 { + csi1_ep1: endpoint@1 { + reg = <1>; + remote-endpoint = <&csi1_out_1>; + data-lanes = <1 2>; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi index ada724b12f014400aecf9d776e488da7a1205ce0..98ace4459dd46190ef87f9d9cb514f75dc5f2963 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi @@ -1723,6 +1723,33 @@ status = "disabled"; }; + isp0: isp0@ff910000 { + compatible = "rockchip,rk3399-cif-isp"; + reg = <0x0 0xff910000 0x0 0x4000>; + interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>; + clocks = <&cru SCLK_ISP0>, + <&cru ACLK_ISP0>, <&cru ACLK_ISP0_WRAPPER>, + <&cru HCLK_ISP0>, <&cru HCLK_ISP0_WRAPPER>; + clock-names = "clk_isp", + "aclk_isp", "aclk_isp_wrap", + "hclk_isp", "hclk_isp_wrap"; + power-domains = <&power RK3399_PD_ISP0>; + iommus = <&isp0_mmu>; + phys = <&mipi_dphy_rx0>; + phy-names = "dphy"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + }; + }; + }; + isp0_mmu: iommu@ff914000 { compatible = "rockchip,iommu"; reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>;