From 00db730a70b02d62d612d96e6ff57790168fd3b2 Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Thu, 10 Mar 2022 21:43:46 -0600 Subject: [PATCH] sunxi: Use sunxi-common.h for D1 port This shows the changes needed to sunxi-common.h, so it makes upstreaming a little bit easier. Signed-off-by: Samuel Holland --- arch/arm/include/asm/arch-sunxi/i2c.h | 3 -- board/sunxi/Kconfig | 5 +- boot/Kconfig | 5 +- include/configs/sun20i.h | 71 --------------------------- include/configs/sunxi-common.h | 38 ++++++++++++-- 5 files changed, 38 insertions(+), 84 deletions(-) delete mode 100644 include/configs/sun20i.h diff --git a/arch/arm/include/asm/arch-sunxi/i2c.h b/arch/arm/include/asm/arch-sunxi/i2c.h index 3525f22e7df..7b8ef2e1f46 100644 --- a/arch/arm/include/asm/arch-sunxi/i2c.h +++ b/arch/arm/include/asm/arch-sunxi/i2c.h @@ -17,7 +17,4 @@ #define CONFIG_I2C_MVTWSI_BASE2 SUNXI_R_TWI_BASE #endif -/* This is abp0-clk on sun4i/5i/7i / abp1-clk on sun6i/sun8i which is 24MHz */ -#define CONFIG_SYS_TCLK 24000000 - #endif diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig index 6eee18dd6a7..def19fcab77 100644 --- a/board/sunxi/Kconfig +++ b/board/sunxi/Kconfig @@ -61,7 +61,7 @@ config SYS_BOARD default "sunxi" config SYS_CONFIG_NAME - default "sun20i" if MACH_SUN20I + default "sunxi-common" if MACH_SUN20I config SYS_CPU default "generic" if MACH_SUN20I @@ -69,9 +69,6 @@ config SYS_CPU config SYS_SOC default "sunxi" -config SYS_TEXT_BASE - default 0x4a000000 if MACH_SUN20I - config BOARD_SPECIFIC_OPTIONS def_bool y select CLK diff --git a/boot/Kconfig b/boot/Kconfig index b83a4e84000..f52eecd1967 100644 --- a/boot/Kconfig +++ b/boot/Kconfig @@ -364,7 +364,10 @@ config SYS_TEXT_BASE default 0x80800000 if ARCH_OMAP2PLUS || ARCH_K3 default 0x81700000 if MACH_SUNIV default 0x2a000000 if MACH_SUN9I - default 0x42e00000 if MACH_SUN8I_V3S + # We should use the smaller address like V3S to support D1s, + # but this is a breaking change. + default 0x4a000000 if MACH_SUN20I + default 0x42e00000 if MACH_SUN8I_V3S || MACH_SUN20I default 0x4a000000 if ARCH_SUNXI hex "Text Base" help diff --git a/include/configs/sun20i.h b/include/configs/sun20i.h deleted file mode 100644 index f463d289bd1..00000000000 --- a/include/configs/sun20i.h +++ /dev/null @@ -1,71 +0,0 @@ -#include - -#define CONFIG_SYS_CACHELINE_SIZE 64 - -/* FIXME: Need a real clock driver! */ -#define CONFIG_SYS_NS16550_CLK 24000000 -#define CONFIG_SYS_TCLK 24000000 - -#ifdef CONFIG_USB_EHCI_HCD -#define CONFIG_USB_OHCI_NEW -#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 1 -#endif - -#define CONFIG_SYS_INIT_SP_ADDR 0x4fe00000 -#define CONFIG_SPL_BSS_MAX_SIZE 0x00080000 /* 512 KiB */ -#define CONFIG_SPL_BSS_START_ADDR 0x4ff80000 -#define CONFIG_SPL_STACK 0x00048000 - -#define SDRAM_OFFSET(x) 0x4##x -#define BOOTM_SIZE __stringify(0xa000000) -#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(0200000)) -#define KERNEL_COMP_ADDR_R __stringify(SDRAM_OFFSET(4000000)) -#define KERNEL_COMP_SIZE __stringify(0xb000000) -#define FDT_ADDR_R __stringify(SDRAM_OFFSET(FA00000)) -#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(FC00000)) -#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(FD00000)) -#define FDTOVERLAY_ADDR_R __stringify(SDRAM_OFFSET(FE00000)) -#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(FF00000)) - -#define MEM_LAYOUT_ENV_SETTINGS \ - "bootm_size=" BOOTM_SIZE "\0" \ - "fdt_addr_r=" FDT_ADDR_R "\0" \ - "fdtoverlay_addr_r=" FDTOVERLAY_ADDR_R "\0" \ - "kernel_addr_r=" KERNEL_ADDR_R "\0" \ - "kernel_comp_addr_r=" KERNEL_COMP_ADDR_R "\0" \ - "kernel_comp_size=" KERNEL_COMP_SIZE "\0" \ - "pxefile_addr_r=" PXEFILE_ADDR_R "\0" \ - "ramdisk_addr_r=" RAMDISK_ADDR_R "\0" \ - "scriptaddr=" SCRIPT_ADDR_R "\0" - -#ifdef CONFIG_MMC -#define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0) -#else -#define BOOT_TARGET_DEVICES_MMC(func) -#endif - -#ifdef CONFIG_USB_STORAGE -#define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0) -#else -#define BOOT_TARGET_DEVICES_USB(func) -#endif - -#ifdef CONFIG_CMD_DHCP -#define BOOT_TARGET_DEVICES_DHCP(func) func(DHCP, dhcp, na) -#else -#define BOOT_TARGET_DEVICES_DHCP(func) -#endif - -#define BOOT_TARGET_DEVICES(func) \ - BOOT_TARGET_DEVICES_MMC(func) \ - BOOT_TARGET_DEVICES_USB(func) \ - BOOT_TARGET_DEVICES_DHCP(func) - -#include -#include - -#define CONFIG_EXTRA_ENV_SETTINGS \ - MEM_LAYOUT_ENV_SETTINGS \ - "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ - BOOTENV \ - BOOTENV_SF diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h index 4bab917c0b7..7b158f079bb 100644 --- a/include/configs/sunxi-common.h +++ b/include/configs/sunxi-common.h @@ -12,7 +12,10 @@ #ifndef _SUNXI_COMMON_CONFIG_H #define _SUNXI_COMMON_CONFIG_H +#ifndef CONFIG_DM_SERIAL #include +#endif + #include #ifdef CONFIG_ARM64 @@ -37,9 +40,20 @@ # define CONFIG_SYS_NS16550_COM5 SUNXI_R_UART_BASE #endif +/* I2C */ +#ifdef CONFIG_MACH_SUNIV +#define CONFIG_SYS_TCLK 100000000 +#else +#define CONFIG_SYS_TCLK 24000000 +#endif + /* CPU */ #define COUNTER_FREQUENCY 24000000 +#ifdef CONFIG_RISCV +#define CONFIG_SYS_CACHELINE_SIZE 64 +#endif + /* * The DRAM Base differs between some models. We cannot use macros for the * CONFIG_FOO defines which contain the DRAM base address since they end @@ -87,7 +101,11 @@ */ #define CONFIG_SYS_INIT_RAM_ADDR CONFIG_SUNXI_SRAM_ADDRESS /* FIXME: this may be larger on some SoCs */ +#ifdef CONFIG_RISCV +#define CONFIG_SYS_INIT_RAM_SIZE 0x28000 /* 160 KiB */ +#else #define CONFIG_SYS_INIT_RAM_SIZE 0x8000 /* 32 KiB */ +#endif #define CONFIG_SYS_INIT_SP_OFFSET \ (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE) @@ -149,10 +167,12 @@ #ifdef CONFIG_MACH_SUN50I_H616 #define CONFIG_SPL_MAX_SIZE 0xbfa0 /* 48 KiB */ #define LOW_LEVEL_SRAM_STACK 0x58000 -#else +#elif defined(CONFIG_MACH_SUN50I_H6) #define CONFIG_SPL_MAX_SIZE 0x7fa0 /* 32 KiB */ /* end of SRAM A2 on H6 for now */ #define LOW_LEVEL_SRAM_STACK 0x00118000 +#else /* CONFIG_RISCV */ +#define LOW_LEVEL_SRAM_STACK CONFIG_SYS_INIT_SP_ADDR #endif #else #define CONFIG_SPL_MAX_SIZE 0x5fa0 /* 24KB on sun4i/sun7i */ @@ -161,7 +181,7 @@ #define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACK -#ifndef CONFIG_MACH_SUN50I_H616 +#if !defined(CONFIG_MACH_SUN50I_H616) && !defined(CONFIG_RISCV) #define CONFIG_SPL_PAD_TO 32768 /* decimal for 'dd' */ #endif @@ -193,14 +213,18 @@ #define FDTOVERLAY_ADDR_R __stringify(SDRAM_OFFSET(FE00000)) #define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(FF00000)) -#elif defined(CONFIG_MACH_SUN8I_V3S) +#elif defined(CONFIG_MACH_SUN8I_V3S) || defined(CONFIG_RISCV) /* * 64M RAM minus 2MB heap + 16MB for u-boot, stack, fb, etc. * 16M uncompressed kernel, 8M compressed kernel, 1M fdt, * 1M script, 1M pxe, 1M dt overlay and the ramdisk at the end. */ #define BOOTM_SIZE __stringify(0x2e00000) +#ifdef CONFIG_RISCV +#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(0040000)) +#else #define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(1000000)) +#endif #define FDT_ADDR_R __stringify(SDRAM_OFFSET(1800000)) #define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(1900000)) #define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(1A00000)) @@ -347,6 +371,7 @@ #endif #include +#include #ifdef CONFIG_USB_KEYBOARD #define CONSOLE_STDIN_SETTINGS \ @@ -390,6 +415,8 @@ #ifdef CONFIG_ARM64 #define UUID_GPT_SYSTEM "b921b045-1df0-41c3-af44-4c6f280d3fae" +#elif defined(CONFIG_RISCV) +#define UUID_GPT_SYSTEM "72ec70a6-cf74-40e6-bd49-4bda08e8f224" #else #define UUID_GPT_SYSTEM "69dad710-2ce4-4e3c-b16c-21a1d49abed3" #endif @@ -398,7 +425,7 @@ CONSOLE_STDIN_SETTINGS \ CONSOLE_STDOUT_SETTINGS -#ifdef CONFIG_ARM64 +#if defined(CONFIG_ARM64) || defined(CONFIG_RISCV) #define FDTFILE "allwinner/" CONFIG_DEFAULT_DEVICE_TREE ".dtb" #else #define FDTFILE CONFIG_DEFAULT_DEVICE_TREE ".dtb" @@ -417,7 +444,8 @@ "uuid_gpt_system=" UUID_GPT_SYSTEM "\0" \ "partitions=" PARTS_DEFAULT "\0" \ BOOTCMD_SUNXI_COMPAT \ - BOOTENV + BOOTENV \ + BOOTENV_SF #else /* ifndef CONFIG_SPL_BUILD */ #define CONFIG_EXTRA_ENV_SETTINGS