Re: [PATCH 11/12] riscv: dts: thead: Add Lichee Pi 4A IO expansions

From: Icenowy Zheng

Date: Fri Jul 10 2026 - 11:09:06 EST


在 2026-05-07四的 16:17 +0800,Icenowy Zheng写道:
> From: Emil Renner Berthing <emil.renner.berthing@xxxxxxxxxxxxx>
>
> Lichee Pi 4A has 3 I2C IO expansion chips onboard, connected to the
> I2C0/1/3 busses.
>
> Add device tree nodes for them.
>
> Signed-off-by: Emil Renner Berthing
> <emil.renner.berthing@xxxxxxxxxxxxx>
> [Icenowy: added commit description]
> Signed-off-by: Icenowy Zheng <zhengxingda@xxxxxxxxxxx>

I am going to send a newer revision of PATCH 9~11 in a few days,
because the I2C1 controller is already added to the mainline device
tree for Wi-Fi support, although the already-merged patches are a
little weird.

Thanks,
Icenowy

> ---
>  .../boot/dts/thead/th1520-lichee-pi-4a.dts    | 111
> ++++++++++++++++++
>  1 file changed, 111 insertions(+)
>
> diff --git a/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts
> b/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts
> index 4198dbf953f06..354f3893aa8cf 100644
> --- a/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts
> +++ b/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts
> @@ -16,6 +16,9 @@ aliases {
>   gpio3 = &gpio3;
>   gpio4 = &gpio4;
>   gpio5 = &aogpio;
> + i2c0 = &i2c0;
> + i2c1 = &i2c1;
> + i2c3 = &i2c3;
>   serial0 = &uart0;
>   serial1 = &uart1;
>   serial2 = &uart2;
> @@ -110,6 +113,76 @@ hdmi_out_con: endpoint {
>   };
>  };
>  
> +&i2c0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&i2c0_pins>;
> + clock-frequency = <100000>;
> + i2c-sda-hold-time-ns = <300>;
> + i2c-sda-falling-time-ns = <510>;
> + i2c-scl-falling-time-ns = <510>;
> + status = "okay";
> +
> + ioexp1: gpio@18 {
> + compatible = "nxp,pca9557";
> + reg = <0x18>;
> + gpio-controller;
> + #gpio-cells = <2>;
> + gpio-line-names = "cam0_dvdd12",
> +   "cam0_avdd28",
> +   "cam0_dovdd18";
> + };
> +};
> +
> +&i2c1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&i2c1_pins>;
> + clock-frequency = <100000>;
> + i2c-sda-hold-time-ns = <300>;
> + i2c-sda-falling-time-ns = <510>;
> + i2c-scl-falling-time-ns = <510>;
> + status = "okay";
> +
> + ioexp2: gpio@18 {
> + compatible = "nxp,pca9557";
> + reg = <0x18>;
> + gpio-controller;
> + #gpio-cells = <2>;
> + gpio-line-names = "",
> +   "cam0_reset",
> +   "cam1_reset",
> +   "cam2_reset",
> +   "wl_host_wake",
> +   "bt_resetn",
> +   "",
> +   "bt_host_wake";
> + };
> +};
> +
> +&i2c3 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&i2c3_pins>;
> + clock-frequency = <100000>;
> + i2c-sda-hold-time-ns = <300>;
> + i2c-sda-falling-time-ns = <510>;
> + i2c-scl-falling-time-ns = <510>;
> + status = "okay";
> +
> + ioexp3: gpio@18 {
> + compatible = "nxp,pca9557";
> + reg = <0x18>;
> + gpio-controller;
> + #gpio-cells = <2>;
> + gpio-line-names = "tp0_rst",
> +   "",
> +   "",
> +   "vcc5v_usb",
> +   "vdd28_tp0",
> +   "vdd33_lcd0",
> +   "vdd18_lcd0",
> +   "lcd0_reset";
> + };
> +};
> +
>  &padctrl0_apsys {
>   fan_pins: fan-0 {
>   pwm1-pins {
> @@ -123,6 +196,18 @@ pwm1-pins {
>   };
>   };
>  
> + i2c3_pins: i2c3-0 {
> + i2c-pins {
> + pins = "I2C3_SCL", "I2C3_SDA";
> + function = "i2c";
> + bias-disable; /* external pull-up */
> + drive-strength = <7>;
> + input-enable;
> + input-schmitt-enable;
> + slew-rate = <0>;
> + };
> + };
> +
>   uart0_pins: uart0-0 {
>   tx-pins {
>   pins = "UART0_TXD";
> @@ -146,6 +231,32 @@ rx-pins {
>   };
>  };
>  
> +&padctrl1_apsys {
> + i2c0_pins: i2c0-0 {
> + i2c-pins {
> + pins = "I2C0_SCL", "I2C0_SDA";
> + function = "i2c";
> + bias-disable; /* external pull-up */
> + drive-strength = <7>;
> + input-enable;
> + input-schmitt-enable;
> + slew-rate = <0>;
> + };
> + };
> +
> + i2c1_pins: i2c1-0 {
> + i2c-pins {
> + pins = "I2C1_SCL", "I2C1_SDA";
> + function = "i2c";
> + bias-disable; /* external pull-up */
> + drive-strength = <7>;
> + input-enable;
> + input-schmitt-enable;
> + slew-rate = <0>;
> + };
> + };
> +};
> +
>  &uart0 {
>   pinctrl-names = "default";
>   pinctrl-0 = <&uart0_pins>;