All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v5 17/21] rockchip: rk3036: Add core Soc start-up code
Date: Fri, 13 Nov 2015 11:13:47 -0700	[thread overview]
Message-ID: <CAPnjgZ0NtskJxUjrbtsK50QKQLe1zEfWq_hBozbsDAAebU+1yQ@mail.gmail.com> (raw)
In-Reply-To: <1447151098-2628-18-git-send-email-hl@rock-chips.com>

Hi Lin,

On 10 November 2015 at 03:24, Lin Huang <hl@rock-chips.com> wrote:
> rk3036 only 4K size SRAM for SPL, so only support
> timer, uart, sdram driver in SPL stage, when finish
> initial sdram, back to bootrom.And in rk3036 sdmmc and
> debug uart use same iomux, so if you want to boot from
> sdmmc, you must disable debug uart.
>
> Signed-off-by: Lin Huang <hl@rock-chips.com>
> ---
> Changes in v1:
> - clean copyright announcement
> Changes in v2:
> - support SPL
> Changes in v3:
> - delete DEBUG_UART config
> - modify ENV_MEM_LAYOUT_SETTINGS config
> Changes in v4:
> - delete some unuse config advice by Sjoerd Simons
> Changes in v5:
> - use CONFIG_DWMMC
>
>  arch/arm/mach-rockchip/Kconfig                  |  10 ++-
>  arch/arm/mach-rockchip/Makefile                 |   4 +-
>  arch/arm/mach-rockchip/board.c                  |   1 +
>  arch/arm/mach-rockchip/rk3036-board-spl.c       |  53 ++++++++++++
>  arch/arm/mach-rockchip/rk3036/Kconfig           |  17 ++++
>  arch/arm/mach-rockchip/rk3036/Makefile          |   1 +
>  arch/arm/mach-rockchip/rk3036/save_boot_param.S |  34 ++++++++
>  include/configs/rk3036_common.h                 | 103 ++++++++++++++++++++++++
>  8 files changed, 221 insertions(+), 2 deletions(-)
>  create mode 100644 arch/arm/mach-rockchip/rk3036-board-spl.c
>  create mode 100644 arch/arm/mach-rockchip/rk3036/Kconfig
>  create mode 100644 arch/arm/mach-rockchip/rk3036/save_boot_param.S
>  create mode 100644 include/configs/rk3036_common.h

Acked-by: Simon Glass <sjg@chromium.org>

Some nits below.

>
> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
> index da665ef..6b608db 100644
> --- a/arch/arm/mach-rockchip/Kconfig
> +++ b/arch/arm/mach-rockchip/Kconfig
> @@ -9,6 +9,14 @@ config ROCKCHIP_RK3288
>           and video codec support. Peripherals include Gigabit Ethernet,
>           USB2 host and OTG, SDIO, I2S, UART,s, SPI, I2C and PWMs.
>
> +config ROCKCHIP_RK3036
> +       bool "Support Rockchip RK3036"
> +       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 SYS_MALLOC_F
>         default y
>
> @@ -34,5 +42,5 @@ config ROCKCHIP_SERIAL
>         default y
>
>  source "arch/arm/mach-rockchip/rk3288/Kconfig"
> -
> +source "arch/arm/mach-rockchip/rk3036/Kconfig"
>  endif
> diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
> index a29675d..b703c3c 100644
> --- a/arch/arm/mach-rockchip/Makefile
> +++ b/arch/arm/mach-rockchip/Makefile
> @@ -6,10 +6,12 @@
>
>  ifdef CONFIG_SPL_BUILD
>  obj-$(CONFIG_ROCKCHIP_RK3288) += rk3288-board-spl.o
> +obj-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o
>  else
> -obj-y += board.o
> +obj-$(CONFIG_ROCKCHIP_RK3288) += board.o
>  endif
>  obj-y += rk_timer.o
>  obj-y += rk_early_print.o
>  obj-$(CONFIG_$(SPL_)ROCKCHIP_COMMON) += common.o
>  obj-$(CONFIG_ROCKCHIP_RK3288) += rk3288/
> +obj-$(CONFIG_ROCKCHIP_RK3036) += rk3036/
> diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
> index 688bc0f..d7a8312 100644
> --- a/arch/arm/mach-rockchip/board.c
> +++ b/arch/arm/mach-rockchip/board.c
> @@ -4,6 +4,7 @@
>   * SPDX-License-Identifier:     GPL-2.0+
>   */
>
> +#include <asm/io.h>

Please put this at the bottom of the list.

>  #include <common.h>
>  #include <dm.h>
>  #include <ram.h>
> diff --git a/arch/arm/mach-rockchip/rk3036-board-spl.c b/arch/arm/mach-rockchip/rk3036-board-spl.c
> new file mode 100644
> index 0000000..731ee87
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3036-board-spl.c
> @@ -0,0 +1,53 @@
> +/*
> + * (C) Copyright 2015 Rockchip Electronics Co., Ltd
> + *
> + * SPDX-License-Identifier:     GPL-2.0+
> + */
> +
> +#include <asm/arch/grf_rk3036.h>
> +#include <asm/arch/hardware.h>
> +#include <asm/arch/sdram_rk3036.h>
> +#include <asm/arch/timer.h>
> +#include <asm/arch/uart.h>
> +#include <asm/io.h>
> +#include <common.h>

common.h should always go first.

> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +#define GRF_BASE       0x20008000
> +static struct rk3036_grf * const grf = (void *)GRF_BASE;
> +
> +#define DEBUG_UART_BASE        0x20068000
> +
> +extern void back_to_bootrom(void);
> +
> +void board_init_f(ulong dummy)
> +{
> +       #ifdef EARLY_DEBUG

Put this #ifdef and the #endif at the start of the line. They should
not be indented.

> +       /*
> +        * NOTE: sd card and debug uart use same iomux in rk3036,
> +        * so if you enable uart,
> +        * you can not boot from sdcard
> +        */
> +       rk_clrsetreg(&grf->gpio1c_iomux,
> +                    GPIO1C3_MASK << GPIO1C3_SHIFT |
> +                    GPIO1C2_MASK << GPIO1C2_SHIFT,
> +                    GPIO1C3_UART2_SOUT << GPIO1C3_SHIFT |
> +                    GPIO1C2_UART2_SIN << GPIO1C2_SHIFT);
> +       rk_uart_init((void *)DEBUG_UART_BASE);
> +       #endif
> +       rockchip_timer_init();
> +       sdram_init();
> +
> +       /* return to maskrom */
> +       back_to_bootrom();
> +}
> +
> +/* Place Holders */
> +void board_init_r(gd_t *id, ulong dest_addr)
> +{
> +       /* Function attribute is no-return */
> +       /* This Function never executes */

/*
 * Function attribute...
 * ...
 */

> +       while (1)
> +               ;
> +}
> diff --git a/arch/arm/mach-rockchip/rk3036/Kconfig b/arch/arm/mach-rockchip/rk3036/Kconfig
> new file mode 100644
> index 0000000..0fbc58e
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3036/Kconfig
> @@ -0,0 +1,17 @@
> +if ROCKCHIP_RK3036
> +
> +config TARGET_EVB_RK3036
> +       bool "EVB_RK3036"
> +
> +config SYS_SOC
> +       default "rockchip"
> +
> +config SYS_MALLOC_F_LEN
> +       default 0x400
> +
> +config ROCKCHIP_COMMON
> +       bool "Support rk common fuction"
> +
> +source "board/evb_rk3036/evb_rk3036/Kconfig"
> +
> +endif
> diff --git a/arch/arm/mach-rockchip/rk3036/Makefile b/arch/arm/mach-rockchip/rk3036/Makefile
> index 6095777..97d299d 100644
> --- a/arch/arm/mach-rockchip/rk3036/Makefile
> +++ b/arch/arm/mach-rockchip/rk3036/Makefile
> @@ -10,3 +10,4 @@ obj-y += syscon_rk3036.o
>  endif
>
>  obj-y += sdram_rk3036.o
> +obj-y += save_boot_param.o
> diff --git a/arch/arm/mach-rockchip/rk3036/save_boot_param.S b/arch/arm/mach-rockchip/rk3036/save_boot_param.S
> new file mode 100644
> index 0000000..996f9af
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/rk3036/save_boot_param.S
> @@ -0,0 +1,34 @@
> +/*
> + * (C) Copyright 2015 Google, Inc
> + *
> + * SPDX-License-Identifier:     GPL-2.0+
> + */
> +
> +#include <linux/linkage.h>
> +
> +.globl SAVE_SP_ADDR
> +SAVE_SP_ADDR:
> +       .word 0
> +
> +/*************************************************************************
> + *
> + * void save_boot_params
> + *
> + * Save sp, lr, r1~r12
> + *
> + *************************************************************************/

Drop the stars...

/*
 * void save_boot_params()
 *
 * Save ...
 */

> +ENTRY(save_boot_params)
> +       push    {r1-r12, lr}
> +       ldr     r0, =SAVE_SP_ADDR
> +       str     sp, [r0]
> +       b       save_boot_params_ret            @ back to my caller
> +ENDPROC(save_boot_params)
> +
> +
> +.globl back_to_bootrom
> +ENTRY(back_to_bootrom)
> +       ldr     r0, =SAVE_SP_ADDR
> +       ldr     sp, [r0]
> +       mov     r0, #0
> +       pop     {r1-r12, pc}
> +ENDPROC(back_to_bootrom)
> diff --git a/include/configs/rk3036_common.h b/include/configs/rk3036_common.h
> new file mode 100644
> index 0000000..92b6119
> --- /dev/null
> +++ b/include/configs/rk3036_common.h
> @@ -0,0 +1,103 @@
> +/*
> + * (C) Copyright 2015 Rockchip Electronics Co., Ltd
> + *
> + * SPDX-License-Identifier:     GPL-2.0+
> + */
> +#ifndef __CONFIG_RK3036_COMMON_H
> +#define __CONFIG_RK3036_COMMON_H
> +
> +#include <asm/arch/hardware.h>
> +
> +#define CONFIG_SYS_NO_FLASH
> +#define CONFIG_NR_DRAM_BANKS           1
> +#define CONFIG_ENV_IS_NOWHERE
> +#define CONFIG_ENV_SIZE                        0x2000
> +#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_SYS_THUMB_BUILD
> +#define CONFIG_DISPLAY_BOARDINFO
> +
> +#define CONFIG_SYS_TIMER_RATE          (24 * 1000 * 1000)
> +#define CONFIG_SYS_TIMER_BASE          0x200440a0 /* TIMER5 */
> +#define CONFIG_SYS_TIMER_COUNTER       (CONFIG_SYS_TIMER_BASE + 8)
> +
> +#define CONFIG_SYS_NS16550
> +#define CONFIG_SYS_NS16550_MEM32
> +
> +#ifdef CONFIG_SPL_BUILD
> +#define CONFIG_SYS_MALLOC_SIMPLE
> +#endif
> +
> +#define CONFIG_SYS_TEXT_BASE           0x60000000
> +#define CONFIG_SYS_INIT_SP_ADDR                0x60100000
> +#define CONFIG_SYS_LOAD_ADDR           0x60800800
> +#define CONFIG_SPL_STACK               0x10081fff
> +#define CONFIG_SPL_TEXT_BASE           0x10081004
> +
> +#define CONFIG_ROCKCHIP_MAX_INIT_SIZE  (4 << 10)
> +#define CONFIG_ROCKCHIP_CHIP_TAG       "RK30"
> +
> +#define CONFIG_ROCKCHIP_COMMON
> +
> +/* MMC/SD IP block */
> +#define CONFIG_MMC
> +#define CONFIG_GENERIC_MMC
> +#define CONFIG_CMD_MMC
> +#define CONFIG_SDHCI
> +#define CONFIG_DWMMC
> +#define CONFIG_BOUNCE_BUFFER
> +
> +#define CONFIG_DOS_PARTITION
> +#define CONFIG_CMD_FAT
> +#define CONFIG_FAT_WRITE
> +#define CONFIG_CMD_EXT2
> +#define CONFIG_CMD_EXT4
> +#define CONFIG_CMD_FS_GENERIC
> +#define CONFIG_PARTITION_UUIDS
> +#define CONFIG_CMD_PART
> +
> +#define CONFIG_CMD_CACHE
> +#define CONFIG_CMD_TIME
> +
> +#define CONFIG_SYS_SDRAM_BASE          0x60000000
> +#define CONFIG_NR_DRAM_BANKS           1
> +#define SDRAM_BANK_SIZE                        (512UL << 20UL)
> +
> +#define CONFIG_SPI_FLASH
> +#define CONFIG_SPI
> +#define CONFIG_CMD_SF
> +#define CONFIG_CMD_SPI
> +#define CONFIG_SPI_FLASH_GIGADEVICE
> +#define CONFIG_SF_DEFAULT_SPEED 20000000
> +
> +#define CONFIG_CMD_I2C
> +
> +#ifndef CONFIG_SPL_BUILD
> +#include <config_distro_defaults.h>
> +
> +#define ENV_MEM_LAYOUT_SETTINGS \
> +       "scriptaddr=0x60000000\0" \
> +       "pxefile_addr_r=0x60100000\0" \
> +       "fdt_addr_r=0x61f00000\0" \
> +       "kernel_addr_r=0x62000000\0" \
> +       "ramdisk_addr_r=0x64000000\0"
> +
> +/* First try to boot from SD (index 0), then eMMC (index 1 */
> +#define BOOT_TARGET_DEVICES(func) \
> +       func(MMC, mmc, 0) \
> +       func(MMC, mmc, 1)
> +
> +#include <config_distro_bootcmd.h>
> +
> +/* Linux fails to load the fdt if it's loaded above 512M on a evb-rk3036 board, so
> + * limit the fdt reallocation to that */
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> +       "fdt_high=0x7fffffff\0" \
> +       ENV_MEM_LAYOUT_SETTINGS \
> +       BOOTENV
> +#endif
> +
> +#endif
> --
> 1.9.1
>

Regards,
Simon

  reply	other threads:[~2015-11-13 18:13 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-10 10:24 [U-Boot] [PATCH v5 00/21] Bring up rk3036 uboot Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 01/21] rockchip: add timer driver Lin Huang
2015-11-12  2:04   ` Ben Chan
2015-11-12  2:49     ` hl
2015-11-10 10:24 ` [U-Boot] [PATCH v5 02/21] rockchip: move SYS_MALLOC_F_LEN to rk3288 own Kconfig Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 03/21] rockchip: rename board-spl.c to rk3288-board-spl.c Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 04/21] rockchip: add config decide whether to build common.c Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 05/21] dm: core: Add SPL Kconfig for REGMAP and SYSCON Lin Huang
2015-11-13 18:13   ` Simon Glass
2015-11-10 10:24 ` [U-Boot] [PATCH v5 06/21] rockchip: serial driver support rk3036 Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 07/21] rockchip: Bring in RK3036 device tree file includes and bindings Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 08/21] rockchip: rk3036: Add clock driver Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 09/21] rockchip: rk3036: Add header files for GRF Lin Huang
2015-11-12  2:23   ` Ben Chan
2015-11-10 10:24 ` [U-Boot] [PATCH v5 10/21] rockchip: rk3036: Add Soc reset driver Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 11/21] rockchip: rk3036: Add a simple syscon driver Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 12/21] rockchip: rk3036: Add pinctrl driver Lin Huang
2015-11-13 23:54   ` Ariel D'Alessandro
2015-11-16  2:12     ` hl
2015-11-10 10:24 ` [U-Boot] [PATCH v5 13/21] mmc: dw_mmc: support fifo mode in dwc mmc driver Lin Huang
2015-11-13 18:13   ` Simon Glass
2015-11-10 10:24 ` [U-Boot] [PATCH v5 14/21] rockchip: mmc: get the fifo mode and fifo depth property from dts Lin Huang
2015-11-13 18:13   ` Simon Glass
2015-11-10 10:24 ` [U-Boot] [PATCH v5 15/21] rockchip: add early uart driver Lin Huang
2015-11-13 18:13   ` Simon Glass
2015-11-10 10:24 ` [U-Boot] [PATCH v5 16/21] rockchip: add rk3036 sdram driver Lin Huang
2015-11-12  8:35   ` Ben Chan
2015-11-13 18:13   ` Simon Glass
2015-11-10 10:24 ` [U-Boot] [PATCH v5 17/21] rockchip: rk3036: Add core Soc start-up code Lin Huang
2015-11-13 18:13   ` Simon Glass [this message]
2015-11-10 10:24 ` [U-Boot] [PATCH v5 18/21] rockchip: Add basic support for evb-rk3036 board Lin Huang
2015-11-13 18:13   ` Simon Glass
2015-11-10 10:24 ` [U-Boot] [PATCH v5 19/21] rockchip: Add max init size & chip tag configs Lin Huang
2015-11-13 18:13   ` Simon Glass
2015-11-10 10:24 ` [U-Boot] [PATCH v5 20/21] rockchip: Add support for rk's second level loader Lin Huang
2015-11-10 10:24 ` [U-Boot] [PATCH v5 21/21] rockchip: doc: show packet rk3036 uboot image Lin Huang
2015-11-13 18:13   ` Simon Glass
2015-11-13 18:14 ` [U-Boot] [PATCH v5 00/21] Bring up rk3036 uboot Simon Glass
2015-11-16  0:58   ` hl
2015-11-28  0:21     ` Simon Glass
2015-11-28  2:34       ` Naoki FUKAUMI
2015-11-28  2:46         ` Naoki FUKAUMI
2015-11-30  8:12       ` Sjoerd Simons
2015-11-30  8:24         ` Stefan Roese
2015-11-30  8:39           ` Sjoerd Simons
2015-11-30  8:46             ` Stefan Roese
2015-11-30 23:17         ` Simon Glass
2015-12-01  7:48           ` Sjoerd Simons
2015-12-01 20:02             ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAPnjgZ0NtskJxUjrbtsK50QKQLe1zEfWq_hBozbsDAAebU+1yQ@mail.gmail.com \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.