xref: /openbmc/u-boot/doc/imx/common/imx6.txt (revision cf033e04da315ba949e804c127abae0134bda30f)
1*75e8ca6aSBreno Matheus LimaU-Boot for Freescale i.MX6
2*75e8ca6aSBreno Matheus Lima
3*75e8ca6aSBreno Matheus LimaThis file contains information for the port of U-Boot to the Freescale i.MX6
4*75e8ca6aSBreno Matheus LimaSoC.
5*75e8ca6aSBreno Matheus Lima
6*75e8ca6aSBreno Matheus Lima1. CONVENTIONS FOR FUSE ASSIGNMENTS
7*75e8ca6aSBreno Matheus Lima-----------------------------------
8*75e8ca6aSBreno Matheus Lima
9*75e8ca6aSBreno Matheus Lima1.1 MAC Address: It is stored in fuse bank 4, with the 32 lsbs in word 2 and the
10*75e8ca6aSBreno Matheus Lima    16 msbs in word 3[15:0].
11*75e8ca6aSBreno Matheus Lima    For i.MX6SX and i.MX6UL, they have two MAC addresses. The second MAC address
12*75e8ca6aSBreno Matheus Lima    is stored in fuse bank 4, with the 16 lsb in word 3[31:16] and the 32 msbs in
13*75e8ca6aSBreno Matheus Lima    word 4.
14*75e8ca6aSBreno Matheus Lima
15*75e8ca6aSBreno Matheus LimaExample:
16*75e8ca6aSBreno Matheus Lima
17*75e8ca6aSBreno Matheus LimaFor reading the MAC address fuses on a MX6Q:
18*75e8ca6aSBreno Matheus Lima
19*75e8ca6aSBreno Matheus Lima- The MAC address is stored in two fuse addresses (the fuse addresses are
20*75e8ca6aSBreno Matheus Limadescribed in the Fusemap Descriptions table from the mx6q Reference Manual):
21*75e8ca6aSBreno Matheus Lima
22*75e8ca6aSBreno Matheus Lima0x620[31:0] - MAC_ADDR[31:0]
23*75e8ca6aSBreno Matheus Lima0x630[15:0] - MAC_ADDR[47:32]
24*75e8ca6aSBreno Matheus Lima
25*75e8ca6aSBreno Matheus LimaIn order to use the fuse API, we need to pass the bank and word values, which
26*75e8ca6aSBreno Matheus Limaare calculated as below:
27*75e8ca6aSBreno Matheus Lima
28*75e8ca6aSBreno Matheus LimaFuse address for the lower MAC address: 0x620
29*75e8ca6aSBreno Matheus LimaBase address for the fuses: 0x400
30*75e8ca6aSBreno Matheus Lima
31*75e8ca6aSBreno Matheus Lima(0x620 - 0x400)/0x10 = 0x22 = 34 decimal
32*75e8ca6aSBreno Matheus Lima
33*75e8ca6aSBreno Matheus LimaAs the fuses are arranged in banks of 8 words:
34*75e8ca6aSBreno Matheus Lima
35*75e8ca6aSBreno Matheus Lima34 / 8 = 4 and the remainder is 2, so in this case:
36*75e8ca6aSBreno Matheus Lima
37*75e8ca6aSBreno Matheus Limabank = 4
38*75e8ca6aSBreno Matheus Limaword = 2
39*75e8ca6aSBreno Matheus Lima
40*75e8ca6aSBreno Matheus LimaAnd the U-Boot command would be:
41*75e8ca6aSBreno Matheus Lima
42*75e8ca6aSBreno Matheus Lima=> fuse read 4 2
43*75e8ca6aSBreno Matheus LimaReading bank 4:
44*75e8ca6aSBreno Matheus Lima
45*75e8ca6aSBreno Matheus LimaWord 0x00000002: 9f027772
46*75e8ca6aSBreno Matheus Lima
47*75e8ca6aSBreno Matheus LimaDoing the same for the upper MAC address:
48*75e8ca6aSBreno Matheus Lima
49*75e8ca6aSBreno Matheus LimaFuse address for the upper MAC address: 0x630
50*75e8ca6aSBreno Matheus LimaBase address for the fuses: 0x400
51*75e8ca6aSBreno Matheus Lima
52*75e8ca6aSBreno Matheus Lima(0x630 - 0x400)/0x10 = 0x23 = 35 decimal
53*75e8ca6aSBreno Matheus Lima
54*75e8ca6aSBreno Matheus LimaAs the fuses are arranged in banks of 8 words:
55*75e8ca6aSBreno Matheus Lima
56*75e8ca6aSBreno Matheus Lima35 / 8 = 4 and the remainder is 3, so in this case:
57*75e8ca6aSBreno Matheus Lima
58*75e8ca6aSBreno Matheus Limabank = 4
59*75e8ca6aSBreno Matheus Limaword = 3
60*75e8ca6aSBreno Matheus Lima
61*75e8ca6aSBreno Matheus LimaAnd the U-Boot command would be:
62*75e8ca6aSBreno Matheus Lima
63*75e8ca6aSBreno Matheus Lima=> fuse read 4 3
64*75e8ca6aSBreno Matheus LimaReading bank 4:
65*75e8ca6aSBreno Matheus Lima
66*75e8ca6aSBreno Matheus LimaWord 0x00000003: 00000004
67*75e8ca6aSBreno Matheus Lima
68*75e8ca6aSBreno Matheus Lima,which matches the ethaddr value:
69*75e8ca6aSBreno Matheus Lima=> echo ${ethaddr}
70*75e8ca6aSBreno Matheus Lima00:04:9f:02:77:72
71*75e8ca6aSBreno Matheus Lima
72*75e8ca6aSBreno Matheus LimaSome other useful hints:
73*75e8ca6aSBreno Matheus Lima
74*75e8ca6aSBreno Matheus Lima- The 'bank' and 'word' numbers can be easily obtained from the mx6 Reference
75*75e8ca6aSBreno Matheus LimaManual. For the mx6quad case, please check the "46.5 OCOTP Memory Map/Register
76*75e8ca6aSBreno Matheus LimaDefinition" from the "i.MX 6Dual/6Quad Applications Processor Reference Manual,
77*75e8ca6aSBreno Matheus LimaRev. 1, 04/2013" document. For example, for the MAC fuses we have:
78*75e8ca6aSBreno Matheus Lima
79*75e8ca6aSBreno Matheus LimaAddress:
80*75e8ca6aSBreno Matheus Lima21B_C620	Value of OTP Bank4 Word2 (MAC Address)(OCOTP_MAC0)
81*75e8ca6aSBreno Matheus Lima
82*75e8ca6aSBreno Matheus Lima21B_C630	Value of OTP Bank4 Word3 (MAC Address)(OCOTP_MAC1)
83*75e8ca6aSBreno Matheus Lima
84*75e8ca6aSBreno Matheus Lima- The command '=> fuse read 4 2 2' reads the whole MAC addresses at once:
85*75e8ca6aSBreno Matheus Lima
86*75e8ca6aSBreno Matheus Lima=> fuse read 4 2 2
87*75e8ca6aSBreno Matheus LimaReading bank 4:
88*75e8ca6aSBreno Matheus Lima
89*75e8ca6aSBreno Matheus LimaWord 0x00000002: 9f027772 00000004
90*75e8ca6aSBreno Matheus Lima
91