1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) 2014 NVIDIA CORPORATION. All rights reserved. 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #include <linux/of.h> 7*4882a593Smuzhiyun #include <linux/mm.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <dt-bindings/memory/tegra114-mc.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include "mc.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun static const struct tegra_mc_client tegra114_mc_clients[] = { 14*4882a593Smuzhiyun { 15*4882a593Smuzhiyun .id = 0x00, 16*4882a593Smuzhiyun .name = "ptcr", 17*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_PTC, 18*4882a593Smuzhiyun }, { 19*4882a593Smuzhiyun .id = 0x01, 20*4882a593Smuzhiyun .name = "display0a", 21*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_DC, 22*4882a593Smuzhiyun .smmu = { 23*4882a593Smuzhiyun .reg = 0x228, 24*4882a593Smuzhiyun .bit = 1, 25*4882a593Smuzhiyun }, 26*4882a593Smuzhiyun .la = { 27*4882a593Smuzhiyun .reg = 0x2e8, 28*4882a593Smuzhiyun .shift = 0, 29*4882a593Smuzhiyun .mask = 0xff, 30*4882a593Smuzhiyun .def = 0x4e, 31*4882a593Smuzhiyun }, 32*4882a593Smuzhiyun }, { 33*4882a593Smuzhiyun .id = 0x02, 34*4882a593Smuzhiyun .name = "display0ab", 35*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_DCB, 36*4882a593Smuzhiyun .smmu = { 37*4882a593Smuzhiyun .reg = 0x228, 38*4882a593Smuzhiyun .bit = 2, 39*4882a593Smuzhiyun }, 40*4882a593Smuzhiyun .la = { 41*4882a593Smuzhiyun .reg = 0x2f4, 42*4882a593Smuzhiyun .shift = 0, 43*4882a593Smuzhiyun .mask = 0xff, 44*4882a593Smuzhiyun .def = 0x4e, 45*4882a593Smuzhiyun }, 46*4882a593Smuzhiyun }, { 47*4882a593Smuzhiyun .id = 0x03, 48*4882a593Smuzhiyun .name = "display0b", 49*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_DC, 50*4882a593Smuzhiyun .smmu = { 51*4882a593Smuzhiyun .reg = 0x228, 52*4882a593Smuzhiyun .bit = 3, 53*4882a593Smuzhiyun }, 54*4882a593Smuzhiyun .la = { 55*4882a593Smuzhiyun .reg = 0x2e8, 56*4882a593Smuzhiyun .shift = 16, 57*4882a593Smuzhiyun .mask = 0xff, 58*4882a593Smuzhiyun .def = 0x4e, 59*4882a593Smuzhiyun }, 60*4882a593Smuzhiyun }, { 61*4882a593Smuzhiyun .id = 0x04, 62*4882a593Smuzhiyun .name = "display0bb", 63*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_DCB, 64*4882a593Smuzhiyun .smmu = { 65*4882a593Smuzhiyun .reg = 0x228, 66*4882a593Smuzhiyun .bit = 4, 67*4882a593Smuzhiyun }, 68*4882a593Smuzhiyun .la = { 69*4882a593Smuzhiyun .reg = 0x2f4, 70*4882a593Smuzhiyun .shift = 16, 71*4882a593Smuzhiyun .mask = 0xff, 72*4882a593Smuzhiyun .def = 0x4e, 73*4882a593Smuzhiyun }, 74*4882a593Smuzhiyun }, { 75*4882a593Smuzhiyun .id = 0x05, 76*4882a593Smuzhiyun .name = "display0c", 77*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_DC, 78*4882a593Smuzhiyun .smmu = { 79*4882a593Smuzhiyun .reg = 0x228, 80*4882a593Smuzhiyun .bit = 5, 81*4882a593Smuzhiyun }, 82*4882a593Smuzhiyun .la = { 83*4882a593Smuzhiyun .reg = 0x2ec, 84*4882a593Smuzhiyun .shift = 0, 85*4882a593Smuzhiyun .mask = 0xff, 86*4882a593Smuzhiyun .def = 0x4e, 87*4882a593Smuzhiyun }, 88*4882a593Smuzhiyun }, { 89*4882a593Smuzhiyun .id = 0x06, 90*4882a593Smuzhiyun .name = "display0cb", 91*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_DCB, 92*4882a593Smuzhiyun .smmu = { 93*4882a593Smuzhiyun .reg = 0x228, 94*4882a593Smuzhiyun .bit = 6, 95*4882a593Smuzhiyun }, 96*4882a593Smuzhiyun .la = { 97*4882a593Smuzhiyun .reg = 0x2f8, 98*4882a593Smuzhiyun .shift = 0, 99*4882a593Smuzhiyun .mask = 0xff, 100*4882a593Smuzhiyun .def = 0x4e, 101*4882a593Smuzhiyun }, 102*4882a593Smuzhiyun }, { 103*4882a593Smuzhiyun .id = 0x09, 104*4882a593Smuzhiyun .name = "eppup", 105*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_EPP, 106*4882a593Smuzhiyun .smmu = { 107*4882a593Smuzhiyun .reg = 0x228, 108*4882a593Smuzhiyun .bit = 9, 109*4882a593Smuzhiyun }, 110*4882a593Smuzhiyun .la = { 111*4882a593Smuzhiyun .reg = 0x300, 112*4882a593Smuzhiyun .shift = 0, 113*4882a593Smuzhiyun .mask = 0xff, 114*4882a593Smuzhiyun .def = 0x33, 115*4882a593Smuzhiyun }, 116*4882a593Smuzhiyun }, { 117*4882a593Smuzhiyun .id = 0x0a, 118*4882a593Smuzhiyun .name = "g2pr", 119*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_G2, 120*4882a593Smuzhiyun .smmu = { 121*4882a593Smuzhiyun .reg = 0x228, 122*4882a593Smuzhiyun .bit = 10, 123*4882a593Smuzhiyun }, 124*4882a593Smuzhiyun .la = { 125*4882a593Smuzhiyun .reg = 0x308, 126*4882a593Smuzhiyun .shift = 0, 127*4882a593Smuzhiyun .mask = 0xff, 128*4882a593Smuzhiyun .def = 0x09, 129*4882a593Smuzhiyun }, 130*4882a593Smuzhiyun }, { 131*4882a593Smuzhiyun .id = 0x0b, 132*4882a593Smuzhiyun .name = "g2sr", 133*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_G2, 134*4882a593Smuzhiyun .smmu = { 135*4882a593Smuzhiyun .reg = 0x228, 136*4882a593Smuzhiyun .bit = 11, 137*4882a593Smuzhiyun }, 138*4882a593Smuzhiyun .la = { 139*4882a593Smuzhiyun .reg = 0x308, 140*4882a593Smuzhiyun .shift = 16, 141*4882a593Smuzhiyun .mask = 0xff, 142*4882a593Smuzhiyun .def = 0x09, 143*4882a593Smuzhiyun }, 144*4882a593Smuzhiyun }, { 145*4882a593Smuzhiyun .id = 0x0f, 146*4882a593Smuzhiyun .name = "avpcarm7r", 147*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_AVPC, 148*4882a593Smuzhiyun .smmu = { 149*4882a593Smuzhiyun .reg = 0x228, 150*4882a593Smuzhiyun .bit = 15, 151*4882a593Smuzhiyun }, 152*4882a593Smuzhiyun .la = { 153*4882a593Smuzhiyun .reg = 0x2e4, 154*4882a593Smuzhiyun .shift = 0, 155*4882a593Smuzhiyun .mask = 0xff, 156*4882a593Smuzhiyun .def = 0x04, 157*4882a593Smuzhiyun }, 158*4882a593Smuzhiyun }, { 159*4882a593Smuzhiyun .id = 0x10, 160*4882a593Smuzhiyun .name = "displayhc", 161*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_DC, 162*4882a593Smuzhiyun .smmu = { 163*4882a593Smuzhiyun .reg = 0x228, 164*4882a593Smuzhiyun .bit = 16, 165*4882a593Smuzhiyun }, 166*4882a593Smuzhiyun .la = { 167*4882a593Smuzhiyun .reg = 0x2f0, 168*4882a593Smuzhiyun .shift = 0, 169*4882a593Smuzhiyun .mask = 0xff, 170*4882a593Smuzhiyun .def = 0x68, 171*4882a593Smuzhiyun }, 172*4882a593Smuzhiyun }, { 173*4882a593Smuzhiyun .id = 0x11, 174*4882a593Smuzhiyun .name = "displayhcb", 175*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_DCB, 176*4882a593Smuzhiyun .smmu = { 177*4882a593Smuzhiyun .reg = 0x228, 178*4882a593Smuzhiyun .bit = 17, 179*4882a593Smuzhiyun }, 180*4882a593Smuzhiyun .la = { 181*4882a593Smuzhiyun .reg = 0x2fc, 182*4882a593Smuzhiyun .shift = 0, 183*4882a593Smuzhiyun .mask = 0xff, 184*4882a593Smuzhiyun .def = 0x68, 185*4882a593Smuzhiyun }, 186*4882a593Smuzhiyun }, { 187*4882a593Smuzhiyun .id = 0x12, 188*4882a593Smuzhiyun .name = "fdcdrd", 189*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 190*4882a593Smuzhiyun .smmu = { 191*4882a593Smuzhiyun .reg = 0x228, 192*4882a593Smuzhiyun .bit = 18, 193*4882a593Smuzhiyun }, 194*4882a593Smuzhiyun .la = { 195*4882a593Smuzhiyun .reg = 0x334, 196*4882a593Smuzhiyun .shift = 0, 197*4882a593Smuzhiyun .mask = 0xff, 198*4882a593Smuzhiyun .def = 0x0c, 199*4882a593Smuzhiyun }, 200*4882a593Smuzhiyun }, { 201*4882a593Smuzhiyun .id = 0x13, 202*4882a593Smuzhiyun .name = "fdcdrd2", 203*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 204*4882a593Smuzhiyun .smmu = { 205*4882a593Smuzhiyun .reg = 0x228, 206*4882a593Smuzhiyun .bit = 19, 207*4882a593Smuzhiyun }, 208*4882a593Smuzhiyun .la = { 209*4882a593Smuzhiyun .reg = 0x33c, 210*4882a593Smuzhiyun .shift = 0, 211*4882a593Smuzhiyun .mask = 0xff, 212*4882a593Smuzhiyun .def = 0x0c, 213*4882a593Smuzhiyun }, 214*4882a593Smuzhiyun }, { 215*4882a593Smuzhiyun .id = 0x14, 216*4882a593Smuzhiyun .name = "g2dr", 217*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_G2, 218*4882a593Smuzhiyun .smmu = { 219*4882a593Smuzhiyun .reg = 0x228, 220*4882a593Smuzhiyun .bit = 20, 221*4882a593Smuzhiyun }, 222*4882a593Smuzhiyun .la = { 223*4882a593Smuzhiyun .reg = 0x30c, 224*4882a593Smuzhiyun .shift = 0, 225*4882a593Smuzhiyun .mask = 0xff, 226*4882a593Smuzhiyun .def = 0x0a, 227*4882a593Smuzhiyun }, 228*4882a593Smuzhiyun }, { 229*4882a593Smuzhiyun .id = 0x15, 230*4882a593Smuzhiyun .name = "hdar", 231*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_HDA, 232*4882a593Smuzhiyun .smmu = { 233*4882a593Smuzhiyun .reg = 0x228, 234*4882a593Smuzhiyun .bit = 21, 235*4882a593Smuzhiyun }, 236*4882a593Smuzhiyun .la = { 237*4882a593Smuzhiyun .reg = 0x318, 238*4882a593Smuzhiyun .shift = 0, 239*4882a593Smuzhiyun .mask = 0xff, 240*4882a593Smuzhiyun .def = 0xff, 241*4882a593Smuzhiyun }, 242*4882a593Smuzhiyun }, { 243*4882a593Smuzhiyun .id = 0x16, 244*4882a593Smuzhiyun .name = "host1xdmar", 245*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_HC, 246*4882a593Smuzhiyun .smmu = { 247*4882a593Smuzhiyun .reg = 0x228, 248*4882a593Smuzhiyun .bit = 22, 249*4882a593Smuzhiyun }, 250*4882a593Smuzhiyun .la = { 251*4882a593Smuzhiyun .reg = 0x310, 252*4882a593Smuzhiyun .shift = 0, 253*4882a593Smuzhiyun .mask = 0xff, 254*4882a593Smuzhiyun .def = 0x10, 255*4882a593Smuzhiyun }, 256*4882a593Smuzhiyun }, { 257*4882a593Smuzhiyun .id = 0x17, 258*4882a593Smuzhiyun .name = "host1xr", 259*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_HC, 260*4882a593Smuzhiyun .smmu = { 261*4882a593Smuzhiyun .reg = 0x228, 262*4882a593Smuzhiyun .bit = 23, 263*4882a593Smuzhiyun }, 264*4882a593Smuzhiyun .la = { 265*4882a593Smuzhiyun .reg = 0x310, 266*4882a593Smuzhiyun .shift = 16, 267*4882a593Smuzhiyun .mask = 0xff, 268*4882a593Smuzhiyun .def = 0xa5, 269*4882a593Smuzhiyun }, 270*4882a593Smuzhiyun }, { 271*4882a593Smuzhiyun .id = 0x18, 272*4882a593Smuzhiyun .name = "idxsrd", 273*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 274*4882a593Smuzhiyun .smmu = { 275*4882a593Smuzhiyun .reg = 0x228, 276*4882a593Smuzhiyun .bit = 24, 277*4882a593Smuzhiyun }, 278*4882a593Smuzhiyun .la = { 279*4882a593Smuzhiyun .reg = 0x334, 280*4882a593Smuzhiyun .shift = 16, 281*4882a593Smuzhiyun .mask = 0xff, 282*4882a593Smuzhiyun .def = 0x0b, 283*4882a593Smuzhiyun }, 284*4882a593Smuzhiyun }, { 285*4882a593Smuzhiyun .id = 0x1c, 286*4882a593Smuzhiyun .name = "msencsrd", 287*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_MSENC, 288*4882a593Smuzhiyun .smmu = { 289*4882a593Smuzhiyun .reg = 0x228, 290*4882a593Smuzhiyun .bit = 28, 291*4882a593Smuzhiyun }, 292*4882a593Smuzhiyun .la = { 293*4882a593Smuzhiyun .reg = 0x328, 294*4882a593Smuzhiyun .shift = 0, 295*4882a593Smuzhiyun .mask = 0xff, 296*4882a593Smuzhiyun .def = 0x80, 297*4882a593Smuzhiyun }, 298*4882a593Smuzhiyun }, { 299*4882a593Smuzhiyun .id = 0x1d, 300*4882a593Smuzhiyun .name = "ppcsahbdmar", 301*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_PPCS, 302*4882a593Smuzhiyun .smmu = { 303*4882a593Smuzhiyun .reg = 0x228, 304*4882a593Smuzhiyun .bit = 29, 305*4882a593Smuzhiyun }, 306*4882a593Smuzhiyun .la = { 307*4882a593Smuzhiyun .reg = 0x344, 308*4882a593Smuzhiyun .shift = 0, 309*4882a593Smuzhiyun .mask = 0xff, 310*4882a593Smuzhiyun .def = 0x50, 311*4882a593Smuzhiyun }, 312*4882a593Smuzhiyun }, { 313*4882a593Smuzhiyun .id = 0x1e, 314*4882a593Smuzhiyun .name = "ppcsahbslvr", 315*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_PPCS, 316*4882a593Smuzhiyun .smmu = { 317*4882a593Smuzhiyun .reg = 0x228, 318*4882a593Smuzhiyun .bit = 30, 319*4882a593Smuzhiyun }, 320*4882a593Smuzhiyun .la = { 321*4882a593Smuzhiyun .reg = 0x344, 322*4882a593Smuzhiyun .shift = 16, 323*4882a593Smuzhiyun .mask = 0xff, 324*4882a593Smuzhiyun .def = 0xe8, 325*4882a593Smuzhiyun }, 326*4882a593Smuzhiyun }, { 327*4882a593Smuzhiyun .id = 0x20, 328*4882a593Smuzhiyun .name = "texl2srd", 329*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 330*4882a593Smuzhiyun .smmu = { 331*4882a593Smuzhiyun .reg = 0x22c, 332*4882a593Smuzhiyun .bit = 0, 333*4882a593Smuzhiyun }, 334*4882a593Smuzhiyun .la = { 335*4882a593Smuzhiyun .reg = 0x338, 336*4882a593Smuzhiyun .shift = 0, 337*4882a593Smuzhiyun .mask = 0xff, 338*4882a593Smuzhiyun .def = 0x0c, 339*4882a593Smuzhiyun }, 340*4882a593Smuzhiyun }, { 341*4882a593Smuzhiyun .id = 0x22, 342*4882a593Smuzhiyun .name = "vdebsevr", 343*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VDE, 344*4882a593Smuzhiyun .smmu = { 345*4882a593Smuzhiyun .reg = 0x22c, 346*4882a593Smuzhiyun .bit = 2, 347*4882a593Smuzhiyun }, 348*4882a593Smuzhiyun .la = { 349*4882a593Smuzhiyun .reg = 0x354, 350*4882a593Smuzhiyun .shift = 0, 351*4882a593Smuzhiyun .mask = 0xff, 352*4882a593Smuzhiyun .def = 0xff, 353*4882a593Smuzhiyun }, 354*4882a593Smuzhiyun }, { 355*4882a593Smuzhiyun .id = 0x23, 356*4882a593Smuzhiyun .name = "vdember", 357*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VDE, 358*4882a593Smuzhiyun .smmu = { 359*4882a593Smuzhiyun .reg = 0x22c, 360*4882a593Smuzhiyun .bit = 3, 361*4882a593Smuzhiyun }, 362*4882a593Smuzhiyun .la = { 363*4882a593Smuzhiyun .reg = 0x354, 364*4882a593Smuzhiyun .shift = 16, 365*4882a593Smuzhiyun .mask = 0xff, 366*4882a593Smuzhiyun .def = 0xff, 367*4882a593Smuzhiyun }, 368*4882a593Smuzhiyun }, { 369*4882a593Smuzhiyun .id = 0x24, 370*4882a593Smuzhiyun .name = "vdemcer", 371*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VDE, 372*4882a593Smuzhiyun .smmu = { 373*4882a593Smuzhiyun .reg = 0x22c, 374*4882a593Smuzhiyun .bit = 4, 375*4882a593Smuzhiyun }, 376*4882a593Smuzhiyun .la = { 377*4882a593Smuzhiyun .reg = 0x358, 378*4882a593Smuzhiyun .shift = 0, 379*4882a593Smuzhiyun .mask = 0xff, 380*4882a593Smuzhiyun .def = 0xb8, 381*4882a593Smuzhiyun }, 382*4882a593Smuzhiyun }, { 383*4882a593Smuzhiyun .id = 0x25, 384*4882a593Smuzhiyun .name = "vdetper", 385*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VDE, 386*4882a593Smuzhiyun .smmu = { 387*4882a593Smuzhiyun .reg = 0x22c, 388*4882a593Smuzhiyun .bit = 5, 389*4882a593Smuzhiyun }, 390*4882a593Smuzhiyun .la = { 391*4882a593Smuzhiyun .reg = 0x358, 392*4882a593Smuzhiyun .shift = 16, 393*4882a593Smuzhiyun .mask = 0xff, 394*4882a593Smuzhiyun .def = 0xee, 395*4882a593Smuzhiyun }, 396*4882a593Smuzhiyun }, { 397*4882a593Smuzhiyun .id = 0x26, 398*4882a593Smuzhiyun .name = "mpcorelpr", 399*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_MPCORELP, 400*4882a593Smuzhiyun .la = { 401*4882a593Smuzhiyun .reg = 0x324, 402*4882a593Smuzhiyun .shift = 0, 403*4882a593Smuzhiyun .mask = 0xff, 404*4882a593Smuzhiyun .def = 0x04, 405*4882a593Smuzhiyun }, 406*4882a593Smuzhiyun }, { 407*4882a593Smuzhiyun .id = 0x27, 408*4882a593Smuzhiyun .name = "mpcorer", 409*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_MPCORE, 410*4882a593Smuzhiyun .la = { 411*4882a593Smuzhiyun .reg = 0x320, 412*4882a593Smuzhiyun .shift = 0, 413*4882a593Smuzhiyun .mask = 0xff, 414*4882a593Smuzhiyun .def = 0x04, 415*4882a593Smuzhiyun }, 416*4882a593Smuzhiyun }, { 417*4882a593Smuzhiyun .id = 0x28, 418*4882a593Smuzhiyun .name = "eppu", 419*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_EPP, 420*4882a593Smuzhiyun .smmu = { 421*4882a593Smuzhiyun .reg = 0x22c, 422*4882a593Smuzhiyun .bit = 8, 423*4882a593Smuzhiyun }, 424*4882a593Smuzhiyun .la = { 425*4882a593Smuzhiyun .reg = 0x300, 426*4882a593Smuzhiyun .shift = 16, 427*4882a593Smuzhiyun .mask = 0xff, 428*4882a593Smuzhiyun .def = 0x33, 429*4882a593Smuzhiyun }, 430*4882a593Smuzhiyun }, { 431*4882a593Smuzhiyun .id = 0x29, 432*4882a593Smuzhiyun .name = "eppv", 433*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_EPP, 434*4882a593Smuzhiyun .smmu = { 435*4882a593Smuzhiyun .reg = 0x22c, 436*4882a593Smuzhiyun .bit = 9, 437*4882a593Smuzhiyun }, 438*4882a593Smuzhiyun .la = { 439*4882a593Smuzhiyun .reg = 0x304, 440*4882a593Smuzhiyun .shift = 0, 441*4882a593Smuzhiyun .mask = 0xff, 442*4882a593Smuzhiyun .def = 0x6c, 443*4882a593Smuzhiyun }, 444*4882a593Smuzhiyun }, { 445*4882a593Smuzhiyun .id = 0x2a, 446*4882a593Smuzhiyun .name = "eppy", 447*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_EPP, 448*4882a593Smuzhiyun .smmu = { 449*4882a593Smuzhiyun .reg = 0x22c, 450*4882a593Smuzhiyun .bit = 10, 451*4882a593Smuzhiyun }, 452*4882a593Smuzhiyun .la = { 453*4882a593Smuzhiyun .reg = 0x304, 454*4882a593Smuzhiyun .shift = 16, 455*4882a593Smuzhiyun .mask = 0xff, 456*4882a593Smuzhiyun .def = 0x6c, 457*4882a593Smuzhiyun }, 458*4882a593Smuzhiyun }, { 459*4882a593Smuzhiyun .id = 0x2b, 460*4882a593Smuzhiyun .name = "msencswr", 461*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_MSENC, 462*4882a593Smuzhiyun .smmu = { 463*4882a593Smuzhiyun .reg = 0x22c, 464*4882a593Smuzhiyun .bit = 11, 465*4882a593Smuzhiyun }, 466*4882a593Smuzhiyun .la = { 467*4882a593Smuzhiyun .reg = 0x328, 468*4882a593Smuzhiyun .shift = 16, 469*4882a593Smuzhiyun .mask = 0xff, 470*4882a593Smuzhiyun .def = 0x80, 471*4882a593Smuzhiyun }, 472*4882a593Smuzhiyun }, { 473*4882a593Smuzhiyun .id = 0x2c, 474*4882a593Smuzhiyun .name = "viwsb", 475*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VI, 476*4882a593Smuzhiyun .smmu = { 477*4882a593Smuzhiyun .reg = 0x22c, 478*4882a593Smuzhiyun .bit = 12, 479*4882a593Smuzhiyun }, 480*4882a593Smuzhiyun .la = { 481*4882a593Smuzhiyun .reg = 0x364, 482*4882a593Smuzhiyun .shift = 0, 483*4882a593Smuzhiyun .mask = 0xff, 484*4882a593Smuzhiyun .def = 0x47, 485*4882a593Smuzhiyun }, 486*4882a593Smuzhiyun }, { 487*4882a593Smuzhiyun .id = 0x2d, 488*4882a593Smuzhiyun .name = "viwu", 489*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VI, 490*4882a593Smuzhiyun .smmu = { 491*4882a593Smuzhiyun .reg = 0x22c, 492*4882a593Smuzhiyun .bit = 13, 493*4882a593Smuzhiyun }, 494*4882a593Smuzhiyun .la = { 495*4882a593Smuzhiyun .reg = 0x368, 496*4882a593Smuzhiyun .shift = 0, 497*4882a593Smuzhiyun .mask = 0xff, 498*4882a593Smuzhiyun .def = 0xff, 499*4882a593Smuzhiyun }, 500*4882a593Smuzhiyun }, { 501*4882a593Smuzhiyun .id = 0x2e, 502*4882a593Smuzhiyun .name = "viwv", 503*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VI, 504*4882a593Smuzhiyun .smmu = { 505*4882a593Smuzhiyun .reg = 0x22c, 506*4882a593Smuzhiyun .bit = 14, 507*4882a593Smuzhiyun }, 508*4882a593Smuzhiyun .la = { 509*4882a593Smuzhiyun .reg = 0x368, 510*4882a593Smuzhiyun .shift = 16, 511*4882a593Smuzhiyun .mask = 0xff, 512*4882a593Smuzhiyun .def = 0xff, 513*4882a593Smuzhiyun }, 514*4882a593Smuzhiyun }, { 515*4882a593Smuzhiyun .id = 0x2f, 516*4882a593Smuzhiyun .name = "viwy", 517*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VI, 518*4882a593Smuzhiyun .smmu = { 519*4882a593Smuzhiyun .reg = 0x22c, 520*4882a593Smuzhiyun .bit = 15, 521*4882a593Smuzhiyun }, 522*4882a593Smuzhiyun .la = { 523*4882a593Smuzhiyun .reg = 0x36c, 524*4882a593Smuzhiyun .shift = 0, 525*4882a593Smuzhiyun .mask = 0xff, 526*4882a593Smuzhiyun .def = 0x47, 527*4882a593Smuzhiyun }, 528*4882a593Smuzhiyun }, { 529*4882a593Smuzhiyun .id = 0x30, 530*4882a593Smuzhiyun .name = "g2dw", 531*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_G2, 532*4882a593Smuzhiyun .smmu = { 533*4882a593Smuzhiyun .reg = 0x22c, 534*4882a593Smuzhiyun .bit = 16, 535*4882a593Smuzhiyun }, 536*4882a593Smuzhiyun .la = { 537*4882a593Smuzhiyun .reg = 0x30c, 538*4882a593Smuzhiyun .shift = 16, 539*4882a593Smuzhiyun .mask = 0xff, 540*4882a593Smuzhiyun .def = 0x9, 541*4882a593Smuzhiyun }, 542*4882a593Smuzhiyun }, { 543*4882a593Smuzhiyun .id = 0x32, 544*4882a593Smuzhiyun .name = "avpcarm7w", 545*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_AVPC, 546*4882a593Smuzhiyun .smmu = { 547*4882a593Smuzhiyun .reg = 0x22c, 548*4882a593Smuzhiyun .bit = 18, 549*4882a593Smuzhiyun }, 550*4882a593Smuzhiyun .la = { 551*4882a593Smuzhiyun .reg = 0x2e4, 552*4882a593Smuzhiyun .shift = 16, 553*4882a593Smuzhiyun .mask = 0xff, 554*4882a593Smuzhiyun .def = 0x0e, 555*4882a593Smuzhiyun }, 556*4882a593Smuzhiyun }, { 557*4882a593Smuzhiyun .id = 0x33, 558*4882a593Smuzhiyun .name = "fdcdwr", 559*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 560*4882a593Smuzhiyun .smmu = { 561*4882a593Smuzhiyun .reg = 0x22c, 562*4882a593Smuzhiyun .bit = 19, 563*4882a593Smuzhiyun }, 564*4882a593Smuzhiyun .la = { 565*4882a593Smuzhiyun .reg = 0x338, 566*4882a593Smuzhiyun .shift = 16, 567*4882a593Smuzhiyun .mask = 0xff, 568*4882a593Smuzhiyun .def = 0x10, 569*4882a593Smuzhiyun }, 570*4882a593Smuzhiyun }, { 571*4882a593Smuzhiyun .id = 0x34, 572*4882a593Smuzhiyun .name = "fdcdwr2", 573*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 574*4882a593Smuzhiyun .smmu = { 575*4882a593Smuzhiyun .reg = 0x22c, 576*4882a593Smuzhiyun .bit = 20, 577*4882a593Smuzhiyun }, 578*4882a593Smuzhiyun .la = { 579*4882a593Smuzhiyun .reg = 0x340, 580*4882a593Smuzhiyun .shift = 0, 581*4882a593Smuzhiyun .mask = 0xff, 582*4882a593Smuzhiyun .def = 0x10, 583*4882a593Smuzhiyun }, 584*4882a593Smuzhiyun }, { 585*4882a593Smuzhiyun .id = 0x35, 586*4882a593Smuzhiyun .name = "hdaw", 587*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_HDA, 588*4882a593Smuzhiyun .smmu = { 589*4882a593Smuzhiyun .reg = 0x22c, 590*4882a593Smuzhiyun .bit = 21, 591*4882a593Smuzhiyun }, 592*4882a593Smuzhiyun .la = { 593*4882a593Smuzhiyun .reg = 0x318, 594*4882a593Smuzhiyun .shift = 16, 595*4882a593Smuzhiyun .mask = 0xff, 596*4882a593Smuzhiyun .def = 0xff, 597*4882a593Smuzhiyun }, 598*4882a593Smuzhiyun }, { 599*4882a593Smuzhiyun .id = 0x36, 600*4882a593Smuzhiyun .name = "host1xw", 601*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_HC, 602*4882a593Smuzhiyun .smmu = { 603*4882a593Smuzhiyun .reg = 0x22c, 604*4882a593Smuzhiyun .bit = 22, 605*4882a593Smuzhiyun }, 606*4882a593Smuzhiyun .la = { 607*4882a593Smuzhiyun .reg = 0x314, 608*4882a593Smuzhiyun .shift = 0, 609*4882a593Smuzhiyun .mask = 0xff, 610*4882a593Smuzhiyun .def = 0x25, 611*4882a593Smuzhiyun }, 612*4882a593Smuzhiyun }, { 613*4882a593Smuzhiyun .id = 0x37, 614*4882a593Smuzhiyun .name = "ispw", 615*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_ISP, 616*4882a593Smuzhiyun .smmu = { 617*4882a593Smuzhiyun .reg = 0x22c, 618*4882a593Smuzhiyun .bit = 23, 619*4882a593Smuzhiyun }, 620*4882a593Smuzhiyun .la = { 621*4882a593Smuzhiyun .reg = 0x31c, 622*4882a593Smuzhiyun .shift = 0, 623*4882a593Smuzhiyun .mask = 0xff, 624*4882a593Smuzhiyun .def = 0xff, 625*4882a593Smuzhiyun }, 626*4882a593Smuzhiyun }, { 627*4882a593Smuzhiyun .id = 0x38, 628*4882a593Smuzhiyun .name = "mpcorelpw", 629*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_MPCORELP, 630*4882a593Smuzhiyun .la = { 631*4882a593Smuzhiyun .reg = 0x324, 632*4882a593Smuzhiyun .shift = 16, 633*4882a593Smuzhiyun .mask = 0xff, 634*4882a593Smuzhiyun .def = 0x80, 635*4882a593Smuzhiyun }, 636*4882a593Smuzhiyun }, { 637*4882a593Smuzhiyun .id = 0x39, 638*4882a593Smuzhiyun .name = "mpcorew", 639*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_MPCORE, 640*4882a593Smuzhiyun .la = { 641*4882a593Smuzhiyun .reg = 0x320, 642*4882a593Smuzhiyun .shift = 16, 643*4882a593Smuzhiyun .mask = 0xff, 644*4882a593Smuzhiyun .def = 0x0e, 645*4882a593Smuzhiyun }, 646*4882a593Smuzhiyun }, { 647*4882a593Smuzhiyun .id = 0x3b, 648*4882a593Smuzhiyun .name = "ppcsahbdmaw", 649*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_PPCS, 650*4882a593Smuzhiyun .smmu = { 651*4882a593Smuzhiyun .reg = 0x22c, 652*4882a593Smuzhiyun .bit = 27, 653*4882a593Smuzhiyun }, 654*4882a593Smuzhiyun .la = { 655*4882a593Smuzhiyun .reg = 0x348, 656*4882a593Smuzhiyun .shift = 0, 657*4882a593Smuzhiyun .mask = 0xff, 658*4882a593Smuzhiyun .def = 0xa5, 659*4882a593Smuzhiyun }, 660*4882a593Smuzhiyun }, { 661*4882a593Smuzhiyun .id = 0x3c, 662*4882a593Smuzhiyun .name = "ppcsahbslvw", 663*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_PPCS, 664*4882a593Smuzhiyun .smmu = { 665*4882a593Smuzhiyun .reg = 0x22c, 666*4882a593Smuzhiyun .bit = 28, 667*4882a593Smuzhiyun }, 668*4882a593Smuzhiyun .la = { 669*4882a593Smuzhiyun .reg = 0x348, 670*4882a593Smuzhiyun .shift = 16, 671*4882a593Smuzhiyun .mask = 0xff, 672*4882a593Smuzhiyun .def = 0xe8, 673*4882a593Smuzhiyun }, 674*4882a593Smuzhiyun }, { 675*4882a593Smuzhiyun .id = 0x3e, 676*4882a593Smuzhiyun .name = "vdebsevw", 677*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VDE, 678*4882a593Smuzhiyun .smmu = { 679*4882a593Smuzhiyun .reg = 0x22c, 680*4882a593Smuzhiyun .bit = 30, 681*4882a593Smuzhiyun }, 682*4882a593Smuzhiyun .la = { 683*4882a593Smuzhiyun .reg = 0x35c, 684*4882a593Smuzhiyun .shift = 0, 685*4882a593Smuzhiyun .mask = 0xff, 686*4882a593Smuzhiyun .def = 0xff, 687*4882a593Smuzhiyun }, 688*4882a593Smuzhiyun }, { 689*4882a593Smuzhiyun .id = 0x3f, 690*4882a593Smuzhiyun .name = "vdedbgw", 691*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VDE, 692*4882a593Smuzhiyun .smmu = { 693*4882a593Smuzhiyun .reg = 0x22c, 694*4882a593Smuzhiyun .bit = 31, 695*4882a593Smuzhiyun }, 696*4882a593Smuzhiyun .la = { 697*4882a593Smuzhiyun .reg = 0x35c, 698*4882a593Smuzhiyun .shift = 16, 699*4882a593Smuzhiyun .mask = 0xff, 700*4882a593Smuzhiyun .def = 0xff, 701*4882a593Smuzhiyun }, 702*4882a593Smuzhiyun }, { 703*4882a593Smuzhiyun .id = 0x40, 704*4882a593Smuzhiyun .name = "vdembew", 705*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VDE, 706*4882a593Smuzhiyun .smmu = { 707*4882a593Smuzhiyun .reg = 0x230, 708*4882a593Smuzhiyun .bit = 0, 709*4882a593Smuzhiyun }, 710*4882a593Smuzhiyun .la = { 711*4882a593Smuzhiyun .reg = 0x360, 712*4882a593Smuzhiyun .shift = 0, 713*4882a593Smuzhiyun .mask = 0xff, 714*4882a593Smuzhiyun .def = 0x89, 715*4882a593Smuzhiyun }, 716*4882a593Smuzhiyun }, { 717*4882a593Smuzhiyun .id = 0x41, 718*4882a593Smuzhiyun .name = "vdetpmw", 719*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_VDE, 720*4882a593Smuzhiyun .smmu = { 721*4882a593Smuzhiyun .reg = 0x230, 722*4882a593Smuzhiyun .bit = 1, 723*4882a593Smuzhiyun }, 724*4882a593Smuzhiyun .la = { 725*4882a593Smuzhiyun .reg = 0x360, 726*4882a593Smuzhiyun .shift = 16, 727*4882a593Smuzhiyun .mask = 0xff, 728*4882a593Smuzhiyun .def = 0x59, 729*4882a593Smuzhiyun }, 730*4882a593Smuzhiyun }, { 731*4882a593Smuzhiyun .id = 0x4a, 732*4882a593Smuzhiyun .name = "xusb_hostr", 733*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_XUSB_HOST, 734*4882a593Smuzhiyun .smmu = { 735*4882a593Smuzhiyun .reg = 0x230, 736*4882a593Smuzhiyun .bit = 10, 737*4882a593Smuzhiyun }, 738*4882a593Smuzhiyun .la = { 739*4882a593Smuzhiyun .reg = 0x37c, 740*4882a593Smuzhiyun .shift = 0, 741*4882a593Smuzhiyun .mask = 0xff, 742*4882a593Smuzhiyun .def = 0xa5, 743*4882a593Smuzhiyun }, 744*4882a593Smuzhiyun }, { 745*4882a593Smuzhiyun .id = 0x4b, 746*4882a593Smuzhiyun .name = "xusb_hostw", 747*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_XUSB_HOST, 748*4882a593Smuzhiyun .smmu = { 749*4882a593Smuzhiyun .reg = 0x230, 750*4882a593Smuzhiyun .bit = 11, 751*4882a593Smuzhiyun }, 752*4882a593Smuzhiyun .la = { 753*4882a593Smuzhiyun .reg = 0x37c, 754*4882a593Smuzhiyun .shift = 16, 755*4882a593Smuzhiyun .mask = 0xff, 756*4882a593Smuzhiyun .def = 0xa5, 757*4882a593Smuzhiyun }, 758*4882a593Smuzhiyun }, { 759*4882a593Smuzhiyun .id = 0x4c, 760*4882a593Smuzhiyun .name = "xusb_devr", 761*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_XUSB_DEV, 762*4882a593Smuzhiyun .smmu = { 763*4882a593Smuzhiyun .reg = 0x230, 764*4882a593Smuzhiyun .bit = 12, 765*4882a593Smuzhiyun }, 766*4882a593Smuzhiyun .la = { 767*4882a593Smuzhiyun .reg = 0x380, 768*4882a593Smuzhiyun .shift = 0, 769*4882a593Smuzhiyun .mask = 0xff, 770*4882a593Smuzhiyun .def = 0xa5, 771*4882a593Smuzhiyun }, 772*4882a593Smuzhiyun }, { 773*4882a593Smuzhiyun .id = 0x4d, 774*4882a593Smuzhiyun .name = "xusb_devw", 775*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_XUSB_DEV, 776*4882a593Smuzhiyun .smmu = { 777*4882a593Smuzhiyun .reg = 0x230, 778*4882a593Smuzhiyun .bit = 13, 779*4882a593Smuzhiyun }, 780*4882a593Smuzhiyun .la = { 781*4882a593Smuzhiyun .reg = 0x380, 782*4882a593Smuzhiyun .shift = 16, 783*4882a593Smuzhiyun .mask = 0xff, 784*4882a593Smuzhiyun .def = 0xa5, 785*4882a593Smuzhiyun }, 786*4882a593Smuzhiyun }, { 787*4882a593Smuzhiyun .id = 0x4e, 788*4882a593Smuzhiyun .name = "fdcdwr3", 789*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 790*4882a593Smuzhiyun .smmu = { 791*4882a593Smuzhiyun .reg = 0x230, 792*4882a593Smuzhiyun .bit = 14, 793*4882a593Smuzhiyun }, 794*4882a593Smuzhiyun .la = { 795*4882a593Smuzhiyun .reg = 0x388, 796*4882a593Smuzhiyun .shift = 0, 797*4882a593Smuzhiyun .mask = 0xff, 798*4882a593Smuzhiyun .def = 0x10, 799*4882a593Smuzhiyun }, 800*4882a593Smuzhiyun }, { 801*4882a593Smuzhiyun .id = 0x4f, 802*4882a593Smuzhiyun .name = "fdcdrd3", 803*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 804*4882a593Smuzhiyun .smmu = { 805*4882a593Smuzhiyun .reg = 0x230, 806*4882a593Smuzhiyun .bit = 15, 807*4882a593Smuzhiyun }, 808*4882a593Smuzhiyun .la = { 809*4882a593Smuzhiyun .reg = 0x384, 810*4882a593Smuzhiyun .shift = 0, 811*4882a593Smuzhiyun .mask = 0xff, 812*4882a593Smuzhiyun .def = 0x0c, 813*4882a593Smuzhiyun }, 814*4882a593Smuzhiyun }, { 815*4882a593Smuzhiyun .id = 0x50, 816*4882a593Smuzhiyun .name = "fdcwr4", 817*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 818*4882a593Smuzhiyun .smmu = { 819*4882a593Smuzhiyun .reg = 0x230, 820*4882a593Smuzhiyun .bit = 16, 821*4882a593Smuzhiyun }, 822*4882a593Smuzhiyun .la = { 823*4882a593Smuzhiyun .reg = 0x388, 824*4882a593Smuzhiyun .shift = 16, 825*4882a593Smuzhiyun .mask = 0xff, 826*4882a593Smuzhiyun .def = 0x10, 827*4882a593Smuzhiyun }, 828*4882a593Smuzhiyun }, { 829*4882a593Smuzhiyun .id = 0x51, 830*4882a593Smuzhiyun .name = "fdcrd4", 831*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_NV, 832*4882a593Smuzhiyun .smmu = { 833*4882a593Smuzhiyun .reg = 0x230, 834*4882a593Smuzhiyun .bit = 17, 835*4882a593Smuzhiyun }, 836*4882a593Smuzhiyun .la = { 837*4882a593Smuzhiyun .reg = 0x384, 838*4882a593Smuzhiyun .shift = 16, 839*4882a593Smuzhiyun .mask = 0xff, 840*4882a593Smuzhiyun .def = 0x0c, 841*4882a593Smuzhiyun }, 842*4882a593Smuzhiyun }, { 843*4882a593Smuzhiyun .id = 0x52, 844*4882a593Smuzhiyun .name = "emucifr", 845*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_EMUCIF, 846*4882a593Smuzhiyun .la = { 847*4882a593Smuzhiyun .reg = 0x38c, 848*4882a593Smuzhiyun .shift = 0, 849*4882a593Smuzhiyun .mask = 0xff, 850*4882a593Smuzhiyun .def = 0x04, 851*4882a593Smuzhiyun }, 852*4882a593Smuzhiyun }, { 853*4882a593Smuzhiyun .id = 0x53, 854*4882a593Smuzhiyun .name = "emucifw", 855*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_EMUCIF, 856*4882a593Smuzhiyun .la = { 857*4882a593Smuzhiyun .reg = 0x38c, 858*4882a593Smuzhiyun .shift = 16, 859*4882a593Smuzhiyun .mask = 0xff, 860*4882a593Smuzhiyun .def = 0x0e, 861*4882a593Smuzhiyun }, 862*4882a593Smuzhiyun }, { 863*4882a593Smuzhiyun .id = 0x54, 864*4882a593Smuzhiyun .name = "tsecsrd", 865*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_TSEC, 866*4882a593Smuzhiyun .smmu = { 867*4882a593Smuzhiyun .reg = 0x230, 868*4882a593Smuzhiyun .bit = 20, 869*4882a593Smuzhiyun }, 870*4882a593Smuzhiyun .la = { 871*4882a593Smuzhiyun .reg = 0x390, 872*4882a593Smuzhiyun .shift = 0, 873*4882a593Smuzhiyun .mask = 0xff, 874*4882a593Smuzhiyun .def = 0x50, 875*4882a593Smuzhiyun }, 876*4882a593Smuzhiyun }, { 877*4882a593Smuzhiyun .id = 0x55, 878*4882a593Smuzhiyun .name = "tsecswr", 879*4882a593Smuzhiyun .swgroup = TEGRA_SWGROUP_TSEC, 880*4882a593Smuzhiyun .smmu = { 881*4882a593Smuzhiyun .reg = 0x230, 882*4882a593Smuzhiyun .bit = 21, 883*4882a593Smuzhiyun }, 884*4882a593Smuzhiyun .la = { 885*4882a593Smuzhiyun .reg = 0x390, 886*4882a593Smuzhiyun .shift = 16, 887*4882a593Smuzhiyun .mask = 0xff, 888*4882a593Smuzhiyun .def = 0x50, 889*4882a593Smuzhiyun }, 890*4882a593Smuzhiyun }, 891*4882a593Smuzhiyun }; 892*4882a593Smuzhiyun 893*4882a593Smuzhiyun static const struct tegra_smmu_swgroup tegra114_swgroups[] = { 894*4882a593Smuzhiyun { .name = "dc", .swgroup = TEGRA_SWGROUP_DC, .reg = 0x240 }, 895*4882a593Smuzhiyun { .name = "dcb", .swgroup = TEGRA_SWGROUP_DCB, .reg = 0x244 }, 896*4882a593Smuzhiyun { .name = "epp", .swgroup = TEGRA_SWGROUP_EPP, .reg = 0x248 }, 897*4882a593Smuzhiyun { .name = "g2", .swgroup = TEGRA_SWGROUP_G2, .reg = 0x24c }, 898*4882a593Smuzhiyun { .name = "avpc", .swgroup = TEGRA_SWGROUP_AVPC, .reg = 0x23c }, 899*4882a593Smuzhiyun { .name = "nv", .swgroup = TEGRA_SWGROUP_NV, .reg = 0x268 }, 900*4882a593Smuzhiyun { .name = "hda", .swgroup = TEGRA_SWGROUP_HDA, .reg = 0x254 }, 901*4882a593Smuzhiyun { .name = "hc", .swgroup = TEGRA_SWGROUP_HC, .reg = 0x250 }, 902*4882a593Smuzhiyun { .name = "msenc", .swgroup = TEGRA_SWGROUP_MSENC, .reg = 0x264 }, 903*4882a593Smuzhiyun { .name = "ppcs", .swgroup = TEGRA_SWGROUP_PPCS, .reg = 0x270 }, 904*4882a593Smuzhiyun { .name = "vde", .swgroup = TEGRA_SWGROUP_VDE, .reg = 0x27c }, 905*4882a593Smuzhiyun { .name = "vi", .swgroup = TEGRA_SWGROUP_VI, .reg = 0x280 }, 906*4882a593Smuzhiyun { .name = "isp", .swgroup = TEGRA_SWGROUP_ISP, .reg = 0x258 }, 907*4882a593Smuzhiyun { .name = "xusb_host", .swgroup = TEGRA_SWGROUP_XUSB_HOST, .reg = 0x288 }, 908*4882a593Smuzhiyun { .name = "xusb_dev", .swgroup = TEGRA_SWGROUP_XUSB_DEV, .reg = 0x28c }, 909*4882a593Smuzhiyun { .name = "tsec", .swgroup = TEGRA_SWGROUP_TSEC, .reg = 0x294 }, 910*4882a593Smuzhiyun }; 911*4882a593Smuzhiyun 912*4882a593Smuzhiyun static const unsigned int tegra114_group_drm[] = { 913*4882a593Smuzhiyun TEGRA_SWGROUP_DC, 914*4882a593Smuzhiyun TEGRA_SWGROUP_DCB, 915*4882a593Smuzhiyun TEGRA_SWGROUP_G2, 916*4882a593Smuzhiyun TEGRA_SWGROUP_NV, 917*4882a593Smuzhiyun }; 918*4882a593Smuzhiyun 919*4882a593Smuzhiyun static const struct tegra_smmu_group_soc tegra114_groups[] = { 920*4882a593Smuzhiyun { 921*4882a593Smuzhiyun .name = "drm", 922*4882a593Smuzhiyun .swgroups = tegra114_group_drm, 923*4882a593Smuzhiyun .num_swgroups = ARRAY_SIZE(tegra114_group_drm), 924*4882a593Smuzhiyun }, 925*4882a593Smuzhiyun }; 926*4882a593Smuzhiyun 927*4882a593Smuzhiyun static const struct tegra_smmu_soc tegra114_smmu_soc = { 928*4882a593Smuzhiyun .clients = tegra114_mc_clients, 929*4882a593Smuzhiyun .num_clients = ARRAY_SIZE(tegra114_mc_clients), 930*4882a593Smuzhiyun .swgroups = tegra114_swgroups, 931*4882a593Smuzhiyun .num_swgroups = ARRAY_SIZE(tegra114_swgroups), 932*4882a593Smuzhiyun .groups = tegra114_groups, 933*4882a593Smuzhiyun .num_groups = ARRAY_SIZE(tegra114_groups), 934*4882a593Smuzhiyun .supports_round_robin_arbitration = false, 935*4882a593Smuzhiyun .supports_request_limit = false, 936*4882a593Smuzhiyun .num_tlb_lines = 32, 937*4882a593Smuzhiyun .num_asids = 4, 938*4882a593Smuzhiyun }; 939*4882a593Smuzhiyun 940*4882a593Smuzhiyun #define TEGRA114_MC_RESET(_name, _control, _status, _bit) \ 941*4882a593Smuzhiyun { \ 942*4882a593Smuzhiyun .name = #_name, \ 943*4882a593Smuzhiyun .id = TEGRA114_MC_RESET_##_name, \ 944*4882a593Smuzhiyun .control = _control, \ 945*4882a593Smuzhiyun .status = _status, \ 946*4882a593Smuzhiyun .bit = _bit, \ 947*4882a593Smuzhiyun } 948*4882a593Smuzhiyun 949*4882a593Smuzhiyun static const struct tegra_mc_reset tegra114_mc_resets[] = { 950*4882a593Smuzhiyun TEGRA114_MC_RESET(AVPC, 0x200, 0x204, 1), 951*4882a593Smuzhiyun TEGRA114_MC_RESET(DC, 0x200, 0x204, 2), 952*4882a593Smuzhiyun TEGRA114_MC_RESET(DCB, 0x200, 0x204, 3), 953*4882a593Smuzhiyun TEGRA114_MC_RESET(EPP, 0x200, 0x204, 4), 954*4882a593Smuzhiyun TEGRA114_MC_RESET(2D, 0x200, 0x204, 5), 955*4882a593Smuzhiyun TEGRA114_MC_RESET(HC, 0x200, 0x204, 6), 956*4882a593Smuzhiyun TEGRA114_MC_RESET(HDA, 0x200, 0x204, 7), 957*4882a593Smuzhiyun TEGRA114_MC_RESET(ISP, 0x200, 0x204, 8), 958*4882a593Smuzhiyun TEGRA114_MC_RESET(MPCORE, 0x200, 0x204, 9), 959*4882a593Smuzhiyun TEGRA114_MC_RESET(MPCORELP, 0x200, 0x204, 10), 960*4882a593Smuzhiyun TEGRA114_MC_RESET(MPE, 0x200, 0x204, 11), 961*4882a593Smuzhiyun TEGRA114_MC_RESET(3D, 0x200, 0x204, 12), 962*4882a593Smuzhiyun TEGRA114_MC_RESET(3D2, 0x200, 0x204, 13), 963*4882a593Smuzhiyun TEGRA114_MC_RESET(PPCS, 0x200, 0x204, 14), 964*4882a593Smuzhiyun TEGRA114_MC_RESET(VDE, 0x200, 0x204, 16), 965*4882a593Smuzhiyun TEGRA114_MC_RESET(VI, 0x200, 0x204, 17), 966*4882a593Smuzhiyun }; 967*4882a593Smuzhiyun 968*4882a593Smuzhiyun const struct tegra_mc_soc tegra114_mc_soc = { 969*4882a593Smuzhiyun .clients = tegra114_mc_clients, 970*4882a593Smuzhiyun .num_clients = ARRAY_SIZE(tegra114_mc_clients), 971*4882a593Smuzhiyun .num_address_bits = 32, 972*4882a593Smuzhiyun .atom_size = 32, 973*4882a593Smuzhiyun .client_id_mask = 0x7f, 974*4882a593Smuzhiyun .smmu = &tegra114_smmu_soc, 975*4882a593Smuzhiyun .intmask = MC_INT_INVALID_SMMU_PAGE | MC_INT_SECURITY_VIOLATION | 976*4882a593Smuzhiyun MC_INT_DECERR_EMEM, 977*4882a593Smuzhiyun .reset_ops = &tegra_mc_reset_ops_common, 978*4882a593Smuzhiyun .resets = tegra114_mc_resets, 979*4882a593Smuzhiyun .num_resets = ARRAY_SIZE(tegra114_mc_resets), 980*4882a593Smuzhiyun }; 981