Commit 3c86f1ca3a541ef5d6f5fd1bb608b7a00f1244c0
1 parent
67410134af
Exists in
smarc-m6.0.1_2.1.0-ga
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 |