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