]> git.ipfire.org Git - u-boot.git/blame - arch/arm/mach-rockchip/rk3188-board.c
rockchip: make boot_mode related codes reused across all platforms
[u-boot.git] / arch / arm / mach-rockchip / rk3188-board.c
CommitLineData
df9041ec
HS
1/*
2 * (C) Copyright 2015 Google, Inc
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6
7#include <common.h>
8#include <clk.h>
9#include <dm.h>
10#include <ram.h>
11#include <syscon.h>
12#include <asm/io.h>
13#include <asm/arch/clock.h>
008a610b 14#include <asm/arch/grf_rk3188.h>
df9041ec
HS
15#include <asm/arch/periph.h>
16#include <asm/arch/pmu_rk3288.h>
17#include <asm/arch/boot_mode.h>
18#include <asm/gpio.h>
19#include <dm/pinctrl.h>
20
21DECLARE_GLOBAL_DATA_PTR;
22
008a610b
HS
23int board_late_init(void)
24{
25 struct rk3188_grf *grf;
26
e3067793 27 setup_boot_mode();
008a610b
HS
28 grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
29 if (IS_ERR(grf)) {
9b643e31 30 pr_err("grf syscon returned %ld\n", PTR_ERR(grf));
008a610b
HS
31 } else {
32 /* enable noc remap to mimic legacy loaders */
33 rk_clrsetreg(&grf->soc_con0,
34 NOC_REMAP_MASK << NOC_REMAP_SHIFT,
35 NOC_REMAP_MASK << NOC_REMAP_SHIFT);
36 }
37
38 return 0;
39}
40
df9041ec
HS
41int board_init(void)
42{
ee14d29d 43#if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM)
df9041ec
HS
44 struct udevice *pinctrl;
45 int ret;
46
47 /*
48 * We need to implement sdcard iomux here for the further
49 * initialization, otherwise, it'll hit sdcard command sending
50 * timeout exception.
51 */
52 ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
53 if (ret) {
54 debug("%s: Cannot find pinctrl device\n", __func__);
55 goto err;
56 }
57 ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_SDCARD);
58 if (ret) {
59 debug("%s: Failed to set up SD card\n", __func__);
60 goto err;
61 }
62
63 return 0;
64err:
65 printf("board_init: Error %d\n", ret);
66
67 /* No way to report error here */
68 hang();
69
70 return -1;
71#else
72 return 0;
73#endif
74}
75
df9041ec
HS
76#ifndef CONFIG_SYS_DCACHE_OFF
77void enable_caches(void)
78{
79 /* Enable D-cache. I-cache is already enabled in start.S */
80 dcache_enable();
81}
82#endif