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

Icenowy Zheng uwu at icenowy.me
Fri Jul 10 07:56:08 PDT 2026


在 2026-05-07四的 16:17 +0800,Icenowy Zheng写道:
> From: Emil Renner Berthing <emil.renner.berthing at canonical.com>
> 
> 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 at canonical.com>
> [Icenowy: added commit description]
> Signed-off-by: Icenowy Zheng <zhengxingda at iscas.ac.cn>

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 at 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 at 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 at 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>;



More information about the linux-riscv mailing list