
Hi,
Isn't evb short for evaluation board? That makes board board then. ;)
Am 15.07.2016 um 10:42 schrieb Kever Yang:
RK3399 is a SoC from Rockchip with dual-core Cortex-A72 and qual-core Cortex-A53 CPU. It supports two USB3.0
quad-core
type-C ports and two USB2.0 EHCI ports. Other interfaces are very like RK3288, the DRAM are 32bit width address
"very much like" or "very similar to"
and support address from 0 to 4GB-128MB range.
Signed-off-by: Kever Yang kever.yang@rock-chips.com
Changes in v3: Rebase on patch from Andreas: [PATCH] rockchip: Exclude rk_timer for ARM64 [PATCH] rockchip: Clean up CPU selection
Changes in v2: fix description error on board Kconfig
arch/arm/Kconfig | 2 - arch/arm/mach-rockchip/Kconfig | 22 ++++++++- arch/arm/mach-rockchip/rk3399/Kconfig | 14 ++++++ arch/arm/mach-rockchip/rk3399/Makefile | 5 ++ board/rockchip/evb_rk3399/Kconfig | 15 ++++++ board/rockchip/evb_rk3399/MAINTAINERS | 0 board/rockchip/evb_rk3399/Makefile | 7 +++ board/rockchip/evb_rk3399/evb-rk3399.c | 41 +++++++++++++++++ include/configs/evb_rk3399.h | 24 ++++++++++ include/configs/rk3399_common.h | 84 ++++++++++++++++++++++++++++++++++ 10 files changed, 211 insertions(+), 3 deletions(-) create mode 100644 arch/arm/mach-rockchip/rk3399/Kconfig create mode 100644 arch/arm/mach-rockchip/rk3399/Makefile create mode 100644 board/rockchip/evb_rk3399/Kconfig create mode 100644 board/rockchip/evb_rk3399/MAINTAINERS create mode 100644 board/rockchip/evb_rk3399/Makefile create mode 100644 board/rockchip/evb_rk3399/evb-rk3399.c create mode 100644 include/configs/evb_rk3399.h create mode 100644 include/configs/rk3399_common.h
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index a262145..6e4d78a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -846,8 +846,6 @@ config STM32
config ARCH_ROCKCHIP bool "Support Rockchip SoCs"
- select SUPPORT_SPL
- select SPL select OF_CONTROL select DM
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index d3f5ffd..8499692 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -9,6 +9,10 @@ config ROCKCHIP_RK3288 video interfaces supporting HDMI and eDP, several DDR3 options and video codec support. Peripherals include Gigabit Ethernet, USB2 host and OTG, SDIO, I2S, UART,s, SPI, I2C and PWMs.
- select CPU_V7
- select RK_TIMER
You no longer define RK_TIMER - either please do (I liked it) or drop the selection, it leads to warnings on, e.g., firefly-rk3288_defconfig otherwise.
- select SUPPORT_SPL
- select SPL
config ROCKCHIP_RK3036 bool "Support Rockchip RK3036" @@ -18,6 +22,21 @@ config ROCKCHIP_RK3036 including NEON and GPU, Mali-400 graphics, several DDR3 options and video codec support. Peripherals include Gigabit Ethernet, USB2 host and OTG, SDIO, I2S, UART, SPI, I2C and PWMs.
- select CPU_V7
- select RK_TIMER
- select SUPPORT_SPL
- select SPL
+config ROCKCHIP_RK3399
- bool "Support Rockchip RK3399"
- help
The Rockchip RK3399 is a ARM-based SoC with a dual-core Cortex-A72
and qual-core Cortex-A53.
quad-core
including NEON and GPU, 1MB L2 cache, Mali-T7 graphics, two
video interfaces supporting HDMI and eDP, several DDR3 options
and video codec support. Peripherals include Gigabit Ethernet,
USB2 host and OTG, SDIO, I2S, UART,s, SPI, I2C and PWMs.
UARTs
- select ARM64
config SYS_MALLOC_F default y @@ -44,8 +63,9 @@ config DM_GPIO default y
config BLK
- default y
- default y if CPU_V7
Needs rebasing onto u-boot-rockchip.git.
source "arch/arm/mach-rockchip/rk3288/Kconfig" source "arch/arm/mach-rockchip/rk3036/Kconfig" +source "arch/arm/mach-rockchip/rk3399/Kconfig" endif diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig new file mode 100644 index 0000000..923a6de --- /dev/null +++ b/arch/arm/mach-rockchip/rk3399/Kconfig @@ -0,0 +1,14 @@ +if ROCKCHIP_RK3399
+config TARGET_EVB_RK3399
- bool "RK3399 evb board"
Should this be enclosed in a choice section for futureproofness?
+config SYS_SOC
- default "rockchip"
+config SYS_MALLOC_F_LEN
- default 0x0800
+source "board/rockchip/evb_rk3399/Kconfig"
+endif diff --git a/arch/arm/mach-rockchip/rk3399/Makefile b/arch/arm/mach-rockchip/rk3399/Makefile new file mode 100644 index 0000000..ca69207 --- /dev/null +++ b/arch/arm/mach-rockchip/rk3399/Makefile @@ -0,0 +1,5 @@ +# +# Copyright (C) 2016 Rockchip Electronics Co., Ltd +# +# SPDX-License-Identifier: GPL-2.0+ +#
Needed?
diff --git a/board/rockchip/evb_rk3399/Kconfig b/board/rockchip/evb_rk3399/Kconfig new file mode 100644 index 0000000..412b81c --- /dev/null +++ b/board/rockchip/evb_rk3399/Kconfig @@ -0,0 +1,15 @@ +if TARGET_EVB_RK3399
+config SYS_BOARD
- default "evb_rk3399"
+config SYS_VENDOR
- default "rockchip"
+config SYS_CONFIG_NAME
- default "evb_rk3399"
+config BOARD_SPECIFIC_OPTIONS # dummy
- def_bool y
+endif diff --git a/board/rockchip/evb_rk3399/MAINTAINERS b/board/rockchip/evb_rk3399/MAINTAINERS new file mode 100644 index 0000000..e69de29 diff --git a/board/rockchip/evb_rk3399/Makefile b/board/rockchip/evb_rk3399/Makefile new file mode 100644 index 0000000..aaa51c2 --- /dev/null +++ b/board/rockchip/evb_rk3399/Makefile @@ -0,0 +1,7 @@ +# +# (C) Copyright 2016 Rockchip Electronics Co., Ltd +# +# SPDX-License-Identifier: GPL-2.0+ +#
+obj-y += evb-rk3399.o diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c b/board/rockchip/evb_rk3399/evb-rk3399.c new file mode 100644 index 0000000..357b08b --- /dev/null +++ b/board/rockchip/evb_rk3399/evb-rk3399.c @@ -0,0 +1,41 @@ +/*
- (C) Copyright 2016 Rockchip Electronics Co., Ltd
- SPDX-License-Identifier: GPL-2.0+
- */
+#include <dm.h>
Needed? Order/spacing.
+#include <common.h> +#include <asm/armv8/mmu.h>
+DECLARE_GLOBAL_DATA_PTR;
+static struct mm_region rk3399_mem_map[] = {
- {
.base = 0x0UL,
.size = 0x80000000UL,
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
PTE_BLOCK_INNER_SHARE
- }, {
.base = 0xf0000000UL,
.size = 0x10000000UL,
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
PTE_BLOCK_NON_SHARE |
PTE_BLOCK_PXN | PTE_BLOCK_UXN
- }, {
/* List terminator */
0,
- }
+};
+struct mm_region *mem_map = rk3399_mem_map;
+int board_init(void) +{
- return 0;
+}
+int dram_init(void) +{
- gd->ram_size = 0x80000000;
- return 0;
+}
You'll need to implement dram_init_banksize() to avoid "DRAM: 0 Bytes"?
diff --git a/include/configs/rk3399_common.h b/include/configs/rk3399_common.h new file mode 100644 index 0000000..1c13e2e --- /dev/null +++ b/include/configs/rk3399_common.h @@ -0,0 +1,84 @@ +/*
- (C) Copyright 2016 Rockchip Electronics Co., Ltd
- SPDX-License-Identifier: GPL-2.0+
- */
+#ifndef __CONFIG_RK3399_COMMON_H +#define __CONFIG_RK3399_COMMON_H
+#define CONFIG_SYS_CACHELINE_SIZE 64
+#include <asm/arch/hardware.h>
+#define CONFIG_SYS_NO_FLASH +#define CONFIG_NR_DRAM_BANKS 1 +#define CONFIG_ENV_SIZE 0x2000 +#define CONFIG_SYS_MAXARGS 16 +#define CONFIG_BAUDRATE 1500000 +#define CONFIG_SYS_MALLOC_LEN (32 << 20) +#define CONFIG_SYS_CBSIZE 1024 +#define CONFIG_SKIP_LOWLEVEL_INIT +#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_SYS_NS16550
Please make this a Kconfig selection to avoid confusion.
+#define CONFIG_SYS_NS16550_MEM32
+#define CONFIG_SYS_TEXT_BASE 0x00200000 +#define CONFIG_SYS_INIT_SP_ADDR 0x00300000 +#define CONFIG_SYS_LOAD_ADDR 0x00800800
+#define CONFIG_ROCKCHIP_COMMON
This is defined by other boards, but no one seems to checks it. Suggest to drop it here and elsewhere.
+#define CONFIG_SYS_BOOTM_LEN (64 << 20) /* 64M */
+/* MMC/SD IP block */ +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_SDHCI +#define CONFIG_BOUNCE_BUFFER +#define CONFIG_ROCKCHIP_SDHCI_MAX_FREQ 200000000
+#define CONFIG_DOS_PARTITION
This one is selected by config_distro_defaults.h already.
+#define CONFIG_FAT_WRITE +#define CONFIG_PARTITION_UUIDS +#define CONFIG_CMD_PART
These two are selected by config_distro_bootcmd.h already.
+/* RAW SD card / eMMC locations. */ +#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 256 +#define CONFIG_SYS_SPI_U_BOOT_OFFS (128 << 10)
+/* FAT sd card locations. */ +#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1 +#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
+#define CONFIG_SPL_PINCTRL_SUPPORT +#define CONFIG_SPL_RAM_SUPPORT +#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
Given that you moved SPL to rk3288, these are quite a few unneeded SPL symbols?
+#define CONFIG_SYS_SDRAM_BASE 0 +#define CONFIG_NR_DRAM_BANKS 1 +#define SDRAM_BANK_SIZE (2UL << 30)
Move size into evb config? (commit message says up to ~4GB) Possibly move banks too or is it always 1?
+#define CONFIG_SPI_FLASH +#define CONFIG_SPI +#define CONFIG_SF_DEFAULT_SPEED 20000000
+#ifndef CONFIG_SPL_BUILD +#include <config_distro_defaults.h>
+#define ENV_MEM_LAYOUT_SETTINGS \
- "scriptaddr=0x00000000\0" \
- "pxefile_addr_r=0x00100000\0" \
- "fdt_addr_r=0x01f00000\0" \
- "kernel_addr_r=0x02000000\0" \
- "ramdisk_addr_r=0x04000000\0"
+/* First try to boot from SD (index 0), then eMMC (index 1 */
")" missing.
+#define BOOT_TARGET_DEVICES(func) \
- func(MMC, mmc, 0) \
- func(MMC, mmc, 1)
+#include <config_distro_bootcmd.h> +#endif
+#endif
Regards, Andreas