Commit 3c86f1ca3a541ef5d6f5fd1bb608b7a00f1244c0

Authored by Eric Lee
1 parent 67410134af

Fix Recovery and Fastboot Mode Bug

Showing 1 changed file with 32 additions and 40 deletions Side-by-side Diff

board/embedian/smarcfimx6/smarcfimx6.c
... ... @@ -1297,8 +1297,6 @@
1297 1297 /* SMARC BOOT_SEL*/
1298 1298 if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) {
1299 1299 puts("BOOT_SEL Detected: OFF OFF OFF, Load zImage from Carrier SATA...\n");
1300   - if (!getenv("fastboot_dev"))
1301   - setenv("fastboot_dev", "sata");
1302 1300 if (!getenv("bootcmd"))
1303 1301 setenv("bootcmd", "boota sata");
1304 1302 } else if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) {
1305 1303  
1306 1304  
1307 1305  
1308 1306  
1309 1307  
1310 1308  
1311 1309  
1312 1310  
... ... @@ -1307,33 +1305,37 @@
1307 1305 } else if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) {
1308 1306 puts("BOOT_SEL Detected: OFF ON OFF, Load zImage from Carrier SDMMC...\n");
1309 1307 setenv_ulong("mmcdev", 1);
1310   - if (!getenv("fastboot_dev"))
  1308 + if (!getenv("fastboot_dev"))
1311 1309 setenv("fastboot_dev", "mmc1");
1312   - setenv("bootcmd", "boota mmc1");
  1310 + if (!getenv("bootcmd"))
  1311 + setenv("bootcmd", "boota mmc1");
1313 1312 } else if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) {
1314 1313 puts("BOOT_SEL Detected: ON OFF OFF, Load zImage from Carrier SD Card...\n");
1315 1314 setenv_ulong("mmcdev", 0);
1316   - if (!getenv("fastboot_dev"))
  1315 + if (!getenv("fastboot_dev"))
1317 1316 setenv("fastboot_dev", "mmc0");
1318   - setenv("bootcmd", "boota mmc0");
  1317 + if (!getenv("bootcmd"))
  1318 + setenv("bootcmd", "boota mmc0");
1319 1319 } else if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) {
1320 1320 puts("BOOT_SEL Detected: OFF ON ON, Load zImage from Module eMMC Flash...\n");
1321 1321 setenv_ulong("mmcdev", 2);
1322   - if (!getenv("fastboot_dev"))
  1322 + if (!getenv("fastboot_dev"))
1323 1323 setenv("fastboot_dev", "mmc2");
1324   - setenv("bootcmd", "boota mmc2");
  1324 + if (!getenv("bootcmd"))
  1325 + setenv("bootcmd", "boota mmc2");
1325 1326 } else if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) {
1326 1327 puts("BOOT_SEL Detected: ON OFF ON, Load zImage from GBE...\n");
1327   - setenv("bootcmd", "run netboot;");
  1328 + setenv("bootcmd", "run netboot;");
1328 1329 } else if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) {
1329 1330 puts("Carrier SPI Boot 110\n");
1330 1331 hang();
1331 1332 } else if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) {
1332 1333 puts("BOOT_SEL Detected: ON ON ON, MOdule SPI Boot up is Default, Load zImage from Module eMMC...\n");
1333 1334 setenv_ulong("mmcdev", 2);
1334   - if (!getenv("fastboot_dev"))
  1335 + if (!getenv("fastboot_dev"))
1335 1336 setenv("fastboot_dev", "mmc2");
1336   - setenv("bootcmd", "boota mmc2");
  1337 + if (!getenv("bootcmd"))
  1338 + setenv("bootcmd", "boota mmc2");
1337 1339 } else {
1338 1340 puts("unsupported boot devices\n");
1339 1341 hang();
1340 1342  
1341 1343  
1342 1344  
1343 1345  
1344 1346  
1345 1347  
1346 1348  
1347 1349  
... ... @@ -1346,40 +1348,36 @@
1346 1348  
1347 1349 void board_fastboot_setup(void)
1348 1350 {
1349   - switch (get_boot_device()) {
1350 1351 #if defined(CONFIG_FASTBOOT_STORAGE_SATA)
1351   - case SATA_BOOT:
  1352 + if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0))
1352 1353 if (!getenv("fastboot_dev"))
1353 1354 setenv("fastboot_dev", "sata");
1354 1355 if (!getenv("bootcmd"))
1355 1356 setenv("bootcmd", "boota sata");
1356   - break;
1357 1357 #endif /*CONFIG_FASTBOOT_STORAGE_SATA*/
1358 1358 #if defined(CONFIG_FASTBOOT_STORAGE_MMC)
1359   - case SD2_BOOT:
1360   - case MMC2_BOOT:
  1359 + if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) {
  1360 + setenv_ulong("mmcdev", 0);
1361 1361 if (!getenv("fastboot_dev"))
1362 1362 setenv("fastboot_dev", "mmc0");
1363 1363 if (!getenv("bootcmd"))
1364 1364 setenv("bootcmd", "boota mmc0");
1365   - break;
1366   - case SD3_BOOT:
1367   - case MMC3_BOOT:
  1365 + } else if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) {
  1366 + setenv_ulong("mmcdev", 1);
1368 1367 if (!getenv("fastboot_dev"))
1369 1368 setenv("fastboot_dev", "mmc1");
1370 1369 if (!getenv("bootcmd"))
1371 1370 setenv("bootcmd", "boota mmc1");
1372   - break;
1373   - case MMC4_BOOT:
  1371 + } else if((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) {
  1372 + setenv_ulong("mmcdev", 2);
1374 1373 if (!getenv("fastboot_dev"))
1375 1374 setenv("fastboot_dev", "mmc2");
1376 1375 if (!getenv("bootcmd"))
1377 1376 setenv("bootcmd", "boota mmc2");
1378   - break;
1379 1377 #endif /*CONFIG_FASTBOOT_STORAGE_MMC*/
1380   - default:
  1378 + } else {
1381 1379 printf("unsupported boot devices\n");
1382   - break;
  1380 + return;
1383 1381 }
1384 1382  
1385 1383 }
1386 1384  
1387 1385  
1388 1386  
1389 1387  
1390 1388  
1391 1389  
1392 1390  
... ... @@ -1415,41 +1413,35 @@
1415 1413  
1416 1414 void board_recovery_setup(void)
1417 1415 {
1418   - int bootdev = get_boot_device();
1419   -
1420   - switch (bootdev) {
1421 1416 #if defined(CONFIG_FASTBOOT_STORAGE_SATA)
1422   - case SATA_BOOT:
  1417 + if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0))
  1418 + puts("Entering Recovery Mode into SATA...\n");
1423 1419 if (!getenv("bootcmd_android_recovery"))
1424 1420 setenv("bootcmd_android_recovery",
1425 1421 "boota sata recovery");
1426   - break;
1427 1422 #endif /*CONFIG_FASTBOOT_STORAGE_SATA*/
1428 1423 #if defined(CONFIG_FASTBOOT_STORAGE_MMC)
1429   - case SD2_BOOT:
1430   - case MMC2_BOOT:
  1424 + if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) {
  1425 + puts("Entering Recovery Mode into Carrier SD Card...\n");
1431 1426 setenv_ulong("mmcdev", 0);
1432 1427 if (!getenv("bootcmd_android_recovery"))
1433 1428 setenv("bootcmd_android_recovery",
1434 1429 "boota mmc0 recovery");
1435   - break;
1436   - case SD3_BOOT:
1437   - case MMC3_BOOT:
  1430 + } else if ((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 0)) {
  1431 + puts("Entering Recovery Mode into Carrier SDMMC...\n");
1438 1432 setenv_ulong("mmcdev", 1);
1439 1433 if (!getenv("bootcmd_android_recovery"))
1440 1434 setenv("bootcmd_android_recovery",
1441 1435 "boota mmc1 recovery");
1442   - break;
1443   - case MMC4_BOOT:
  1436 + } else if((gpio_get_value(IMX_GPIO_NR(1, 4)) == 0)&&(gpio_get_value(IMX_GPIO_NR(1, 5)) == 1)&&(gpio_get_value(IMX_GPIO_NR(1, 6)) == 1)) {
  1437 + puts("Entering Recovery Mode into on Module eMMC Flash...\n");
1444 1438 setenv_ulong("mmcdev", 2);
1445 1439 if (!getenv("bootcmd_android_recovery"))
1446 1440 setenv("bootcmd_android_recovery",
1447 1441 "boota mmc2 recovery");
1448   - break;
1449 1442 #endif /*CONFIG_FASTBOOT_STORAGE_MMC*/
1450   - default:
1451   - printf("Unsupported bootup device for recovery: dev: %d\n",
1452   - bootdev);
  1443 + } else {
  1444 + puts("Unsupported bootup device for recovery\n");
1453 1445 return;
1454 1446 }
1455 1447