mmc: davinci: fix mmc boot in SPL
[oweals/u-boot.git] / board / freescale / mx6ullevk / mx6ullevk.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Copyright (C) 2016 Freescale Semiconductor, Inc.
4  */
5
6 #include <init.h>
7 #include <asm/arch/clock.h>
8 #include <asm/arch/iomux.h>
9 #include <asm/arch/imx-regs.h>
10 #include <asm/arch/crm_regs.h>
11 #include <asm/arch/mx6-pins.h>
12 #include <asm/arch/sys_proto.h>
13 #include <asm/gpio.h>
14 #include <asm/mach-imx/iomux-v3.h>
15 #include <asm/mach-imx/boot_mode.h>
16 #include <asm/io.h>
17 #include <common.h>
18 #include <env.h>
19 #include <fsl_esdhc_imx.h>
20 #include <linux/sizes.h>
21 #include <mmc.h>
22
23 DECLARE_GLOBAL_DATA_PTR;
24
25 #define UART_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |             \
26         PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
27         PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
28
29 int dram_init(void)
30 {
31         gd->ram_size = imx_ddr_size();
32
33         return 0;
34 }
35
36 static iomux_v3_cfg_t const uart1_pads[] = {
37         MX6_PAD_UART1_TX_DATA__UART1_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
38         MX6_PAD_UART1_RX_DATA__UART1_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
39 };
40
41 static void setup_iomux_uart(void)
42 {
43         imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
44 }
45
46 int board_mmc_get_env_dev(int devno)
47 {
48         return devno;
49 }
50
51 int mmc_map_to_kernel_blk(int devno)
52 {
53         return devno;
54 }
55
56 int board_early_init_f(void)
57 {
58         setup_iomux_uart();
59
60         return 0;
61 }
62
63 int board_init(void)
64 {
65         /* Address of boot parameters */
66         gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
67
68         return 0;
69 }
70
71 #ifdef CONFIG_CMD_BMODE
72 static const struct boot_mode board_boot_modes[] = {
73         /* 4 bit bus width */
74         {"sd1", MAKE_CFGVAL(0x42, 0x20, 0x00, 0x00)},
75         {"sd2", MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
76         {"qspi1", MAKE_CFGVAL(0x10, 0x00, 0x00, 0x00)},
77         {NULL,   0},
78 };
79 #endif
80
81 int board_late_init(void)
82 {
83 #ifdef CONFIG_CMD_BMODE
84         add_board_boot_modes(board_boot_modes);
85 #endif
86
87 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
88         if (is_cpu_type(MXC_CPU_MX6ULZ))
89                 env_set("board_name", "ULZ-EVK");
90         else
91                 env_set("board_name", "EVK");
92         env_set("board_rev", "14X14");
93 #endif
94
95         return 0;
96 }
97
98 int checkboard(void)
99 {
100         if (is_cpu_type(MXC_CPU_MX6ULZ))
101                 puts("Board: MX6ULZ 14x14 EVK\n");
102         else
103                 puts("Board: MX6ULL 14x14 EVK\n");
104
105         return 0;
106 }