Commit 8aa1505b59159cf8f52ba7441dd9e71c3caf1ded
Committed by
Stefano Babic
1 parent
60d33fcd19
Exists in
smarc_8mq_lf_v2020.04
and in
12 other branches
imx8: add boot device detection
Add get_boot_device to detect boot device. Add print_bootinfo to print the boot device info. Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Anatolij Gustschin <agust@denx.de> Cc: Stefano Babic <sbabic@denx.de>
Showing 2 changed files with 95 additions and 0 deletions Side-by-side Diff
arch/arm/include/asm/arch-imx8/sys_proto.h
arch/arm/mach-imx/imx8/cpu.c
... | ... | @@ -11,8 +11,10 @@ |
11 | 11 | #include <dm/uclass.h> |
12 | 12 | #include <errno.h> |
13 | 13 | #include <asm/arch/sci/sci.h> |
14 | +#include <asm/arch/sys_proto.h> | |
14 | 15 | #include <asm/arch-imx/cpu.h> |
15 | 16 | #include <asm/armv8/cpu.h> |
17 | +#include <asm/mach-imx/boot_mode.h> | |
16 | 18 | |
17 | 19 | DECLARE_GLOBAL_DATA_PTR; |
18 | 20 | |
... | ... | @@ -91,4 +93,87 @@ |
91 | 93 | return 0; |
92 | 94 | } |
93 | 95 | #endif |
96 | + | |
97 | +int print_bootinfo(void) | |
98 | +{ | |
99 | + enum boot_device bt_dev = get_boot_device(); | |
100 | + | |
101 | + puts("Boot: "); | |
102 | + switch (bt_dev) { | |
103 | + case SD1_BOOT: | |
104 | + puts("SD0\n"); | |
105 | + break; | |
106 | + case SD2_BOOT: | |
107 | + puts("SD1\n"); | |
108 | + break; | |
109 | + case SD3_BOOT: | |
110 | + puts("SD2\n"); | |
111 | + break; | |
112 | + case MMC1_BOOT: | |
113 | + puts("MMC0\n"); | |
114 | + break; | |
115 | + case MMC2_BOOT: | |
116 | + puts("MMC1\n"); | |
117 | + break; | |
118 | + case MMC3_BOOT: | |
119 | + puts("MMC2\n"); | |
120 | + break; | |
121 | + case FLEXSPI_BOOT: | |
122 | + puts("FLEXSPI\n"); | |
123 | + break; | |
124 | + case SATA_BOOT: | |
125 | + puts("SATA\n"); | |
126 | + break; | |
127 | + case NAND_BOOT: | |
128 | + puts("NAND\n"); | |
129 | + break; | |
130 | + case USB_BOOT: | |
131 | + puts("USB\n"); | |
132 | + break; | |
133 | + default: | |
134 | + printf("Unknown device %u\n", bt_dev); | |
135 | + break; | |
136 | + } | |
137 | + | |
138 | + return 0; | |
139 | +} | |
140 | + | |
141 | +enum boot_device get_boot_device(void) | |
142 | +{ | |
143 | + enum boot_device boot_dev = SD1_BOOT; | |
144 | + | |
145 | + sc_rsrc_t dev_rsrc; | |
146 | + | |
147 | + sc_misc_get_boot_dev(-1, &dev_rsrc); | |
148 | + | |
149 | + switch (dev_rsrc) { | |
150 | + case SC_R_SDHC_0: | |
151 | + boot_dev = MMC1_BOOT; | |
152 | + break; | |
153 | + case SC_R_SDHC_1: | |
154 | + boot_dev = SD2_BOOT; | |
155 | + break; | |
156 | + case SC_R_SDHC_2: | |
157 | + boot_dev = SD3_BOOT; | |
158 | + break; | |
159 | + case SC_R_NAND: | |
160 | + boot_dev = NAND_BOOT; | |
161 | + break; | |
162 | + case SC_R_FSPI_0: | |
163 | + boot_dev = FLEXSPI_BOOT; | |
164 | + break; | |
165 | + case SC_R_SATA_0: | |
166 | + boot_dev = SATA_BOOT; | |
167 | + break; | |
168 | + case SC_R_USB_0: | |
169 | + case SC_R_USB_1: | |
170 | + case SC_R_USB_2: | |
171 | + boot_dev = USB_BOOT; | |
172 | + break; | |
173 | + default: | |
174 | + break; | |
175 | + } | |
176 | + | |
177 | + return boot_dev; | |
178 | +} |