From 4add0132d79450833a3b21ae5bafde10f2d9947f Mon Sep 17 00:00:00 2001 From: Zitong Cai Date: Fri, 10 Jan 2025 16:26:34 +0800 Subject: [PATCH] arm64: dts: rockchip: add dtsi for nca9539 io expander on rk3588 vehicle EVBV23 Change-Id: Ib6d1b8ffc61cef383bce235dca2320170309ce8a Signed-off-by: Zitong Cai --- ...8-vehicle-evb-v23-nca9539-io-expander.dtsi | 48 ++++ .../dts/rockchip/rk3588-vehicle-evb-v23.dts | 249 +++++++++++++++--- 2 files changed, 267 insertions(+), 30 deletions(-) create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-vehicle-evb-v23-nca9539-io-expander.dtsi diff --git a/arch/arm64/boot/dts/rockchip/rk3588-vehicle-evb-v23-nca9539-io-expander.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-vehicle-evb-v23-nca9539-io-expander.dtsi new file mode 100644 index 000000000000..7ffca00f67ce --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3588-vehicle-evb-v23-nca9539-io-expander.dtsi @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2025 Rockchip Electronics Co., Ltd. + * + */ + +/ { + nca9539_vdd: nca9539-vdd3v3 { + compatible = "regulator-fixed"; + regulator-name = "nca9539_vdd"; + regulator-boot-on; + regulator-always-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + startup-delay-us = <20>; // NCA9539 POR + vin-supply = <&vcc_3v3_s0>; + }; + +}; + +&i2c5 { + clock-frequency = <400000>; + status = "okay"; + + i2c5_nca9539_gpio1: gpio@74 { + status = "okay"; + compatible = "novo,nca9539-gpio"; + reg = <0x74>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + interrupt-controller; + #interrupt-cells = <2>; + vdd-supply = <&nca9539_vdd>; + }; + + i2c5_nca9539_gpio2: gpio@75 { + status = "okay"; + compatible = "novo,nca9539-gpio"; + reg = <0x75>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + interrupt-controller; + #interrupt-cells = <2>; + vdd-supply = <&nca9539_vdd>; + }; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3588-vehicle-evb-v23.dts b/arch/arm64/boot/dts/rockchip/rk3588-vehicle-evb-v23.dts index 296203ee0c1b..2028c199416f 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588-vehicle-evb-v23.dts +++ b/arch/arm64/boot/dts/rockchip/rk3588-vehicle-evb-v23.dts @@ -7,7 +7,7 @@ /dts-v1/; #include "rk3588-vehicle-evb-v21.dtsi" -#include "rk3588-vehicle-evb-v22-nca9539-io-expander.dtsi" +#include "rk3588-vehicle-evb-v23-nca9539-io-expander.dtsi" #include "rk3588-vehicle-evb-maxim-max96712-dphy3-isx021.dtsi" #include "rk3588-vehicle-evb-maxim-max96756-dphy0.dtsi" #include "rk3588-vehicle-serdes-mfd-display-maxim.dtsi" @@ -60,6 +60,7 @@ }; }; #endif + lcd1_vcc12v_buck: lcd1_vcc12v-buck { compatible = "regulator-fixed"; regulator-name = "lcd1_vcc12v_buck"; @@ -68,7 +69,7 @@ regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 0 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 0 GPIO_ACTIVE_HIGH>; vin-supply = <&vcc12v_dcin>; regulator-state-mem { regulator-off-in-suspend; @@ -84,7 +85,7 @@ regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 1 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 1 GPIO_ACTIVE_HIGH>; vin-supply = <&vcc12v_dcin>; regulator-state-mem { regulator-off-in-suspend; @@ -100,7 +101,7 @@ regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 2 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 2 GPIO_ACTIVE_HIGH>; vin-supply = <&vcc12v_dcin>; regulator-state-mem { regulator-off-in-suspend; @@ -116,7 +117,7 @@ regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 3 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 3 GPIO_ACTIVE_HIGH>; vin-supply = <&vcc12v_dcin>; regulator-state-mem { regulator-off-in-suspend; @@ -132,7 +133,7 @@ regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 4 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 4 GPIO_ACTIVE_HIGH>; vin-supply = <&vcc12v_dcin>; regulator-state-mem { regulator-off-in-suspend; @@ -148,7 +149,7 @@ regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 5 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 5 GPIO_ACTIVE_HIGH>; vin-supply = <&vcc12v_dcin>; regulator-state-mem { regulator-off-in-suspend; @@ -156,14 +157,14 @@ }; }; - dcphy0_vcc12v_buck: dcphy0_vcc12v-buck { + dphy1_cam4_vcc12v_buck3: dphy1_vcc12v-buck3 { compatible = "regulator-fixed"; - regulator-name = "dcphy0_vcc12v_buck"; + regulator-name = "dphy1_cam4_vcc12v_buck3"; regulator-boot-on; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 6 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 6 GPIO_ACTIVE_HIGH>; startup-delay-us = <2000>; off-on-delay-us = <16000>; vin-supply = <&vcc12v_dcin>; @@ -173,14 +174,14 @@ }; }; - dcphy1_vcc12v_buck: dcphy1_vcc12v-buck { + dphy1_cam4_vcc12v_buck4: dphy1_vcc12v-buck4 { compatible = "regulator-fixed"; - regulator-name = "dcphy1_vcc12v_buck"; + regulator-name = "dphy1_cam4_vcc12v_buck4"; regulator-boot-on; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 7 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 7 GPIO_ACTIVE_HIGH>; startup-delay-us = <2000>; off-on-delay-us = <16000>; vin-supply = <&vcc12v_dcin>; @@ -190,14 +191,14 @@ }; }; - dphy0_vcc12v_buck: dphy0_vcc12v-buck { + dphy1_cam4_vcc12v_buck1: dphy1_vcc12v-buck1 { compatible = "regulator-fixed"; - regulator-name = "dphy0_vcc12v_buck"; + regulator-name = "dphy1_cam4_vcc12v_buck1"; regulator-boot-on; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 8 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 8 GPIO_ACTIVE_HIGH>; startup-delay-us = <2000>; off-on-delay-us = <16000>; vin-supply = <&vcc12v_dcin>; @@ -207,14 +208,14 @@ }; }; - dphy3_vcc12v_buck: dphy3_vcc12v-buck { + dphy1_cam4_vcc12v_buck2: dphy1_vcc12v-buck2 { compatible = "regulator-fixed"; - regulator-name = "dphy3_vcc12v_buck"; + regulator-name = "dphy1_cam4_vcc12v_buck2"; regulator-boot-on; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 9 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 9 GPIO_ACTIVE_HIGH>; startup-delay-us = <2000>; off-on-delay-us = <16000>; vin-supply = <&vcc12v_dcin>; @@ -226,16 +227,16 @@ vcc5v0_host_usb20: vcc5v0-host-usb20 { compatible = "regulator-fixed"; - regulator-name = "vcc5v0_otg_usb20"; + regulator-name = "vcc5v0_host_usb20"; regulator-boot-on; regulator-always-on; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; //enable-active-high; - gpio = <&nca9539_gpio 10 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 10 GPIO_ACTIVE_HIGH>; startup-delay-us = <2000>; off-on-delay-us = <16000>; - vin-supply = <&vcc5v0_usb>; + vin-supply = <&vcc5v0_buck>; }; vcc5v0_host_usb30: vcc5v0-host-usb30 { @@ -246,21 +247,209 @@ regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; enable-active-high; - gpio = <&nca9539_gpio 11 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 11 GPIO_ACTIVE_HIGH>; startup-delay-us = <2000>; off-on-delay-us = <16000>; - vin-supply = <&vcc5v0_usb>; + vin-supply = <&vcc5v0_buck>; }; - adsp_vcc12v_buck: adsp_vcc12v-buck { + dphy0_cam3_vcc12v_buck1: dphy0_vcc12v-buck1 { compatible = "regulator-fixed"; - regulator-name = "adsp_vcc12v_buck"; + regulator-name = "dphy0_cam3_vcc12v_buck1"; regulator-boot-on; - regulator-always-on; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; enable-active-high; - gpio = <&nca9539_gpio 12 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio1 12 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dphy0_cam3_vcc12v_buck2: dphy0_vcc12v-buck2 { + compatible = "regulator-fixed"; + regulator-name = "dphy0_cam3_vcc12v_buck2"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio1 13 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dphy0_cam3_vcc12v_buck3: dphy0_vcc12v-buck3 { + compatible = "regulator-fixed"; + regulator-name = "dphy0_cam3_vcc12v_buck3"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio1 14 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dphy0_cam3_vcc12v_buck4: dphy0_vcc12v-buck4 { + compatible = "regulator-fixed"; + regulator-name = "dphy0_cam3_vcc12v_buck4"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio1 15 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dcphy0_cam1_vcc12v_buck1: dcphy0_vcc12v-buck1 { + compatible = "regulator-fixed"; + regulator-name = "dcphy0_cam1_vcc12v_buck1"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio2 0 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dcphy0_cam1_vcc12v_buck2: dcphy0_vcc12v-buck2 { + compatible = "regulator-fixed"; + regulator-name = "dcphy0_cam1_vcc12v_buck2"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio2 1 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dcphy0_cam1_vcc12v_buck3: dcphy0_vcc12v-buck3 { + compatible = "regulator-fixed"; + regulator-name = "dcphy0_cam1_vcc12v_buck3"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio2 2 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dcphy0_cam1_vcc12v_buck4: dcphy0_vcc12v-buck4 { + compatible = "regulator-fixed"; + regulator-name = "dcphy0_cam1_vcc12v_buck4"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio2 3 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dcphy1_cam2_vcc12v_buck1: dcphy1_vcc12v-buck1 { + compatible = "regulator-fixed"; + regulator-name = "dcphy1_cam2_vcc12v_buck1"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio2 4 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dcphy1_cam2_vcc12v_buck2: dcphy1_vcc12v-buck2 { + compatible = "regulator-fixed"; + regulator-name = "dcphy1_cam2_vcc12v_buck2"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio2 5 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dcphy1_cam2_vcc12v_buck3: dcphy1_vcc12v-buck3 { + compatible = "regulator-fixed"; + regulator-name = "dcphy1_cam2_vcc12v_buck3"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio2 6 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; + vin-supply = <&vcc12v_dcin>; + regulator-state-mem { + regulator-off-in-suspend; + regulator-suspend-microvolt = <12000000>; + }; + }; + + dcphy1_cam2_vcc12v_buck4: dcphy1_vcc12v-buck4 { + compatible = "regulator-fixed"; + regulator-name = "dcphy1_cam2_vcc12v_buck4"; + regulator-boot-on; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + enable-active-high; + gpio = <&i2c5_nca9539_gpio2 7 GPIO_ACTIVE_HIGH>; + startup-delay-us = <2000>; + off-on-delay-us = <16000>; vin-supply = <&vcc12v_dcin>; regulator-state-mem { regulator-off-in-suspend; @@ -276,7 +465,7 @@ regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; enable-active-high; - gpio = <&nca9539_gpio 13 GPIO_ACTIVE_HIGH>; + gpio = <&i2c5_nca9539_gpio2 8 GPIO_ACTIVE_HIGH>; vin-supply = <&vcc5v0_buck>; regulator-state-mem { regulator-on-in-suspend; @@ -369,7 +558,7 @@ }; &max96712_dphy3_poc_regulator { - vin-supply = <&dphy3_vcc12v_buck>; + vin-supply = <&dphy1_cam4_vcc12v_buck1>; gpio = <&gpio4 RK_PD5 GPIO_ACTIVE_HIGH>; };