README.imx6 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. U-Boot for Freescale i.MX6
  2. This file contains information for the port of U-Boot to the Freescale i.MX6
  3. SoC.
  4. 1. CONVENTIONS FOR FUSE ASSIGNMENTS
  5. -----------------------------------
  6. 1.1 MAC Address: It is stored in fuse bank 4, with the 32 lsbs in word 2 and the
  7. 16 msbs in word 3.
  8. Example:
  9. For reading the MAC address fuses on a MX6Q:
  10. - The MAC address is stored in two fuse addresses (the fuse addresses are
  11. described in the Fusemap Descriptions table from the mx6q Reference Manual):
  12. 0x620[31:0] - MAC_ADDR[31:0]
  13. 0x630[15:0] - MAC_ADDR[47:32]
  14. In order to use the fuse API, we need to pass the bank and word values, which
  15. are calculated as below:
  16. Fuse address for the lower MAC address: 0x620
  17. Base address for the fuses: 0x400
  18. (0x620 - 0x400)/0x10 = 0x22 = 34 decimal
  19. As the fuses are arranged in banks of 8 words:
  20. 34 / 8 = 4 and the remainder is 2, so in this case:
  21. bank = 4
  22. word = 2
  23. And the U-boot command would be:
  24. => fuse read 4 2
  25. Reading bank 4:
  26. Word 0x00000002: 9f027772
  27. Doing the same for the upper MAC address:
  28. Fuse address for the upper MAC address: 0x630
  29. Base address for the fuses: 0x400
  30. (0x630 - 0x400)/0x10 = 0x23 = 35 decimal
  31. As the fuses are arranged in banks of 8 words:
  32. 35 / 8 = 4 and the remainder is 3, so in this case:
  33. bank = 4
  34. word = 3
  35. And the U-boot command would be:
  36. => fuse read 4 3
  37. Reading bank 4:
  38. Word 0x00000003: 00000004
  39. ,which matches the ethaddr value:
  40. => echo ${ethaddr}
  41. 00:04:9f:02:77:72
  42. Some other useful hints:
  43. - The 'bank' and 'word' numbers can be easily obtained from the mx6 Reference
  44. Manual. For the mx6quad case, please check the "46.5 OCOTP Memory Map/Register
  45. Definition" from the "i.MX 6Dual/6Quad Applications Processor Reference Manual,
  46. Rev. 1, 04/2013" document. For example, for the MAC fuses we have:
  47. Address:
  48. 21B_C620 Value of OTP Bank4 Word2 (MAC Address)(OCOTP_MAC0)
  49. 21B_C630 Value of OTP Bank4 Word3 (MAC Address)(OCOTP_MAC1)
  50. - The command '=> fuse read 4 2 2' reads the whole MAC addresses at once:
  51. => fuse read 4 2 2
  52. Reading bank 4:
  53. Word 0x00000002: 9f027772 00000004