313-mt7623-select-rootdisk.patch 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. --- a/board/mediatek/mt7623/mt7623_rfb.c
  2. +++ b/board/mediatek/mt7623/mt7623_rfb.c
  3. @@ -91,3 +91,43 @@ int board_late_init(void)
  4. env_relocate();
  5. return 0;
  6. }
  7. +
  8. +int ft_system_setup(void *blob, struct bd_info *bd)
  9. +{
  10. + const u32 *media_handle_p;
  11. + int chosen, len, ret;
  12. + const char *media;
  13. + u32 media_handle;
  14. +
  15. +#ifdef CONFIG_MMC
  16. + switch (mmc_get_boot_dev()) {
  17. + case 0:
  18. + media = "rootdisk-emmc";
  19. + break
  20. + ;;
  21. + case 1:
  22. + media = "rootdisk-sd";
  23. + break
  24. + ;;
  25. + }
  26. +
  27. + chosen = fdt_path_offset(blob, "/chosen");
  28. + if (chosen <= 0)
  29. + return 0;
  30. +
  31. + media_handle_p = fdt_getprop(blob, chosen, media, &len);
  32. + if (media_handle_p <= 0 || len != 4)
  33. + return 0;
  34. +
  35. + media_handle = *media_handle_p;
  36. + ret = fdt_setprop(blob, chosen, "rootdisk", &media_handle, sizeof(media_handle));
  37. + if (ret) {
  38. + printf("cannot set media phandle %s as rootdisk /chosen node\n", media);
  39. + return ret;
  40. + }
  41. +
  42. + printf("set /chosen/rootdisk to bootrom media: %s (phandle 0x%08x)\n", media, fdt32_to_cpu(media_handle));
  43. +#endif
  44. +
  45. + return 0;
  46. +}