diff --git a/config/boards/walnutpi-1b-ddr3.csc b/config/boards/walnutpi-1b-ddr3.csc new file mode 100644 index 000000000000..dadde031c358 --- /dev/null +++ b/config/boards/walnutpi-1b-ddr3.csc @@ -0,0 +1,18 @@ +# Allwinner H618 quad core 1GB DDR3 RAM SoC WiFi/BT +# Early 1B revision with 2x 512MB DDR3 (vendor schematic v1.0); newer 1GB +# boards use LPDDR4 and are covered by walnutpi-1b. Untested on hardware. +BOARD_NAME="Walnut Pi 1B DDR3" +BOARD_VENDOR="walnut" +BOARDFAMILY="sun50iw9" +BOARD_MAINTAINER="TallGuy74" +INTRODUCED="2026" +BOOTCONFIG="walnutpi_1b_ddr3_defconfig" +BOOT_LOGO="desktop" +BOOT_FDT_FILE="sun50i-h618-walnutpi-1b.dtb" +OVERLAY_PREFIX="sun50i-h616" +KERNEL_TARGET="current,edge" +KERNEL_TEST_TARGET="current" +FORCE_BOOTSCRIPT_UPDATE="yes" +SERIALCON="ttyS0" + +enable_extension "uwe5622-allwinner" diff --git a/config/boards/walnutpi-1b.csc b/config/boards/walnutpi-1b.csc new file mode 100644 index 000000000000..195223b98d29 --- /dev/null +++ b/config/boards/walnutpi-1b.csc @@ -0,0 +1,18 @@ +# Allwinner H618 quad core 1GB/2GB/4GB LPDDR4 RAM SoC WiFi/BT +# Covers all LPDDR4 revisions (1G/2G/4G, size auto-detected); early DDR3 +# revision boards are covered by walnutpi-1b-ddr3. +BOARD_NAME="Walnut Pi 1B" +BOARD_VENDOR="walnut" +BOARDFAMILY="sun50iw9" +BOARD_MAINTAINER="TallGuy74" +INTRODUCED="2026" +BOOTCONFIG="walnutpi_1b_defconfig" +BOOT_LOGO="desktop" +BOOT_FDT_FILE="sun50i-h618-walnutpi-1b.dtb" +OVERLAY_PREFIX="sun50i-h616" +KERNEL_TARGET="current,edge" +KERNEL_TEST_TARGET="current" +FORCE_BOOTSCRIPT_UPDATE="yes" +SERIALCON="ttyS0" + +enable_extension "uwe5622-allwinner" diff --git a/config/boards/walnutpi-box.csc b/config/boards/walnutpi-box.csc new file mode 100644 index 000000000000..f6348e1d2473 --- /dev/null +++ b/config/boards/walnutpi-box.csc @@ -0,0 +1,16 @@ +# Allwinner H618 quad core 1GB/2GB/4GB RAM SoC eMMC WiFi/BT +BOARD_NAME="Walnut Pi Box" +BOARD_VENDOR="walnut" +BOARDFAMILY="sun50iw9" +BOARD_MAINTAINER="TallGuy74" +INTRODUCED="2026" +BOOTCONFIG="walnutpi_box_defconfig" +BOOT_LOGO="desktop" +BOOT_FDT_FILE="sun50i-h618-walnutpi-box.dtb" +OVERLAY_PREFIX="sun50i-h616" +KERNEL_TARGET="current,edge" +KERNEL_TEST_TARGET="current" +FORCE_BOOTSCRIPT_UPDATE="yes" +SERIALCON="ttyS0" + +enable_extension "uwe5622-allwinner" diff --git a/config/boards/walnutpi-zerow.csc b/config/boards/walnutpi-zerow.csc new file mode 100644 index 000000000000..8af3a2894b9a --- /dev/null +++ b/config/boards/walnutpi-zerow.csc @@ -0,0 +1,16 @@ +# Allwinner H618 quad core 1GB/2GB/4GB RAM SoC WiFi/BT +BOARD_NAME="Walnut Pi ZeroW" +BOARD_VENDOR="walnut" +BOARDFAMILY="sun50iw9" +BOARD_MAINTAINER="TallGuy74" +INTRODUCED="2026" +BOOTCONFIG="walnutpi_zerow_defconfig" +BOOT_LOGO="desktop" +BOOT_FDT_FILE="sun50i-h618-walnutpi-zerow.dtb" +OVERLAY_PREFIX="sun50i-h616" +KERNEL_TARGET="current,edge" +KERNEL_TEST_TARGET="current" +FORCE_BOOTSCRIPT_UPDATE="yes" +SERIALCON="ttyS0" + +enable_extension "uwe5622-allwinner" diff --git a/config/kernel/linux-sunxi64-current.config b/config/kernel/linux-sunxi64-current.config index 711513cc392a..b7be88aad318 100644 --- a/config/kernel/linux-sunxi64-current.config +++ b/config/kernel/linux-sunxi64-current.config @@ -1871,6 +1871,8 @@ CONFIG_DRM_DW_HDMI_I2S_AUDIO=m CONFIG_DRM_DW_HDMI_GP_AUDIO=m CONFIG_DRM_DW_HDMI_CEC=m CONFIG_DRM_PANEL_MIPI_DBI=m +CONFIG_DRM_SSD130X=m +CONFIG_DRM_SSD130X_I2C=m CONFIG_TINYDRM_HX8357D=m CONFIG_TINYDRM_ILI9163=m CONFIG_TINYDRM_ILI9225=m diff --git a/config/kernel/linux-sunxi64-edge.config b/config/kernel/linux-sunxi64-edge.config index 65ced198239d..204b7b3b17cb 100644 --- a/config/kernel/linux-sunxi64-edge.config +++ b/config/kernel/linux-sunxi64-edge.config @@ -1872,6 +1872,8 @@ CONFIG_DRM_PANTHOR=m CONFIG_DRM_PL111=m CONFIG_DRM_SUN4I=y CONFIG_DRM_PANEL_MIPI_DBI=m +CONFIG_DRM_SSD130X=m +CONFIG_DRM_SSD130X_I2C=m CONFIG_TINYDRM_HX8357D=m CONFIG_TINYDRM_ILI9163=m CONFIG_TINYDRM_ILI9225=m diff --git a/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-1b.dts b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-1b.dts new file mode 100644 index 000000000000..b9588c203048 --- /dev/null +++ b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-1b.dts @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi 1B: Walnut Pi 1 family SBC. Micro HDMI, 100 Mbit Ethernet, + * USB 2.0 host ports (VBUS switched via PC16), 40-pin header, status + * LED on PC13, no eMMC. + */ + +/dts-v1/; + +#include "sun50i-h618-walnutpi.dtsi" + +/ { + model = "Walnut Pi 1B"; + compatible = "walnutpi,walnutpi-1b", "allwinner,sun50i-h618"; + + leds { + compatible = "gpio-leds"; + + led-0 { + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ + default-state = "on"; + }; + }; +}; + +®_usb1_vbus { + enable-active-high; + gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */ +}; diff --git a/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-box.dts b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-box.dts new file mode 100644 index 000000000000..8543829960e7 --- /dev/null +++ b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-box.dts @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi Box: Walnut Pi CM1 on the Box IO carrier. + * Full-size HDMI, 100 Mbit Ethernet, 2x USB 2.0 host, 3.5mm audio, + * IR receiver, 40-pin header (peripherals via overlays), OLED header + * (I2C, via overlay), USB-C 5V power input (power only). + */ + +/dts-v1/; + +#include "sun50i-h618-walnutpi-cm1.dtsi" + +#include + +/ { + model = "Walnut Pi Box"; + compatible = "walnutpi,walnutpi-box", "allwinner,sun50i-h618"; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + poll-interval = <100>; + + key-user { + label = "KEY"; + linux,code = ; + gpios = <&pio 2 12 GPIO_ACTIVE_LOW>; /* PC12 */ + }; + }; + + leds { + /* carrier LED, next to the module's PC7 status LED */ + led-1 { + function = LED_FUNCTION_ACTIVITY; + color = ; + gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ + linux,default-trigger = "heartbeat"; + }; + }; +}; + +/* USB1 is not routed on the Box IO carrier */ +&ehci1 { + status = "disabled"; +}; + +&hdmi_connector { + type = "a"; +}; + +&ohci1 { + status = "disabled"; +}; diff --git a/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-cm1.dtsi b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-cm1.dtsi new file mode 100644 index 000000000000..81cde3d37490 --- /dev/null +++ b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-cm1.dtsi @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi CM1 compute module: Walnut Pi 1 family core with eMMC + * populated (mmc2) and the status LED on PC7. + */ + +#include "sun50i-h618-walnutpi.dtsi" + +/ { + aliases { + mmc2 = &mmc2; + }; + + leds { + compatible = "gpio-leds"; + + led-0 { + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */ + default-state = "on"; + }; + }; +}; + +&mmc2 { + status = "okay"; +}; diff --git a/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-zerow.dts b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-zerow.dts new file mode 100644 index 000000000000..0cbe7f10df98 --- /dev/null +++ b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi-zerow.dts @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi ZeroW: compact Walnut Pi 1 family board. Micro HDMI, + * 2x USB-C (USB0 = OTG/power, USB1 = second port on ehci1/ohci1), + * 40-pin header, status LED on PC13. Ethernet, USB2/USB3 host, + * line-out audio and IR live on the FPC expansion board and are + * disabled here; attach the expansion and enable them with the + * walnutpi-zerow-expansion overlay. + */ + +/dts-v1/; + +#include "sun50i-h618-walnutpi.dtsi" + +/ { + model = "Walnut Pi ZeroW"; + compatible = "walnutpi,walnutpi-zerow", "allwinner,sun50i-h618"; + + leds { + compatible = "gpio-leds"; + + led-0 { + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ + default-state = "on"; + }; + }; +}; + +/* line-out is only on the FPC expansion board */ +&codec { + status = "disabled"; +}; + +/* 100M Ethernet is only on the FPC expansion board */ +&emac1 { + status = "disabled"; +}; + +/* USB2/USB3 host ports are only on the FPC expansion board */ +&ehci2 { + status = "disabled"; +}; + +&ohci2 { + status = "disabled"; +}; + +&ehci3 { + status = "disabled"; +}; + +&ohci3 { + status = "disabled"; +}; + +/* IR receiver is only on the FPC expansion board */ +&ir { + status = "disabled"; +}; diff --git a/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi.dtsi b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi.dtsi new file mode 100644 index 000000000000..8a6171716f4e --- /dev/null +++ b/patch/kernel/archive/sunxi-6.18/dt_64/sun50i-h618-walnutpi.dtsi @@ -0,0 +1,342 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi 1 family common core (WalnutPi 1B / ZeroW / CM1 / Box): + * Allwinner H618, LPDDR4, AXP313a PMIC, microSD (mmc0), UNISOC UWE5622 + * Wi-Fi/BT on SDIO (mmc1), eMMC pads on mmc2 (populated on CM1 only), + * HDMI, 100 Mbit Ethernet via the co-packaged AC300-class EPHY on + * emac1/RMII (EPHY calibration from the SID eFuse at 0x2c; on ZeroW the + * port is on the FPC expansion), analog codec and IR (FPC on ZeroW). + * Wiring derived from the vendor sun50i-h616-walnutpi-1b(-emmc).dts + * (walnutpi/linux, branch 6.1.31), which serves the whole family. + */ + +#include "sun50i-h616.dtsi" +#include "sun50i-h616-cpu-opp.dtsi" + +#include +#include +#include + +/ { + aliases { + ethernet1 = &emac1; + mmc0 = &mmc0; + mmc1 = &mmc1; + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + hdmi_connector: connector { + compatible = "hdmi-connector"; + type = "d"; + + port { + hdmi_con_in: endpoint { + remote-endpoint = <&hdmi_out_con>; + }; + }; + }; + + ac300_pwm_clk: ac300-clk { + compatible = "pwm-clock"; + #clock-cells = <0>; + /* 500ns period -> 2MHz; PWM5 bypass outputs 24MHz to the EPHY */ + pwms = <&pwm 5 500 0>; + clock-frequency = <2000000>; + status = "okay"; + }; + + reg_vcc5v: vcc5v { + /* board wide 5V supply from the USB-C power input */ + compatible = "regulator-fixed"; + regulator-name = "vcc-5v"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + }; + + reg_vcc3v3: vcc3v3 { + /* discrete DC/DC converter */ + compatible = "regulator-fixed"; + regulator-name = "vcc-3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <®_vcc5v>; + regulator-always-on; + }; + + reg_usb1_vbus: regulator-usb1-vbus { + compatible = "regulator-fixed"; + regulator-name = "usb1-vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + vin-supply = <®_vcc5v>; + }; + + reg_vcc33_wifi: vcc33-wifi { + /* Always on 3.3V regulator for WiFi and BT */ + compatible = "regulator-fixed"; + regulator-name = "vcc33-wifi"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + vin-supply = <®_vcc5v>; + }; + + reg_vcc_wifi_io: vcc-wifi-io { + /* Always on 1.8V/300mA regulator for WiFi and BT IO */ + compatible = "regulator-fixed"; + regulator-name = "vcc-wifi-io"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + vin-supply = <®_vcc33_wifi>; + }; + + wifi_pwrseq: wifi-pwrseq { + compatible = "mmc-pwrseq-simple"; + pinctrl-names = "default"; + pinctrl-0 = <&x32clk_fanout_pin>; + clocks = <&rtc 1>; + clock-names = "ext_clock"; + reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */ + post-power-on-delay-ms = <200>; + }; +}; + +&codec { + allwinner,audio-routing = "Line Out", "LINEOUT"; + status = "okay"; +}; + +&cpu0 { + cpu-supply = <®_dcdc2>; +}; + +&de { + status = "okay"; +}; + +&ehci1 { + status = "okay"; +}; + +&ehci2 { + status = "okay"; +}; + +&ehci3 { + status = "okay"; +}; + +&emac1 { + compatible = "allwinner,sun50i-h616-internal-emac"; + pinctrl-names = "default"; + pinctrl-0 = <&rmii_pins>; + phy-mode = "rmii"; + phy-handle = <&ac300_ephy>; + phy-supply = <®_vcc3v3>; + allwinner,rx-delay-ps = <3100>; + allwinner,tx-delay-ps = <700>; + status = "okay"; + + mdio-mux { + compatible = "allwinner,sun8i-h3-mdio-mux"; + #address-cells = <1>; + #size-cells = <0>; + mdio-parent-bus = <&mdio1>; + + internal_mdio: mdio@1 { + compatible = "allwinner,sun8i-h3-mdio-internal"; + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + + ac300_ephy: ethernet-phy@0 { + compatible = "ethernet-phy-id0044.1400", "allwinner,sun50i-h618-ac300-ephy", "ethernet-phy-ieee802.3-c22"; + reg = <0>; + clocks = <&ccu CLK_EMAC_25M>, <&ac300_pwm_clk>; + clock-names = "ephy", "pwm"; + nvmem-cells = <&ephy_calibration>; + nvmem-cell-names = "calibration"; + status = "okay"; + }; + }; + }; +}; + +&gpu { + mali-supply = <®_dcdc1>; + status = "okay"; +}; + +&hdmi { + status = "okay"; +}; + +&hdmi_out { + hdmi_out_con: endpoint { + remote-endpoint = <&hdmi_con_in>; + }; +}; + +&ir { + pinctrl-names = "default"; + pinctrl-0 = <&ir_rx_pin>; + status = "okay"; +}; + +&mdio1 { + compatible = "snps,dwmac-mdio"; +}; + +/* microSD */ +&mmc0 { + vmmc-supply = <®_vcc3v3>; + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ + bus-width = <4>; + status = "okay"; +}; + +/* SDIO Wi-Fi (UNISOC UWE5622) */ +&mmc1 { + vmmc-supply = <®_vcc33_wifi>; + vqmmc-supply = <®_vcc_wifi_io>; + mmc-pwrseq = <&wifi_pwrseq>; + bus-width = <4>; + non-removable; + mmc-ddr-1_8v; + status = "okay"; +}; + +/* eMMC pads; only populated on the CM1 module */ +&mmc2 { + vmmc-supply = <®_vcc3v3>; + no-1-8-v; + bus-width = <8>; + non-removable; + status = "disabled"; +}; + +&ohci1 { + status = "okay"; +}; + +&ohci2 { + status = "okay"; +}; + +&ohci3 { + status = "okay"; +}; + +&pio { + vcc-pc-supply = <®_dldo1>; + vcc-pf-supply = <®_dldo1>; + vcc-pg-supply = <®_aldo1>; + vcc-ph-supply = <®_dldo1>; + vcc-pi-supply = <®_dldo1>; +}; + +&pwm { + status = "okay"; +}; + +&pwm5 { + pinctrl-names = "default"; + pinctrl-0 = <&pwm5_pin>; + clk_bypass_output = <0x1>; + status = "okay"; +}; + +&r_i2c { + status = "okay"; + + axp313: pmic@36 { + compatible = "x-powers,axp313a"; + reg = <0x36>; + + vin1-supply = <®_vcc5v>; + vin2-supply = <®_vcc5v>; + vin3-supply = <®_vcc5v>; + + regulators { + /* Supplies VCC-PLL and DRAM */ + reg_aldo1: aldo1 { + regulator-always-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcc1v8"; + }; + + /* Supplies VCC-IO, so needs to be always on. */ + reg_dldo1: dldo1 { + regulator-always-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc3v3-io"; + }; + + reg_dcdc1: dcdc1 { + regulator-always-on; + regulator-min-microvolt = <810000>; + regulator-max-microvolt = <990000>; + regulator-name = "vdd-gpu-sys"; + }; + + reg_dcdc2: dcdc2 { + regulator-always-on; + regulator-min-microvolt = <810000>; + regulator-max-microvolt = <1100000>; + regulator-name = "vdd-cpu"; + }; + + reg_dcdc3: dcdc3 { + regulator-always-on; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1100000>; + regulator-name = "vdd-dram"; + }; + }; + }; +}; + +&sid { + ephy_calibration: ephy-calibration@2c { + reg = <0x2c 0x2>; + }; +}; + +/* SPI flash pads; unpopulated by default */ +&spi0 { + status = "disabled"; + + flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <40000000>; + }; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_ph_pins>; + status = "okay"; +}; + +&usbotg { + /* USB-C powers the board; both CC pins are strapped, no role switch */ + dr_mode = "peripheral"; + status = "okay"; +}; + +&usbphy { + usb1_vbus-supply = <®_usb1_vbus>; + status = "okay"; +}; diff --git a/patch/kernel/archive/sunxi-6.18/overlay_64/Makefile b/patch/kernel/archive/sunxi-6.18/overlay_64/Makefile index f735b0b61730..c82a160ffac6 100644 --- a/patch/kernel/archive/sunxi-6.18/overlay_64/Makefile +++ b/patch/kernel/archive/sunxi-6.18/overlay_64/Makefile @@ -99,6 +99,8 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ sun50i-h616-ir.dtbo \ sun50i-h616-tft35_spi.dtbo \ sun50i-h616-mcp2515.dtbo \ + sun50i-h616-walnutpi-box-oled.dtbo \ + sun50i-h616-walnutpi-zerow-expansion.dtbo \ sun50i-h616-ws2812.dtbo \ sun50i-h616-light.dtbo diff --git a/patch/kernel/archive/sunxi-6.18/overlay_64/sun50i-h616-walnutpi-box-oled.dtso b/patch/kernel/archive/sunxi-6.18/overlay_64/sun50i-h616-walnutpi-box-oled.dtso new file mode 100644 index 000000000000..0e2c160bdf17 --- /dev/null +++ b/patch/kernel/archive/sunxi-6.18/overlay_64/sun50i-h616-walnutpi-box-oled.dtso @@ -0,0 +1,40 @@ +/dts-v1/; +/plugin/; + +/* + * Walnut Pi Box 0.96" OLED header (SSD1306, 128x64, I2C addr 0x3c) on + * TWI2/i2c2 (PI9/PI10) — same bus as 40-pin header pins 27/28. Driven by + * the ssd130x DRM driver; uart3 shares the PI9/PI10 pins and is disabled. + * Enable with: overlays=walnutpi-box-oled + */ + +/ { + compatible = "walnutpi,walnutpi-box", "allwinner,sun50i-h618"; + + fragment@0 { + target = <&i2c2>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_pi_pins>; + status = "okay"; + + oled: oled@3c { + compatible = "solomon,ssd1306"; + reg = <0x3c>; + solomon,width = <128>; + solomon,height = <64>; + solomon,page-offset = <0>; + solomon,com-invdir; + }; + }; + }; + + fragment@1 { + target = <&uart3>; + __overlay__ { + status = "disabled"; + }; + }; +}; diff --git a/patch/kernel/archive/sunxi-6.18/overlay_64/sun50i-h616-walnutpi-zerow-expansion.dtso b/patch/kernel/archive/sunxi-6.18/overlay_64/sun50i-h616-walnutpi-zerow-expansion.dtso new file mode 100644 index 000000000000..ea1b62431a4c --- /dev/null +++ b/patch/kernel/archive/sunxi-6.18/overlay_64/sun50i-h616-walnutpi-zerow-expansion.dtso @@ -0,0 +1,62 @@ +/dts-v1/; +/plugin/; + +/* + * Walnut Pi ZeroW FPC expansion board: 10/100M Ethernet (RJ45 with + * link/speed LEDs from the EPHY), 2x USB 2.0 host (USB2/USB3 + * controllers), 3.5mm line-out, IR receiver. + * Enable with: overlays=walnutpi-zerow-expansion + */ + +/ { + compatible = "walnutpi,walnutpi-zerow", "allwinner,sun50i-h618"; + + fragment@0 { + target = <&emac1>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@1 { + target = <&ehci2>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target = <&ohci2>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@3 { + target = <&ehci3>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@4 { + target = <&ohci3>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@5 { + target = <&codec>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@6 { + target = <&ir>; + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-1b.dts b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-1b.dts new file mode 100644 index 000000000000..b9588c203048 --- /dev/null +++ b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-1b.dts @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi 1B: Walnut Pi 1 family SBC. Micro HDMI, 100 Mbit Ethernet, + * USB 2.0 host ports (VBUS switched via PC16), 40-pin header, status + * LED on PC13, no eMMC. + */ + +/dts-v1/; + +#include "sun50i-h618-walnutpi.dtsi" + +/ { + model = "Walnut Pi 1B"; + compatible = "walnutpi,walnutpi-1b", "allwinner,sun50i-h618"; + + leds { + compatible = "gpio-leds"; + + led-0 { + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ + default-state = "on"; + }; + }; +}; + +®_usb1_vbus { + enable-active-high; + gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */ +}; diff --git a/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-box.dts b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-box.dts new file mode 100644 index 000000000000..8543829960e7 --- /dev/null +++ b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-box.dts @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi Box: Walnut Pi CM1 on the Box IO carrier. + * Full-size HDMI, 100 Mbit Ethernet, 2x USB 2.0 host, 3.5mm audio, + * IR receiver, 40-pin header (peripherals via overlays), OLED header + * (I2C, via overlay), USB-C 5V power input (power only). + */ + +/dts-v1/; + +#include "sun50i-h618-walnutpi-cm1.dtsi" + +#include + +/ { + model = "Walnut Pi Box"; + compatible = "walnutpi,walnutpi-box", "allwinner,sun50i-h618"; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + poll-interval = <100>; + + key-user { + label = "KEY"; + linux,code = ; + gpios = <&pio 2 12 GPIO_ACTIVE_LOW>; /* PC12 */ + }; + }; + + leds { + /* carrier LED, next to the module's PC7 status LED */ + led-1 { + function = LED_FUNCTION_ACTIVITY; + color = ; + gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ + linux,default-trigger = "heartbeat"; + }; + }; +}; + +/* USB1 is not routed on the Box IO carrier */ +&ehci1 { + status = "disabled"; +}; + +&hdmi_connector { + type = "a"; +}; + +&ohci1 { + status = "disabled"; +}; diff --git a/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-cm1.dtsi b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-cm1.dtsi new file mode 100644 index 000000000000..81cde3d37490 --- /dev/null +++ b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-cm1.dtsi @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi CM1 compute module: Walnut Pi 1 family core with eMMC + * populated (mmc2) and the status LED on PC7. + */ + +#include "sun50i-h618-walnutpi.dtsi" + +/ { + aliases { + mmc2 = &mmc2; + }; + + leds { + compatible = "gpio-leds"; + + led-0 { + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */ + default-state = "on"; + }; + }; +}; + +&mmc2 { + status = "okay"; +}; diff --git a/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-zerow.dts b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-zerow.dts new file mode 100644 index 000000000000..0cbe7f10df98 --- /dev/null +++ b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi-zerow.dts @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi ZeroW: compact Walnut Pi 1 family board. Micro HDMI, + * 2x USB-C (USB0 = OTG/power, USB1 = second port on ehci1/ohci1), + * 40-pin header, status LED on PC13. Ethernet, USB2/USB3 host, + * line-out audio and IR live on the FPC expansion board and are + * disabled here; attach the expansion and enable them with the + * walnutpi-zerow-expansion overlay. + */ + +/dts-v1/; + +#include "sun50i-h618-walnutpi.dtsi" + +/ { + model = "Walnut Pi ZeroW"; + compatible = "walnutpi,walnutpi-zerow", "allwinner,sun50i-h618"; + + leds { + compatible = "gpio-leds"; + + led-0 { + function = LED_FUNCTION_STATUS; + color = ; + gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ + default-state = "on"; + }; + }; +}; + +/* line-out is only on the FPC expansion board */ +&codec { + status = "disabled"; +}; + +/* 100M Ethernet is only on the FPC expansion board */ +&emac1 { + status = "disabled"; +}; + +/* USB2/USB3 host ports are only on the FPC expansion board */ +&ehci2 { + status = "disabled"; +}; + +&ohci2 { + status = "disabled"; +}; + +&ehci3 { + status = "disabled"; +}; + +&ohci3 { + status = "disabled"; +}; + +/* IR receiver is only on the FPC expansion board */ +&ir { + status = "disabled"; +}; diff --git a/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi.dtsi b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi.dtsi new file mode 100644 index 000000000000..8a6171716f4e --- /dev/null +++ b/patch/kernel/archive/sunxi-7.0/dt_64/sun50i-h618-walnutpi.dtsi @@ -0,0 +1,342 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Walnut Pi 1 family common core (WalnutPi 1B / ZeroW / CM1 / Box): + * Allwinner H618, LPDDR4, AXP313a PMIC, microSD (mmc0), UNISOC UWE5622 + * Wi-Fi/BT on SDIO (mmc1), eMMC pads on mmc2 (populated on CM1 only), + * HDMI, 100 Mbit Ethernet via the co-packaged AC300-class EPHY on + * emac1/RMII (EPHY calibration from the SID eFuse at 0x2c; on ZeroW the + * port is on the FPC expansion), analog codec and IR (FPC on ZeroW). + * Wiring derived from the vendor sun50i-h616-walnutpi-1b(-emmc).dts + * (walnutpi/linux, branch 6.1.31), which serves the whole family. + */ + +#include "sun50i-h616.dtsi" +#include "sun50i-h616-cpu-opp.dtsi" + +#include +#include +#include + +/ { + aliases { + ethernet1 = &emac1; + mmc0 = &mmc0; + mmc1 = &mmc1; + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + hdmi_connector: connector { + compatible = "hdmi-connector"; + type = "d"; + + port { + hdmi_con_in: endpoint { + remote-endpoint = <&hdmi_out_con>; + }; + }; + }; + + ac300_pwm_clk: ac300-clk { + compatible = "pwm-clock"; + #clock-cells = <0>; + /* 500ns period -> 2MHz; PWM5 bypass outputs 24MHz to the EPHY */ + pwms = <&pwm 5 500 0>; + clock-frequency = <2000000>; + status = "okay"; + }; + + reg_vcc5v: vcc5v { + /* board wide 5V supply from the USB-C power input */ + compatible = "regulator-fixed"; + regulator-name = "vcc-5v"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + }; + + reg_vcc3v3: vcc3v3 { + /* discrete DC/DC converter */ + compatible = "regulator-fixed"; + regulator-name = "vcc-3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <®_vcc5v>; + regulator-always-on; + }; + + reg_usb1_vbus: regulator-usb1-vbus { + compatible = "regulator-fixed"; + regulator-name = "usb1-vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + vin-supply = <®_vcc5v>; + }; + + reg_vcc33_wifi: vcc33-wifi { + /* Always on 3.3V regulator for WiFi and BT */ + compatible = "regulator-fixed"; + regulator-name = "vcc33-wifi"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + vin-supply = <®_vcc5v>; + }; + + reg_vcc_wifi_io: vcc-wifi-io { + /* Always on 1.8V/300mA regulator for WiFi and BT IO */ + compatible = "regulator-fixed"; + regulator-name = "vcc-wifi-io"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + vin-supply = <®_vcc33_wifi>; + }; + + wifi_pwrseq: wifi-pwrseq { + compatible = "mmc-pwrseq-simple"; + pinctrl-names = "default"; + pinctrl-0 = <&x32clk_fanout_pin>; + clocks = <&rtc 1>; + clock-names = "ext_clock"; + reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */ + post-power-on-delay-ms = <200>; + }; +}; + +&codec { + allwinner,audio-routing = "Line Out", "LINEOUT"; + status = "okay"; +}; + +&cpu0 { + cpu-supply = <®_dcdc2>; +}; + +&de { + status = "okay"; +}; + +&ehci1 { + status = "okay"; +}; + +&ehci2 { + status = "okay"; +}; + +&ehci3 { + status = "okay"; +}; + +&emac1 { + compatible = "allwinner,sun50i-h616-internal-emac"; + pinctrl-names = "default"; + pinctrl-0 = <&rmii_pins>; + phy-mode = "rmii"; + phy-handle = <&ac300_ephy>; + phy-supply = <®_vcc3v3>; + allwinner,rx-delay-ps = <3100>; + allwinner,tx-delay-ps = <700>; + status = "okay"; + + mdio-mux { + compatible = "allwinner,sun8i-h3-mdio-mux"; + #address-cells = <1>; + #size-cells = <0>; + mdio-parent-bus = <&mdio1>; + + internal_mdio: mdio@1 { + compatible = "allwinner,sun8i-h3-mdio-internal"; + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + + ac300_ephy: ethernet-phy@0 { + compatible = "ethernet-phy-id0044.1400", "allwinner,sun50i-h618-ac300-ephy", "ethernet-phy-ieee802.3-c22"; + reg = <0>; + clocks = <&ccu CLK_EMAC_25M>, <&ac300_pwm_clk>; + clock-names = "ephy", "pwm"; + nvmem-cells = <&ephy_calibration>; + nvmem-cell-names = "calibration"; + status = "okay"; + }; + }; + }; +}; + +&gpu { + mali-supply = <®_dcdc1>; + status = "okay"; +}; + +&hdmi { + status = "okay"; +}; + +&hdmi_out { + hdmi_out_con: endpoint { + remote-endpoint = <&hdmi_con_in>; + }; +}; + +&ir { + pinctrl-names = "default"; + pinctrl-0 = <&ir_rx_pin>; + status = "okay"; +}; + +&mdio1 { + compatible = "snps,dwmac-mdio"; +}; + +/* microSD */ +&mmc0 { + vmmc-supply = <®_vcc3v3>; + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ + bus-width = <4>; + status = "okay"; +}; + +/* SDIO Wi-Fi (UNISOC UWE5622) */ +&mmc1 { + vmmc-supply = <®_vcc33_wifi>; + vqmmc-supply = <®_vcc_wifi_io>; + mmc-pwrseq = <&wifi_pwrseq>; + bus-width = <4>; + non-removable; + mmc-ddr-1_8v; + status = "okay"; +}; + +/* eMMC pads; only populated on the CM1 module */ +&mmc2 { + vmmc-supply = <®_vcc3v3>; + no-1-8-v; + bus-width = <8>; + non-removable; + status = "disabled"; +}; + +&ohci1 { + status = "okay"; +}; + +&ohci2 { + status = "okay"; +}; + +&ohci3 { + status = "okay"; +}; + +&pio { + vcc-pc-supply = <®_dldo1>; + vcc-pf-supply = <®_dldo1>; + vcc-pg-supply = <®_aldo1>; + vcc-ph-supply = <®_dldo1>; + vcc-pi-supply = <®_dldo1>; +}; + +&pwm { + status = "okay"; +}; + +&pwm5 { + pinctrl-names = "default"; + pinctrl-0 = <&pwm5_pin>; + clk_bypass_output = <0x1>; + status = "okay"; +}; + +&r_i2c { + status = "okay"; + + axp313: pmic@36 { + compatible = "x-powers,axp313a"; + reg = <0x36>; + + vin1-supply = <®_vcc5v>; + vin2-supply = <®_vcc5v>; + vin3-supply = <®_vcc5v>; + + regulators { + /* Supplies VCC-PLL and DRAM */ + reg_aldo1: aldo1 { + regulator-always-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-name = "vcc1v8"; + }; + + /* Supplies VCC-IO, so needs to be always on. */ + reg_dldo1: dldo1 { + regulator-always-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc3v3-io"; + }; + + reg_dcdc1: dcdc1 { + regulator-always-on; + regulator-min-microvolt = <810000>; + regulator-max-microvolt = <990000>; + regulator-name = "vdd-gpu-sys"; + }; + + reg_dcdc2: dcdc2 { + regulator-always-on; + regulator-min-microvolt = <810000>; + regulator-max-microvolt = <1100000>; + regulator-name = "vdd-cpu"; + }; + + reg_dcdc3: dcdc3 { + regulator-always-on; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1100000>; + regulator-name = "vdd-dram"; + }; + }; + }; +}; + +&sid { + ephy_calibration: ephy-calibration@2c { + reg = <0x2c 0x2>; + }; +}; + +/* SPI flash pads; unpopulated by default */ +&spi0 { + status = "disabled"; + + flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <40000000>; + }; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_ph_pins>; + status = "okay"; +}; + +&usbotg { + /* USB-C powers the board; both CC pins are strapped, no role switch */ + dr_mode = "peripheral"; + status = "okay"; +}; + +&usbphy { + usb1_vbus-supply = <®_usb1_vbus>; + status = "okay"; +}; diff --git a/patch/kernel/archive/sunxi-7.0/overlay_64/Makefile b/patch/kernel/archive/sunxi-7.0/overlay_64/Makefile index db0d41f60eda..44a52e1ad698 100644 --- a/patch/kernel/archive/sunxi-7.0/overlay_64/Makefile +++ b/patch/kernel/archive/sunxi-7.0/overlay_64/Makefile @@ -98,6 +98,8 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ sun50i-h616-ir.dtbo \ sun50i-h616-tft35_spi.dtbo \ sun50i-h616-mcp2515.dtbo \ + sun50i-h616-walnutpi-box-oled.dtbo \ + sun50i-h616-walnutpi-zerow-expansion.dtbo \ sun50i-h616-ws2812.dtbo \ sun50i-h616-light.dtbo diff --git a/patch/kernel/archive/sunxi-7.0/overlay_64/sun50i-h616-walnutpi-box-oled.dtso b/patch/kernel/archive/sunxi-7.0/overlay_64/sun50i-h616-walnutpi-box-oled.dtso new file mode 100644 index 000000000000..0e2c160bdf17 --- /dev/null +++ b/patch/kernel/archive/sunxi-7.0/overlay_64/sun50i-h616-walnutpi-box-oled.dtso @@ -0,0 +1,40 @@ +/dts-v1/; +/plugin/; + +/* + * Walnut Pi Box 0.96" OLED header (SSD1306, 128x64, I2C addr 0x3c) on + * TWI2/i2c2 (PI9/PI10) — same bus as 40-pin header pins 27/28. Driven by + * the ssd130x DRM driver; uart3 shares the PI9/PI10 pins and is disabled. + * Enable with: overlays=walnutpi-box-oled + */ + +/ { + compatible = "walnutpi,walnutpi-box", "allwinner,sun50i-h618"; + + fragment@0 { + target = <&i2c2>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_pi_pins>; + status = "okay"; + + oled: oled@3c { + compatible = "solomon,ssd1306"; + reg = <0x3c>; + solomon,width = <128>; + solomon,height = <64>; + solomon,page-offset = <0>; + solomon,com-invdir; + }; + }; + }; + + fragment@1 { + target = <&uart3>; + __overlay__ { + status = "disabled"; + }; + }; +}; diff --git a/patch/kernel/archive/sunxi-7.0/overlay_64/sun50i-h616-walnutpi-zerow-expansion.dtso b/patch/kernel/archive/sunxi-7.0/overlay_64/sun50i-h616-walnutpi-zerow-expansion.dtso new file mode 100644 index 000000000000..ea1b62431a4c --- /dev/null +++ b/patch/kernel/archive/sunxi-7.0/overlay_64/sun50i-h616-walnutpi-zerow-expansion.dtso @@ -0,0 +1,62 @@ +/dts-v1/; +/plugin/; + +/* + * Walnut Pi ZeroW FPC expansion board: 10/100M Ethernet (RJ45 with + * link/speed LEDs from the EPHY), 2x USB 2.0 host (USB2/USB3 + * controllers), 3.5mm line-out, IR receiver. + * Enable with: overlays=walnutpi-zerow-expansion + */ + +/ { + compatible = "walnutpi,walnutpi-zerow", "allwinner,sun50i-h618"; + + fragment@0 { + target = <&emac1>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@1 { + target = <&ehci2>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target = <&ohci2>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@3 { + target = <&ehci3>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@4 { + target = <&ohci3>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@5 { + target = <&codec>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@6 { + target = <&ir>; + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/patch/u-boot/v2026.07-sunxi64/board_walnutpi-1b-ddr3/001-walnutpi-1b-ddr3-dts-and-defconfig.patch b/patch/u-boot/v2026.07-sunxi64/board_walnutpi-1b-ddr3/001-walnutpi-1b-ddr3-dts-and-defconfig.patch new file mode 100644 index 000000000000..2d29ff74a09f --- /dev/null +++ b/patch/u-boot/v2026.07-sunxi64/board_walnutpi-1b-ddr3/001-walnutpi-1b-ddr3-dts-and-defconfig.patch @@ -0,0 +1,188 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Bas Vermeulen +Date: Tue, 4 Aug 2026 00:00:00 +0000 +Subject: [PATCH] Add Walnut Pi 1B DDR3 (early revision) device tree and defconfig + +The 1GB Walnut Pi 1B uses 2x 512MB DDR3 (per the vendor schematic) +instead of the LPDDR4 found on the 2G/4G variant. DRAM parameters use +the upstream-proven H616 DDR3-1333 set (as on orangepi_zero2 and +bigtreetech_cb1): default ODT_EN/TPR11/TPR12/clock; the vendor's +LPDDR4-oriented shared values fail DDR3 training. Same board DT as +walnutpi-1b. + +Signed-off-by: Bas Vermeulen +--- + +diff --git a/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-1b.dts b/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-1b.dts +new file mode 100644 +index 0000000..b67af8d +--- /dev/null ++++ b/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-1b.dts +@@ -0,0 +1,135 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Walnut Pi 1B (Allwinner H618). ++ * U-Boot only needs DRAM/MMC/serial/PMIC; Ethernet and Wi-Fi are ++ * brought up by Linux from its own dtb. ++ */ ++ ++/dts-v1/; ++ ++#include "sun50i-h616.dtsi" ++ ++#include ++#include ++#include ++ ++/ { ++ model = "Walnut Pi 1B"; ++ compatible = "walnutpi,walnutpi-1b", "allwinner,sun50i-h618"; ++ ++ aliases { ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led-0 { ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ ++ default-state = "on"; ++ }; ++ }; ++ ++ reg_vcc5v: vcc5v { ++ /* board wide 5V supply from the USB-C socket */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-5v"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ reg_vcc3v3: vcc3v3 { ++ /* discrete DC/DC converter on the module */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <®_vcc5v>; ++ regulator-always-on; ++ }; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&mmc0 { ++ vmmc-supply = <®_vcc3v3>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&r_i2c { ++ status = "okay"; ++ ++ axp313: pmic@36 { ++ compatible = "x-powers,axp313a"; ++ reg = <0x36>; ++ ++ regulators { ++ reg_aldo1: aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc1v8"; ++ }; ++ ++ reg_dldo1: dldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3-io"; ++ }; ++ ++ reg_dcdc1: dcdc1 { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <990000>; ++ regulator-name = "vdd-gpu-sys"; ++ }; ++ ++ reg_dcdc2: dcdc2 { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-cpu"; ++ }; ++ ++ reg_dcdc3: dcdc3 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-dram"; ++ }; ++ }; ++ }; ++}; ++ ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_ph_pins>; ++ status = "okay"; ++}; ++ ++&usbotg { ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++}; +diff --git a/configs/walnutpi_1b_ddr3_defconfig b/configs/walnutpi_1b_ddr3_defconfig +new file mode 100644 +index 0000000..e5034e1 +--- /dev/null ++++ b/configs/walnutpi_1b_ddr3_defconfig +@@ -0,0 +1,24 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_DEFAULT_DEVICE_TREE="allwinner/sun50i-h618-walnutpi-1b" ++CONFIG_DRAM_CLK=792 ++CONFIG_SPL=y ++CONFIG_DRAM_SUNXI_DX_ODT=0x08080808 ++CONFIG_DRAM_SUNXI_DX_DRI=0x0e0e0e0e ++CONFIG_DRAM_SUNXI_CA_DRI=0x0e0e ++CONFIG_DRAM_SUNXI_TPR6=0x33808080 ++CONFIG_DRAM_SUNXI_TPR10=0xf83438 ++CONFIG_MACH_SUN50I_H616=y ++CONFIG_SUNXI_DRAM_H616_DDR3_1333=y ++CONFIG_R_I2C_ENABLE=y ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL_I2C=y ++CONFIG_SPL_SYS_I2C_LEGACY=y ++CONFIG_SYS_I2C_MVTWSI=y ++CONFIG_SYS_I2C_SLAVE=0x7f ++CONFIG_SYS_I2C_SPEED=400000 ++CONFIG_AXP313_POWER=y ++CONFIG_AXP_DCDC2_VOLT=900 ++CONFIG_AXP_DCDC3_VOLT=1100 ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_OHCI_HCD=y +-- +2.51.0 diff --git a/patch/u-boot/v2026.07-sunxi64/board_walnutpi-1b/001-walnutpi-1b-dts-and-defconfig.patch b/patch/u-boot/v2026.07-sunxi64/board_walnutpi-1b/001-walnutpi-1b-dts-and-defconfig.patch new file mode 100644 index 000000000000..bec33856f14b --- /dev/null +++ b/patch/u-boot/v2026.07-sunxi64/board_walnutpi-1b/001-walnutpi-1b-dts-and-defconfig.patch @@ -0,0 +1,190 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Bas Vermeulen +Date: Thu, 23 Jul 2026 00:00:00 +0000 +Subject: [PATCH] Add Walnut Pi 1B (H618) device tree and defconfig + +Walnut Pi 1 family board (Allwinner H618, LPDDR4, AXP313a). DRAM +parameters ported from the vendor walnutpi_1b_defconfig +(walnutpi/u-boot v2024.01), converted to the v2026.07 generic +DRAM_SUNXI_* form with the explicit SUNXI_DRAM_H616_LPDDR4 profile. +No eMMC on this board, so no MMC_SUNXI_SLOT_EXTRA. + +Signed-off-by: Bas Vermeulen +--- + +diff --git a/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-1b.dts b/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-1b.dts +new file mode 100644 +index 0000000..b67af8d +--- /dev/null ++++ b/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-1b.dts +@@ -0,0 +1,135 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Walnut Pi 1B (Allwinner H618). ++ * U-Boot only needs DRAM/MMC/serial/PMIC; Ethernet and Wi-Fi are ++ * brought up by Linux from its own dtb. ++ */ ++ ++/dts-v1/; ++ ++#include "sun50i-h616.dtsi" ++ ++#include ++#include ++#include ++ ++/ { ++ model = "Walnut Pi 1B"; ++ compatible = "walnutpi,walnutpi-1b", "allwinner,sun50i-h618"; ++ ++ aliases { ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led-0 { ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ ++ default-state = "on"; ++ }; ++ }; ++ ++ reg_vcc5v: vcc5v { ++ /* board wide 5V supply from the USB-C socket */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-5v"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ reg_vcc3v3: vcc3v3 { ++ /* discrete DC/DC converter on the module */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <®_vcc5v>; ++ regulator-always-on; ++ }; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&mmc0 { ++ vmmc-supply = <®_vcc3v3>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&r_i2c { ++ status = "okay"; ++ ++ axp313: pmic@36 { ++ compatible = "x-powers,axp313a"; ++ reg = <0x36>; ++ ++ regulators { ++ reg_aldo1: aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc1v8"; ++ }; ++ ++ reg_dldo1: dldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3-io"; ++ }; ++ ++ reg_dcdc1: dcdc1 { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <990000>; ++ regulator-name = "vdd-gpu-sys"; ++ }; ++ ++ reg_dcdc2: dcdc2 { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-cpu"; ++ }; ++ ++ reg_dcdc3: dcdc3 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-dram"; ++ }; ++ }; ++ }; ++}; ++ ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_ph_pins>; ++ status = "okay"; ++}; ++ ++&usbotg { ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++}; +diff --git a/configs/walnutpi_1b_defconfig b/configs/walnutpi_1b_defconfig +new file mode 100644 +index 0000000..625a8e6 +--- /dev/null ++++ b/configs/walnutpi_1b_defconfig +@@ -0,0 +1,27 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_DEFAULT_DEVICE_TREE="allwinner/sun50i-h618-walnutpi-1b" ++CONFIG_DRAM_CLK=792 ++CONFIG_SPL=y ++CONFIG_DRAM_SUNXI_DX_ODT=0x08080808 ++CONFIG_DRAM_SUNXI_DX_DRI=0x0e0e0e0e ++CONFIG_DRAM_SUNXI_CA_DRI=0x0e0e ++CONFIG_DRAM_SUNXI_ODT_EN=0xaaaaeeee ++CONFIG_DRAM_SUNXI_TPR6=0x4480b280 ++CONFIG_DRAM_SUNXI_TPR10=0x402f0663 ++CONFIG_DRAM_SUNXI_TPR11=0x24242624 ++CONFIG_DRAM_SUNXI_TPR12=0x0f0f100f ++CONFIG_MACH_SUN50I_H616=y ++CONFIG_SUNXI_DRAM_H616_LPDDR4=y ++CONFIG_R_I2C_ENABLE=y ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL_I2C=y ++CONFIG_SPL_SYS_I2C_LEGACY=y ++CONFIG_SYS_I2C_MVTWSI=y ++CONFIG_SYS_I2C_SLAVE=0x7f ++CONFIG_SYS_I2C_SPEED=400000 ++CONFIG_AXP313_POWER=y ++CONFIG_AXP_DCDC2_VOLT=900 ++CONFIG_AXP_DCDC3_VOLT=1100 ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_OHCI_HCD=y +-- +2.51.0 diff --git a/patch/u-boot/v2026.07-sunxi64/board_walnutpi-box/001-walnutpi-box-dts-and-defconfig.patch b/patch/u-boot/v2026.07-sunxi64/board_walnutpi-box/001-walnutpi-box-dts-and-defconfig.patch new file mode 100644 index 000000000000..3bb9b7d0c579 --- /dev/null +++ b/patch/u-boot/v2026.07-sunxi64/board_walnutpi-box/001-walnutpi-box-dts-and-defconfig.patch @@ -0,0 +1,210 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Bas Vermeulen +Date: Thu, 23 Jul 2026 00:00:00 +0000 +Subject: [PATCH] Add Walnut Pi Box (H618) device tree and defconfig + +Walnut Pi Box = Walnut Pi CM1 module (Allwinner H618, LPDDR4, AXP313a, +optional eMMC) on the Box IO carrier. DRAM parameters ported from the +vendor walnutpi_1b_defconfig (walnutpi/u-boot v2024.01), converted from +the old DRAM_SUN50I_H616_* symbols to the v2026.07 generic DRAM_SUNXI_* +form, with the explicit SUNXI_DRAM_H616_LPDDR4 profile replacing the +vendor DDR3_LPDDR4_AUTO option. The board DT lives under dts/upstream +(H616 DTs are OF_UPSTREAM-only), so DEFAULT_DEVICE_TREE carries the +allwinner/ vendor prefix. MMC_SUNXI_SLOT_EXTRA=2 exposes the eMMC so +SPL/U-Boot can boot from it after armbian-install. + +Signed-off-by: Bas Vermeulen +--- + +diff --git a/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-box.dts b/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-box.dts +new file mode 100644 +index 0000000..ae9c9b1 +--- /dev/null ++++ b/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-box.dts +@@ -0,0 +1,150 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Walnut Pi Box (Walnut Pi CM1 module, Allwinner H618). ++ * U-Boot only needs DRAM/MMC/serial/PMIC; Ethernet and Wi-Fi are ++ * brought up by Linux from its own dtb. ++ */ ++ ++/dts-v1/; ++ ++#include "sun50i-h616.dtsi" ++ ++#include ++#include ++#include ++ ++/ { ++ model = "Walnut Pi Box"; ++ compatible = "walnutpi,walnutpi-box", "allwinner,sun50i-h618"; ++ ++ aliases { ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led-0 { ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */ ++ default-state = "on"; ++ }; ++ }; ++ ++ reg_vcc5v: vcc5v { ++ /* board wide 5V supply from the USB-C socket */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-5v"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ reg_vcc3v3: vcc3v3 { ++ /* discrete DC/DC converter on the module */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <®_vcc5v>; ++ regulator-always-on; ++ }; ++}; ++ ++&ehci2 { ++ status = "okay"; ++}; ++ ++&ehci3 { ++ status = "okay"; ++}; ++ ++&mmc0 { ++ vmmc-supply = <®_vcc3v3>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++&mmc2 { ++ vmmc-supply = <®_vcc3v3>; ++ no-1-8-v; ++ bus-width = <8>; ++ non-removable; ++ status = "okay"; ++}; ++ ++&ohci2 { ++ status = "okay"; ++}; ++ ++&ohci3 { ++ status = "okay"; ++}; ++ ++&r_i2c { ++ status = "okay"; ++ ++ axp313: pmic@36 { ++ compatible = "x-powers,axp313a"; ++ reg = <0x36>; ++ ++ regulators { ++ reg_aldo1: aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc1v8"; ++ }; ++ ++ reg_dldo1: dldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3-io"; ++ }; ++ ++ reg_dcdc1: dcdc1 { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <990000>; ++ regulator-name = "vdd-gpu-sys"; ++ }; ++ ++ reg_dcdc2: dcdc2 { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-cpu"; ++ }; ++ ++ reg_dcdc3: dcdc3 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-dram"; ++ }; ++ }; ++ }; ++}; ++ ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_ph_pins>; ++ status = "okay"; ++}; ++ ++&usbotg { ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++}; +diff --git a/configs/walnutpi_box_defconfig b/configs/walnutpi_box_defconfig +new file mode 100644 +index 0000000..c8cb842 +--- /dev/null ++++ b/configs/walnutpi_box_defconfig +@@ -0,0 +1,28 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_DEFAULT_DEVICE_TREE="allwinner/sun50i-h618-walnutpi-box" ++CONFIG_DRAM_CLK=792 ++CONFIG_SPL=y ++CONFIG_DRAM_SUNXI_DX_ODT=0x08080808 ++CONFIG_DRAM_SUNXI_DX_DRI=0x0e0e0e0e ++CONFIG_DRAM_SUNXI_CA_DRI=0x0e0e ++CONFIG_DRAM_SUNXI_ODT_EN=0xaaaaeeee ++CONFIG_DRAM_SUNXI_TPR6=0x4480b280 ++CONFIG_DRAM_SUNXI_TPR10=0x402f0663 ++CONFIG_DRAM_SUNXI_TPR11=0x24242624 ++CONFIG_DRAM_SUNXI_TPR12=0x0f0f100f ++CONFIG_MACH_SUN50I_H616=y ++CONFIG_SUNXI_DRAM_H616_LPDDR4=y ++CONFIG_R_I2C_ENABLE=y ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL_I2C=y ++CONFIG_SPL_SYS_I2C_LEGACY=y ++CONFIG_SYS_I2C_MVTWSI=y ++CONFIG_SYS_I2C_SLAVE=0x7f ++CONFIG_SYS_I2C_SPEED=400000 ++CONFIG_AXP313_POWER=y ++CONFIG_AXP_DCDC2_VOLT=900 ++CONFIG_AXP_DCDC3_VOLT=1100 ++CONFIG_MMC_SUNXI_SLOT_EXTRA=2 ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_OHCI_HCD=y +-- +2.51.0 diff --git a/patch/u-boot/v2026.07-sunxi64/board_walnutpi-zerow/001-walnutpi-zerow-dts-and-defconfig.patch b/patch/u-boot/v2026.07-sunxi64/board_walnutpi-zerow/001-walnutpi-zerow-dts-and-defconfig.patch new file mode 100644 index 000000000000..950b3ef28eaa --- /dev/null +++ b/patch/u-boot/v2026.07-sunxi64/board_walnutpi-zerow/001-walnutpi-zerow-dts-and-defconfig.patch @@ -0,0 +1,190 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Bas Vermeulen +Date: Thu, 23 Jul 2026 00:00:00 +0000 +Subject: [PATCH] Add Walnut Pi ZEROW (H618) device tree and defconfig + +Walnut Pi 1 family board (Allwinner H618, LPDDR4, AXP313a). DRAM +parameters ported from the vendor walnutpi_1b_defconfig +(walnutpi/u-boot v2024.01), converted to the v2026.07 generic +DRAM_SUNXI_* form with the explicit SUNXI_DRAM_H616_LPDDR4 profile. +No eMMC on this board, so no MMC_SUNXI_SLOT_EXTRA. + +Signed-off-by: Bas Vermeulen +--- + +diff --git a/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-zerow.dts b/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-zerow.dts +new file mode 100644 +index 0000000..c2fe6b9 +--- /dev/null ++++ b/dts/upstream/src/arm64/allwinner/sun50i-h618-walnutpi-zerow.dts +@@ -0,0 +1,135 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Walnut Pi ZeroW (Allwinner H618). ++ * U-Boot only needs DRAM/MMC/serial/PMIC; Ethernet and Wi-Fi are ++ * brought up by Linux from its own dtb. ++ */ ++ ++/dts-v1/; ++ ++#include "sun50i-h616.dtsi" ++ ++#include ++#include ++#include ++ ++/ { ++ model = "Walnut Pi ZeroW"; ++ compatible = "walnutpi,walnutpi-zerow", "allwinner,sun50i-h618"; ++ ++ aliases { ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led-0 { ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ ++ default-state = "on"; ++ }; ++ }; ++ ++ reg_vcc5v: vcc5v { ++ /* board wide 5V supply from the USB-C socket */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-5v"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ reg_vcc3v3: vcc3v3 { ++ /* discrete DC/DC converter on the module */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <®_vcc5v>; ++ regulator-always-on; ++ }; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&mmc0 { ++ vmmc-supply = <®_vcc3v3>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&r_i2c { ++ status = "okay"; ++ ++ axp313: pmic@36 { ++ compatible = "x-powers,axp313a"; ++ reg = <0x36>; ++ ++ regulators { ++ reg_aldo1: aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc1v8"; ++ }; ++ ++ reg_dldo1: dldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc3v3-io"; ++ }; ++ ++ reg_dcdc1: dcdc1 { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <990000>; ++ regulator-name = "vdd-gpu-sys"; ++ }; ++ ++ reg_dcdc2: dcdc2 { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-cpu"; ++ }; ++ ++ reg_dcdc3: dcdc3 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-dram"; ++ }; ++ }; ++ }; ++}; ++ ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_ph_pins>; ++ status = "okay"; ++}; ++ ++&usbotg { ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++}; +diff --git a/configs/walnutpi_zerow_defconfig b/configs/walnutpi_zerow_defconfig +new file mode 100644 +index 0000000..b885d82 +--- /dev/null ++++ b/configs/walnutpi_zerow_defconfig +@@ -0,0 +1,27 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_DEFAULT_DEVICE_TREE="allwinner/sun50i-h618-walnutpi-zerow" ++CONFIG_DRAM_CLK=792 ++CONFIG_SPL=y ++CONFIG_DRAM_SUNXI_DX_ODT=0x08080808 ++CONFIG_DRAM_SUNXI_DX_DRI=0x0e0e0e0e ++CONFIG_DRAM_SUNXI_CA_DRI=0x0e0e ++CONFIG_DRAM_SUNXI_ODT_EN=0xaaaaeeee ++CONFIG_DRAM_SUNXI_TPR6=0x4480b280 ++CONFIG_DRAM_SUNXI_TPR10=0x402f0663 ++CONFIG_DRAM_SUNXI_TPR11=0x24242624 ++CONFIG_DRAM_SUNXI_TPR12=0x0f0f100f ++CONFIG_MACH_SUN50I_H616=y ++CONFIG_SUNXI_DRAM_H616_LPDDR4=y ++CONFIG_R_I2C_ENABLE=y ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL_I2C=y ++CONFIG_SPL_SYS_I2C_LEGACY=y ++CONFIG_SYS_I2C_MVTWSI=y ++CONFIG_SYS_I2C_SLAVE=0x7f ++CONFIG_SYS_I2C_SPEED=400000 ++CONFIG_AXP313_POWER=y ++CONFIG_AXP_DCDC2_VOLT=900 ++CONFIG_AXP_DCDC3_VOLT=1100 ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_OHCI_HCD=y +-- +2.51.0