]> git.sur5r.net Git - u-boot/blob - arch/arm/mach-rockchip/rk3188-board.c
916d18fc32929f10bcee3d9ada0bc2ba8bd34fb2
[u-boot] / arch / arm / mach-rockchip / rk3188-board.c
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>
14 #include <asm/arch/grf_rk3188.h>
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
21 DECLARE_GLOBAL_DATA_PTR;
22
23 int board_late_init(void)
24 {
25         struct rk3188_grf *grf;
26
27         setup_boot_mode();
28         grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
29         if (IS_ERR(grf)) {
30                 pr_err("grf syscon returned %ld\n", PTR_ERR(grf));
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
41 int board_init(void)
42 {
43 #if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM)
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;
64 err:
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
76 #ifndef CONFIG_SYS_DCACHE_OFF
77 void enable_caches(void)
78 {
79         /* Enable D-cache. I-cache is already enabled in start.S */
80         dcache_enable();
81 }
82 #endif