0001-am57xx_evm-fixes.patch 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839
  1. From 702ea30b462ba06f4fbee3393f0e6c19531f1e5f Mon Sep 17 00:00:00 2001
  2. From: Robert Nelson <robertcnelson@gmail.com>
  3. Date: Fri, 25 Jun 2021 11:33:25 -0500
  4. Subject: [PATCH] am57xx_evm-fixes
  5. Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
  6. [Patch from https://github.com/beagleboard/u-boot/commit/702ea30b462ba06f4fbee3393f0e6c19531f1e5f]
  7. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
  8. ---
  9. arch/arm/mach-omap2/omap5/hw_data.c | 1 +
  10. board/ti/am57xx/board.c | 167 +++++++++++-
  11. configs/am57xx_evm_defconfig | 15 +-
  12. include/configs/ti_armv7_common.h | 407 ++++++++++++++++++++++++++++
  13. include/configs/ti_omap5_common.h | 5 +
  14. include/environment/ti/boot.h | 32 ++-
  15. include/environment/ti/mmc.h | 49 +++-
  16. 7 files changed, 651 insertions(+), 25 deletions(-)
  17. diff --git a/arch/arm/mach-omap2/omap5/hw_data.c b/arch/arm/mach-omap2/omap5/hw_data.c
  18. index fa4e27063c..d5192b1671 100644
  19. --- a/arch/arm/mach-omap2/omap5/hw_data.c
  20. +++ b/arch/arm/mach-omap2/omap5/hw_data.c
  21. @@ -421,6 +421,7 @@ void enable_basic_clocks(void)
  22. (*prcm)->cm_l4per_uart1_clkctrl,
  23. (*prcm)->cm_l4per_uart3_clkctrl,
  24. (*prcm)->cm_l4per_i2c1_clkctrl,
  25. + (*prcm)->cm_l4per_i2c4_clkctrl,
  26. #ifdef CONFIG_DRIVER_TI_CPSW
  27. (*prcm)->cm_gmac_gmac_clkctrl,
  28. #endif
  29. diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c
  30. index 73063faee6..ad05c41f22 100644
  31. --- a/board/ti/am57xx/board.c
  32. +++ b/board/ti/am57xx/board.c
  33. @@ -41,6 +41,7 @@
  34. #include <mmc.h>
  35. #include <dm/uclass.h>
  36. #include <hang.h>
  37. +#include <i2c.h>
  38. #include "../common/board_detect.h"
  39. #include "mux_data.h"
  40. @@ -528,8 +529,10 @@ void do_board_detect(void)
  41. rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
  42. CONFIG_EEPROM_CHIP_ADDRESS);
  43. - if (rc)
  44. + if (rc) {
  45. printf("ti_i2c_eeprom_init failed %d\n", rc);
  46. + ti_i2c_eeprom_am_set("BBONE-AI", "A");
  47. + };
  48. #ifdef CONFIG_SUPPORT_EMMC_BOOT
  49. rc = board_bootmode_has_emmc();
  50. @@ -579,6 +582,164 @@ void do_board_detect(void)
  51. "Board: %s REV %s\n", bname, board_ti_get_rev());
  52. }
  53. +struct am335x_cape_eeprom_id {
  54. + unsigned int header;
  55. + char eeprom_rev[2];
  56. + char board_name[32];
  57. + char version[4];
  58. + char manufacture[16];
  59. + char part_number[16];
  60. + char number_of_pins[2];
  61. + char serial_number[12];
  62. + char pin_usage[140];
  63. + char vdd_3v3exp[ 2];
  64. + char vdd_5v[ 2];
  65. + char sys_5v[2];
  66. + char dc_supplied[2];
  67. +};
  68. +
  69. +#define CAPE_EEPROM_BUS_NUM 3
  70. +#define CAPE_EEPROM_ADDR0 0x54
  71. +#define CAPE_EEPROM_ADDR1 0x55
  72. +#define CAPE_EEPROM_ADDR2 0x56
  73. +#define CAPE_EEPROM_ADDR3 0x57
  74. +
  75. +#define CAPE_EEPROM_ADDR_LEN 0x10
  76. +
  77. +static int probe_cape_eeprom(struct am335x_cape_eeprom_id *cape_header)
  78. +{
  79. + int ret;
  80. + struct udevice *dev;
  81. + unsigned char addr;
  82. + /* /lib/firmware/BB-CAPE-DISP-CT4-00A0.dtbo */
  83. + /* 14 + 16 + 1 + 4 + 5 = 40 */
  84. + char hash_cape_overlay[40];
  85. + char cape_overlay[26];
  86. + char process_cape_part_number[16];
  87. + char process_cape_version[4];
  88. + char end_part_number;
  89. + char cape_overlay_pass_to_kernel[18];
  90. +
  91. + strlcpy(cape_overlay_pass_to_kernel, "", 1);
  92. +
  93. + for ( addr = CAPE_EEPROM_ADDR0; addr <= CAPE_EEPROM_ADDR3; addr++ ) {
  94. + ret = i2c_get_chip_for_busnum(CAPE_EEPROM_BUS_NUM, addr, 1, &dev);
  95. + if (ret) {
  96. + printf("BeagleBone Cape EEPROM: no EEPROM at address: 0x%x\n", addr);
  97. + } else {
  98. + printf("BeagleBone Cape EEPROM: found EEPROM at address: 0x%x\n", addr);
  99. +
  100. + ret = i2c_set_chip_offset_len(dev, 2);
  101. + if (ret) {
  102. + printf("BeagleBone Cape EEPROM: i2c_set_chip_offset_len failure\n");
  103. + }
  104. +
  105. + ret = dm_i2c_read(dev, 0, (uchar *)cape_header, sizeof(struct am335x_cape_eeprom_id));
  106. + if (ret) {
  107. + printf("BeagleBone Cape EEPROM: Cannot read eeprom params\n");
  108. + }
  109. +
  110. + if (cape_header->header == 0xEE3355AA) {
  111. + strlcpy(hash_cape_overlay, "/lib/firmware/", 14 + 1);
  112. + strlcpy(cape_overlay, "", 2);
  113. + strlcpy(cape_overlay_pass_to_kernel, "", 2);
  114. + strlcpy(process_cape_part_number, "...............", 16 + 1);
  115. + strlcpy(process_cape_version, "...", 4 + 1);
  116. +
  117. + strlcpy(process_cape_part_number, cape_header->part_number, 16 + 1);
  118. + printf("BeagleBone Cape EEPROM: debug part_number field:[%s]\n", process_cape_part_number);
  119. +
  120. + //FIXME: some capes end with '.'
  121. + if ( process_cape_part_number[15] == 0x2E ) {
  122. + puts("debug: fixup, extra . in eeprom field\n");
  123. + process_cape_part_number[15] = 0x00;
  124. + if ( process_cape_part_number[14] == 0x2E ) {
  125. + process_cape_part_number[14] = 0x00;
  126. + }
  127. + }
  128. +
  129. + //Find ending 0x00 or 0xFF
  130. + puts("BeagleBone Cape EEPROM: debug part_number field HEX:[");
  131. + end_part_number=16;
  132. + for ( int i=0; i <= 16; i++ ) {
  133. + if (( process_cape_part_number[i] == 0x00 ) || ( process_cape_part_number[i] == 0xFF )) {
  134. + end_part_number=i;
  135. + i=17;
  136. + } else {
  137. + printf("%x", process_cape_part_number[i]);
  138. + }
  139. + }
  140. + puts("]\n");
  141. +
  142. + strncat(cape_overlay_pass_to_kernel, process_cape_part_number, end_part_number);
  143. + strncat(cape_overlay_pass_to_kernel, ",", 1);
  144. + //printf("debug: %s\n", cape_overlay_pass_to_kernel);
  145. +
  146. + strncat(hash_cape_overlay, process_cape_part_number, end_part_number);
  147. + strncat(cape_overlay, process_cape_part_number, end_part_number);
  148. + //printf("debug: %s %s\n", hash_cape_overlay, cape_overlay);
  149. +
  150. + strncat(hash_cape_overlay, "-", 1);
  151. + strncat(cape_overlay, "-", 1);
  152. + //printf("debug: %s %s\n", hash_cape_overlay, cape_overlay);
  153. +
  154. + strlcpy(process_cape_version, cape_header->version, 4 + 1);
  155. + //printf("debug: version field:[%s]\n", process_cape_version);
  156. +
  157. + //Find invalid 0xFF -> 0x30 BBAI FAN Cape...
  158. + puts("BeagleBone Cape EEPROM: debug version field HEX:[");
  159. + for ( int i=0; i <= 3; i++ ) {
  160. + printf("%x", process_cape_version[i]);
  161. + if ( process_cape_version[i] == 0xFF ) {
  162. + process_cape_version[i] = 0x30;
  163. + }
  164. + }
  165. + puts("]\n");
  166. +
  167. + strncat(hash_cape_overlay, process_cape_version, 4);
  168. + strncat(cape_overlay, process_cape_version, 4);
  169. + //printf("debug: %s %s\n", hash_cape_overlay, cape_overlay);
  170. +
  171. + strncat(hash_cape_overlay, ".dtbo", 5);
  172. + strncat(cape_overlay, ".dtbo", 5);
  173. + //printf("debug: %s %s\n", hash_cape_overlay, cape_overlay);
  174. +
  175. + printf("BeagleBone Cape EEPROM: 0x%x %s\n", addr, cape_overlay);
  176. +
  177. + switch(addr) {
  178. + case CAPE_EEPROM_ADDR0:
  179. + env_set("uboot_overlay_addr0", cape_overlay);
  180. + env_set("uboot_detected_capes_addr0", cape_overlay_pass_to_kernel);
  181. + break;
  182. + case CAPE_EEPROM_ADDR1:
  183. + env_set("uboot_overlay_addr1", cape_overlay);
  184. + env_set("uboot_detected_capes_addr1", cape_overlay_pass_to_kernel);
  185. + break;
  186. + case CAPE_EEPROM_ADDR2:
  187. + env_set("uboot_overlay_addr2", cape_overlay);
  188. + env_set("uboot_detected_capes_addr2", cape_overlay_pass_to_kernel);
  189. + break;
  190. + case CAPE_EEPROM_ADDR3:
  191. + env_set("uboot_overlay_addr3", cape_overlay);
  192. + env_set("uboot_detected_capes_addr3", cape_overlay_pass_to_kernel);
  193. + break;
  194. + }
  195. + env_set("uboot_detected_capes", "1");
  196. + } else {
  197. + printf("BeagleBone Cape EEPROM: EEPROM contents not valid (or blank) on address: 0x%x\n", addr);
  198. + }
  199. + }
  200. + }
  201. + return 0;
  202. +}
  203. +
  204. +void do_cape_detect(void)
  205. +{
  206. + struct am335x_cape_eeprom_id cape_header;
  207. +
  208. + probe_cape_eeprom(&cape_header);
  209. +}
  210. +
  211. static void setup_board_eeprom_env(void)
  212. {
  213. char *name = "beagle_x15";
  214. @@ -782,8 +943,10 @@ int board_late_init(void)
  215. /* Just probe the potentially supported cdce913 device */
  216. uclass_get_device(UCLASS_CLK, 0, &dev);
  217. - if (board_is_bbai())
  218. + if (board_is_bbai()) {
  219. env_set("console", "ttyS0,115200n8");
  220. + do_cape_detect();
  221. + }
  222. #if !defined(CONFIG_SPL_BUILD)
  223. board_ti_set_ethaddr(2);
  224. diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
  225. index 4da4aaa1c7..ed5b8aec16 100644
  226. --- a/configs/am57xx_evm_defconfig
  227. +++ b/configs/am57xx_evm_defconfig
  228. @@ -10,16 +10,20 @@ CONFIG_SPL_TEXT_BASE=0x40300000
  229. CONFIG_OMAP54XX=y
  230. CONFIG_TARGET_AM57XX_EVM=y
  231. CONFIG_SPL=y
  232. -CONFIG_ENV_OFFSET_REDUND=0x280000
  233. CONFIG_SPL_SPI_FLASH_SUPPORT=y
  234. CONFIG_SPL_SPI_SUPPORT=y
  235. CONFIG_ARMV7_LPAE=y
  236. -CONFIG_DEFAULT_DEVICE_TREE="am572x-idk"
  237. +CONFIG_DEFAULT_DEVICE_TREE="am57xx-beagle-x15-revc"
  238. CONFIG_AHCI=y
  239. CONFIG_DISTRO_DEFAULTS=y
  240. CONFIG_SPL_LOAD_FIT=y
  241. # CONFIG_USE_SPL_FIT_GENERATOR is not set
  242. CONFIG_OF_BOARD_SETUP=y
  243. +CONFIG_BOOTDELAY=1
  244. +CONFIG_AUTOBOOT_KEYED=y
  245. +CONFIG_AUTOBOOT_PROMPT="Press SPACE to abort autoboot in %d seconds\n"
  246. +CONFIG_AUTOBOOT_DELAY_STR="d"
  247. +CONFIG_AUTOBOOT_STOP_STR=" "
  248. CONFIG_USE_BOOTARGS=y
  249. CONFIG_BOOTARGS="androidboot.serialno=${serial#} console=ttyS2,115200 androidboot.console=ttyS2 androidboot.hardware=beagle_x15board"
  250. # CONFIG_USE_BOOTCOMMAND is not set
  251. @@ -48,13 +52,12 @@ CONFIG_BOOTP_DNS2=y
  252. CONFIG_CMD_AVB=y
  253. CONFIG_OF_CONTROL=y
  254. CONFIG_SPL_OF_CONTROL=y
  255. -CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am5729-beagleboneai am572x-idk am571x-idk am574x-idk"
  256. +CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am5729-beagleboneai"
  257. CONFIG_ENV_OVERWRITE=y
  258. -CONFIG_ENV_IS_IN_MMC=y
  259. -CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
  260. +# CONFIG_ENV_IS_IN_FAT is not set
  261. CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  262. -CONFIG_SYS_MMC_ENV_DEV=1
  263. CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
  264. +# CONFIG_SPL_ENV_IS_NOWHERE is not set
  265. CONFIG_VERSION_VARIABLE=y
  266. CONFIG_BOOTP_SEND_HOSTNAME=y
  267. CONFIG_DM=y
  268. diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
  269. index f13e9e5264..eabd03e27d 100644
  270. --- a/include/configs/ti_armv7_common.h
  271. +++ b/include/configs/ti_armv7_common.h
  272. @@ -92,6 +92,413 @@
  273. #define CONFIG_SYS_I2C
  274. #endif
  275. +#define EEPROM_PROGRAMMING \
  276. + "eeprom_dump=i2c dev 0; " \
  277. + "i2c md 0x50 0x00.2 20; " \
  278. + "\0" \
  279. + "eeprom_blank=i2c dev 0; " \
  280. + "i2c mw 0x50 0x00.2 ff; " \
  281. + "i2c mw 0x50 0x01.2 ff; " \
  282. + "i2c mw 0x50 0x02.2 ff; " \
  283. + "i2c mw 0x50 0x03.2 ff; " \
  284. + "i2c mw 0x50 0x04.2 ff; " \
  285. + "i2c mw 0x50 0x05.2 ff; " \
  286. + "i2c mw 0x50 0x06.2 ff; " \
  287. + "i2c mw 0x50 0x07.2 ff; " \
  288. + "i2c mw 0x50 0x08.2 ff; " \
  289. + "i2c mw 0x50 0x09.2 ff; " \
  290. + "i2c mw 0x50 0x0a.2 ff; " \
  291. + "i2c mw 0x50 0x0b.2 ff; " \
  292. + "i2c mw 0x50 0x0c.2 ff; " \
  293. + "i2c mw 0x50 0x0d.2 ff; " \
  294. + "i2c mw 0x50 0x0e.2 ff; " \
  295. + "i2c mw 0x50 0x0f.2 ff; " \
  296. + "i2c mw 0x50 0x10.2 ff; " \
  297. + "i2c mw 0x50 0x11.2 ff; " \
  298. + "i2c mw 0x50 0x12.2 ff; " \
  299. + "i2c mw 0x50 0x13.2 ff; " \
  300. + "i2c mw 0x50 0x14.2 ff; " \
  301. + "i2c mw 0x50 0x15.2 ff; " \
  302. + "i2c mw 0x50 0x16.2 ff; " \
  303. + "i2c mw 0x50 0x17.2 ff; " \
  304. + "i2c mw 0x50 0x18.2 ff; " \
  305. + "i2c mw 0x50 0x19.2 ff; " \
  306. + "i2c mw 0x50 0x1a.2 ff; " \
  307. + "i2c mw 0x50 0x1b.2 ff; " \
  308. + "i2c mw 0x50 0x1c.2 ff; " \
  309. + "i2c mw 0x50 0x1d.2 ff; " \
  310. + "i2c mw 0x50 0x1e.2 ff; " \
  311. + "i2c mw 0x50 0x1f.2 ff; " \
  312. + "i2c md 0x50 0x00.2 20; " \
  313. + "\0" \
  314. + "eeprom_x15_b1=i2c dev 0; " \
  315. + "i2c mw 0x50 0x00.2 aa; " \
  316. + "i2c mw 0x50 0x01.2 55; " \
  317. + "i2c mw 0x50 0x02.2 33; " \
  318. + "i2c mw 0x50 0x03.2 ee; " \
  319. + "i2c mw 0x50 0x04.2 42; " \
  320. + "i2c mw 0x50 0x05.2 42; " \
  321. + "i2c mw 0x50 0x06.2 52; " \
  322. + "i2c mw 0x50 0x07.2 44; " \
  323. + "i2c mw 0x50 0x08.2 58; " \
  324. + "i2c mw 0x50 0x09.2 31; " \
  325. + "i2c mw 0x50 0x0a.2 35; " \
  326. + "i2c mw 0x50 0x0b.2 5f; " \
  327. + "i2c mw 0x50 0x0c.2 42; " \
  328. + "i2c mw 0x50 0x0d.2 2e; " \
  329. + "i2c mw 0x50 0x0e.2 31; " \
  330. + "i2c mw 0x50 0x0f.2 30; " \
  331. + "i2c mw 0x50 0x10.2 57; " \
  332. + "i2c mw 0x50 0x11.2 57; " \
  333. + "i2c mw 0x50 0x12.2 59; " \
  334. + "i2c mw 0x50 0x13.2 59; " \
  335. + "i2c mw 0x50 0x14.2 34; " \
  336. + "i2c mw 0x50 0x15.2 50; " \
  337. + "i2c mw 0x50 0x16.2 35; " \
  338. + "i2c mw 0x50 0x17.2 35; " \
  339. + "i2c mw 0x50 0x18.2 30; " \
  340. + "i2c mw 0x50 0x19.2 30; " \
  341. + "i2c mw 0x50 0x1a.2 30; " \
  342. + "i2c mw 0x50 0x1b.2 30; " \
  343. + "i2c mw 0x50 0x1c.2 ff; " \
  344. + "i2c mw 0x50 0x1d.2 ff; " \
  345. + "i2c mw 0x50 0x1e.2 ff; " \
  346. + "i2c mw 0x50 0x1f.2 ff; " \
  347. + "i2c md 0x50 0x00.2 20; " \
  348. + "\0" \
  349. + "eeprom_x15_c=i2c dev 0; " \
  350. + "i2c mw 0x50 0x00.2 aa; " \
  351. + "i2c mw 0x50 0x01.2 55; " \
  352. + "i2c mw 0x50 0x02.2 33; " \
  353. + "i2c mw 0x50 0x03.2 ee; " \
  354. + "i2c mw 0x50 0x04.2 42; " \
  355. + "i2c mw 0x50 0x05.2 42; " \
  356. + "i2c mw 0x50 0x06.2 52; " \
  357. + "i2c mw 0x50 0x07.2 44; " \
  358. + "i2c mw 0x50 0x08.2 58; " \
  359. + "i2c mw 0x50 0x09.2 31; " \
  360. + "i2c mw 0x50 0x0a.2 35; " \
  361. + "i2c mw 0x50 0x0b.2 5f; " \
  362. + "i2c mw 0x50 0x0c.2 43; " \
  363. + "i2c mw 0x50 0x0d.2 2e; " \
  364. + "i2c mw 0x50 0x0e.2 30; " \
  365. + "i2c mw 0x50 0x0f.2 30; " \
  366. + "i2c mw 0x50 0x10.2 79; " \
  367. + "i2c mw 0x50 0x11.2 79; " \
  368. + "i2c mw 0x50 0x12.2 77; " \
  369. + "i2c mw 0x50 0x13.2 77; " \
  370. + "i2c mw 0x50 0x14.2 50; " \
  371. + "i2c mw 0x50 0x15.2 58; " \
  372. + "i2c mw 0x50 0x16.2 31; " \
  373. + "i2c mw 0x50 0x17.2 35; " \
  374. + "i2c mw 0x50 0x18.2 6e; " \
  375. + "i2c mw 0x50 0x19.2 6e; " \
  376. + "i2c mw 0x50 0x1a.2 6e; " \
  377. + "i2c mw 0x50 0x1b.2 6e; " \
  378. + "i2c mw 0x50 0x1c.2 ff; " \
  379. + "i2c mw 0x50 0x1d.2 ff; " \
  380. + "i2c mw 0x50 0x1e.2 ff; " \
  381. + "i2c mw 0x50 0x1f.2 ff; " \
  382. + "i2c md 0x50 0x00.2 20; " \
  383. + "eeprom_bbai_a2=i2c dev 0; " \
  384. + "i2c mw 0x50 0x00.2 aa; " \
  385. + "i2c mw 0x50 0x01.2 55; " \
  386. + "i2c mw 0x50 0x02.2 33; " \
  387. + "i2c mw 0x50 0x03.2 ee; " \
  388. + "i2c mw 0x50 0x04.2 42; " \
  389. + "i2c mw 0x50 0x05.2 42; " \
  390. + "i2c mw 0x50 0x06.2 4F; " \
  391. + "i2c mw 0x50 0x07.2 4E; " \
  392. + "i2c mw 0x50 0x08.2 45; " \
  393. + "i2c mw 0x50 0x09.2 2D; " \
  394. + "i2c mw 0x50 0x0a.2 41; " \
  395. + "i2c mw 0x50 0x0b.2 49; " \
  396. + "i2c mw 0x50 0x0c.2 30; " \
  397. + "i2c mw 0x50 0x0d.2 30; " \
  398. + "i2c mw 0x50 0x0e.2 41; " \
  399. + "i2c mw 0x50 0x0f.2 32; " \
  400. + "i2c mw 0x50 0x10.2 57; " \
  401. + "i2c mw 0x50 0x11.2 57; " \
  402. + "i2c mw 0x50 0x12.2 59; " \
  403. + "i2c mw 0x50 0x13.2 59; " \
  404. + "i2c mw 0x50 0x14.2 53; " \
  405. + "i2c mw 0x50 0x15.2 42; " \
  406. + "i2c mw 0x50 0x16.2 41; " \
  407. + "i2c mw 0x50 0x17.2 49; " \
  408. + "i2c mw 0x50 0x18.2 30; " \
  409. + "i2c mw 0x50 0x19.2 30; " \
  410. + "i2c mw 0x50 0x1a.2 30; " \
  411. + "i2c mw 0x50 0x1b.2 30; " \
  412. + "i2c mw 0x50 0x1c.2 30; " \
  413. + "i2c mw 0x50 0x1d.2 30; " \
  414. + "i2c mw 0x50 0x1e.2 ff; " \
  415. + "i2c mw 0x50 0x1f.2 ff; " \
  416. + "i2c md 0x50 0x00.2 20; " \
  417. + "\0" \
  418. +
  419. +#define EEWIKI_MMC_BOOT \
  420. + "mmc_boot=${devtype} dev ${mmcdev}; ${devtype} part; " \
  421. + "if ${devtype} rescan; then " \
  422. + "echo Scanning ${devtype} device ${mmcdev};" \
  423. + "setenv bootpart ${mmcdev}:1; " \
  424. + "echo Checking for: /uEnv.txt ...;" \
  425. + "if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
  426. + "load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
  427. + "env import -t ${loadaddr} ${filesize};" \
  428. + "echo Loaded environment from /uEnv.txt;" \
  429. + "echo Checking if uenvcmd is set ...;" \
  430. + "if test -n ${uenvcmd}; then " \
  431. + "echo Running uenvcmd ...;" \
  432. + "run uenvcmd;" \
  433. + "fi;" \
  434. + "fi; " \
  435. + "echo Checking for: /boot/uEnv.txt ...;" \
  436. + "for i in 1 2 3 4 5 6 7 ; do " \
  437. + "setenv mmcpart ${i};" \
  438. + "setenv bootpart ${mmcdev}:${mmcpart};" \
  439. + "if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
  440. + "load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
  441. + "env import -t ${loadaddr} ${filesize};" \
  442. + "echo Loaded environment from /boot/uEnv.txt;" \
  443. + "if test -n ${dtb}; then " \
  444. + "setenv fdtfile ${dtb};" \
  445. + "echo debug: [dtb=${fdtfile}] ...;" \
  446. + "fi;" \
  447. + "echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
  448. + "if test -n ${uname_r}; then " \
  449. + "echo debug: [uname_r=${uname_r}] ...;" \
  450. + "setenv oldroot /dev/mmcblk${mmcdev}p${mmcpart};" \
  451. + "run uname_boot;" \
  452. + "fi;" \
  453. + "fi;" \
  454. + "done;" \
  455. + "fi;\0" \
  456. +
  457. +#define EEWIKI_SCSI_BOOT \
  458. + "scsi_boot=${devtype} reset ; " \
  459. + "if ${devtype} dev ${mmcdev}; then " \
  460. + "echo Scanning ${devtype} device ${mmcdev};" \
  461. + "setenv bootpart ${mmcdev}:1; " \
  462. + "echo Checking for: /uEnv.txt ...;" \
  463. + "if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
  464. + "load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
  465. + "env import -t ${loadaddr} ${filesize};" \
  466. + "echo Loaded environment from /uEnv.txt;" \
  467. + "echo Checking if uenvcmd is set ...;" \
  468. + "if test -n ${uenvcmd}; then " \
  469. + "echo Running uenvcmd ...;" \
  470. + "run uenvcmd;" \
  471. + "fi;" \
  472. + "fi; " \
  473. + "echo Checking for: /boot/uEnv.txt ...;" \
  474. + "for i in 1 2 3 4 ; do " \
  475. + "setenv mmcpart ${i};" \
  476. + "setenv bootpart ${mmcdev}:${mmcpart};" \
  477. + "if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
  478. + "load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
  479. + "env import -t ${loadaddr} ${filesize};" \
  480. + "echo Loaded environment from /boot/uEnv.txt;" \
  481. + "if test -n ${dtb}; then " \
  482. + "setenv fdtfile ${dtb};" \
  483. + "echo debug: [dtb=${fdtfile}] ...;" \
  484. + "fi;" \
  485. + "echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
  486. + "if test -n ${uname_r}; then " \
  487. + "echo debug: [uname_r=${uname_r}] ...;" \
  488. + "setenv oldroot /dev/sda${mmcpart};" \
  489. + "run uname_boot;" \
  490. + "fi;" \
  491. + "fi;" \
  492. + "done;" \
  493. + "fi;\0" \
  494. +
  495. +#define EEWIKI_USB_BOOT \
  496. + "usb_boot=${devtype} reset ; " \
  497. + "if ${devtype} dev ${mmcdev}; then " \
  498. + "echo Scanning ${devtype} device ${mmcdev};" \
  499. + "setenv bootpart ${mmcdev}:1; " \
  500. + "echo Checking for: /uEnv.txt ...;" \
  501. + "if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
  502. + "load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
  503. + "env import -t ${loadaddr} ${filesize};" \
  504. + "echo Loaded environment from /uEnv.txt;" \
  505. + "echo Checking if uenvcmd is set in /uEnv.txt ...;" \
  506. + "if test -n ${uenvcmd}; then " \
  507. + "echo Running uenvcmd ...;" \
  508. + "run uenvcmd;" \
  509. + "fi;" \
  510. + "fi; " \
  511. + "echo Checking for: /boot/uEnv.txt ...;" \
  512. + "for i in 1 2 3 4 ; do " \
  513. + "setenv mmcpart ${i};" \
  514. + "setenv bootpart ${mmcdev}:${mmcpart};" \
  515. + "if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
  516. + "load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
  517. + "env import -t ${loadaddr} ${filesize};" \
  518. + "echo Loaded environment from /boot/uEnv.txt;" \
  519. + "if test -n ${dtb}; then " \
  520. + "setenv fdtfile ${dtb};" \
  521. + "echo debug: [dtb=${fdtfile}] ...;" \
  522. + "fi;" \
  523. + "echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
  524. + "if test -n ${uname_r}; then " \
  525. + "echo debug: [uname_r=${uname_r}] ...;" \
  526. + "setenv oldroot /dev/sda${mmcpart};" \
  527. + "run uname_boot;" \
  528. + "fi;" \
  529. + "fi;" \
  530. + "done;" \
  531. + "fi;\0" \
  532. +
  533. +#define EEWIKI_UNAME_BOOT \
  534. + "uname_boot="\
  535. + "setenv bootdir /boot; " \
  536. + "setenv bootfile vmlinuz-${uname_r}; " \
  537. + "if test -e ${devtype} ${bootpart} ${bootdir}/${bootfile}; then " \
  538. + "echo loading ${bootdir}/${bootfile} ...; "\
  539. + "run loadimage;" \
  540. + "setenv fdtdir /boot/dtbs/${uname_r}; " \
  541. + "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
  542. + "run loadfdt;" \
  543. + "else " \
  544. + "setenv fdtdir /usr/lib/linux-image-${uname_r}; " \
  545. + "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
  546. + "run loadfdt;" \
  547. + "else " \
  548. + "setenv fdtdir /lib/firmware/${uname_r}/device-tree; " \
  549. + "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
  550. + "run loadfdt;" \
  551. + "else " \
  552. + "setenv fdtdir /boot/dtb-${uname_r}; " \
  553. + "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
  554. + "run loadfdt;" \
  555. + "else " \
  556. + "setenv fdtdir /boot/dtbs; " \
  557. + "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
  558. + "run loadfdt;" \
  559. + "else " \
  560. + "setenv fdtdir /boot/dtb; " \
  561. + "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
  562. + "run loadfdt;" \
  563. + "else " \
  564. + "setenv fdtdir /boot; " \
  565. + "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
  566. + "run loadfdt;" \
  567. + "else " \
  568. + "echo; echo unable to find ${fdtfile} ...; echo booting legacy ...;"\
  569. + "run args_mmc;" \
  570. + "echo debug: [${bootargs}] ... ;" \
  571. + "echo debug: [bootz ${loadaddr}] ... ;" \
  572. + "bootz ${loadaddr}; " \
  573. + "fi;" \
  574. + "fi;" \
  575. + "fi;" \
  576. + "fi;" \
  577. + "fi;" \
  578. + "fi;" \
  579. + "fi; " \
  580. + "if test -n ${enable_uboot_overlays}; then " \
  581. + "setenv fdt_buffer 0x60000;" \
  582. + "if test -n ${uboot_fdt_buffer}; then " \
  583. + "setenv fdt_buffer ${uboot_fdt_buffer};" \
  584. + "fi;" \
  585. + "echo uboot_overlays: [fdt_buffer=${fdt_buffer}] ... ;" \
  586. + "if test -n ${uboot_overlay_addr0}; then " \
  587. + "if test -n ${disable_uboot_overlay_addr0}; then " \
  588. + "echo uboot_overlays: uboot loading of [${uboot_overlay_addr0}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr0=1]...;" \
  589. + "else " \
  590. + "setenv uboot_overlay ${uboot_overlay_addr0}; " \
  591. + "run virtualloadoverlay;" \
  592. + "fi;" \
  593. + "fi;" \
  594. + "if test -n ${uboot_overlay_addr1}; then " \
  595. + "if test -n ${disable_uboot_overlay_addr1}; then " \
  596. + "echo uboot_overlays: uboot loading of [${uboot_overlay_addr1}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr1=1]...;" \
  597. + "else " \
  598. + "setenv uboot_overlay ${uboot_overlay_addr1}; " \
  599. + "run virtualloadoverlay;" \
  600. + "fi;" \
  601. + "fi;" \
  602. + "if test -n ${uboot_overlay_addr2}; then " \
  603. + "if test -n ${disable_uboot_overlay_addr2}; then " \
  604. + "echo uboot_overlays: uboot loading of [${uboot_overlay_addr2}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr2=1]...;" \
  605. + "else " \
  606. + "setenv uboot_overlay ${uboot_overlay_addr2}; " \
  607. + "run virtualloadoverlay;" \
  608. + "fi;" \
  609. + "fi;" \
  610. + "if test -n ${uboot_overlay_addr3}; then " \
  611. + "if test -n ${disable_uboot_overlay_addr3}; then " \
  612. + "echo uboot_overlays: uboot loading of [${uboot_overlay_addr3}] disabled by /boot/uEnv.txt [disable_uboot_overlay_addr3=1]...;" \
  613. + "else " \
  614. + "setenv uboot_overlay ${uboot_overlay_addr3}; " \
  615. + "run virtualloadoverlay;" \
  616. + "fi;" \
  617. + "fi;" \
  618. + "if test -n ${uboot_overlay_addr4}; then " \
  619. + "setenv uboot_overlay ${uboot_overlay_addr4}; " \
  620. + "run virtualloadoverlay;" \
  621. + "fi;" \
  622. + "if test -n ${uboot_overlay_addr5}; then " \
  623. + "setenv uboot_overlay ${uboot_overlay_addr5}; " \
  624. + "run virtualloadoverlay;" \
  625. + "fi;" \
  626. + "if test -n ${uboot_overlay_addr6}; then " \
  627. + "setenv uboot_overlay ${uboot_overlay_addr6}; " \
  628. + "run virtualloadoverlay;" \
  629. + "fi;" \
  630. + "if test -n ${uboot_overlay_addr7}; then " \
  631. + "setenv uboot_overlay ${uboot_overlay_addr7}; " \
  632. + "run virtualloadoverlay;" \
  633. + "fi;" \
  634. + "if test -n ${uboot_overlay_pru}; then " \
  635. + "setenv uboot_overlay ${uboot_overlay_pru}; " \
  636. + "run virtualloadoverlay;" \
  637. + "fi;" \
  638. + "else " \
  639. + "echo uboot_overlays: add [enable_uboot_overlays=1] to /boot/uEnv.txt to enable...;" \
  640. + "fi;" \
  641. + "setenv rdfile initrd.img-${uname_r}; " \
  642. + "if test -e ${devtype} ${bootpart} ${bootdir}/${rdfile}; then " \
  643. + "echo loading ${bootdir}/${rdfile} ...; "\
  644. + "run loadrd;" \
  645. + "if test -n ${netinstall_enable}; then " \
  646. + "run args_netinstall; run message;" \
  647. + "echo debug: [${bootargs}] ... ;" \
  648. + "echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
  649. + "bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
  650. + "fi;" \
  651. + "if test -n ${uenv_root}; then " \
  652. + "run args_uenv_root;" \
  653. + "echo debug: [${bootargs}] ... ;" \
  654. + "echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
  655. + "bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
  656. + "fi;" \
  657. + "if test -n ${uuid}; then " \
  658. + "run args_mmc_uuid;" \
  659. + "echo debug: [${bootargs}] ... ;" \
  660. + "echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
  661. + "bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
  662. + "else " \
  663. + "run args_mmc_old;" \
  664. + "echo debug: [${bootargs}] ... ;" \
  665. + "echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
  666. + "bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
  667. + "fi;" \
  668. + "else " \
  669. + "if test -n ${uenv_root}; then " \
  670. + "run args_uenv_root;" \
  671. + "echo debug: [${bootargs}] ... ;" \
  672. + "echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \
  673. + "bootz ${loadaddr} - ${fdtaddr}; " \
  674. + "fi;" \
  675. + "run args_mmc_old;" \
  676. + "echo debug: [${bootargs}] ... ;" \
  677. + "echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \
  678. + "bootz ${loadaddr} - ${fdtaddr}; " \
  679. + "fi;" \
  680. + "fi;\0" \
  681. +
  682. /*
  683. * The following are general good-enough settings for U-Boot. We set a
  684. * large malloc pool as we generally have a lot of DDR, and we opt for
  685. diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h
  686. index de0a6af2fd..0cd2ccea03 100644
  687. --- a/include/configs/ti_omap5_common.h
  688. +++ b/include/configs/ti_omap5_common.h
  689. @@ -64,6 +64,11 @@
  690. DEFAULT_FIT_TI_ARGS \
  691. DEFAULT_COMMON_BOOT_TI_ARGS \
  692. DEFAULT_FDT_TI_ARGS \
  693. + EEWIKI_USB_BOOT \
  694. + EEWIKI_SCSI_BOOT \
  695. + EEWIKI_MMC_BOOT \
  696. + EEWIKI_UNAME_BOOT \
  697. + EEPROM_PROGRAMMING \
  698. DFUARGS \
  699. NETARGS \
  700. NANDARGS \
  701. diff --git a/include/environment/ti/boot.h b/include/environment/ti/boot.h
  702. index a9d8f28d46..1480b6e3df 100644
  703. --- a/include/environment/ti/boot.h
  704. +++ b/include/environment/ti/boot.h
  705. @@ -132,6 +132,7 @@
  706. "bootpart=0:2\0" \
  707. "bootdir=/boot\0" \
  708. "bootfile=zImage\0" \
  709. + "board_eeprom_header=undefined\0" \
  710. "usbtty=cdc_acm\0" \
  711. "vram=16M\0" \
  712. AVB_VERIFY_CMD \
  713. @@ -183,7 +184,14 @@
  714. "else " \
  715. "echo $apart partition not found; " \
  716. "exit; " \
  717. - "fi;\0"
  718. + "fi;\0 " \
  719. + "read_board_eeprom=" \
  720. + "if test $board_eeprom_header = beagle_x15_revb1_blank; then " \
  721. + "run eeprom_dump; run eeprom_x15_b1; reset; fi; " \
  722. + "if test $board_eeprom_header = beagle_x15_revc_blank; then " \
  723. + "run eeprom_dump; run eeprom_x15_c; reset; fi; " \
  724. + "if test $board_eeprom_header = bbai_a2_blank; then " \
  725. + "run eeprom_dump; run eeprom_bbai_a2; reset; fi; \0 "
  726. #ifdef CONFIG_OMAP54XX
  727. @@ -223,19 +231,17 @@
  728. "echo WARNING: Could not determine device tree to use; fi; \0"
  729. #define CONFIG_BOOTCOMMAND \
  730. - "if test ${dofastboot} -eq 1; then " \
  731. - "echo Boot fastboot requested, resetting dofastboot ...;" \
  732. - "setenv dofastboot 0; saveenv;" \
  733. - FASTBOOT_CMD \
  734. - "fi;" \
  735. - "if test ${boot_fit} -eq 1; then " \
  736. - "run update_to_fit;" \
  737. - "fi;" \
  738. + "run read_board_eeprom; " \
  739. "run findfdt; " \
  740. - "run envboot; " \
  741. - "run mmcboot;" \
  742. - "run emmc_linux_boot; " \
  743. - "run emmc_android_boot; " \
  744. + "setenv mmcdev 0; " \
  745. + "setenv devtype usb; " \
  746. + "echo usb_boot is currently disabled;" \
  747. + "setenv devtype scsi; " \
  748. + "echo scsi_boot is currently disabled;" \
  749. + "setenv devtype mmc; " \
  750. + "run mmc_boot;" \
  751. + "setenv mmcdev 1; " \
  752. + "run mmc_boot;" \
  753. ""
  754. #endif /* CONFIG_OMAP54XX */
  755. diff --git a/include/environment/ti/mmc.h b/include/environment/ti/mmc.h
  756. index b86c8dc7a4..0ec09f279a 100644
  757. --- a/include/environment/ti/mmc.h
  758. +++ b/include/environment/ti/mmc.h
  759. @@ -11,11 +11,31 @@
  760. #define DEFAULT_MMC_TI_ARGS \
  761. "mmcdev=0\0" \
  762. "mmcrootfstype=ext4 rootwait\0" \
  763. - "finduuid=part uuid mmc ${bootpart} uuid\0" \
  764. + "finduuid=part uuid ${devtype} ${bootpart} uuid\0" \
  765. "args_mmc=run finduuid;setenv bootargs console=${console} " \
  766. "${optargs} " \
  767. - "root=PARTUUID=${uuid} rw " \
  768. - "rootfstype=${mmcrootfstype}\0" \
  769. + "root=PARTUUID=${uuid} ro " \
  770. + "rootfstype=${mmcrootfstype} " \
  771. + "${cmdline}\0" \
  772. + "args_mmc_old=setenv bootargs console=${console} " \
  773. + "${optargs} " \
  774. + "root=${oldroot} ro " \
  775. + "rootfstype=${mmcrootfstype} " \
  776. + "${cmdline}\0" \
  777. + "args_mmc_uuid=setenv bootargs console=${console} " \
  778. + "${optargs} " \
  779. + "root=UUID=${uuid} ro " \
  780. + "rootfstype=${mmcrootfstype} " \
  781. + "${cmdline}\0" \
  782. + "args_uenv_root=setenv bootargs console=${console} " \
  783. + "${optargs} " \
  784. + "root=${uenv_root} ro " \
  785. + "rootfstype=${mmcrootfstype} " \
  786. + "${musb} ${cmdline}\0" \
  787. + "args_netinstall=setenv bootargs ${netinstall_bootargs} " \
  788. + "${optargs} " \
  789. + "root=/dev/ram rw " \
  790. + "${cmdline}\0" \
  791. "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
  792. "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
  793. "source ${loadaddr}\0" \
  794. @@ -24,7 +44,28 @@
  795. "env import -t ${loadaddr} ${filesize}\0" \
  796. "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \
  797. "loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
  798. - "loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
  799. + "loadrd=load ${devtype} ${bootpart} ${rdaddr} ${bootdir}/${rdfile}; setenv rdsize ${filesize}\0" \
  800. + "loadfdt=echo loading ${fdtdir}/${fdtfile} ...; load ${devtype} ${bootpart} ${fdtaddr} ${fdtdir}/${fdtfile}\0" \
  801. + "loadoverlay=echo uboot_overlays: loading ${actual_uboot_overlay} ...; " \
  802. + "load ${devtype} ${bootpart} ${rdaddr} ${actual_uboot_overlay}; " \
  803. + "fdt addr ${fdtaddr}; fdt resize ${fdt_buffer}; " \
  804. + "fdt apply ${rdaddr}; fdt resize ${fdt_buffer};\0" \
  805. + "virtualloadoverlay=if test -e ${devtype} ${bootpart} ${fdtdir}/overlays/${uboot_overlay}; then " \
  806. + "setenv actual_uboot_overlay ${fdtdir}/overlays/${uboot_overlay}; " \
  807. + "run loadoverlay;" \
  808. + "else " \
  809. + "if test -e ${devtype} ${bootpart} /lib/firmware/${uboot_overlay}; then " \
  810. + "setenv actual_uboot_overlay /lib/firmware/${uboot_overlay}; " \
  811. + "run loadoverlay;" \
  812. + "else " \
  813. + "if test -e ${devtype} ${bootpart} ${uboot_overlay}; then " \
  814. + "setenv actual_uboot_overlay ${uboot_overlay}; " \
  815. + "run loadoverlay;" \
  816. + "else " \
  817. + "echo uboot_overlays: unable to find [${devtype} ${bootpart} ${uboot_overlay}]...;" \
  818. + "fi;" \
  819. + "fi;" \
  820. + "fi;\0" \
  821. "envboot=mmc dev ${mmcdev}; " \
  822. "if mmc rescan; then " \
  823. "echo SD/MMC found on device ${mmcdev};" \
  824. --
  825. 2.20.1