From: Zoltan HERPAI Date: Wed, 13 Mar 2019 23:24:50 +0000 (+0100) Subject: sunxi: add F1C100 (arm926ej-s) support X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=4e50514dea44607bcd1cf9d5b87a89c9d34528d4;p=openwrt%2Fstaging%2Fwigyori.git sunxi: add F1C100 (arm926ej-s) support This is Allwinner's ARM926EJ-S core, which is one of its early products, reappearing in recent compact designs. The SoC includes 32/64Mb memory in the same physical package, and has display and USB interfaces, allowing for very small footprint boards. The target consists of basic 6.6 support, with u-boot. Instead of creating a separate suniv target, as both the kernel and u-boot supports enough of this SoC by now with minimal patching, add it into sunxi as a subtarget. Signed-off-by: Zoltan HERPAI --- diff --git a/package/boot/uboot-sunxi/Makefile b/package/boot/uboot-sunxi/Makefile index 112ea47d21..b844dd4fb4 100644 --- a/package/boot/uboot-sunxi/Makefile +++ b/package/boot/uboot-sunxi/Makefile @@ -134,6 +134,12 @@ define U-Boot/OLIMEX_A13_SOM BUILD_DEVICES:=olimex_a13-olimex-som endef +define U-Boot/licheepi_nano + BUILD_SUBTARGET:=arm926ejs + NAME:=LicheePi Nano + BUILD_DEVICES:=licheepi-nano +endef + define U-Boot/Linksprite_pcDuino BUILD_SUBTARGET:=cortexa8 NAME:=Linksprite pcDuino @@ -245,6 +251,12 @@ define U-Boot/pangolin UENV:=pangolin endef +define U-Boot/popstick + BUILD_SUBTARGET:=arm926ejs + NAME:=PopStick + BUILD_DEVICES:=popstick-v1.1 +endef + define U-Boot/libretech_all_h3_cc_h5 BUILD_SUBTARGET:=cortexa53 NAME:=Libre Computer ALL-H3-CC H5 @@ -389,6 +401,7 @@ UBOOT_TARGETS := \ Marsboard_A10 \ Mele_M9 \ OLIMEX_A13_SOM \ + licheepi_nano \ Linksprite_pcDuino \ Linksprite_pcDuino3 \ Linksprite_pcDuino3_Nano \ @@ -413,6 +426,7 @@ UBOOT_TARGETS := \ orangepi_zero2 \ orangepi_zero3 \ pangolin \ + popstick \ pine64_plus \ Sinovoip_BPI_M3 \ sopine_baseboard \ diff --git a/package/boot/uboot-sunxi/patches/260-sunxi-add-USB-support-and-PopStick-support.patch b/package/boot/uboot-sunxi/patches/260-sunxi-add-USB-support-and-PopStick-support.patch new file mode 100644 index 0000000000..ecc2eb2d25 --- /dev/null +++ b/package/boot/uboot-sunxi/patches/260-sunxi-add-USB-support-and-PopStick-support.patch @@ -0,0 +1,120 @@ +From 08d194d881e10e09cba7551da8079734d89ed16d Mon Sep 17 00:00:00 2001 +From: Icenowy Zheng +Date: Thu, 16 Jun 2022 00:28:41 +0800 +Subject: [PATCH 1/2] add USB support and PopStick support + +Signed-off-by: Icenowy Zheng +--- + arch/arm/dts/Makefile | 3 +- + arch/arm/dts/suniv-f1c100s-licheepi-nano.dts | 16 ++++ + arch/arm/dts/suniv-f1c100s.dtsi | 26 ++++++ + arch/arm/dts/suniv-f1c200s-popstick.dts | 89 ++++++++++++++++++++ + drivers/phy/allwinner/phy-sun4i-usb.c | 14 +++ + drivers/usb/musb-new/sunxi.c | 6 ++ + 6 files changed, 153 insertions(+), 1 deletion(-) + create mode 100644 arch/arm/dts/suniv-f1c200s-popstick.dts + +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -647,7 +647,8 @@ dtb-$(CONFIG_STM32H7) += stm32h743i-disc + stm32h750i-art-pi.dtb + + dtb-$(CONFIG_MACH_SUNIV) += \ +- suniv-f1c100s-licheepi-nano.dtb ++ suniv-f1c100s-licheepi-nano.dtb \ ++ suniv-f1c200s-popstick.dtb + dtb-$(CONFIG_MACH_SUN4I) += \ + sun4i-a10-a1000.dtb \ + sun4i-a10-ba10-tvbox.dtb \ +--- /dev/null ++++ b/arch/arm/dts/suniv-f1c200s-popstick.dts +@@ -0,0 +1,89 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright 2022 Icenowy Zheng ++ */ ++ ++/dts-v1/; ++#include "suniv-f1c100s.dtsi" ++ ++#include ++ ++/ { ++ model = "Popcorn Computer PopStick"; ++ compatible = "sourceparts,popstick", "allwinner,suniv-f1c200s", ++ "allwinner,suniv-f1c100s"; ++ ++ aliases { ++ mmc0 = &mmc0; ++ serial0 = &uart0; ++ spi0 = &spi0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ reg_vcc3v3: vcc3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++}; ++ ++&mmc0 { ++ broken-cd; ++ bus-width = <4>; ++ disable-wp; ++ status = "okay"; ++ vmmc-supply = <®_vcc3v3>; ++}; ++ ++&spi0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&spi0_pc_pins>; ++ status = "okay"; ++ ++ flash@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "spi-nand"; ++ reg = <0>; ++ spi-max-frequency = <1000000>; ++ ++ partitions { ++ compatible = "fixed-partitions"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ partition@0 { ++ label = "u-boot-with-spl"; ++ reg = <0x0 0x100000>; ++ }; ++ ++ ubi@100000 { ++ label = "ubi"; ++ reg = <0x100000 0x7f00000>; ++ }; ++ }; ++ }; ++}; ++ ++&otg_sram { ++ status = "okay"; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pe_pins>; ++ status = "okay"; ++}; ++ ++&usb_otg { ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++}; diff --git a/package/boot/uboot-sunxi/patches/261-sunxi-add-popstick-defconfig.patch b/package/boot/uboot-sunxi/patches/261-sunxi-add-popstick-defconfig.patch new file mode 100644 index 0000000000..56f8192160 --- /dev/null +++ b/package/boot/uboot-sunxi/patches/261-sunxi-add-popstick-defconfig.patch @@ -0,0 +1,51 @@ +From 0d263e1071ee3f63d2047a8bb9af4434f1cd4bb1 Mon Sep 17 00:00:00 2001 +From: Icenowy Zheng +Date: Thu, 16 Jun 2022 09:46:42 +0800 +Subject: [PATCH 2/2] HACK for UBI env and add defconfig + +--- + board/sunxi/board.c | 1 + + configs/popstick_defconfig | 37 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 38 insertions(+) + create mode 100644 configs/popstick_defconfig + +--- /dev/null ++++ b/configs/popstick_defconfig +@@ -0,0 +1,37 @@ ++CONFIG_ARM=y ++CONFIG_SKIP_LOWLEVEL_INIT_ONLY=y ++CONFIG_SPL_SKIP_LOWLEVEL_INIT_ONLY=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_ENV_SIZE=0x1f000 ++CONFIG_DEFAULT_DEVICE_TREE="suniv-f1c200s-popstick" ++CONFIG_SPL=y ++CONFIG_MACH_SUNIV=y ++CONFIG_DRAM_CLK=156 ++CONFIG_DRAM_ZQ=0 ++# CONFIG_VIDEO_SUNXI is not set ++CONFIG_SPL_SPI_SUNXI=y ++CONFIG_SPL_SPI_SUNXI_NAND=y ++CONFIG_SPL_SPI_SUNXI_NAND_ASSUMED_PAGESIZE=0x800 ++# CONFIG_ANDROID_BOOT_IMAGE is not set ++CONFIG_SYS_SPI_U_BOOT_OFFS=0x20000 ++CONFIG_CMD_MTD=y ++# CONFIG_CMD_SF is not set ++CONFIG_CMD_MTDPARTS=y ++CONFIG_CMD_UBI=y ++# CONFIG_ENV_IS_IN_FAT is not set ++# CONFIG_ENV_IS_IN_SPI_FLASH is not set ++CONFIG_ENV_IS_IN_UBI=y ++CONFIG_ENV_UBI_PART="ubi" ++CONFIG_ENV_UBI_VOLUME="env" ++# CONFIG_NET is not set ++CONFIG_MTD=y ++CONFIG_DM_MTD=y ++CONFIG_MTD_SPI_NAND=y ++# CONFIG_SPI_FLASH is not set ++CONFIG_SF_DEFAULT_SPEED=25000000 ++# CONFIG_UBI_SILENCE_MSG is not set ++CONFIG_PHY_SUN4I_USB=y ++CONFIG_SPI=y ++CONFIG_USB_MUSB_GADGET=y ++CONFIG_USB_FUNCTION_SDP=y ++# CONFIG_UBIFS_SILENCE_MSG is not set diff --git a/target/linux/sunxi/Makefile b/target/linux/sunxi/Makefile index d91e5c5a3e..bd213f3dd8 100644 --- a/target/linux/sunxi/Makefile +++ b/target/linux/sunxi/Makefile @@ -8,7 +8,7 @@ ARCH:=arm BOARD:=sunxi BOARDNAME:=Allwinner ARM SoCs FEATURES:=usb ext4 display rootfs-part rtc squashfs -SUBTARGETS:=cortexa8 cortexa7 cortexa53 +SUBTARGETS:=cortexa8 cortexa7 cortexa53 arm926ejs KERNEL_PATCHVER:=6.6 diff --git a/target/linux/sunxi/arm926ejs/config-6.6 b/target/linux/sunxi/arm926ejs/config-6.6 new file mode 100644 index 0000000000..b1320ee2ea --- /dev/null +++ b/target/linux/sunxi/arm926ejs/config-6.6 @@ -0,0 +1,54 @@ +# CONFIG_ARCH_MULTI_V4 is not set +# CONFIG_ARCH_MULTI_V4T is not set +CONFIG_ARCH_MULTI_V4_V5=y +CONFIG_ARCH_MULTI_V5=y +CONFIG_ARCH_MULTIPLATFORM=y +CONFIG_ARCH_MULTI_CPU_AUTO=y +CONFIG_ARCH_NR_GPIO=416 +CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SUNXI=y +CONFIG_ARCH_32BIT_OFF_T=y +CONFIG_ARCH_HAS_BINFMT_FLAT=y +CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y +CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y +CONFIG_COMPAT_32BIT_TIME=y +# CONFIG_CPU_DCACHE_WRITETHROUGH is not set +# CONFIG_CPU_CACHE_ROUND_ROBIN is not set +CONFIG_MACH_SUNIV=y +# CONFIG_MACH_SUN4I is not set +# CONFIG_MACH_SUN5I is not set +# CONFIG_MACH_SUN6I is not set +# CONFIG_MACH_SUN7I is not set +# CONFIG_MACH_SUN8I is not set +# CONFIG_MACH_SUN9I is not set +CONFIG_MDIO_BUS_MUX=y +CONFIG_MUSB_PIO_ONLY=y +# CONFIG_PHY_SUN9I_USB is not set +# CONFIG_PINCTRL_SUN4I_A10 is not set +# CONFIG_PINCTRL_SUN50I_A64 is not set +# CONFIG_PINCTRL_SUN50I_A64_R is not set +# CONFIG_PINCTRL_SUN50I_H5 is not set +# CONFIG_PINCTRL_SUN50I_H6 is not set +# CONFIG_PINCTRL_SUN50I_H6_R is not set +# CONFIG_PINCTRL_SUN5I is not set +# CONFIG_PINCTRL_SUN6I_A31 is not set +# CONFIG_PINCTRL_SUN6I_A31_R is not set +# CONFIG_PINCTRL_SUN8I_A23 is not set +# CONFIG_PINCTRL_SUN8I_A23_R is not set +# CONFIG_PINCTRL_SUN8I_A33 is not set +# CONFIG_PINCTRL_SUN8I_A83T is not set +# CONFIG_PINCTRL_SUN8I_A83T_R is not set +# CONFIG_PINCTRL_SUN8I_H3 is not set +# CONFIG_PINCTRL_SUN8I_H3_R is not set +# CONFIG_PINCTRL_SUN8I_V3S is not set +# CONFIG_PINCTRL_SUN9I_A80 is not set +# CONFIG_PINCTRL_SUN9I_A80_R is not set +CONFIG_PINCTRL_SUNIV_F1C100S=y +CONFIG_PINCTRL_SUNXI=y +CONFIG_SUNIV_F1C100S_CCU=y +CONFIG_UNWINDER_ARM=y +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_MUSB_DUAL_ROLE=y +CONFIG_USB_MUSB_SUNXI=y diff --git a/target/linux/sunxi/arm926ejs/target.mk b/target/linux/sunxi/arm926ejs/target.mk new file mode 100644 index 0000000000..f37aa30d70 --- /dev/null +++ b/target/linux/sunxi/arm926ejs/target.mk @@ -0,0 +1,11 @@ +# +# Copyright (C) 2024 Zoltan HERPAI +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +BOARDNAME:=Allwinner F1C100/200s +CPU_TYPE:=arm926ej-s diff --git a/target/linux/sunxi/config-6.6 b/target/linux/sunxi/config-6.6 index 3e73f44c90..36f7135571 100644 --- a/target/linux/sunxi/config-6.6 +++ b/target/linux/sunxi/config-6.6 @@ -7,8 +7,6 @@ CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_KEEP_MEMBLOCK=y CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y CONFIG_ARCH_MULTIPLATFORM=y -CONFIG_ARCH_MULTI_V6_V7=y -CONFIG_ARCH_MULTI_V7=y CONFIG_ARCH_NR_GPIO=416 CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y diff --git a/target/linux/sunxi/cortexa7/config-6.6 b/target/linux/sunxi/cortexa7/config-6.6 index 105c090890..386b95ae02 100644 --- a/target/linux/sunxi/cortexa7/config-6.6 +++ b/target/linux/sunxi/cortexa7/config-6.6 @@ -1,3 +1,5 @@ +CONFIG_ARCH_MULTI_V6_V7=y +CONFIG_ARCH_MULTI_V7=y CONFIG_B53=y CONFIG_B53_MDIO_DRIVER=y CONFIG_CRYPTO_BLAKE2S_ARM=y diff --git a/target/linux/sunxi/cortexa8/config-6.6 b/target/linux/sunxi/cortexa8/config-6.6 index b893b3142e..274778dd09 100644 --- a/target/linux/sunxi/cortexa8/config-6.6 +++ b/target/linux/sunxi/cortexa8/config-6.6 @@ -1,3 +1,5 @@ +CONFIG_ARCH_MULTI_V6_V7=y +CONFIG_ARCH_MULTI_V7=y # CONFIG_ARM_LPAE is not set CONFIG_CRYPTO_BLAKE2S_ARM=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y diff --git a/target/linux/sunxi/image/arm926ejs.mk b/target/linux/sunxi/image/arm926ejs.mk new file mode 100644 index 0000000000..1ce230febb --- /dev/null +++ b/target/linux/sunxi/image/arm926ejs.mk @@ -0,0 +1,24 @@ +# +# Copyright (C) 2013-2024 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +KERNEL_LOADADDR=0x81000000 + +define Device/licheepi-nano + DEVICE_VENDOR := LicheePi + DEVICE_MODEL := Nano + DEVICE_PACKAGES := kmod-rtc-sunxi + SOC := suniv-f1c100s +endef +TARGET_DEVICES += licheepi-nano + +define Device/popstick-v1.1 + DEVICE_VENDOR := PopStick + DEVICE_MODEL := v1.1 + DEVICE_PACKAGES := kmod-rtc-sunxi + SOC := suniv-f1c200s +endef +TARGET_DEVICES += popstick-v1.1 diff --git a/target/linux/sunxi/patches-6.6/460-f1c100s-sram-driver.patch b/target/linux/sunxi/patches-6.6/460-f1c100s-sram-driver.patch new file mode 100644 index 0000000000..b08eef98ac --- /dev/null +++ b/target/linux/sunxi/patches-6.6/460-f1c100s-sram-driver.patch @@ -0,0 +1,33 @@ +Allwinner ARMv5 F1C100s has similar sram controller to sun4i A10 +Add compatible strings for it. + +Signed-off-by: Mesih Kilinc +Acked-by: Maxime Ripard +--- + drivers/soc/sunxi/sunxi_sram.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/soc/sunxi/sunxi_sram.c ++++ b/drivers/soc/sunxi/sunxi_sram.c +@@ -99,6 +99,10 @@ static const struct of_device_id sunxi_s + .compatible = "allwinner,sun50i-a64-sram-c", + .data = &sun50i_a64_sram_c.data, + }, ++ { ++ .compatible = "allwinner,suniv-f1c100s-sram-d", ++ .data = &sun4i_a10_sram_d.data, ++ }, + {} + }; + +@@ -432,6 +436,10 @@ static const struct of_device_id sunxi_s + .compatible = "allwinner,sun50i-h616-system-control", + .data = &sun50i_h616_sramc_variant, + }, ++ { ++ .compatible = "allwinner,suniv-f1c100s-system-control", ++ .data = &sun4i_a10_sramc_variant, ++ }, + { }, + }; + MODULE_DEVICE_TABLE(of, sunxi_sram_dt_match); diff --git a/target/linux/sunxi/patches-6.6/461-f1c100s-watchdog-compat.patch b/target/linux/sunxi/patches-6.6/461-f1c100s-watchdog-compat.patch new file mode 100644 index 0000000000..8baf969a0f --- /dev/null +++ b/target/linux/sunxi/patches-6.6/461-f1c100s-watchdog-compat.patch @@ -0,0 +1,18 @@ +Allwinner ARMv5 F1C100s has similar watchdog timer to sun6i A31. +Add compatible string for it. + +Signed-off-by: Mesih Kilinc +--- + drivers/watchdog/sunxi_wdt.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/watchdog/sunxi_wdt.c ++++ b/drivers/watchdog/sunxi_wdt.c +@@ -240,6 +240,7 @@ static const struct of_device_id sunxi_w + { .compatible = "allwinner,sun4i-a10-wdt", .data = &sun4i_wdt_reg }, + { .compatible = "allwinner,sun6i-a31-wdt", .data = &sun6i_wdt_reg }, + { .compatible = "allwinner,sun20i-d1-wdt", .data = &sun20i_wdt_reg }, ++ { .compatible = "allwinner,suniv-f1c100s-wdt", .data = &sun6i_wdt_reg }, + { /* sentinel */ } + }; + MODULE_DEVICE_TABLE(of, sunxi_wdt_dt_ids);