1*907ef6a1SAshish Mhetre // SPDX-License-Identifier: GPL-2.0-only 2*907ef6a1SAshish Mhetre /* 3*907ef6a1SAshish Mhetre * Copyright (C) 2026, NVIDIA CORPORATION. All rights reserved. 4*907ef6a1SAshish Mhetre */ 5*907ef6a1SAshish Mhetre 6*907ef6a1SAshish Mhetre #include <soc/tegra/mc.h> 7*907ef6a1SAshish Mhetre 8*907ef6a1SAshish Mhetre #include <dt-bindings/memory/tegra234-mc.h> 9*907ef6a1SAshish Mhetre #include <dt-bindings/memory/nvidia,tegra238-mc.h> 10*907ef6a1SAshish Mhetre #include <linux/interconnect.h> 11*907ef6a1SAshish Mhetre #include <linux/tegra-icc.h> 12*907ef6a1SAshish Mhetre 13*907ef6a1SAshish Mhetre #include <soc/tegra/bpmp.h> 14*907ef6a1SAshish Mhetre #include "mc.h" 15*907ef6a1SAshish Mhetre 16*907ef6a1SAshish Mhetre static const struct tegra_mc_client tegra238_mc_clients[] = { 17*907ef6a1SAshish Mhetre { 18*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_HDAR, 19*907ef6a1SAshish Mhetre .name = "hdar", 20*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_HDA, 21*907ef6a1SAshish Mhetre .type = TEGRA_ICC_ISO_AUDIO, 22*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_HDA, 23*907ef6a1SAshish Mhetre .regs = { 24*907ef6a1SAshish Mhetre .sid = { 25*907ef6a1SAshish Mhetre .override = 0xa8, 26*907ef6a1SAshish Mhetre .security = 0xac, 27*907ef6a1SAshish Mhetre }, 28*907ef6a1SAshish Mhetre }, 29*907ef6a1SAshish Mhetre }, { 30*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_HDAW, 31*907ef6a1SAshish Mhetre .name = "hdaw", 32*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_HDA, 33*907ef6a1SAshish Mhetre .type = TEGRA_ICC_ISO_AUDIO, 34*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_HDA, 35*907ef6a1SAshish Mhetre .regs = { 36*907ef6a1SAshish Mhetre .sid = { 37*907ef6a1SAshish Mhetre .override = 0x1a8, 38*907ef6a1SAshish Mhetre .security = 0x1ac, 39*907ef6a1SAshish Mhetre }, 40*907ef6a1SAshish Mhetre }, 41*907ef6a1SAshish Mhetre }, { 42*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_SDMMCRAB, 43*907ef6a1SAshish Mhetre .name = "sdmmcrab", 44*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_SDMMC_4, 45*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 46*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_SDMMC4A, 47*907ef6a1SAshish Mhetre .regs = { 48*907ef6a1SAshish Mhetre .sid = { 49*907ef6a1SAshish Mhetre .override = 0x318, 50*907ef6a1SAshish Mhetre .security = 0x31c, 51*907ef6a1SAshish Mhetre }, 52*907ef6a1SAshish Mhetre }, 53*907ef6a1SAshish Mhetre }, { 54*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_SDMMCWAB, 55*907ef6a1SAshish Mhetre .name = "sdmmcwab", 56*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_SDMMC_4, 57*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 58*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_SDMMC4A, 59*907ef6a1SAshish Mhetre .regs = { 60*907ef6a1SAshish Mhetre .sid = { 61*907ef6a1SAshish Mhetre .override = 0x338, 62*907ef6a1SAshish Mhetre .security = 0x33c, 63*907ef6a1SAshish Mhetre }, 64*907ef6a1SAshish Mhetre }, 65*907ef6a1SAshish Mhetre }, { 66*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_APER, 67*907ef6a1SAshish Mhetre .name = "aper", 68*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_APE, 69*907ef6a1SAshish Mhetre .type = TEGRA_ICC_ISO_AUDIO, 70*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_ISO_APE0, 71*907ef6a1SAshish Mhetre .regs = { 72*907ef6a1SAshish Mhetre .sid = { 73*907ef6a1SAshish Mhetre .override = 0x3d0, 74*907ef6a1SAshish Mhetre .security = 0x3d4, 75*907ef6a1SAshish Mhetre }, 76*907ef6a1SAshish Mhetre }, 77*907ef6a1SAshish Mhetre }, { 78*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_APEW, 79*907ef6a1SAshish Mhetre .name = "apew", 80*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_APE, 81*907ef6a1SAshish Mhetre .type = TEGRA_ICC_ISO_AUDIO, 82*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_ISO_APE0, 83*907ef6a1SAshish Mhetre .regs = { 84*907ef6a1SAshish Mhetre .sid = { 85*907ef6a1SAshish Mhetre .override = 0x3d8, 86*907ef6a1SAshish Mhetre .security = 0x3dc, 87*907ef6a1SAshish Mhetre }, 88*907ef6a1SAshish Mhetre }, 89*907ef6a1SAshish Mhetre }, { 90*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_NVDISPLAYR, 91*907ef6a1SAshish Mhetre .name = "nvdisplayr", 92*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_DISPLAY, 93*907ef6a1SAshish Mhetre .type = TEGRA_ICC_ISO_DISPLAY, 94*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_ISO_NVDISPLAY, 95*907ef6a1SAshish Mhetre .regs = { 96*907ef6a1SAshish Mhetre .sid = { 97*907ef6a1SAshish Mhetre .override = 0x490, 98*907ef6a1SAshish Mhetre .security = 0x494, 99*907ef6a1SAshish Mhetre }, 100*907ef6a1SAshish Mhetre }, 101*907ef6a1SAshish Mhetre }, { 102*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_NVDISPLAYR1, 103*907ef6a1SAshish Mhetre .name = "nvdisplayr1", 104*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_DISPLAY, 105*907ef6a1SAshish Mhetre .type = TEGRA_ICC_ISO_DISPLAY, 106*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_ISO_NVDISPLAY, 107*907ef6a1SAshish Mhetre .regs = { 108*907ef6a1SAshish Mhetre .sid = { 109*907ef6a1SAshish Mhetre .override = 0x508, 110*907ef6a1SAshish Mhetre .security = 0x50c, 111*907ef6a1SAshish Mhetre }, 112*907ef6a1SAshish Mhetre }, 113*907ef6a1SAshish Mhetre }, { 114*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_BPMPR, 115*907ef6a1SAshish Mhetre .name = "bpmpr", 116*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_BPMP, 117*907ef6a1SAshish Mhetre .regs = { 118*907ef6a1SAshish Mhetre .sid = { 119*907ef6a1SAshish Mhetre .override = 0x498, 120*907ef6a1SAshish Mhetre .security = 0x49c, 121*907ef6a1SAshish Mhetre }, 122*907ef6a1SAshish Mhetre }, 123*907ef6a1SAshish Mhetre }, { 124*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_BPMPW, 125*907ef6a1SAshish Mhetre .name = "bpmpw", 126*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_BPMP, 127*907ef6a1SAshish Mhetre .regs = { 128*907ef6a1SAshish Mhetre .sid = { 129*907ef6a1SAshish Mhetre .override = 0x4a0, 130*907ef6a1SAshish Mhetre .security = 0x4a4, 131*907ef6a1SAshish Mhetre }, 132*907ef6a1SAshish Mhetre }, 133*907ef6a1SAshish Mhetre }, { 134*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_BPMPDMAR, 135*907ef6a1SAshish Mhetre .name = "bpmpdmar", 136*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_BPMP, 137*907ef6a1SAshish Mhetre .regs = { 138*907ef6a1SAshish Mhetre .sid = { 139*907ef6a1SAshish Mhetre .override = 0x4a8, 140*907ef6a1SAshish Mhetre .security = 0x4ac, 141*907ef6a1SAshish Mhetre }, 142*907ef6a1SAshish Mhetre }, 143*907ef6a1SAshish Mhetre }, { 144*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_BPMPDMAW, 145*907ef6a1SAshish Mhetre .name = "bpmpdmaw", 146*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_BPMP, 147*907ef6a1SAshish Mhetre .regs = { 148*907ef6a1SAshish Mhetre .sid = { 149*907ef6a1SAshish Mhetre .override = 0x4b0, 150*907ef6a1SAshish Mhetre .security = 0x4b4, 151*907ef6a1SAshish Mhetre }, 152*907ef6a1SAshish Mhetre }, 153*907ef6a1SAshish Mhetre }, { 154*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_APEDMAR, 155*907ef6a1SAshish Mhetre .name = "apedmar", 156*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_APEDMA, 157*907ef6a1SAshish Mhetre .type = TEGRA_ICC_ISO_AUDIO, 158*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_ISO_APE1, 159*907ef6a1SAshish Mhetre .regs = { 160*907ef6a1SAshish Mhetre .sid = { 161*907ef6a1SAshish Mhetre .override = 0x4f8, 162*907ef6a1SAshish Mhetre .security = 0x4fc, 163*907ef6a1SAshish Mhetre }, 164*907ef6a1SAshish Mhetre }, 165*907ef6a1SAshish Mhetre }, { 166*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_APEDMAW, 167*907ef6a1SAshish Mhetre .name = "apedmaw", 168*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_APEDMA, 169*907ef6a1SAshish Mhetre .type = TEGRA_ICC_ISO_AUDIO, 170*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_ISO_APE1, 171*907ef6a1SAshish Mhetre .regs = { 172*907ef6a1SAshish Mhetre .sid = { 173*907ef6a1SAshish Mhetre .override = 0x500, 174*907ef6a1SAshish Mhetre .security = 0x504, 175*907ef6a1SAshish Mhetre }, 176*907ef6a1SAshish Mhetre }, 177*907ef6a1SAshish Mhetre }, { 178*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_VICSRD, 179*907ef6a1SAshish Mhetre .name = "vicsrd", 180*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_VIC, 181*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 182*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_VIC, 183*907ef6a1SAshish Mhetre .regs = { 184*907ef6a1SAshish Mhetre .sid = { 185*907ef6a1SAshish Mhetre .override = 0x360, 186*907ef6a1SAshish Mhetre .security = 0x364, 187*907ef6a1SAshish Mhetre }, 188*907ef6a1SAshish Mhetre }, 189*907ef6a1SAshish Mhetre }, { 190*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_VICSWR, 191*907ef6a1SAshish Mhetre .name = "vicswr", 192*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_VIC, 193*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 194*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_VIC, 195*907ef6a1SAshish Mhetre .regs = { 196*907ef6a1SAshish Mhetre .sid = { 197*907ef6a1SAshish Mhetre .override = 0x368, 198*907ef6a1SAshish Mhetre .security = 0x36c, 199*907ef6a1SAshish Mhetre }, 200*907ef6a1SAshish Mhetre }, 201*907ef6a1SAshish Mhetre }, { 202*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_NVDECSRD, 203*907ef6a1SAshish Mhetre .name = "nvdecsrd", 204*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_NVDEC, 205*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 206*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_NVDEC, 207*907ef6a1SAshish Mhetre .regs = { 208*907ef6a1SAshish Mhetre .sid = { 209*907ef6a1SAshish Mhetre .override = 0x3c0, 210*907ef6a1SAshish Mhetre .security = 0x3c4, 211*907ef6a1SAshish Mhetre }, 212*907ef6a1SAshish Mhetre }, 213*907ef6a1SAshish Mhetre }, { 214*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_NVDECSWR, 215*907ef6a1SAshish Mhetre .name = "nvdecswr", 216*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_NVDEC, 217*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 218*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_NVDEC, 219*907ef6a1SAshish Mhetre .regs = { 220*907ef6a1SAshish Mhetre .sid = { 221*907ef6a1SAshish Mhetre .override = 0x3c8, 222*907ef6a1SAshish Mhetre .security = 0x3cc, 223*907ef6a1SAshish Mhetre }, 224*907ef6a1SAshish Mhetre }, 225*907ef6a1SAshish Mhetre }, { 226*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_NVENCSRD, 227*907ef6a1SAshish Mhetre .name = "nvencsrd", 228*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_NVENC, 229*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 230*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_NVENC, 231*907ef6a1SAshish Mhetre .regs = { 232*907ef6a1SAshish Mhetre .sid = { 233*907ef6a1SAshish Mhetre .override = 0xe0, 234*907ef6a1SAshish Mhetre .security = 0xe4, 235*907ef6a1SAshish Mhetre }, 236*907ef6a1SAshish Mhetre }, 237*907ef6a1SAshish Mhetre }, { 238*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_NVENCSWR, 239*907ef6a1SAshish Mhetre .name = "nvencswr", 240*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_NVENC, 241*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 242*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_NVENC, 243*907ef6a1SAshish Mhetre .regs = { 244*907ef6a1SAshish Mhetre .sid = { 245*907ef6a1SAshish Mhetre .override = 0x158, 246*907ef6a1SAshish Mhetre .security = 0x15c, 247*907ef6a1SAshish Mhetre }, 248*907ef6a1SAshish Mhetre }, 249*907ef6a1SAshish Mhetre }, { 250*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_PCIE0R, 251*907ef6a1SAshish Mhetre .name = "pcie0r", 252*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_PCIE_0, 253*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 254*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_PCIE0, 255*907ef6a1SAshish Mhetre .regs = { 256*907ef6a1SAshish Mhetre .sid = { 257*907ef6a1SAshish Mhetre .override = 0x6c0, 258*907ef6a1SAshish Mhetre .security = 0x6c4, 259*907ef6a1SAshish Mhetre }, 260*907ef6a1SAshish Mhetre }, 261*907ef6a1SAshish Mhetre }, { 262*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_PCIE0W, 263*907ef6a1SAshish Mhetre .name = "pcie0w", 264*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_PCIE_0, 265*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 266*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_PCIE0, 267*907ef6a1SAshish Mhetre .regs = { 268*907ef6a1SAshish Mhetre .sid = { 269*907ef6a1SAshish Mhetre .override = 0x6c8, 270*907ef6a1SAshish Mhetre .security = 0x6cc, 271*907ef6a1SAshish Mhetre }, 272*907ef6a1SAshish Mhetre }, 273*907ef6a1SAshish Mhetre }, { 274*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_PCIE1R, 275*907ef6a1SAshish Mhetre .name = "pcie1r", 276*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_PCIE_1, 277*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 278*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_PCIE1, 279*907ef6a1SAshish Mhetre .regs = { 280*907ef6a1SAshish Mhetre .sid = { 281*907ef6a1SAshish Mhetre .override = 0x6d0, 282*907ef6a1SAshish Mhetre .security = 0x6d4, 283*907ef6a1SAshish Mhetre }, 284*907ef6a1SAshish Mhetre }, 285*907ef6a1SAshish Mhetre }, { 286*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_PCIE1W, 287*907ef6a1SAshish Mhetre .name = "pcie1w", 288*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_PCIE_1, 289*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 290*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_PCIE1, 291*907ef6a1SAshish Mhetre .regs = { 292*907ef6a1SAshish Mhetre .sid = { 293*907ef6a1SAshish Mhetre .override = 0x6d8, 294*907ef6a1SAshish Mhetre .security = 0x6dc, 295*907ef6a1SAshish Mhetre }, 296*907ef6a1SAshish Mhetre }, 297*907ef6a1SAshish Mhetre }, { 298*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_PCIE2AR, 299*907ef6a1SAshish Mhetre .name = "pcie2ar", 300*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_PCIE_2, 301*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 302*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_PCIE2, 303*907ef6a1SAshish Mhetre .regs = { 304*907ef6a1SAshish Mhetre .sid = { 305*907ef6a1SAshish Mhetre .override = 0x6e0, 306*907ef6a1SAshish Mhetre .security = 0x6e4, 307*907ef6a1SAshish Mhetre }, 308*907ef6a1SAshish Mhetre }, 309*907ef6a1SAshish Mhetre }, { 310*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_PCIE2AW, 311*907ef6a1SAshish Mhetre .name = "pcie2aw", 312*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_PCIE_2, 313*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 314*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_PCIE2, 315*907ef6a1SAshish Mhetre .regs = { 316*907ef6a1SAshish Mhetre .sid = { 317*907ef6a1SAshish Mhetre .override = 0x6e8, 318*907ef6a1SAshish Mhetre .security = 0x6ec, 319*907ef6a1SAshish Mhetre }, 320*907ef6a1SAshish Mhetre }, 321*907ef6a1SAshish Mhetre }, { 322*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_PCIE3R, 323*907ef6a1SAshish Mhetre .name = "pcie3r", 324*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_PCIE_3, 325*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 326*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_PCIE3, 327*907ef6a1SAshish Mhetre .regs = { 328*907ef6a1SAshish Mhetre .sid = { 329*907ef6a1SAshish Mhetre .override = 0x6f0, 330*907ef6a1SAshish Mhetre .security = 0x6f4, 331*907ef6a1SAshish Mhetre }, 332*907ef6a1SAshish Mhetre }, 333*907ef6a1SAshish Mhetre }, { 334*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_PCIE3W, 335*907ef6a1SAshish Mhetre .name = "pcie3w", 336*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_PCIE_3, 337*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 338*907ef6a1SAshish Mhetre .sid = TEGRA238_SID_PCIE3, 339*907ef6a1SAshish Mhetre .regs = { 340*907ef6a1SAshish Mhetre .sid = { 341*907ef6a1SAshish Mhetre .override = 0x6f8, 342*907ef6a1SAshish Mhetre .security = 0x6fc, 343*907ef6a1SAshish Mhetre }, 344*907ef6a1SAshish Mhetre }, 345*907ef6a1SAshish Mhetre }, { 346*907ef6a1SAshish Mhetre .id = TEGRA_ICC_MC_CPU_CLUSTER0, 347*907ef6a1SAshish Mhetre .name = "sw_cluster0", 348*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_CPU_CLUSTER0, 349*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 350*907ef6a1SAshish Mhetre }, { 351*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_NVL1R, 352*907ef6a1SAshish Mhetre .name = "nvl1r", 353*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_GPU, 354*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 355*907ef6a1SAshish Mhetre }, { 356*907ef6a1SAshish Mhetre .id = TEGRA234_MEMORY_CLIENT_NVL1W, 357*907ef6a1SAshish Mhetre .name = "nvl1w", 358*907ef6a1SAshish Mhetre .bpmp_id = TEGRA_ICC_BPMP_GPU, 359*907ef6a1SAshish Mhetre .type = TEGRA_ICC_NISO, 360*907ef6a1SAshish Mhetre } 361*907ef6a1SAshish Mhetre }; 362*907ef6a1SAshish Mhetre 363*907ef6a1SAshish Mhetre static const struct tegra_mc_intmask tegra238_mc_intmasks[] = { 364*907ef6a1SAshish Mhetre { 365*907ef6a1SAshish Mhetre .reg = MC_INTMASK, 366*907ef6a1SAshish Mhetre .mask = MC_INT_DECERR_ROUTE_SANITY | MC_INT_DECERR_GENERALIZED_CARVEOUT | 367*907ef6a1SAshish Mhetre MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR | 368*907ef6a1SAshish Mhetre MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM, 369*907ef6a1SAshish Mhetre }, 370*907ef6a1SAshish Mhetre }; 371*907ef6a1SAshish Mhetre 372*907ef6a1SAshish Mhetre const struct tegra_mc_soc tegra238_mc_soc = { 373*907ef6a1SAshish Mhetre .num_clients = ARRAY_SIZE(tegra238_mc_clients), 374*907ef6a1SAshish Mhetre .clients = tegra238_mc_clients, 375*907ef6a1SAshish Mhetre .num_address_bits = 40, 376*907ef6a1SAshish Mhetre .num_channels = 8, 377*907ef6a1SAshish Mhetre .client_id_mask = 0x1ff, 378*907ef6a1SAshish Mhetre .intmasks = tegra238_mc_intmasks, 379*907ef6a1SAshish Mhetre .num_intmasks = ARRAY_SIZE(tegra238_mc_intmasks), 380*907ef6a1SAshish Mhetre .has_addr_hi_reg = true, 381*907ef6a1SAshish Mhetre .ops = &tegra186_mc_ops, 382*907ef6a1SAshish Mhetre .icc_ops = &tegra234_mc_icc_ops, 383*907ef6a1SAshish Mhetre .ch_intmask = 0x0000ff00, 384*907ef6a1SAshish Mhetre .global_intstatus_channel_shift = 8, 385*907ef6a1SAshish Mhetre .num_carveouts = 32, 386*907ef6a1SAshish Mhetre .regs = &tegra20_mc_regs, 387*907ef6a1SAshish Mhetre .handle_irq = tegra30_mc_irq_handlers, 388*907ef6a1SAshish Mhetre .num_interrupts = ARRAY_SIZE(tegra30_mc_irq_handlers), 389*907ef6a1SAshish Mhetre .mc_addr_hi_mask = 0x3, 390*907ef6a1SAshish Mhetre .mc_err_status_type_mask = (0x7 << 28), 391*907ef6a1SAshish Mhetre }; 392