Switch 2: Fuses: Difference between revisions
No edit summary |
Add info from Orin Fuse specification |
||
| Line 3: | Line 3: | ||
The fuse layout can be found by reverse engineering fskp_t234.bin from the Linux4Tegra package. | The fuse layout can be found by reverse engineering fskp_t234.bin from the Linux4Tegra package. | ||
= Physical Layout = | |||
== Fuse words == | |||
Fuses are laid out in 32-bit words. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Fuse Word || Bits || Value | ! Fuse Word || Bits || Value | ||
|- | |- | ||
| 0 || 5..8 || OdmLock | | style="background: yellow" | | ||
| style="background: yellow" | | |||
| style="background: yellow" | [[#Shadowed Fuses]] Begin | |||
|- | |||
| 0 || 5..8 || [[#OdmLock]] | |||
|- | |- | ||
| 0 || 9 || Fa | | 0 || 9 || Fa | ||
| Line 21: | Line 29: | ||
|- | |- | ||
| 0 || 28 || ZeroizeDis | | 0 || 28 || ZeroizeDis | ||
|- | |- | ||
| 2 || 2..31 || ReservedOdm0[0..29] | | 2 || 2..31 || ReservedOdm0[0..29] | ||
|- | |- | ||
| 4 || 0..1 || ReservedOdm0[30..31] | | 4 || 0..1 || ReservedOdm0[30..31] | ||
|- | |- | ||
| 4 || 2..31 || ReservedOdm1[0..29] | | 4 || 2..31 || ReservedOdm1[0..29] | ||
|- | |- | ||
| 6 || 0..1 || ReservedOdm1[30..31] | | 6 || 0..1 || ReservedOdm1[30..31] | ||
|- | |- | ||
| 6 || 2..31 || ReservedOdm2[0..29] | | 6 || 2..31 || ReservedOdm2[0..29] | ||
|- | |- | ||
| 8 || 0..1 || ReservedOdm2[30..31] | | 8 || 0..1 || ReservedOdm2[30..31] | ||
|- | |- | ||
| 8 || 2..31 || ReservedOdm3[0..29] | | 8 || 2..31 || ReservedOdm3[0..29] | ||
|- | |- | ||
| 10 || 0..1 || ReservedOdm3[30..31] | | 10 || 0..1 || ReservedOdm3[30..31] | ||
|- | |- | ||
| 10 || 2..31 || ReservedOdm4[0..29] | | 10 || 2..31 || ReservedOdm4[0..29] | ||
|- | |- | ||
| 12 || 0..1 || ReservedOdm4[30..31] | | 12 || 0..1 || ReservedOdm4[30..31] | ||
|- | |- | ||
| 12 || 2..31 || ReservedOdm5[0..29] | | 12 || 2..31 || ReservedOdm5[0..29] | ||
|- | |- | ||
| 14 || 0..1 || ReservedOdm5[30..31] | | 14 || 0..1 || ReservedOdm5[30..31] | ||
|- | |- | ||
| 14 || 2..31 || ReservedOdm6[0..29] | | 14 || 2..31 || ReservedOdm6[0..29] | ||
|- | |- | ||
| 16 || 0..1 || ReservedOdm6[30..31] | | 16 || 0..1 || ReservedOdm6[30..31] | ||
|- | |- | ||
| 16 || 2..31 || ReservedOdm7[0..29] | | 16 || 2..31 || ReservedOdm7[0..29] | ||
|- | |- | ||
| 18 || 0..1 || ReservedOdm7[30..31] | | 18 || 0..1 || ReservedOdm7[30..31] | ||
| Line 103: | Line 67: | ||
|- | |- | ||
| 18 || 2 || ObsDis | | 18 || 2 || ObsDis | ||
|- | |- | ||
| 20 || 0..11 || HyperVoltaging[20..31] | | 20 || 0..11 || HyperVoltaging[20..31] | ||
|- | |- | ||
| | | 24 || 1 || ForceDbgWithTestKeys | ||
|- | |- | ||
| 24 || 2..31 || SysFwRatchet0[0..29] | | 24 || 2..31 || SysFwRatchet0[0..29] | ||
|- | |- | ||
| 26 || 0..1 || SysFwRatchet0[30..31] | | 26 || 0..1 || SysFwRatchet0[30..31] | ||
|- | |- | ||
| 26 || 2..31 || SysFwRatchet1[0..29] | | 26 || 2..31 || SysFwRatchet1[0..29] | ||
|- | |- | ||
| 28 || 0..1 || SysFwRatchet1[30..31] | | 28 || 0..1 || SysFwRatchet1[30..31] | ||
|- | |- | ||
| 28 || 2..31 || SysFwRatchet2[0..29] | | 28 || 2..31 || SysFwRatchet2[0..29] | ||
|- | |- | ||
| 30 || 0..1 || SysFwRatchet2[30..31] | | 30 || 0..1 || SysFwRatchet2[30..31] | ||
|- | |- | ||
| 30 || 2..31 || SysFwRatchet3[0..29] (Shadow) | | 30 || 2..31 || SysFwRatchet3[0..29] (Shadow) | ||
|- | |- | ||
| 32 || 0..1 || SysFwRatchet3[30..31] | | 32 || 0..1 || SysFwRatchet3[30..31] | ||
|- | |- | ||
| 32 || 2..31 || CcplexUcodeFieldRatchet[0..29] | | 32 || 2..31 || CcplexUcodeFieldRatchet[0..29] | ||
|- | |- | ||
| 34 || 0..1 || CcplexUcodeFieldRatchet[30..31] | | 34 || 0..1 || CcplexUcodeFieldRatchet[30..31] | ||
|- | |- | ||
| 34 || 2..31 || Mb1FieldRatchet[0..29] | | 34 || 2..31 || Mb1FieldRatchet[0..29] | ||
|- | |- | ||
| 36 || 0..1 || Mb1FieldRatchet[30..31] | | 36 || 0..1 || Mb1FieldRatchet[30..31] | ||
| Line 185: | Line 115: | ||
|- | |- | ||
| 36 || 28 || CcplexDfdAccessDisable | | 36 || 28 || CcplexDfdAccessDisable | ||
|- | |- | ||
| 46 || 1 || EnableCrJtagSecurity | | 46 || 1 || EnableCrJtagSecurity | ||
| Line 217: | Line 125: | ||
|- | |- | ||
| 46 || 24 || RevokePkH1 | | 46 || 24 || RevokePkH1 | ||
|- | |- | ||
| 72 || 14..31 || PscBlFieldRatchet[0..17] | | 72 || 14..31 || PscBlFieldRatchet[0..17] | ||
|- | |- | ||
| 74 || 0..13 || PscBlFieldRatchet[18..31] | | 74 || 0..13 || PscBlFieldRatchet[18..31] | ||
|- | |- | ||
| 74 || 30..31 || RomFeatureDisable[0..1] | | 74 || 30..31 || RomFeatureDisable[0..1] | ||
|- | |- | ||
| 76 || 0..13 || RomFeatureDisable[18..31] | | 76 || 0..13 || RomFeatureDisable[18..31] | ||
| Line 246: | Line 138: | ||
| 76 || 20..25 || FsiDebugAuthentication[0..5] | | 76 || 20..25 || FsiDebugAuthentication[0..5] | ||
|- | |- | ||
| | | style="background: yellow" | | ||
| | | style="background: yellow" | | ||
| | | style="background: yellow" | [[#Shadowed Fuses]] End | ||
|- | |- | ||
| 84 || 32 || Sku | | 84 || 32 || Sku | ||
| Line 277: | Line 167: | ||
|- | |- | ||
| 170 || 14..20 || PscBlNvRevision[0..6] | | | 170 || 14..20 || PscBlNvRevision[0..6] | | ||
|- | |||
| style="background: yellow" | | |||
| style="background: yellow" | | |||
| style="background: yellow" | [[#H2]] CRC32 Begin | |||
|- | |- | ||
| 188 || 21..31 || PublicKeyHash[0][0..10] | | 188 || 21..31 || PublicKeyHash[0][0..10] | ||
| Line 507: | Line 401: | ||
|- | |- | ||
| 259 || 0..24 || [[#H2]][7..31] | | 259 || 0..24 || [[#H2]][7..31] | ||
|- | |||
| style="background: yellow" | | |||
| style="background: yellow" | | |||
| style="background: yellow" | [[#H2]] CRC32 End | |||
|- | |||
|- | |- | ||
| 727 || 0..31 || PscOdmStatic[0..31] | | 727 || 0..31 || PscOdmStatic[0..31] | ||
| Line 719: | Line 618: | ||
|} | |} | ||
=== Shadowed Fuses === | |||
The first 80 fuse words are 40 pairs redundantly stored next to each other. These fuses are field-updatable. One bit inside a word can be programmed at a time. | |||
== Fuses == | Many security sensitive fuses are in this region. | ||
Both shadowed values should always agree with each other, and they should be programmed together without a reset in-between. | |||
=== H2 Fuses === | |||
These fuses are protected by the H2 CRC32. Once programmed, they cannot be updatable arbitrarily. | |||
= Fuses = | |||
Some fuses are mirrored in MMIO registers. | Some fuses are mirrored in MMIO registers. | ||
| Line 973: | Line 881: | ||
| 127 || || | | 127 || || | ||
|} | |} | ||
== OdmLock == | |||
OdmLock is a 4-bit wide field that allows locking 32-bit fields of: ReservedOdm0, ReservedOdm1, ReservedOdm2, ReservedOdm3. | |||
ReservedOdm Banks 4-7 do not have this lock feature. | |||
ReservedOdm Banks 4-7 are ratchet fuses (used for anti-downgrade). | |||
== Fa == | |||
Failure analysis mode. | |||
== NvJtagProtectionEnable == | |||
If set, [[#Fa]] cannot be used. | |||
== SecBootDeviceSelect == | == SecBootDeviceSelect == | ||