uboot/arch/arm/mach-rockchip/rk3036-board-spl.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * (C) Copyright 2015-2019 Rockchip Electronics Co., Ltd
   4 */
   5
   6#include <common.h>
   7#include <debug_uart.h>
   8#include <init.h>
   9#include <asm/io.h>
  10#include <asm/arch-rockchip/bootrom.h>
  11#include <asm/arch-rockchip/sdram_rk3036.h>
  12
  13#define TIMER_LOAD_COUNT_L      0x00
  14#define TIMER_LOAD_COUNT_H      0x04
  15#define TIMER_CONTROL_REG       0x10
  16#define TIMER_EN        0x1
  17#define TIMER_FMODE     (0 << 1)
  18#define TIMER_RMODE     (1 << 1)
  19
  20void rockchip_stimer_init(void)
  21{
  22        asm volatile("mcr p15, 0, %0, c14, c0, 0"
  23                     : : "r"(COUNTER_FREQUENCY));
  24
  25        writel(0, CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG);
  26        writel(0xffffffff, CONFIG_ROCKCHIP_STIMER_BASE);
  27        writel(0xffffffff, CONFIG_ROCKCHIP_STIMER_BASE + 4);
  28        writel(TIMER_EN | TIMER_FMODE, CONFIG_ROCKCHIP_STIMER_BASE +
  29               TIMER_CONTROL_REG);
  30}
  31
  32void board_init_f(ulong dummy)
  33{
  34#ifdef CONFIG_DEBUG_UART
  35        debug_uart_init();
  36#endif
  37
  38        /* Init secure timer */
  39        rockchip_stimer_init();
  40        /* Init ARM arch timer in arch/arm/cpu/armv7/arch_timer.c */
  41        timer_init();
  42
  43        sdram_init();
  44
  45        /* return to maskrom */
  46        back_to_bootrom(BROM_BOOT_NEXTSTAGE);
  47}
  48
  49/* Place Holders */
  50void board_init_r(gd_t *id, ulong dest_addr)
  51{
  52        /*
  53         * Function attribute is no-return
  54         * This Function never executes
  55         */
  56        while (1)
  57                ;
  58}
  59