Am 18.07.2016 um 03:06 schrieb Andreas Färber:
> The RK3368 is an octa-core Cortex-A53 SoC from Rockchip.
> 
> The GeekBox is a TV box from GeekBuying, based on an MXM3 module.
> The module can be used with base boards such as the GeekBox Landingship.
> 
> This adds basic support to chain-load U-Boot from Rockchip's miniloader.
> 
>   $ ./lollipop_u-boot/tools/loaderimage --pack u-boot.bin u-boot.img
>   # ./utils/upgrade_tool di uboot u-boot.img
> 
> Implemented is the serial console, but no boot media drivers yet.
> 
> Note that flashing the resulting U-Boot will not allow you to enter the
> rockusb mode any more via "Update" button. Instead, you will need to
> short two pins on the bottom of the module to enter MaskRom mode and
> re-flash the loader:
> 
>   # ./utils/upgrade_tool ul ./lollipop_u-boot/RK3368MiniLoaderAll_V2.40.bin
>   # ./utils/upgrade_tool di uboot u-boot.img
> 
> Signed-off-by: Andreas Färber <afaer...@suse.de>
> ---
>  arch/arm/Kconfig                       |  4 ---
>  arch/arm/dts/rk3368.dtsi               |  1 +
>  arch/arm/mach-rockchip/Kconfig         | 14 ++++++++++
>  arch/arm/mach-rockchip/Makefile        |  1 +
>  arch/arm/mach-rockchip/rk3368/Kconfig  | 14 ++++++++++
>  arch/arm/mach-rockchip/rk3368/Makefile |  7 +++++
>  arch/arm/mach-rockchip/rk3368/rk3368.c | 28 ++++++++++++++++++++
>  board/geekbuying/geekbox/Kconfig       | 15 +++++++++++
>  board/geekbuying/geekbox/Makefile      |  7 +++++
>  board/geekbuying/geekbox/geekbox.c     | 26 +++++++++++++++++++
>  configs/geekbox_defconfig              | 20 +++++++++++++++
>  include/configs/geekbox.h              | 19 ++++++++++++++
>  include/configs/rk3368_common.h        | 47 
> ++++++++++++++++++++++++++++++++++
>  13 files changed, 199 insertions(+), 4 deletions(-)
>  create mode 100644 arch/arm/mach-rockchip/rk3368/Kconfig
>  create mode 100644 arch/arm/mach-rockchip/rk3368/Makefile
>  create mode 100644 arch/arm/mach-rockchip/rk3368/rk3368.c
>  create mode 100644 board/geekbuying/geekbox/Kconfig
>  create mode 100644 board/geekbuying/geekbox/Makefile
>  create mode 100644 board/geekbuying/geekbox/geekbox.c
>  create mode 100644 configs/geekbox_defconfig
>  create mode 100644 include/configs/geekbox.h
>  create mode 100644 include/configs/rk3368_common.h
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index f9fddad..4ff1a26 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -838,14 +838,10 @@ config STM32
>  
>  config ARCH_ROCKCHIP
>       bool "Support Rockchip SoCs"
> -     select SUPPORT_SPL
> -     select SPL
>       select OF_CONTROL
>       select BLK
>       select DM
> -     select SPL_DM
>       select SYS_MALLOC_F
> -     select SPL_SYS_MALLOC_SIMPLE
>       select DM_GPIO
>       select DM_I2C
>       select DM_MMC
> diff --git a/arch/arm/dts/rk3368.dtsi b/arch/arm/dts/rk3368.dtsi
> index 8b4a7c9..3ab7edc 100644
> --- a/arch/arm/dts/rk3368.dtsi
> +++ b/arch/arm/dts/rk3368.dtsi
> @@ -609,6 +609,7 @@
>       uart2: serial@ff690000 {
>               compatible = "rockchip,rk3368-uart", "snps,dw-apb-uart";
>               reg = <0x0 0xff690000 0x0 0x100>;
> +             clock-frequency = <24000000>;
>               clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
>               clock-names = "baudclk", "apb_pclk";
>               interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
> index 86b77f8..597f043 100644
> --- a/arch/arm/mach-rockchip/Kconfig
> +++ b/arch/arm/mach-rockchip/Kconfig
> @@ -3,6 +3,10 @@ if ARCH_ROCKCHIP
>  config ROCKCHIP_RK3288
>       bool "Support Rockchip RK3288"
>       select CPU_V7
> +     select SUPPORT_SPL
> +     select SPL
> +     select SPL_DM
> +     select SPL_SYS_MALLOC_SIMPLE
>       help
>         The Rockchip RK3288 is a ARM-based SoC with a quad-core Cortex-A17
>         including NEON and GPU, 1MB L2 cache, Mali-T7 graphics, two
> @@ -13,12 +17,21 @@ config ROCKCHIP_RK3288
>  config ROCKCHIP_RK3036
>       bool "Support Rockchip RK3036"
>       select CPU_V7
> +     select SUPPORT_SPL
> +     select SPL
> +     select SPL_DM
> +     select SPL_SYS_MALLOC_SIMPLE
>       help
>         The Rockchip RK3036 is a ARM-based SoC with a dual-core Cortex-A7
>         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.
>  
> +config ROCKCHIP_RK3368
> +     bool "Support Rockchip RK3368"
> +     select ARM64
> +     select SYS_NS16550
> +
>  config ROCKCHIP_SPL_BACK_TO_BROM
>       bool "SPL returns to bootrom"
>       default y if ROCKCHIP_RK3036
> @@ -29,4 +42,5 @@ config ROCKCHIP_SPL_BACK_TO_BROM
>  
>  source "arch/arm/mach-rockchip/rk3288/Kconfig"
>  source "arch/arm/mach-rockchip/rk3036/Kconfig"
> +source "arch/arm/mach-rockchip/rk3368/Kconfig"
>  endif
> diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
> index 6763af4..48e78c1 100644
> --- a/arch/arm/mach-rockchip/Makefile
> +++ b/arch/arm/mach-rockchip/Makefile
> @@ -16,3 +16,4 @@ obj-y += rk_timer.o
>  endif
>  obj-$(CONFIG_ROCKCHIP_RK3288) += rk3288/
>  obj-$(CONFIG_ROCKCHIP_RK3036) += rk3036/
> +obj-$(CONFIG_ROCKCHIP_RK3368) += rk3368/
> diff --git a/arch/arm/mach-rockchip/rk3368/Kconfig 
> b/arch/arm/mach-rockchip/rk3368/Kconfig
> new file mode 100644
> index 0000000..5f2cd53
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3368/Kconfig
> @@ -0,0 +1,14 @@
> +if ROCKCHIP_RK3368
> +
> +config TARGET_GEEKBOX
> +     bool "GeekBox"
> +
> +config SYS_SOC
> +     default "rockchip"
> +
> +config SYS_MALLOC_F_LEN
> +     default 0x0800
> +
> +source "board/geekbuying/geekbox/Kconfig"
> +
> +endif
> diff --git a/arch/arm/mach-rockchip/rk3368/Makefile 
> b/arch/arm/mach-rockchip/rk3368/Makefile
> new file mode 100644
> index 0000000..3e20498
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3368/Makefile
> @@ -0,0 +1,7 @@
> +#
> +# Copyright (c) 2016 Andreas Färber
> +#
> +# SPDX-License-Identifier:   GPL-2.0+
> +#
> +
> +obj-y                += rk3368.o
> diff --git a/arch/arm/mach-rockchip/rk3368/rk3368.c 
> b/arch/arm/mach-rockchip/rk3368/rk3368.c
> new file mode 100644
> index 0000000..dd34fed
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3368/rk3368.c
> @@ -0,0 +1,28 @@
> +/*
> + * Copyright (c) 2016 Andreas Färber

Copied from rk3399, should reproduce Rockchip copyright.

> + *
> + * SPDX-License-Identifier:     GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <asm/armv8/mmu.h>
> +
> +static struct mm_region rk3368_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 = rk3368_mem_map;
> diff --git a/board/geekbuying/geekbox/Kconfig 
> b/board/geekbuying/geekbox/Kconfig
> new file mode 100644
> index 0000000..41aa8fb
> --- /dev/null
> +++ b/board/geekbuying/geekbox/Kconfig
> @@ -0,0 +1,15 @@
> +if TARGET_GEEKBOX
> +
> +config SYS_BOARD
> +     default "geekbox"
> +
> +config SYS_VENDOR
> +     default "geekbuying"
> +
> +config SYS_CONFIG_NAME
> +     default "geekbox"
> +
> +config BOARD_SPECIFIC_OPTIONS # dummy
> +     def_bool y
> +
> +endif
> diff --git a/board/geekbuying/geekbox/Makefile 
> b/board/geekbuying/geekbox/Makefile
> new file mode 100644
> index 0000000..5c1d66c
> --- /dev/null
> +++ b/board/geekbuying/geekbox/Makefile
> @@ -0,0 +1,7 @@
> +#
> +# Copyright (c) 2016 Andreas Färber
> +#
> +# SPDX-License-Identifier:   GPL-2.0+
> +#
> +
> +obj-y        += geekbox.o
> diff --git a/board/geekbuying/geekbox/geekbox.c 
> b/board/geekbuying/geekbox/geekbox.c
> new file mode 100644
> index 0000000..4a9c4ff
> --- /dev/null
> +++ b/board/geekbuying/geekbox/geekbox.c
> @@ -0,0 +1,26 @@
> +/*
> + * Copyright (c) 2016 Andreas Färber
> + *
> + * SPDX-License-Identifier:     GPL-2.0+
> + */
> +
> +#include <common.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +int board_init(void)
> +{
> +     return 0;
> +}
> +
> +int dram_init(void)
> +{
> +     gd->ram_size = 0x80000000;
> +     return 0;
> +}
> +
> +void dram_init_banksize(void)
> +{
> +     gd->bd->bi_dram[0].start = 0;
> +     gd->bd->bi_dram[0].size = 0x80000000;
> +}
> diff --git a/configs/geekbox_defconfig b/configs/geekbox_defconfig
> new file mode 100644
> index 0000000..6e82c22
> --- /dev/null
> +++ b/configs/geekbox_defconfig
> @@ -0,0 +1,20 @@
> +CONFIG_ARM=y
> +CONFIG_ARCH_ROCKCHIP=y
> +CONFIG_ROCKCHIP_RK3368=y
> +CONFIG_TARGET_GEEKBOX=y
> +CONFIG_DEFAULT_DEVICE_TREE="rk3368-geekbox"
> +CONFIG_HUSH_PARSER=y
> +# CONFIG_CMD_IMLS is not set
> +CONFIG_REGMAP=y
> +CONFIG_SYSCON=y
> +CONFIG_CLK=y
> +CONFIG_SYSRESET=y
> +CONFIG_PINCTRL=y
> +CONFIG_RAM=y

Not all of these may actually be necessary? Ditto for rk3399.

> +CONFIG_DEBUG_UART=y
> +CONFIG_DEBUG_UART_BASE=0xFF690000
> +CONFIG_DEBUG_UART_CLOCK=24000000
> +CONFIG_DEBUG_UART_SHIFT=2
> +CONFIG_DEBUG_UART_ANNOUNCE=y

This one didn't work and should be dropped anyway.

> +CONFIG_DEBUG_UART_SKIP_INIT=y
> +CONFIG_ERRNO_STR=y
> diff --git a/include/configs/geekbox.h b/include/configs/geekbox.h
> new file mode 100644
> index 0000000..47490f1
> --- /dev/null
> +++ b/include/configs/geekbox.h
> @@ -0,0 +1,19 @@
> +/*
> + * Copyright (c) 2016 Andreas Färber
> + *
> + * SPDX-License-Identifier:     GPL-2.0+
> + */
> +
> +#ifndef __CONFIGS_GEEKBOX_H
> +#define __CONFIGS_GEEKBOX_H
> +
> +#include <configs/rk3368_common.h>
> +
> +#define CONFIG_ENV_IS_NOWHERE
> +#define CONFIG_ENV_SIZE                      0x2000
> +#define CONFIG_SYS_NO_FLASH
> +
> +#define CONFIG_SYS_WHITE_ON_BLACK
> +#define CONFIG_CONSOLE_SCROLL_LINES          10
> +
> +#endif
> diff --git a/include/configs/rk3368_common.h b/include/configs/rk3368_common.h
> new file mode 100644
> index 0000000..27ff1b9
> --- /dev/null
> +++ b/include/configs/rk3368_common.h
> @@ -0,0 +1,47 @@
> +/*
> + * Copyright (c) 2016 Andreas Färber
> + *
> + * SPDX-License-Identifier:     GPL-2.0+
> + */
> +
> +#ifndef __CONFIG_RK3368_COMMON_H
> +#define __CONFIG_RK3368_COMMON_H
> +
> +#define CONFIG_SYS_CACHELINE_SIZE    64
> +
> +#include <asm/arch/hardware.h>
> +#include <linux/sizes.h>
> +
> +#define CONFIG_NR_DRAM_BANKS         1
> +#define CONFIG_SYS_MAXARGS           16
> +#define CONFIG_BAUDRATE                      115200
> +#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

Leftover, replaced by Kconfig.

> +#define CONFIG_SYS_NS16550_MEM32
> +
> +#ifdef CONFIG_SPL_BUILD
> +#define CONFIG_SYS_TEXT_BASE         0x00000000
> +#else
> +#define CONFIG_SYS_TEXT_BASE         0x00200000
> +#endif
> +#define CONFIG_SYS_INIT_SP_ADDR              0x00300000
> +#define CONFIG_SYS_LOAD_ADDR         0x00800800
> +
> +#ifndef CONFIG_SPL_BUILD
> +
> +#include <config_distro_defaults.h>
> +
> +#define BOOT_TARGET_DEVICES(func)
> +
> +#include <config_distro_bootcmd.h>
> +
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> +     BOOTENV
> +
> +#endif
> +
> +#endif

Regards,
Andreas

-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to