coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mc.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __SOC_NVIDIA_TEGRA210_MC_H__
4 #define __SOC_NVIDIA_TEGRA210_MC_H__
5 
6 #include <stddef.h>
7 #include <stdint.h>
8 
9 // Memory Controller registers we need/care about
10 
11 struct tegra_mc_regs {
12  uint32_t rsvd_0x0[4]; /* 0x00 */
13  uint32_t smmu_config; /* 0x10 */
14  uint32_t smmu_tlb_config; /* 0x14 */
15  uint32_t smmu_ptc_config; /* 0x18 */
16  uint32_t smmu_ptb_asid; /* 0x1c */
17  uint32_t smmu_ptb_data; /* 0x20 */
18  uint32_t rsvd_0x24[3]; /* 0x24 */
19  uint32_t smmu_tlb_flush; /* 0x30 */
20  uint32_t smmu_ptc_flush; /* 0x34 */
21  uint32_t rsvd_0x38[6]; /* 0x38 */
22  uint32_t emem_cfg; /* 0x50 */
23  uint32_t emem_adr_cfg; /* 0x54 */
24  uint32_t emem_adr_cfg_dev0; /* 0x58 */
25  uint32_t emem_adr_cfg_dev1; /* 0x5c */
30  uint32_t security_cfg0; /* 0x70 */
31  uint32_t security_cfg1; /* 0x74 */
32  uint32_t rsvd_0x78[6]; /* 0x78 */
33  uint32_t emem_arb_cfg; /* 0x90 */
35  uint32_t emem_arb_timing_rcd; /* 0x98 */
36  uint32_t emem_arb_timing_rp; /* 0x9c */
37  uint32_t emem_arb_timing_rc; /* 0xa0 */
38  uint32_t emem_arb_timing_ras; /* 0xa4 */
39  uint32_t emem_arb_timing_faw; /* 0xa8 */
40  uint32_t emem_arb_timing_rrd; /* 0xac */
43  uint32_t emem_arb_timing_r2r; /* 0xb8 */
44  uint32_t emem_arb_timing_w2w; /* 0xbc */
45  uint32_t emem_arb_timing_r2w; /* 0xc0 */
46  uint32_t emem_arb_timing_w2r; /* 0xc4 */
48  uint32_t rsvd_0xcc[1]; /* 0xCC */
49  uint32_t emem_arb_da_turns; /* 0xd0 */
50  uint32_t emem_arb_da_covers; /* 0xd4 */
51  uint32_t emem_arb_misc0; /* 0xd8 */
52  uint32_t emem_arb_misc1; /* 0xdc */
55  uint32_t emem_arb_override; /* 0xe8 */
56  uint32_t emem_arb_rsv; /* 0xec */
57  uint32_t rsvd_0xf0[1]; /* 0xf0 */
58  uint32_t clken_override; /* 0xf4 */
59  uint32_t timing_control_dbg; /* 0xf8 */
60  uint32_t timing_control; /* 0xfc */
61  uint32_t stat_control; /* 0x100 */
62  uint32_t rsvd_0x104[65]; /* 0x104 */
63  uint32_t emem_arb_isochronous_0; /* 0x208 */
64  uint32_t emem_arb_isochronous_1; /* 0x20c */
65  uint32_t emem_arb_isochronous_2; /* 0x210 */
66  uint32_t rsvd_0x214[38]; /* 0x214 */
67  uint32_t dis_extra_snap_levels; /* 0x2ac */
68  uint32_t rsvd_0x2b0[90]; /* 0x2b0 */
70  uint32_t rsvd_0x41c[93]; /* 0x41c */
72  uint32_t rsvd_0x594[29]; /* 0x594 */
73  uint32_t display_snap_ring; /* 0x608 */
74  uint32_t rsvd_0x60c[15]; /* 0x60c */
75  uint32_t video_protect_bom; /* 0x648 */
76  uint32_t video_protect_size_mb; /* 0x64c */
77  uint32_t video_protect_reg_ctrl; /* 0x650 */
78  uint32_t rsvd_0x654[4]; /* 0x654 */
79  uint32_t emem_cfg_access_ctrl; /* 0x664 */
80  uint32_t rsvd_0x668[2]; /* 0x668 */
81  uint32_t sec_carveout_bom; /* 0x670 */
82  uint32_t sec_carveout_size_mb; /* 0x674 */
83  uint32_t sec_carveout_reg_ctrl; /* 0x678 */
84  uint32_t rsvd_0x67c[17]; /* 0x67C-0x6BC */
85 
88  uint32_t rsvd_0x6c8[10]; /* 0x6C8-0x6EC */
89 
92  uint32_t rsvd_0x6f8[156]; /* 0x6F8-0x964 */
93 
94  uint32_t emem_arb_override_1; /* 0x968 */
95  uint32_t rsvd_0x96c[3]; /* 0x96c */
97  uint32_t rsvd_0x97c[2]; /* 0x97c */
100  uint32_t rsvd_0x98c[5]; /* 0x98c */
101  uint32_t mts_carveout_bom; /* 0x9a0 */
102  uint32_t mts_carveout_size_mb; /* 0x9a4 */
103  uint32_t mts_carveout_adr_hi; /* 0x9a8 */
104  uint32_t mts_carveout_reg_ctrl; /* 0x9ac */
105  uint32_t rsvd_0x9b0[4]; /* 0x9b0 */
106  uint32_t emem_bank_swizzle_cfg0; /* 0x9c0 */
107  uint32_t emem_bank_swizzle_cfg1; /* 0x9c4 */
108  uint32_t emem_bank_swizzle_cfg2; /* 0x9c8 */
109  uint32_t emem_bank_swizzle_cfg3; /* 0x9cc */
110  uint32_t rsvd_0x9d0[1]; /* 0x9d0 */
111  uint32_t sec_carveout_adr_hi; /* 0x9d4 */
112  uint32_t rsvd_0x9d8; /* 0x9D8 */
113  uint32_t da_config0; /* 0x9DC */
114  uint32_t rsvd_0x9c0[138]; /* 0x9E0-0xc04 */
115 
130  uint32_t rsvd_0xc40[6]; /* 0xc40-0xc54 */
131 
146  uint32_t rsvd_0xc90[6]; /* 0xc90-0xca4 */
147 
162  uint32_t rsvd_0xce0[6]; /* 0xce0-0xcf4 */
163 
178  uint32_t rsvd_0xd30[6]; /* 0xd30-0xd44 */
179 
194 };
195 
196 enum {
198 
201 
204 
206 
208 };
209 
210 #define MC_SECURITY_CARVEOUT_LOCKED (1 << 1)
211 #define MC_VPR_WR_ACCESS_DISABLE (1 << 0)
212 #define MC_VPR_ALLOW_TZ_WR_ACCESS_ENABLE (1 << 1)
213 
214 check_member(tegra_mc_regs, security_carveout5_cfia4, 0xd7c);
215 
216 #endif /* __SOC_NVIDIA_TEGRA210_MC_H__ */
unsigned int uint32_t
Definition: stdint.h:14
uint32_t emem_adr_cfg_channel_mask
Definition: mc.h:26
uint32_t emem_arb_misc2
Definition: mc.h:47
uint32_t security_carveout1_cfia1
Definition: mc.h:126
uint32_t security_carveout5_cfia3
Definition: mc.h:192
uint32_t security_carveout2_ca3
Definition: mc.h:139
uint32_t security_carveout3_ca1
Definition: mc.h:153
uint32_t rsvd_0x2b0[90]
Definition: mc.h:65
uint32_t security_carveout1_ca1
Definition: mc.h:121
uint32_t emem_adr_cfg
Definition: mc.h:23
uint32_t security_carveout4_cfia2
Definition: mc.h:175
uint32_t smmu_ptb_data
Definition: mc.h:17
uint32_t display_snap_ring
Definition: mc.h:70
uint32_t security_carveout2_size_128kb
Definition: mc.h:135
uint32_t security_carveout5_ca0
Definition: mc.h:184
uint32_t rsvd_0x60c[15]
Definition: mc.h:71
uint32_t emem_arb_isochronous_0
Definition: mc.h:60
uint32_t security_carveout1_cfg0
Definition: mc.h:116
uint32_t emem_arb_timing_rcd
Definition: mc.h:33
uint32_t security_carveout2_ca1
Definition: mc.h:137
uint32_t security_carveout1_ca2
Definition: mc.h:122
uint32_t emem_cfg_access_ctrl
Definition: mc.h:76
uint32_t rsvd_0x24[3]
Definition: mc.h:18
uint32_t video_protect_size_mb
Definition: mc.h:73
uint32_t security_carveout1_ca4
Definition: mc.h:124
uint32_t rsvd_0x0[4]
Definition: mc.h:12
uint32_t emem_arb_timing_rfcpb
Definition: mc.h:86
uint32_t security_carveout5_ca3
Definition: mc.h:187
uint32_t security_carveout2_cfia0
Definition: mc.h:141
uint32_t rsvd_0x668[2]
Definition: mc.h:77
uint32_t timing_control_dbg
Definition: mc.h:56
uint32_t rsvd_0xc40[6]
Definition: mc.h:130
uint32_t security_carveout2_bom
Definition: mc.h:133
uint32_t emem_arb_isochronous_2
Definition: mc.h:62
uint32_t security_carveout5_cfia4
Definition: mc.h:193
uint32_t emem_arb_timing_rap2pre
Definition: mc.h:39
uint32_t rsvd_0x9b0[4]
Definition: mc.h:93
uint32_t sec_carveout_size_mb
Definition: mc.h:79
uint32_t emem_arb_timing_r2r
Definition: mc.h:41
uint32_t smmu_ptb_asid
Definition: mc.h:16
uint32_t emem_arb_override
Definition: mc.h:52
uint32_t emem_arb_ring3_throttle
Definition: mc.h:51
uint32_t security_carveout3_cfia4
Definition: mc.h:161
uint32_t security_carveout5_size_128kb
Definition: mc.h:183
uint32_t rsvd_0x6f8[156]
Definition: mc.h:92
uint32_t security_carveout2_cfia1
Definition: mc.h:142
uint32_t rsvd_0x9c0[138]
Definition: mc.h:114
uint32_t smmu_ptc_flush
Definition: mc.h:20
uint32_t rsvd_0x38[6]
Definition: mc.h:21
uint32_t video_protect_vpr_override
Definition: mc.h:66
uint32_t emem_arb_outstanding_req
Definition: mc.h:32
uint32_t mts_carveout_adr_hi
Definition: mc.h:91
uint32_t smmu_config
Definition: mc.h:13
uint32_t video_protect_bom_adr_hi
Definition: mc.h:84
uint32_t security_carveout3_ca4
Definition: mc.h:156
uint32_t da_config0
Definition: mc.h:113
uint32_t security_carveout3_bom
Definition: mc.h:149
uint32_t rsvd_0x78[6]
Definition: mc.h:32
uint32_t security_carveout3_size_128kb
Definition: mc.h:151
uint32_t sec_carveout_reg_ctrl
Definition: mc.h:80
uint32_t smmu_ptc_config
Definition: mc.h:15
uint32_t rsvd_0x67c[187]
Definition: mc.h:81
uint32_t rsvd_0xce0[6]
Definition: mc.h:162
uint32_t security_carveout4_cfia4
Definition: mc.h:177
uint32_t emem_adr_cfg_dev1
Definition: mc.h:25
uint32_t security_carveout1_bom_hi
Definition: mc.h:118
uint32_t security_carveout4_ca3
Definition: mc.h:171
uint32_t security_carveout1_cfia3
Definition: mc.h:128
uint32_t security_carveout3_cfia0
Definition: mc.h:157
uint32_t security_carveout5_ca4
Definition: mc.h:188
uint32_t rsvd_0x104[65]
Definition: mc.h:59
uint32_t rsvd_0xcc[1]
Definition: mc.h:48
uint32_t rsvd_0x98c[5]
Definition: mc.h:88
uint32_t security_carveout3_cfg0
Definition: mc.h:148
uint32_t emem_adr_cfg_dev0
Definition: mc.h:24
uint32_t emem_adr_cfg_bank_mask_1
Definition: mc.h:28
uint32_t security_carveout2_cfia3
Definition: mc.h:144
uint32_t security_carveout2_ca2
Definition: mc.h:138
uint32_t emem_bank_swizzle_cfg0
Definition: mc.h:94
uint32_t rsvd_0x97c[2]
Definition: mc.h:85
uint32_t security_carveout3_cfia1
Definition: mc.h:158
uint32_t security_carveout1_cfia0
Definition: mc.h:125
uint32_t emem_cfg
Definition: mc.h:22
uint32_t security_carveout2_bom_hi
Definition: mc.h:134
uint32_t emem_arb_timing_ras
Definition: mc.h:36
uint32_t security_carveout3_ca3
Definition: mc.h:155
uint32_t security_carveout3_ca0
Definition: mc.h:152
uint32_t video_protect_gpu_override_0
Definition: mc.h:86
uint32_t security_carveout1_bom
Definition: mc.h:117
uint32_t security_carveout4_cfg0
Definition: mc.h:164
uint32_t video_protect_bom
Definition: mc.h:72
uint32_t stat_control
Definition: mc.h:58
uint32_t emem_arb_timing_rc
Definition: mc.h:35
uint32_t smmu_tlb_flush
Definition: mc.h:19
uint32_t emem_arb_isochronous_1
Definition: mc.h:61
uint32_t emem_adr_cfg_bank_mask_0
Definition: mc.h:27
uint32_t emem_adr_cfg_bank_mask_2
Definition: mc.h:29
uint32_t emem_arb_rsv
Definition: mc.h:53
uint32_t security_carveout4_bom
Definition: mc.h:165
uint32_t emem_arb_timing_w2w
Definition: mc.h:42
uint32_t emem_arb_cfg
Definition: mc.h:31
uint32_t emem_arb_ring1_throttle
Definition: mc.h:50
uint32_t security_carveout4_ca1
Definition: mc.h:169
uint32_t rsvd_0x594[29]
Definition: mc.h:69
uint32_t clken_override
Definition: mc.h:55
uint32_t security_carveout4_cfia0
Definition: mc.h:173
uint32_t security_carveout3_cfia3
Definition: mc.h:160
uint32_t security_carveout1_cfia2
Definition: mc.h:127
uint32_t rsvd_0x41c[93]
Definition: mc.h:67
uint32_t rsvd_0xc90[6]
Definition: mc.h:146
uint32_t rsvd_0x9d8
Definition: mc.h:112
uint32_t security_carveout5_cfia1
Definition: mc.h:190
uint32_t security_carveout4_ca2
Definition: mc.h:170
uint32_t timing_control
Definition: mc.h:57
uint32_t emem_bank_swizzle_cfg1
Definition: mc.h:95
uint32_t emem_arb_da_turns
Definition: mc.h:46
uint32_t emem_arb_refpb_hp_ctrl
Definition: mc.h:90
uint32_t security_carveout4_size_128kb
Definition: mc.h:167
uint32_t security_carveout5_cfia2
Definition: mc.h:191
uint32_t rsvd_0xd30[6]
Definition: mc.h:178
uint32_t security_carveout5_ca2
Definition: mc.h:186
uint32_t security_cfg0
Definition: mc.h:30
uint32_t emem_bank_swizzle_cfg3
Definition: mc.h:97
uint32_t video_protect_gpu_override_1
Definition: mc.h:87
uint32_t emem_arb_misc1
Definition: mc.h:49
uint32_t security_carveout2_ca4
Definition: mc.h:140
uint32_t security_carveout2_ca0
Definition: mc.h:136
uint32_t security_cfg1
Definition: mc.h:31
uint32_t security_carveout1_ca3
Definition: mc.h:123
uint32_t mts_carveout_reg_ctrl
Definition: mc.h:92
uint32_t security_carveout5_cfg0
Definition: mc.h:180
uint32_t emem_arb_override_1
Definition: mc.h:82
uint32_t emem_arb_da_covers
Definition: mc.h:47
uint32_t security_carveout3_ca2
Definition: mc.h:154
uint32_t security_carveout5_cfia0
Definition: mc.h:189
uint32_t security_carveout3_bom_hi
Definition: mc.h:150
uint32_t rsvd_0x6c8[10]
Definition: mc.h:88
uint32_t video_protect_vpr_override1
Definition: mc.h:68
uint32_t security_carveout5_bom
Definition: mc.h:181
uint32_t emem_arb_timing_ccdmw
Definition: mc.h:87
uint32_t rsvd_0x9d0[1]
Definition: mc.h:98
uint32_t mts_carveout_bom
Definition: mc.h:89
uint32_t emem_bank_swizzle_cfg2
Definition: mc.h:96
uint32_t sec_carveout_bom
Definition: mc.h:78
uint32_t security_carveout2_cfia2
Definition: mc.h:143
uint32_t sec_carveout_adr_hi
Definition: mc.h:99
uint32_t security_carveout1_size_128kb
Definition: mc.h:119
uint32_t security_carveout4_ca4
Definition: mc.h:172
uint32_t security_carveout5_bom_hi
Definition: mc.h:182
uint32_t emem_arb_timing_faw
Definition: mc.h:37
uint32_t emem_arb_timing_wap2pre
Definition: mc.h:40
uint32_t rsvd_0x654[4]
Definition: mc.h:75
uint32_t security_carveout4_bom_hi
Definition: mc.h:166
uint32_t security_carveout4_cfia3
Definition: mc.h:176
uint32_t emem_arb_timing_w2r
Definition: mc.h:44
uint32_t security_carveout3_cfia2
Definition: mc.h:159
uint32_t rsvd_0x214[38]
Definition: mc.h:63
uint32_t dis_extra_snap_levels
Definition: mc.h:64
uint32_t security_carveout4_cfia1
Definition: mc.h:174
uint32_t security_carveout5_ca1
Definition: mc.h:185
uint32_t emem_arb_timing_rp
Definition: mc.h:34
uint32_t video_protect_reg_ctrl
Definition: mc.h:74
uint32_t mts_carveout_size_mb
Definition: mc.h:90
uint32_t security_carveout2_cfg0
Definition: mc.h:132
uint32_t smmu_tlb_config
Definition: mc.h:14
uint32_t emem_arb_refpb_bank_ctrl
Definition: mc.h:91
uint32_t emem_arb_timing_r2w
Definition: mc.h:43
uint32_t emem_arb_timing_rrd
Definition: mc.h:38
uint32_t security_carveout2_cfia4
Definition: mc.h:145
uint32_t security_carveout4_ca0
Definition: mc.h:168
uint32_t security_carveout1_cfia4
Definition: mc.h:129
uint32_t security_carveout1_ca0
Definition: mc.h:120
uint32_t emem_arb_misc0
Definition: mc.h:48
uint32_t rsvd_0xf0[1]
Definition: mc.h:54
uint32_t rsvd_0x96c[3]
Definition: mc.h:83
check_member(tegra_mc_regs, sec_carveout_adr_hi, 0x9d4)
@ MC_EMEM_ARB_MISC0_MC_EMC_SAME_FREQ_SHIFT
Definition: mc.h:106
@ MC_EMEM_CFG_ACCESS_CTRL_WRITE_ACCESS_DISABLED
Definition: mc.h:109
@ MC_EMEM_CFG_SIZE_MB_SHIFT
Definition: mc.h:103
@ MC_EMEM_ARB_MISC0_MC_EMC_SAME_FREQ_MASK
Definition: mc.h:107
@ MC_TIMING_CONTROL_TIMING_UPDATE
Definition: mc.h:111
@ MC_EMEM_CFG_SIZE_MB_MASK
Definition: mc.h:104
@ MC_SMMU_CONFIG_ENABLE
Definition: mc.h:197