Home | History | Annotate | Download | only in t186
      1 /*
      2  * Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
      3  *
      4  * Permission is hereby granted, free of charge, to any person obtaining a
      5  * copy of this software and associated documentation files (the "Software"),
      6  * to deal in the Software without restriction, including without limitation
      7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      8  * and/or sell copies of the Software, and to permit persons to whom the
      9  * Software is furnished to do so, subject to the following conditions:
     10  *
     11  * The above copyright notice and this permission notice shall be included in
     12  * all copies or substantial portions of the Software.
     13  *
     14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
     20  * DEALINGS IN THE SOFTWARE.
     21  */
     22 
     23 #include <bl_common.h>
     24 #include <smmu.h>
     25 #include <tegra_def.h>
     26 
     27 /*******************************************************************************
     28  * Array to hold SMMU context for Tegra186
     29  ******************************************************************************/
     30 static __attribute__((aligned(16))) smmu_regs_t tegra186_smmu_context[] = {
     31 	_START_OF_TABLE_,
     32 	mc_make_sid_security_cfg(SCEW),
     33 	mc_make_sid_security_cfg(AFIR),
     34 	mc_make_sid_security_cfg(NVDISPLAYR1),
     35 	mc_make_sid_security_cfg(XUSB_DEVR),
     36 	mc_make_sid_security_cfg(VICSRD1),
     37 	mc_make_sid_security_cfg(NVENCSWR),
     38 	mc_make_sid_security_cfg(TSECSRDB),
     39 	mc_make_sid_security_cfg(AXISW),
     40 	mc_make_sid_security_cfg(SDMMCWAB),
     41 	mc_make_sid_security_cfg(AONDMAW),
     42 	mc_make_sid_security_cfg(GPUSWR2),
     43 	mc_make_sid_security_cfg(SATAW),
     44 	mc_make_sid_security_cfg(UFSHCW),
     45 	mc_make_sid_security_cfg(AFIW),
     46 	mc_make_sid_security_cfg(SDMMCR),
     47 	mc_make_sid_security_cfg(SCEDMAW),
     48 	mc_make_sid_security_cfg(UFSHCR),
     49 	mc_make_sid_security_cfg(SDMMCWAA),
     50 	mc_make_sid_security_cfg(APEDMAW),
     51 	mc_make_sid_security_cfg(SESWR),
     52 	mc_make_sid_security_cfg(MPCORER),
     53 	mc_make_sid_security_cfg(PTCR),
     54 	mc_make_sid_security_cfg(BPMPW),
     55 	mc_make_sid_security_cfg(ETRW),
     56 	mc_make_sid_security_cfg(GPUSRD),
     57 	mc_make_sid_security_cfg(VICSWR),
     58 	mc_make_sid_security_cfg(SCEDMAR),
     59 	mc_make_sid_security_cfg(HDAW),
     60 	mc_make_sid_security_cfg(ISPWA),
     61 	mc_make_sid_security_cfg(EQOSW),
     62 	mc_make_sid_security_cfg(XUSB_HOSTW),
     63 	mc_make_sid_security_cfg(TSECSWR),
     64 	mc_make_sid_security_cfg(SDMMCRAA),
     65 	mc_make_sid_security_cfg(APER),
     66 	mc_make_sid_security_cfg(VIW),
     67 	mc_make_sid_security_cfg(APEW),
     68 	mc_make_sid_security_cfg(AXISR),
     69 	mc_make_sid_security_cfg(SDMMCW),
     70 	mc_make_sid_security_cfg(BPMPDMAW),
     71 	mc_make_sid_security_cfg(ISPRA),
     72 	mc_make_sid_security_cfg(NVDECSWR),
     73 	mc_make_sid_security_cfg(XUSB_DEVW),
     74 	mc_make_sid_security_cfg(NVDECSRD),
     75 	mc_make_sid_security_cfg(MPCOREW),
     76 	mc_make_sid_security_cfg(NVDISPLAYR),
     77 	mc_make_sid_security_cfg(BPMPDMAR),
     78 	mc_make_sid_security_cfg(NVJPGSWR),
     79 	mc_make_sid_security_cfg(NVDECSRD1),
     80 	mc_make_sid_security_cfg(TSECSRD),
     81 	mc_make_sid_security_cfg(NVJPGSRD),
     82 	mc_make_sid_security_cfg(SDMMCWA),
     83 	mc_make_sid_security_cfg(SCER),
     84 	mc_make_sid_security_cfg(XUSB_HOSTR),
     85 	mc_make_sid_security_cfg(VICSRD),
     86 	mc_make_sid_security_cfg(AONDMAR),
     87 	mc_make_sid_security_cfg(AONW),
     88 	mc_make_sid_security_cfg(SDMMCRA),
     89 	mc_make_sid_security_cfg(HOST1XDMAR),
     90 	mc_make_sid_security_cfg(EQOSR),
     91 	mc_make_sid_security_cfg(SATAR),
     92 	mc_make_sid_security_cfg(BPMPR),
     93 	mc_make_sid_security_cfg(HDAR),
     94 	mc_make_sid_security_cfg(SDMMCRAB),
     95 	mc_make_sid_security_cfg(ETRR),
     96 	mc_make_sid_security_cfg(AONR),
     97 	mc_make_sid_security_cfg(APEDMAR),
     98 	mc_make_sid_security_cfg(SESRD),
     99 	mc_make_sid_security_cfg(NVENCSRD),
    100 	mc_make_sid_security_cfg(GPUSWR),
    101 	mc_make_sid_security_cfg(TSECSWRB),
    102 	mc_make_sid_security_cfg(ISPWB),
    103 	mc_make_sid_security_cfg(GPUSRD2),
    104 	mc_make_sid_override_cfg(APER),
    105 	mc_make_sid_override_cfg(VICSRD),
    106 	mc_make_sid_override_cfg(NVENCSRD),
    107 	mc_make_sid_override_cfg(NVJPGSWR),
    108 	mc_make_sid_override_cfg(AONW),
    109 	mc_make_sid_override_cfg(BPMPR),
    110 	mc_make_sid_override_cfg(BPMPW),
    111 	mc_make_sid_override_cfg(HDAW),
    112 	mc_make_sid_override_cfg(NVDISPLAYR1),
    113 	mc_make_sid_override_cfg(APEDMAR),
    114 	mc_make_sid_override_cfg(AFIR),
    115 	mc_make_sid_override_cfg(AXISR),
    116 	mc_make_sid_override_cfg(VICSRD1),
    117 	mc_make_sid_override_cfg(TSECSRD),
    118 	mc_make_sid_override_cfg(BPMPDMAW),
    119 	mc_make_sid_override_cfg(MPCOREW),
    120 	mc_make_sid_override_cfg(XUSB_HOSTR),
    121 	mc_make_sid_override_cfg(GPUSWR),
    122 	mc_make_sid_override_cfg(XUSB_DEVR),
    123 	mc_make_sid_override_cfg(UFSHCW),
    124 	mc_make_sid_override_cfg(XUSB_HOSTW),
    125 	mc_make_sid_override_cfg(SDMMCWAB),
    126 	mc_make_sid_override_cfg(SATAW),
    127 	mc_make_sid_override_cfg(SCEDMAR),
    128 	mc_make_sid_override_cfg(HOST1XDMAR),
    129 	mc_make_sid_override_cfg(SDMMCWA),
    130 	mc_make_sid_override_cfg(APEDMAW),
    131 	mc_make_sid_override_cfg(SESWR),
    132 	mc_make_sid_override_cfg(AXISW),
    133 	mc_make_sid_override_cfg(AONDMAW),
    134 	mc_make_sid_override_cfg(TSECSWRB),
    135 	mc_make_sid_override_cfg(MPCORER),
    136 	mc_make_sid_override_cfg(ISPWB),
    137 	mc_make_sid_override_cfg(AONR),
    138 	mc_make_sid_override_cfg(BPMPDMAR),
    139 	mc_make_sid_override_cfg(HDAR),
    140 	mc_make_sid_override_cfg(SDMMCRA),
    141 	mc_make_sid_override_cfg(ETRW),
    142 	mc_make_sid_override_cfg(GPUSWR2),
    143 	mc_make_sid_override_cfg(EQOSR),
    144 	mc_make_sid_override_cfg(TSECSWR),
    145 	mc_make_sid_override_cfg(ETRR),
    146 	mc_make_sid_override_cfg(NVDECSRD),
    147 	mc_make_sid_override_cfg(TSECSRDB),
    148 	mc_make_sid_override_cfg(SDMMCRAA),
    149 	mc_make_sid_override_cfg(NVDECSRD1),
    150 	mc_make_sid_override_cfg(SDMMCR),
    151 	mc_make_sid_override_cfg(NVJPGSRD),
    152 	mc_make_sid_override_cfg(SCEDMAW),
    153 	mc_make_sid_override_cfg(SDMMCWAA),
    154 	mc_make_sid_override_cfg(APEW),
    155 	mc_make_sid_override_cfg(AONDMAR),
    156 	mc_make_sid_override_cfg(PTCR),
    157 	mc_make_sid_override_cfg(SCER),
    158 	mc_make_sid_override_cfg(ISPRA),
    159 	mc_make_sid_override_cfg(ISPWA),
    160 	mc_make_sid_override_cfg(VICSWR),
    161 	mc_make_sid_override_cfg(SESRD),
    162 	mc_make_sid_override_cfg(SDMMCW),
    163 	mc_make_sid_override_cfg(SDMMCRAB),
    164 	mc_make_sid_override_cfg(EQOSW),
    165 	mc_make_sid_override_cfg(GPUSRD2),
    166 	mc_make_sid_override_cfg(SCEW),
    167 	mc_make_sid_override_cfg(GPUSRD),
    168 	mc_make_sid_override_cfg(NVDECSWR),
    169 	mc_make_sid_override_cfg(XUSB_DEVW),
    170 	mc_make_sid_override_cfg(SATAR),
    171 	mc_make_sid_override_cfg(NVDISPLAYR),
    172 	mc_make_sid_override_cfg(VIW),
    173 	mc_make_sid_override_cfg(UFSHCR),
    174 	mc_make_sid_override_cfg(NVENCSWR),
    175 	mc_make_sid_override_cfg(AFIW),
    176 	smmu_make_gnsr0_nsec_cfg(CR0),
    177 	smmu_make_gnsr0_sec_cfg(IDR0),
    178 	smmu_make_gnsr0_sec_cfg(IDR1),
    179 	smmu_make_gnsr0_sec_cfg(IDR2),
    180 	smmu_make_gnsr0_nsec_cfg(GFSR),
    181 	smmu_make_gnsr0_nsec_cfg(GFSYNR0),
    182 	smmu_make_gnsr0_nsec_cfg(GFSYNR1),
    183 	smmu_make_gnsr0_nsec_cfg(TLBGSTATUS),
    184 	smmu_make_gnsr0_nsec_cfg(PIDR2),
    185 	smmu_make_smrg_group(0),
    186 	smmu_make_smrg_group(1),
    187 	smmu_make_smrg_group(2),
    188 	smmu_make_smrg_group(3),
    189 	smmu_make_smrg_group(4),
    190 	smmu_make_smrg_group(5),
    191 	smmu_make_smrg_group(6),
    192 	smmu_make_smrg_group(7),
    193 	smmu_make_smrg_group(8),
    194 	smmu_make_smrg_group(9),
    195 	smmu_make_smrg_group(10),
    196 	smmu_make_smrg_group(11),
    197 	smmu_make_smrg_group(12),
    198 	smmu_make_smrg_group(13),
    199 	smmu_make_smrg_group(14),
    200 	smmu_make_smrg_group(15),
    201 	smmu_make_smrg_group(16),
    202 	smmu_make_smrg_group(17),
    203 	smmu_make_smrg_group(18),
    204 	smmu_make_smrg_group(19),
    205 	smmu_make_smrg_group(20),
    206 	smmu_make_smrg_group(21),
    207 	smmu_make_smrg_group(22),
    208 	smmu_make_smrg_group(23),
    209 	smmu_make_smrg_group(24),
    210 	smmu_make_smrg_group(25),
    211 	smmu_make_smrg_group(26),
    212 	smmu_make_smrg_group(27),
    213 	smmu_make_smrg_group(28),
    214 	smmu_make_smrg_group(29),
    215 	smmu_make_smrg_group(30),
    216 	smmu_make_smrg_group(31),
    217 	smmu_make_smrg_group(32),
    218 	smmu_make_smrg_group(33),
    219 	smmu_make_smrg_group(34),
    220 	smmu_make_smrg_group(35),
    221 	smmu_make_smrg_group(36),
    222 	smmu_make_smrg_group(37),
    223 	smmu_make_smrg_group(38),
    224 	smmu_make_smrg_group(39),
    225 	smmu_make_smrg_group(40),
    226 	smmu_make_smrg_group(41),
    227 	smmu_make_smrg_group(42),
    228 	smmu_make_smrg_group(43),
    229 	smmu_make_smrg_group(44),
    230 	smmu_make_smrg_group(45),
    231 	smmu_make_smrg_group(46),
    232 	smmu_make_smrg_group(47),
    233 	smmu_make_smrg_group(48),
    234 	smmu_make_smrg_group(49),
    235 	smmu_make_smrg_group(50),
    236 	smmu_make_smrg_group(51),
    237 	smmu_make_smrg_group(52),
    238 	smmu_make_smrg_group(53),
    239 	smmu_make_smrg_group(54),
    240 	smmu_make_smrg_group(55),
    241 	smmu_make_smrg_group(56),
    242 	smmu_make_smrg_group(57),
    243 	smmu_make_smrg_group(58),
    244 	smmu_make_smrg_group(59),
    245 	smmu_make_smrg_group(60),
    246 	smmu_make_smrg_group(61),
    247 	smmu_make_smrg_group(62),
    248 	smmu_make_smrg_group(63),
    249 	smmu_make_cb_group(0),
    250 	smmu_make_cb_group(1),
    251 	smmu_make_cb_group(2),
    252 	smmu_make_cb_group(3),
    253 	smmu_make_cb_group(4),
    254 	smmu_make_cb_group(5),
    255 	smmu_make_cb_group(6),
    256 	smmu_make_cb_group(7),
    257 	smmu_make_cb_group(8),
    258 	smmu_make_cb_group(9),
    259 	smmu_make_cb_group(10),
    260 	smmu_make_cb_group(11),
    261 	smmu_make_cb_group(12),
    262 	smmu_make_cb_group(13),
    263 	smmu_make_cb_group(14),
    264 	smmu_make_cb_group(15),
    265 	smmu_make_cb_group(16),
    266 	smmu_make_cb_group(17),
    267 	smmu_make_cb_group(18),
    268 	smmu_make_cb_group(19),
    269 	smmu_make_cb_group(20),
    270 	smmu_make_cb_group(21),
    271 	smmu_make_cb_group(22),
    272 	smmu_make_cb_group(23),
    273 	smmu_make_cb_group(24),
    274 	smmu_make_cb_group(25),
    275 	smmu_make_cb_group(26),
    276 	smmu_make_cb_group(27),
    277 	smmu_make_cb_group(28),
    278 	smmu_make_cb_group(29),
    279 	smmu_make_cb_group(30),
    280 	smmu_make_cb_group(31),
    281 	smmu_make_cb_group(32),
    282 	smmu_make_cb_group(33),
    283 	smmu_make_cb_group(34),
    284 	smmu_make_cb_group(35),
    285 	smmu_make_cb_group(36),
    286 	smmu_make_cb_group(37),
    287 	smmu_make_cb_group(38),
    288 	smmu_make_cb_group(39),
    289 	smmu_make_cb_group(40),
    290 	smmu_make_cb_group(41),
    291 	smmu_make_cb_group(42),
    292 	smmu_make_cb_group(43),
    293 	smmu_make_cb_group(44),
    294 	smmu_make_cb_group(45),
    295 	smmu_make_cb_group(46),
    296 	smmu_make_cb_group(47),
    297 	smmu_make_cb_group(48),
    298 	smmu_make_cb_group(49),
    299 	smmu_make_cb_group(50),
    300 	smmu_make_cb_group(51),
    301 	smmu_make_cb_group(52),
    302 	smmu_make_cb_group(53),
    303 	smmu_make_cb_group(54),
    304 	smmu_make_cb_group(55),
    305 	smmu_make_cb_group(56),
    306 	smmu_make_cb_group(57),
    307 	smmu_make_cb_group(58),
    308 	smmu_make_cb_group(59),
    309 	smmu_make_cb_group(60),
    310 	smmu_make_cb_group(61),
    311 	smmu_make_cb_group(62),
    312 	smmu_make_cb_group(63),
    313 	smmu_bypass_cfg,	/* TBU settings */
    314 	_END_OF_TABLE_,
    315 };
    316 
    317 /*******************************************************************************
    318  * Handler to return the pointer to the SMMU's context struct
    319  ******************************************************************************/
    320 smmu_regs_t *plat_get_smmu_ctx(void)
    321 {
    322 	/* index of _END_OF_TABLE_ */
    323 	tegra186_smmu_context[0].val = ARRAY_SIZE(tegra186_smmu_context) - 1;
    324 
    325 	return tegra186_smmu_context;
    326 }
    327