* [PATCH 0/2] arm: sunplus: add SP7021 LTPP3G2 board support
@ 2026-09-02 10:45 Andrew Gaylard
2026-09-02 10:45 ` [PATCH 1/2] arm: dts: sunplus: add peripheral device nodes to sp7021.dtsi Andrew Gaylard
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Andrew Gaylard @ 2026-09-02 10:45 UTC (permalink / raw)
To: qinjian, linux-arm-kernel
Cc: robh, krzk+dt, conor+dt, linux, devicetree, Andrew Gaylard
This series adds device tree support for the Tibbo LTPP3G2 board, which
is based on the Sunplus SP7021 SoC (quad-core ARM Cortex-A7).
Patch 1 adds peripheral device nodes to the SP7021 SoC DTSI for
peripherals whose drivers are already upstream: PWM, watchdog, eMMC,
and the L2SW Ethernet switch.
Patch 2 adds a DTS for the LTPP3G2 board itself, enabling those
peripherals and configuring the board-specific pinmux and Ethernet
topology. It also updates the defconfig to enable the relevant drivers.
Tested on the Tibbo LTPP3G2 board with linux-next 20260901.
Andrew Gaylard (2):
arm: dts: sunplus: add peripheral device nodes to sp7021.dtsi
arm: sunplus: add Tibbo LTPP3G2 board support; update defconfig
arch/arm/boot/dts/sunplus/Makefile | 5 +-
.../dts/sunplus/sunplus-sp7021-ltpp3g2.dts | 301 ++++++++++++++++++
arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi | 48 +++
arch/arm/configs/sp7021_defconfig | 30 ++
4 files changed, 381 insertions(+), 3 deletions(-)
create mode 100644 arch/arm/boot/dts/sunplus/sunplus-sp7021-ltpp3g2.dts
--
2.53.0
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH 1/2] arm: dts: sunplus: add peripheral device nodes to sp7021.dtsi 2026-09-02 10:45 [PATCH 0/2] arm: sunplus: add SP7021 LTPP3G2 board support Andrew Gaylard @ 2026-09-02 10:45 ` Andrew Gaylard 2026-09-02 10:58 ` sashiko-bot 2026-09-02 10:45 ` [PATCH 2/2] arm: sunplus: add Tibbo LTPP3G2 board support; update defconfig Andrew Gaylard 2026-09-02 15:40 ` [PATCH 0/2] arm: sunplus: add SP7021 LTPP3G2 board support -- withdrawn Andrew Gaylard 2 siblings, 1 reply; 6+ messages in thread From: Andrew Gaylard @ 2026-09-02 10:45 UTC (permalink / raw) To: qinjian, linux-arm-kernel Cc: robh, krzk+dt, conor+dt, linux, devicetree, Andrew Gaylard Add device tree nodes for SP7021 peripherals whose drivers are already upstream: - PWM controller - Watchdog/STC timer - eMMC controller (mmc0) - Ethernet switch (L2SW) Signed-off-by: Andrew Gaylard <ag@ffroot.co.za> --- arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi b/arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi index ae9bbe0320b8..9bb349a5542a 100644 --- a/arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi +++ b/arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi @@ -291,6 +291,54 @@ uart4: serial@8780 { pinctrl-0 = <&uart4_pins>; status = "disabled"; }; + + pwm: pwm@7a00 { + #pwm-cells = <2>; + compatible = "sunplus,sp7021-pwm"; + reg = <0x7a00 0x80>; + clocks = <&clkc CLK_DISP_PWM>; + resets = <&rstc RST_DISP_PWM>; + status = "disabled"; + }; + + wdt: watchdog@630 { + compatible = "sunplus,sp7021-wdt"; + reg = <0x630 0x08>, <0x274 0x04>; + clocks = <&clkc CLK_STC0>; + resets = <&rstc RST_STC0>; + status = "disabled"; + }; + + mmc0: mmc@3b00 { + compatible = "sunplus,sp7021-mmc"; + reg = <0x3b00 0x180>; + interrupts = <20 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clkc CLK_CARD_CTL0>; + resets = <&rstc RST_CARD_CTL0>; + pinctrl-names = "default"; + pinctrl-0 = <&emmc_pins>; + bus-width = <8>; + max-frequency = <52000000>; + non-removable; + disable-wp; + cap-mmc-highspeed; + mmc-ddr-3_3v; + no-sdio; + no-sd; + status = "disabled"; + }; + + l2sw: ethernet@108000 { + compatible = "sunplus,sp7021-emac"; + reg = <0x108000 0x400>; + interrupts = <66 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clkc CLK_L2SW>, <&clkc PLL_E_25>, + <&clkc PLL_E_2P5>, <&clkc PLL_E_112P5>; + clock-names = "l2sw", "plle_25", "plle_2p5", "plle_112p5"; + resets = <&rstc RST_L2SW>; + status = "disabled"; + }; + }; leds { -- 2.53.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] arm: dts: sunplus: add peripheral device nodes to sp7021.dtsi 2026-09-02 10:45 ` [PATCH 1/2] arm: dts: sunplus: add peripheral device nodes to sp7021.dtsi Andrew Gaylard @ 2026-09-02 10:58 ` sashiko-bot 0 siblings, 0 replies; 6+ messages in thread From: sashiko-bot @ 2026-09-02 10:58 UTC (permalink / raw) To: Andrew Gaylard; +Cc: robh, conor+dt, devicetree Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider: - [Medium] The Ethernet switch node ('l2sw') specifies multiple clocks and a 'clock-names' property, which violate the sunplus,sp7021-emac binding schema. - [Medium] The PWM node defines a 'resets' property which is undocumented and forbidden by the sunplus,sp7021-pwm.yaml binding schema. - [Medium] The Ethernet controller node ('l2sw') unconditionally omits required properties in the .dtsi. -- commit 7acbbeff4684bdd9972c059005ca817139e446fa Author: Andrew Gaylard <ag@ffroot.co.za> arm: dts: sunplus: add peripheral device nodes to sp7021.dtsi This patch adds device tree nodes for the PWM controller, watchdog, eMMC controller, and Ethernet switch to the SP7021 device tree include file. > diff --git a/arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi b/arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi > index ae9bbe0320b8d..9bb349a5542a4 100644 > --- a/arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi > +++ b/arch/arm/boot/dts/sunplus/sunplus-sp7021.dtsi > @@ -291,6 +291,54 @@ uart4: serial@8780 { [ ... ] > + pwm: pwm@7a00 { > + #pwm-cells = <2>; > + compatible = "sunplus,sp7021-pwm"; > + reg = <0x7a00 0x80>; > + clocks = <&clkc CLK_DISP_PWM>; > + resets = <&rstc RST_DISP_PWM>; [Severity: Medium] Does the sunplus,sp7021-pwm.yaml binding schema support the resets property? The schema appears to lack a definition for resets and specifies unevaluatedProperties: false, which causes a schema validation error when compiling the device tree with dtbs_check. > + status = "disabled"; > + }; [ ... ] > + l2sw: ethernet@108000 { > + compatible = "sunplus,sp7021-emac"; > + reg = <0x108000 0x400>; [Severity: Medium] Will this node cause dtbs_check validation to fail because it omits several required properties? The sunplus,sp7021-emac.yaml schema lists pinctrl-0, pinctrl-names, ethernet-ports, and mdio as required. Including this include file in a board device tree without overriding the node to supply these properties triggers validation errors, as setting status = "disabled" does not bypass schema requirements. > + interrupts = <66 IRQ_TYPE_LEVEL_HIGH>; > + clocks = <&clkc CLK_L2SW>, <&clkc PLL_E_25>, > + <&clkc PLL_E_2P5>, <&clkc PLL_E_112P5>; > + clock-names = "l2sw", "plle_25", "plle_2p5", "plle_112p5"; [Severity: Medium] Do these properties conflict with the constraints defined in the EMAC YAML schema? The sunplus,sp7021-emac.yaml schema explicitly restricts clocks to a maximum of one item and enforces additionalProperties: false, making the clock-names property invalid. -- Sashiko AI review · https://sashiko.dev/#/patchset/20260902104545.67794-1-ag@ffroot.co.za?part=1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] arm: sunplus: add Tibbo LTPP3G2 board support; update defconfig 2026-09-02 10:45 [PATCH 0/2] arm: sunplus: add SP7021 LTPP3G2 board support Andrew Gaylard 2026-09-02 10:45 ` [PATCH 1/2] arm: dts: sunplus: add peripheral device nodes to sp7021.dtsi Andrew Gaylard @ 2026-09-02 10:45 ` Andrew Gaylard 2026-09-02 11:00 ` sashiko-bot 2026-09-02 15:40 ` [PATCH 0/2] arm: sunplus: add SP7021 LTPP3G2 board support -- withdrawn Andrew Gaylard 2 siblings, 1 reply; 6+ messages in thread From: Andrew Gaylard @ 2026-09-02 10:45 UTC (permalink / raw) To: qinjian, linux-arm-kernel Cc: robh, krzk+dt, conor+dt, linux, devicetree, Andrew Gaylard Add a device tree source for the Tibbo LTPP3G2 board based on the SP7021 SoC. The board features a quad-core ARM Cortex-A7 processor, 4GB eMMC, 10/100 Ethernet via the L2SW switch, and a PWM-controlled LED. Enable CONFIG_ARM_ERRATA_814220 to work around a known Cortex-A7 r0p5 erratum. Enable CGROUP and SECURITY so that the shipped rootfs will boot. Signed-off-by: Andrew Gaylard <ag@ffroot.co.za> --- arch/arm/boot/dts/sunplus/Makefile | 5 +- .../dts/sunplus/sunplus-sp7021-ltpp3g2.dts | 301 ++++++++++++++++++ arch/arm/configs/sp7021_defconfig | 30 ++ 3 files changed, 333 insertions(+), 3 deletions(-) create mode 100644 arch/arm/boot/dts/sunplus/sunplus-sp7021-ltpp3g2.dts diff --git a/arch/arm/boot/dts/sunplus/Makefile b/arch/arm/boot/dts/sunplus/Makefile index 868f2ea0c127..25ba2e530c35 100644 --- a/arch/arm/boot/dts/sunplus/Makefile +++ b/arch/arm/boot/dts/sunplus/Makefile @@ -1,5 +1,4 @@ # SPDX-License-Identifier: GPL-2.0 dtb-$(CONFIG_SOC_SP7021) += \ - sunplus-sp7021-demo-v3.dtb -dtb-$(CONFIG_SOC_SP7021) += \ - sunplus-sp7021-demo-v3.dtb + sunplus-sp7021-demo-v3.dtb \ + sunplus-sp7021-ltpp3g2.dtb diff --git a/arch/arm/boot/dts/sunplus/sunplus-sp7021-ltpp3g2.dts b/arch/arm/boot/dts/sunplus/sunplus-sp7021-ltpp3g2.dts new file mode 100644 index 000000000000..c42e6f779ce3 --- /dev/null +++ b/arch/arm/boot/dts/sunplus/sunplus-sp7021-ltpp3g2.dts @@ -0,0 +1,301 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device Tree Source for Tibbo LTPP board G2 + * + * Copyright (C) 2021 Sunplus Technology Co. + */ + +/dts-v1/; + +#include "sunplus-sp7021-achip.dtsi" + +/ { + compatible = "tibbo,ltpp3g2", "sunplus,sp7021"; + model = "Tibbo LTPP3G2"; + + aliases { + serial0 = &uart0; + }; + + chosen { + bootargs = "console=ttySUP0,115200 earlycon root=/dev/mmcblk0p8 rootwait"; + stdout-path = "serial0:115200n8"; + }; + + memory@0 { + device_type = "memory"; + reg = <0x00000000 0x20000000>; /* 512MB */ + }; + + led { + compatible = "gpio-leds"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&gpio_leds_pins>; + pinctrl-1 = <&leds_s0_slp>; + system-led { + label = "system-led"; + gpios = <&pctl 6 GPIO_ACTIVE_HIGH>; + default-state = "off"; + linux,default-trigger = "heartbeat"; + }; + led@2 { + label = "SG"; + gpios = <&pctl 7 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + default-state = "off"; + }; + }; + + i2c_tps: i2c-tps { /* eeprom */ + compatible = "i2c-gpio"; + i2c-gpio,scl-open-drain; + i2c-gpio,sda-open-drain; + i2c-gpio,delay-us = <1>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&pins_i2ctps>; + gpios = <&pctl 2 GPIO_ACTIVE_HIGH /* SDA */ + &pctl 1 GPIO_ACTIVE_HIGH /* SCL */ + >; + eeprom: eeprom@50 { + compatible = "at,24c16"; + reg = <0x50>; + pagesize = <16>; + }; + }; +}; + +&pwm { + pinctrl-names = "default"; + pinctrl-0 = <&pins_pwm>; + status = "okay"; +}; + +&spi_controller0 { + spi-cpha; + spi-cpol; + pinctrl-names = "default"; + pinctrl-0 = <&pins_spi0>; + status = "disabled"; +}; + +&spi_controller1 { + spi-cpha; + spi-cpol; + status = "disabled"; +}; + +&spi_controller2 { + spi-cpha; + spi-cpol; + status = "disabled"; +}; + +&spi_controller3 { + spi-slave; + status = "disabled"; +}; + +&uart1 { + pinctrl-names = "default"; + pinctrl-0 = <&pins_uart1>; + status = "disabled"; +}; + +&uart2 { + pinctrl-names = "default"; + pinctrl-0 = <&pins_uart2>; + status = "disabled"; +}; + +&uart3 { + status = "disabled"; +}; + +&uart4 { + pinctrl-names = "default"; + pinctrl-0 = <&pins_btuart &pins_bt_reset>; + status = "disabled"; +}; + +&l2sw { + pinctrl-names = "default"; + pinctrl-0 = <&l2sw_ltpp3g2_pins>; + status = "okay"; + + ethernet-ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + phy-handle = <ð_phy0>; + phy-mode = "rmii"; + nvmem-cells = <&mac_addr0>; + nvmem-cell-names = "mac-address"; + }; + + port@1 { + reg = <1>; + phy-handle = <ð_phy1>; + phy-mode = "rmii"; + nvmem-cells = <&mac_addr1>; + nvmem-cell-names = "mac-address"; + }; + }; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + + eth_phy0: ethernet-phy@0 { + reg = <0>; + }; + eth_phy1: ethernet-phy@1 { + reg = <1>; + }; + }; +}; + + +&mmc0 { + status = "okay"; +}; + +&rtc { + charging-mode = <0xE>; + /* + * 0xE Disable + * 0x1 0.86mA (2K Ohm with diode) + * 0x5 1.81mA (250 Ohm with diode) + * 0x9 2.07mA (50 Ohm with diode) + * 0xD 16.0mA (0 Ohm with diode) + * 0x3 1.36mA (2K Ohm without diode) + * 0x7 3.99mA (250 Ohm without diode) + * 0xB 4.41mA (50 Ohm without diode) + * 0xF 16.0mA (0 Ohm without diode) + */ +}; + +&pctl { + pinctrl-names = "default"; + pinctrl-0 = <&pins_gpio_nobinded>; + + pins_pwm: pinmux_pwm-pins { + sunplus,pins = < + SPPCTL_IOPAD(48, SPPCTL_PCTL_G_PMUX, MUXF_PWM0, 0) + >; + }; + + pins_gpio_nobinded: pinmux_gpio_nobinded-pins { + sunplus,pins = < + SPPCTL_IOPAD(30, SPPCTL_PCTL_G_GPIO, 0, 0) /* was L2SW_LED_FLASH1 */ + SPPCTL_IOPAD(39, SPPCTL_PCTL_G_GPIO, 0, 0) /* was L2SW_LED_ON1 */ + >; + }; + + pins_i2ctps: pinmux_i2ctps-pins { + sunplus,pins = < + SPPCTL_IOPAD(1, SPPCTL_PCTL_G_GPIO, 0, + SPPCTL_PCTL_L_OUT | SPPCTL_PCTL_L_ONV | SPPCTL_PCTL_L_ODR) + SPPCTL_IOPAD(2, SPPCTL_PCTL_G_GPIO, 0, + SPPCTL_PCTL_L_OUT | SPPCTL_PCTL_L_ONV | SPPCTL_PCTL_L_ODR) + >; + }; + + l2sw_ltpp3g2_pins: pinmux_l2sw_ltpp3g2-pins { + sunplus,pins = < + SPPCTL_IOPAD(63, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_CLK_OUT, 0) + SPPCTL_IOPAD(71, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_MAC_SMI_MDC, 0) + SPPCTL_IOPAD(64, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_MAC_SMI_MDIO, 0) + SPPCTL_IOPAD(62, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P0_MAC_RMII_TXEN, 0) + SPPCTL_IOPAD(61, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P0_MAC_RMII_TXD0, 0) + SPPCTL_IOPAD(60, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P0_MAC_RMII_TXD1, 0) + SPPCTL_IOPAD(59, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P0_MAC_RMII_CRSDV, 0) + SPPCTL_IOPAD(58, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P0_MAC_RMII_RXD0, 0) + SPPCTL_IOPAD(57, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P0_MAC_RMII_RXD1, 0) + SPPCTL_IOPAD(55, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P1_MAC_RMII_TXEN, 0) + SPPCTL_IOPAD(54, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P1_MAC_RMII_TXD0, 0) + SPPCTL_IOPAD(53, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P1_MAC_RMII_TXD1, 0) + SPPCTL_IOPAD(52, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P1_MAC_RMII_CRSDV, 0) + SPPCTL_IOPAD(51, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P1_MAC_RMII_RXD0, 0) + SPPCTL_IOPAD(50, SPPCTL_PCTL_G_PMUX, MUXF_L2SW_P1_MAC_RMII_RXD1, 0) + >; + sunplus,zerofunc = < + MUXF_L2SW_LED_FLASH0 + MUXF_L2SW_LED_ON0 + MUXF_L2SW_LED_FLASH1 + MUXF_L2SW_LED_ON1 + MUXF_DAISY_MODE + MUXF_L2SW_P0_MAC_RMII_RXER + MUXF_L2SW_P1_MAC_RMII_RXER + GROP_SPI_FLASH + >; + }; + + gpio_leds_pins: pinmux_gpio_leds-pins { + sunplus,pins = < + SPPCTL_IOPAD(6, SPPCTL_PCTL_G_GPIO, 0, SPPCTL_PCTL_L_OUT) + SPPCTL_IOPAD(7, SPPCTL_PCTL_G_GPIO, 0, SPPCTL_PCTL_L_OUT) + >; + }; + + leds_s0_slp: pinmux_user_leds_s0_slp-pins { + sunplus,pins = < + SPPCTL_IOPAD(6, SPPCTL_PCTL_G_GPIO, 0, 0) + SPPCTL_IOPAD(7, SPPCTL_PCTL_G_GPIO, 0, 0) + >; + }; + + pins_uart1: pinmux_uart1-pins { + sunplus,pins = < + SPPCTL_IOPAD(8, SPPCTL_PCTL_G_PMUX, MUXF_UA1_TX, 0) + SPPCTL_IOPAD(9, SPPCTL_PCTL_G_PMUX, MUXF_UA1_RX, 0) + SPPCTL_IOPAD(10, SPPCTL_PCTL_G_PMUX, MUXF_UA1_RTS, 0) + SPPCTL_IOPAD(11, SPPCTL_PCTL_G_PMUX, MUXF_UA1_CTS, 0) + >; + }; + + pins_uart2: pinmux_uart2-pins { + sunplus,pins = < + SPPCTL_IOPAD(12, SPPCTL_PCTL_G_PMUX, MUXF_UA2_TX, 0) + SPPCTL_IOPAD(13, SPPCTL_PCTL_G_PMUX, MUXF_UA2_RX, 0) + SPPCTL_IOPAD(14, SPPCTL_PCTL_G_PMUX, MUXF_UA2_RTS, 0) + SPPCTL_IOPAD(15, SPPCTL_PCTL_G_PMUX, MUXF_UA2_CTS, 0) + >; + }; + + pins_uart3: pinmux_uart3-pins { + sunplus,pins = < + SPPCTL_IOPAD(16, SPPCTL_PCTL_G_PMUX, MUXF_UA3_TX, 0) + SPPCTL_IOPAD(17, SPPCTL_PCTL_G_PMUX, MUXF_UA3_RX, 0) + SPPCTL_IOPAD(18, SPPCTL_PCTL_G_PMUX, MUXF_UA3_RTS, 0) + SPPCTL_IOPAD(19, SPPCTL_PCTL_G_PMUX, MUXF_UA3_CTS, 0) + >; + }; + + /* AP6256 Bluetooth */ + pins_btuart: pinmux_btuart-pins { + sunplus,pins = < + SPPCTL_IOPAD(40, SPPCTL_PCTL_G_PMUX, MUXF_UA4_RX, 0) + SPPCTL_IOPAD(41, SPPCTL_PCTL_G_PMUX, MUXF_UA4_TX, 0) + SPPCTL_IOPAD(56, SPPCTL_PCTL_G_PMUX, MUXF_UA4_RTS, SPPCTL_PCTL_L_ONV) + SPPCTL_IOPAD(49, SPPCTL_PCTL_G_PMUX, MUXF_UA4_CTS, 0) + >; + }; + + pins_bt_reset: pinmux_bt_reset-pins { + sunplus,pins = < SPPCTL_IOPAD(82, SPPCTL_PCTL_G_GPIO, 0, 0) >; + }; + + pins_spi0: pinmux_spi0-pins { + sunplus,pins = < + /*SPPCTL_IOPAD(26, SPPCTL_PCTL_G_PMUX, MUXF_SPI0S_EN, 0) */ + /*SPPCTL_IOPAD(23, SPPCTL_PCTL_G_PMUX, MUXF_SPI0S_DO, 0) */ + /*SPPCTL_IOPAD(25, SPPCTL_PCTL_G_PMUX, MUXF_SPI0S_DI, 0) */ + /*SPPCTL_IOPAD(27, SPPCTL_PCTL_G_PMUX, MUXF_SPI0S_CLK, 0) */ + >; + }; + +}; diff --git a/arch/arm/configs/sp7021_defconfig b/arch/arm/configs/sp7021_defconfig index ec723401b440..e0c0692f455d 100644 --- a/arch/arm/configs/sp7021_defconfig +++ b/arch/arm/configs/sp7021_defconfig @@ -1,4 +1,7 @@ CONFIG_SYSVIPC=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_SCHED=y +CONFIG_MEMCG=y CONFIG_NO_HZ_IDLE=y CONFIG_HIGH_RES_TIMERS=y CONFIG_PREEMPT=y @@ -16,6 +19,7 @@ CONFIG_PERF_EVENTS=y CONFIG_ARCH_SUNPLUS=y # CONFIG_VDSO is not set CONFIG_SMP=y +CONFIG_ARM_ERRATA_814220=y CONFIG_THUMB2_KERNEL=y CONFIG_ARCH_FORCE_MAX_ORDER=11 CONFIG_VFP=y @@ -24,11 +28,16 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_UNIX=y +CONFIG_INET=y CONFIG_UEVENT_HELPER=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_BLK_DEV_LOOP=y +CONFIG_NETDEVICES=y +CONFIG_SP7021_EMAC=y CONFIG_INPUT_SPARSEKMAP=y CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_KEYBOARD is not set @@ -36,6 +45,25 @@ CONFIG_INPUT_EVDEV=y # CONFIG_LEGACY_PTYS is not set # CONFIG_HW_RANDOM is not set # CONFIG_HWMON is not set +CONFIG_SPI=y +CONFIG_SPI_SUNPLUS_SP7021=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_EEPROM_AT24=y +CONFIG_MMC=y +CONFIG_MMC_SUNPLUS=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_SYSFS=y +CONFIG_SUNPLUS_WATCHDOG=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_SUNPLUS=y +CONFIG_NVMEM=y +CONFIG_NVMEM_SUNPLUS_OCOTP=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y # CONFIG_IOMMU_SUPPORT is not set CONFIG_RESET_CONTROLLER=y CONFIG_EXT4_FS=y @@ -51,6 +79,8 @@ CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_ASCII=y CONFIG_NLS_ISO8859_1=y CONFIG_NLS_UTF8=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y CONFIG_PRINTK_TIME=y CONFIG_DYNAMIC_DEBUG=y CONFIG_MAGIC_SYSRQ=y -- 2.53.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] arm: sunplus: add Tibbo LTPP3G2 board support; update defconfig 2026-09-02 10:45 ` [PATCH 2/2] arm: sunplus: add Tibbo LTPP3G2 board support; update defconfig Andrew Gaylard @ 2026-09-02 11:00 ` sashiko-bot 0 siblings, 0 replies; 6+ messages in thread From: sashiko-bot @ 2026-09-02 11:00 UTC (permalink / raw) To: Andrew Gaylard; +Cc: robh, conor+dt, devicetree Thank you for your contribution! Sashiko AI review found 7 potential issue(s) to consider: - [Medium] The `rtc` node uses a non-existent `charging-mode` property that is unsupported by the driver and violates device tree bindings. - [Medium] The EEPROM node uses an invalid compatible string `at,24c16` instead of `atmel,24c16`. - [Medium] The `CONFIG_I2C_GPIO` option is not enabled in `sp7021_defconfig`, which is required for the `i2c_tps` bus to function. - [Medium] The board DTS creates a new root `led` node rather than overriding the SoC's `&leds` node, leading to duplicate `gpio-leds` instances. - [Low] Invalid properties `spi-cpha` and `spi-cpol` applied directly to SPI controller nodes. - [Low] The `i2c_tps` node uses deprecated properties `gpios`, `i2c-gpio,scl-open-drain`, and `i2c-gpio,sda-open-drain`, violating the `i2c-gpio` schema. - [Low] The `led@2` node uses a unit address in its name but lacks a `reg` property. -- commit 21c4fb2cd185ac71c6b0d8d79e82b451794aa5c2 Author: Andrew Gaylard <ag@ffroot.co.za> arm: sunplus: add Tibbo LTPP3G2 board support; update defconfig This commit adds a device tree source for the Tibbo LTPP3G2 board based on the SP7021 SoC. It includes node configurations for various peripherals like I2C, SPI, RTC, and Ethernet. It also updates the defconfig to enable the necessary options for the board to boot correctly. > diff --git a/arch/arm/boot/dts/sunplus/sunplus-sp7021-ltpp3g2.dts b/arch/arm/boot/dts/sunplus/sunplus-sp7021-ltpp3g2.dts > new file mode 100644 > index 0000000000000..c42e6f779ce36 > --- /dev/null > +++ b/arch/arm/boot/dts/sunplus/sunplus-sp7021-ltpp3g2.dts > @@ -0,0 +1,301 @@ [ ... ] > + led { > + compatible = "gpio-leds"; [Severity: Medium] Does creating a new root "led" node here rather than overriding the SoC's existing "&leds" node from sunplus-sp7021.dtsi create duplicate gpio-leds instances? This could result in an led subsystem sysfs naming conflict and potential issues with the SoC's default floating pin mapping, since both nodes contain a "system-led" subnode. > + pinctrl-names = "default", "sleep"; > + pinctrl-0 = <&gpio_leds_pins>; > + pinctrl-1 = <&leds_s0_slp>; > + system-led { > + label = "system-led"; > + gpios = <&pctl 6 GPIO_ACTIVE_HIGH>; > + default-state = "off"; > + linux,default-trigger = "heartbeat"; > + }; > + led@2 { [Severity: Low] Does this node violate the Devicetree Specification by including a unit address ("@2") without a corresponding "reg" property? This will trigger a unit_address_vs_reg compiler warning. > + label = "SG"; > + gpios = <&pctl 7 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "heartbeat"; > + default-state = "off"; > + }; > + }; > + > + i2c_tps: i2c-tps { /* eeprom */ > + compatible = "i2c-gpio"; > + i2c-gpio,scl-open-drain; > + i2c-gpio,sda-open-drain; > + i2c-gpio,delay-us = <1>; > + #address-cells = <1>; > + #size-cells = <0>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pins_i2ctps>; > + gpios = <&pctl 2 GPIO_ACTIVE_HIGH /* SDA */ > + &pctl 1 GPIO_ACTIVE_HIGH /* SCL */ > + >; [Severity: Low] Is this node using deprecated properties for the i2c-gpio binding? The schema requires "sda-gpios" and "scl-gpios", whereas using "gpios" alongside the boolean open-drain flags triggers dtbs_check validation errors. > + eeprom: eeprom@50 { > + compatible = "at,24c16"; [Severity: Medium] Is "at,24c16" an invalid compatible string for the Atmel EEPROM? The correct vendor prefix for Atmel is "atmel". Using this non-existent string could prevent the at24 EEPROM driver from matching and probing, making the device inaccessible. > + reg = <0x50>; > + pagesize = <16>; > + }; > + }; > +}; [ ... ] > +&spi_controller0 { > + spi-cpha; > + spi-cpol; [Severity: Low] Are these slave-specific flags incorrectly placed on the master controller node instead of the peripheral nodes? While the SPI controller driver ignores them on the controller node, this violates device tree schemas and causes dtbs_check validation errors. > + pinctrl-names = "default"; > + pinctrl-0 = <&pins_spi0>; > + status = "disabled"; > +}; > + > +&spi_controller1 { > + spi-cpha; > + spi-cpol; [Severity: Low] Are these slave-specific flags also incorrectly placed on this master controller node? > + status = "disabled"; > +}; > + > +&spi_controller2 { > + spi-cpha; > + spi-cpol; [Severity: Low] Are these slave-specific flags also incorrectly placed on this master controller node? > + status = "disabled"; > +}; [ ... ] > +&rtc { > + charging-mode = <0xE>; [Severity: Medium] Is "charging-mode" a non-existent legacy property? This violates the schema and is unsupported by the driver, silently failing to configure the battery trickle charger hardware, which could prevent the RTC battery from charging. > + /* > + * 0xE Disable > + * 0x1 0.86mA (2K Ohm with diode) > + * 0x5 1.81mA (250 Ohm with diode) [ ... ] > diff --git a/arch/arm/configs/sp7021_defconfig b/arch/arm/configs/sp7021_defconfig > index ec723401b4405..e0c0692f455de 100644 > --- a/arch/arm/configs/sp7021_defconfig > +++ b/arch/arm/configs/sp7021_defconfig [ ... ] > @@ -36,6 +45,25 @@ CONFIG_INPUT_EVDEV=y > # CONFIG_LEGACY_PTYS is not set > # CONFIG_HW_RANDOM is not set > # CONFIG_HWMON is not set > +CONFIG_SPI=y > +CONFIG_SPI_SUNPLUS_SP7021=y > +CONFIG_I2C=y > +CONFIG_I2C_CHARDEV=y > +CONFIG_EEPROM_AT24=y [Severity: Medium] Is CONFIG_I2C_GPIO missing from this configuration? Since the board adds an EEPROM on the i2c_tps bus using the "i2c-gpio" compatible, failing to enable CONFIG_I2C_GPIO (which is a tristate and not selected by default) will prevent the bus from probing and break access to the EEPROM. > +CONFIG_MMC=y > +CONFIG_MMC_SUNPLUS=y -- Sashiko AI review · https://sashiko.dev/#/patchset/20260902104545.67794-1-ag@ffroot.co.za?part=2 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] arm: sunplus: add SP7021 LTPP3G2 board support -- withdrawn 2026-09-02 10:45 [PATCH 0/2] arm: sunplus: add SP7021 LTPP3G2 board support Andrew Gaylard 2026-09-02 10:45 ` [PATCH 1/2] arm: dts: sunplus: add peripheral device nodes to sp7021.dtsi Andrew Gaylard 2026-09-02 10:45 ` [PATCH 2/2] arm: sunplus: add Tibbo LTPP3G2 board support; update defconfig Andrew Gaylard @ 2026-09-02 15:40 ` Andrew Gaylard 2 siblings, 0 replies; 6+ messages in thread From: Andrew Gaylard @ 2026-09-02 15:40 UTC (permalink / raw) To: qinjian; +Cc: linux-arm-kernel, robh, krzk+dt, conor+dt, linux, devicetree Andrew Gaylard <ag@ffroot.co.za> writes: > This series adds device tree support for the Tibbo LTPP3G2 board, which > is based on the Sunplus SP7021 SoC (quad-core ARM Cortex-A7). sashiko-bot found several issues with this series. Please don't review it, I'll fix them and re-send. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-09-02 15:40 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-09-02 10:45 [PATCH 0/2] arm: sunplus: add SP7021 LTPP3G2 board support Andrew Gaylard 2026-09-02 10:45 ` [PATCH 1/2] arm: dts: sunplus: add peripheral device nodes to sp7021.dtsi Andrew Gaylard 2026-09-02 10:58 ` sashiko-bot 2026-09-02 10:45 ` [PATCH 2/2] arm: sunplus: add Tibbo LTPP3G2 board support; update defconfig Andrew Gaylard 2026-09-02 11:00 ` sashiko-bot 2026-09-02 15:40 ` [PATCH 0/2] arm: sunplus: add SP7021 LTPP3G2 board support -- withdrawn Andrew Gaylard
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox