
Hi Fabio,
On Tuesday, December 17, 2013 9:03:40 PM, Fabio Estevam wrote:
From: Fabio Estevam fabio.estevam@freescale.com
When using the fuse API in U-boot user must calculate the 'bank' and 'word' values.
Provide a real example on how to calculate such values for the mx6q.
Signed-off-by: Fabio Estevam fabio.estevam@freescale.com
doc/README.fuse | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+)
diff --git a/doc/README.fuse b/doc/README.fuse index 1bc91c4..aca1e5e 100644 --- a/doc/README.fuse +++ b/doc/README.fuse @@ -65,3 +65,60 @@ Configuration:
CONFIG_CMD_FUSE Define this to enable the fuse commands.
+Example:
+For reading the MAC address fuses on a MX6Q:
+- The MAC address are stored in two fuse addresses (the fuse addresses are +described in the Fusemap Descriptions table from the mx6q Reference Manual):
+0x620[31:0] - MAC_ADDR[31:0] +0x630[15:0] - MAC_ADDR[47:32]
+In order to use the fuse API, we need to pass the bank and word values, which +are calculated as below:
+Fuse address for the lower MAC address: 0x620 +Base address for the fuses: 0x400
+(0x620 - 0x400)/0x10 = 0x22 = 34 decimal
+As the fuses are arranged in banks of 8 words:
+34 / 8 = 4 and the remainder is 2, so in this case:
+bank = 4 +word = 2
+And the U-boot command would be:
+=> fuse read 4 2 +Reading bank 4:
+Word 0x00000002: 9f027772
+Doing the same for the upper MAC address:
+Fuse address for the upper MAC address: 0x630 +Base address for the fuses: 0x400
+(0x630 - 0x400)/0x10 = 0x23 = 35 decimal
+As the fuses are arranged in banks of 8 words:
+35 / 8 = 4 and the remainder is 3, so in this case:
+bank = 4 +word = 3
+And the U-boot command would be:
+=> fuse read 4 3 +Reading bank 4:
+Word 0x00000003: 00000004
+,which matches the ethaddr value: +=> echo ${ethaddr}
+00:04:9f:02:77:72
1.8.1.2
Note that the documentation in this file is also completed for i.MX6 by doc/README.mxc_ocotp and doc/README.imx6, as explained in each README. The information that you add here regarding the location of the MAC fuses for i.MX6Q is already present in doc/README.imx6.
Regarding the 'calculation' part, it is actually not needed since the values obtained with these calculations are already given by the reference manual in '46.5 OCOTP Memory Map/Register Definition'.
Examples could still be interesting though. What do you think? - Should the calculation part be removed and replaced with a reference to the RM §46.5 be added? - Should this example be moved to doc/README.imx6, or kept in doc/README.fuse as a generic example for the fuse API? - Should an example be added to show how to read the whole MAC address with a single fuse command (i.e. 'fuse read 4 2 2')?
Best regards, Benoît