172c81bb6SThierry Reding // SPDX-License-Identifier: GPL-2.0-only 272c81bb6SThierry Reding /* 39a38cb27SSumit Gupta * Copyright (C) 2022-2023, NVIDIA CORPORATION. All rights reserved. 472c81bb6SThierry Reding */ 572c81bb6SThierry Reding 672c81bb6SThierry Reding #include <soc/tegra/mc.h> 772c81bb6SThierry Reding 872c81bb6SThierry Reding #include <dt-bindings/memory/tegra234-mc.h> 99a38cb27SSumit Gupta #include <linux/interconnect.h> 109a38cb27SSumit Gupta #include <linux/tegra-icc.h> 1172c81bb6SThierry Reding 129a38cb27SSumit Gupta #include <soc/tegra/bpmp.h> 1372c81bb6SThierry Reding #include "mc.h" 1472c81bb6SThierry Reding 156d0c4aa5SSumit Gupta /* 166d0c4aa5SSumit Gupta * MC Client entries are sorted in the increasing order of the 176d0c4aa5SSumit Gupta * override and security register offsets. 186d0c4aa5SSumit Gupta */ 1972c81bb6SThierry Reding static const struct tegra_mc_client tegra234_mc_clients[] = { 2072c81bb6SThierry Reding { 21aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_HDAR, 22aecc83f1SSumit Gupta .name = "hdar", 23aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_HDA, 24aecc83f1SSumit Gupta .type = TEGRA_ICC_ISO_AUDIO, 25aecc83f1SSumit Gupta .sid = TEGRA234_SID_HDA, 26aecc83f1SSumit Gupta .regs = { 27aecc83f1SSumit Gupta .sid = { 28aecc83f1SSumit Gupta .override = 0xa8, 29aecc83f1SSumit Gupta .security = 0xac, 30aecc83f1SSumit Gupta }, 31aecc83f1SSumit Gupta }, 32aecc83f1SSumit Gupta }, { 33*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVENCSRD, 34*b18e5259SSumit Gupta .name = "nvencsrd", 35*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_NVENC, 36*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 37*b18e5259SSumit Gupta .sid = TEGRA234_SID_NVENC, 38*b18e5259SSumit Gupta .regs = { 39*b18e5259SSumit Gupta .sid = { 40*b18e5259SSumit Gupta .override = 0xe0, 41*b18e5259SSumit Gupta .security = 0xe4, 42*b18e5259SSumit Gupta }, 43*b18e5259SSumit Gupta }, 44*b18e5259SSumit Gupta }, { 456d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE6AR, 466d0c4aa5SSumit Gupta .name = "pcie6ar", 476d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_6, 486d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 496d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE6, 506d0c4aa5SSumit Gupta .regs = { 516d0c4aa5SSumit Gupta .sid = { 526d0c4aa5SSumit Gupta .override = 0x140, 536d0c4aa5SSumit Gupta .security = 0x144, 546d0c4aa5SSumit Gupta }, 556d0c4aa5SSumit Gupta }, 566d0c4aa5SSumit Gupta }, { 576d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE6AW, 586d0c4aa5SSumit Gupta .name = "pcie6aw", 596d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_6, 606d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 616d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE6, 626d0c4aa5SSumit Gupta .regs = { 636d0c4aa5SSumit Gupta .sid = { 646d0c4aa5SSumit Gupta .override = 0x148, 656d0c4aa5SSumit Gupta .security = 0x14c, 666d0c4aa5SSumit Gupta }, 676d0c4aa5SSumit Gupta }, 686d0c4aa5SSumit Gupta }, { 696d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE7AR, 706d0c4aa5SSumit Gupta .name = "pcie7ar", 716d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_7, 726d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 736d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE7, 746d0c4aa5SSumit Gupta .regs = { 756d0c4aa5SSumit Gupta .sid = { 766d0c4aa5SSumit Gupta .override = 0x150, 776d0c4aa5SSumit Gupta .security = 0x154, 786d0c4aa5SSumit Gupta }, 796d0c4aa5SSumit Gupta }, 806d0c4aa5SSumit Gupta }, { 81*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVENCSWR, 82*b18e5259SSumit Gupta .name = "nvencswr", 83*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_NVENC, 84*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 85*b18e5259SSumit Gupta .sid = TEGRA234_SID_NVENC, 86*b18e5259SSumit Gupta .regs = { 87*b18e5259SSumit Gupta .sid = { 88*b18e5259SSumit Gupta .override = 0x158, 89*b18e5259SSumit Gupta .security = 0x15c, 90*b18e5259SSumit Gupta }, 91*b18e5259SSumit Gupta }, 92*b18e5259SSumit Gupta }, { 936d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_DLA0RDB, 946d0c4aa5SSumit Gupta .name = "dla0rdb", 956d0c4aa5SSumit Gupta .sid = TEGRA234_SID_NVDLA0, 966d0c4aa5SSumit Gupta .regs = { 976d0c4aa5SSumit Gupta .sid = { 986d0c4aa5SSumit Gupta .override = 0x160, 996d0c4aa5SSumit Gupta .security = 0x164, 1006d0c4aa5SSumit Gupta }, 1016d0c4aa5SSumit Gupta }, 1026d0c4aa5SSumit Gupta }, { 1036d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_DLA0RDB1, 1046d0c4aa5SSumit Gupta .name = "dla0rdb1", 1056d0c4aa5SSumit Gupta .sid = TEGRA234_SID_NVDLA0, 1066d0c4aa5SSumit Gupta .regs = { 1076d0c4aa5SSumit Gupta .sid = { 1086d0c4aa5SSumit Gupta .override = 0x168, 1096d0c4aa5SSumit Gupta .security = 0x16c, 1106d0c4aa5SSumit Gupta }, 1116d0c4aa5SSumit Gupta }, 1126d0c4aa5SSumit Gupta }, { 1136d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_DLA0WRB, 1146d0c4aa5SSumit Gupta .name = "dla0wrb", 1156d0c4aa5SSumit Gupta .sid = TEGRA234_SID_NVDLA0, 1166d0c4aa5SSumit Gupta .regs = { 1176d0c4aa5SSumit Gupta .sid = { 1186d0c4aa5SSumit Gupta .override = 0x170, 1196d0c4aa5SSumit Gupta .security = 0x174, 1206d0c4aa5SSumit Gupta }, 1216d0c4aa5SSumit Gupta }, 1226d0c4aa5SSumit Gupta }, { 1236d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_DLA1RDB, 1246d0c4aa5SSumit Gupta .name = "dla0rdb", 1256d0c4aa5SSumit Gupta .sid = TEGRA234_SID_NVDLA1, 1266d0c4aa5SSumit Gupta .regs = { 1276d0c4aa5SSumit Gupta .sid = { 1286d0c4aa5SSumit Gupta .override = 0x178, 1296d0c4aa5SSumit Gupta .security = 0x17c, 1306d0c4aa5SSumit Gupta }, 1316d0c4aa5SSumit Gupta }, 1326d0c4aa5SSumit Gupta }, { 1336d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE7AW, 1346d0c4aa5SSumit Gupta .name = "pcie7aw", 1356d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_7, 1366d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 1376d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE7, 1386d0c4aa5SSumit Gupta .regs = { 1396d0c4aa5SSumit Gupta .sid = { 1406d0c4aa5SSumit Gupta .override = 0x180, 1416d0c4aa5SSumit Gupta .security = 0x184, 1426d0c4aa5SSumit Gupta }, 1436d0c4aa5SSumit Gupta }, 1446d0c4aa5SSumit Gupta }, { 1456d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE8AR, 1466d0c4aa5SSumit Gupta .name = "pcie8ar", 1476d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_8, 1486d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 1496d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE8, 1506d0c4aa5SSumit Gupta .regs = { 1516d0c4aa5SSumit Gupta .sid = { 1526d0c4aa5SSumit Gupta .override = 0x190, 1536d0c4aa5SSumit Gupta .security = 0x194, 1546d0c4aa5SSumit Gupta }, 1556d0c4aa5SSumit Gupta }, 1566d0c4aa5SSumit Gupta }, { 157aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_HDAW, 158aecc83f1SSumit Gupta .name = "hdaw", 159aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_HDA, 160aecc83f1SSumit Gupta .type = TEGRA_ICC_ISO_AUDIO, 161aecc83f1SSumit Gupta .sid = TEGRA234_SID_HDA, 162aecc83f1SSumit Gupta .regs = { 163aecc83f1SSumit Gupta .sid = { 164aecc83f1SSumit Gupta .override = 0x1a8, 165aecc83f1SSumit Gupta .security = 0x1ac, 166aecc83f1SSumit Gupta }, 167aecc83f1SSumit Gupta }, 168aecc83f1SSumit Gupta }, { 1696d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE8AW, 1706d0c4aa5SSumit Gupta .name = "pcie8aw", 1716d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_8, 1726d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 1736d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE8, 1746d0c4aa5SSumit Gupta .regs = { 1756d0c4aa5SSumit Gupta .sid = { 1766d0c4aa5SSumit Gupta .override = 0x1d8, 1776d0c4aa5SSumit Gupta .security = 0x1dc, 1786d0c4aa5SSumit Gupta }, 1796d0c4aa5SSumit Gupta }, 1806d0c4aa5SSumit Gupta }, { 1816d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE9AR, 1826d0c4aa5SSumit Gupta .name = "pcie9ar", 1836d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_9, 1846d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 1856d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE9, 1866d0c4aa5SSumit Gupta .regs = { 1876d0c4aa5SSumit Gupta .sid = { 1886d0c4aa5SSumit Gupta .override = 0x1e0, 1896d0c4aa5SSumit Gupta .security = 0x1e4, 1906d0c4aa5SSumit Gupta }, 1916d0c4aa5SSumit Gupta }, 1926d0c4aa5SSumit Gupta }, { 1936d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE6AR1, 1946d0c4aa5SSumit Gupta .name = "pcie6ar1", 1956d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_6, 1966d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 1976d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE6, 1986d0c4aa5SSumit Gupta .regs = { 1996d0c4aa5SSumit Gupta .sid = { 2006d0c4aa5SSumit Gupta .override = 0x1e8, 2016d0c4aa5SSumit Gupta .security = 0x1ec, 2026d0c4aa5SSumit Gupta }, 2036d0c4aa5SSumit Gupta }, 2046d0c4aa5SSumit Gupta }, { 2056d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE9AW, 2066d0c4aa5SSumit Gupta .name = "pcie9aw", 2076d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_9, 2086d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 2096d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE9, 2106d0c4aa5SSumit Gupta .regs = { 2116d0c4aa5SSumit Gupta .sid = { 2126d0c4aa5SSumit Gupta .override = 0x1f0, 2136d0c4aa5SSumit Gupta .security = 0x1f4, 2146d0c4aa5SSumit Gupta }, 2156d0c4aa5SSumit Gupta }, 2166d0c4aa5SSumit Gupta }, { 2176d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE10AR, 2186d0c4aa5SSumit Gupta .name = "pcie10ar", 2196d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_10, 2206d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 2216d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE10, 2226d0c4aa5SSumit Gupta .regs = { 2236d0c4aa5SSumit Gupta .sid = { 2246d0c4aa5SSumit Gupta .override = 0x1f8, 2256d0c4aa5SSumit Gupta .security = 0x1fc, 2266d0c4aa5SSumit Gupta }, 2276d0c4aa5SSumit Gupta }, 2286d0c4aa5SSumit Gupta }, { 2296d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE10AW, 2306d0c4aa5SSumit Gupta .name = "pcie10aw", 2316d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_10, 2326d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 2336d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE10, 2346d0c4aa5SSumit Gupta .regs = { 2356d0c4aa5SSumit Gupta .sid = { 2366d0c4aa5SSumit Gupta .override = 0x200, 2376d0c4aa5SSumit Gupta .security = 0x204, 2386d0c4aa5SSumit Gupta }, 2396d0c4aa5SSumit Gupta }, 2406d0c4aa5SSumit Gupta }, { 2416d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE10AR1, 2426d0c4aa5SSumit Gupta .name = "pcie10ar1", 2436d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_10, 2446d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 2456d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE10, 2466d0c4aa5SSumit Gupta .regs = { 2476d0c4aa5SSumit Gupta .sid = { 2486d0c4aa5SSumit Gupta .override = 0x240, 2496d0c4aa5SSumit Gupta .security = 0x244, 2506d0c4aa5SSumit Gupta }, 2516d0c4aa5SSumit Gupta }, 2526d0c4aa5SSumit Gupta }, { 2536d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE7AR1, 2546d0c4aa5SSumit Gupta .name = "pcie7ar1", 2556d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_7, 2566d0c4aa5SSumit Gupta .type = TEGRA_ICC_NISO, 2576d0c4aa5SSumit Gupta .sid = TEGRA234_SID_PCIE7, 2586d0c4aa5SSumit Gupta .regs = { 2596d0c4aa5SSumit Gupta .sid = { 2606d0c4aa5SSumit Gupta .override = 0x248, 2616d0c4aa5SSumit Gupta .security = 0x24c, 2626d0c4aa5SSumit Gupta }, 2636d0c4aa5SSumit Gupta }, 2646d0c4aa5SSumit Gupta }, { 2655060237bSThierry Reding .id = TEGRA234_MEMORY_CLIENT_MGBEARD, 2665060237bSThierry Reding .name = "mgbeard", 2679a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_EQOS, 2689a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 2695060237bSThierry Reding .sid = TEGRA234_SID_MGBE, 2705060237bSThierry Reding .regs = { 2715060237bSThierry Reding .sid = { 2725060237bSThierry Reding .override = 0x2c0, 2735060237bSThierry Reding .security = 0x2c4, 2745060237bSThierry Reding }, 2755060237bSThierry Reding }, 2765060237bSThierry Reding }, { 2775060237bSThierry Reding .id = TEGRA234_MEMORY_CLIENT_MGBEBRD, 2785060237bSThierry Reding .name = "mgbebrd", 2799a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_EQOS, 2809a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 2815060237bSThierry Reding .sid = TEGRA234_SID_MGBE_VF1, 2825060237bSThierry Reding .regs = { 2835060237bSThierry Reding .sid = { 2845060237bSThierry Reding .override = 0x2c8, 2855060237bSThierry Reding .security = 0x2cc, 2865060237bSThierry Reding }, 2875060237bSThierry Reding }, 2885060237bSThierry Reding }, { 2895060237bSThierry Reding .id = TEGRA234_MEMORY_CLIENT_MGBECRD, 2905060237bSThierry Reding .name = "mgbecrd", 2919a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_EQOS, 2929a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 2935060237bSThierry Reding .sid = TEGRA234_SID_MGBE_VF2, 2945060237bSThierry Reding .regs = { 2955060237bSThierry Reding .sid = { 2965060237bSThierry Reding .override = 0x2d0, 2975060237bSThierry Reding .security = 0x2d4, 2985060237bSThierry Reding }, 2995060237bSThierry Reding }, 3005060237bSThierry Reding }, { 3015060237bSThierry Reding .id = TEGRA234_MEMORY_CLIENT_MGBEDRD, 3025060237bSThierry Reding .name = "mgbedrd", 3039a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_EQOS, 3049a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 3055060237bSThierry Reding .sid = TEGRA234_SID_MGBE_VF3, 3065060237bSThierry Reding .regs = { 3075060237bSThierry Reding .sid = { 3085060237bSThierry Reding .override = 0x2d8, 3095060237bSThierry Reding .security = 0x2dc, 3105060237bSThierry Reding }, 3115060237bSThierry Reding }, 3125060237bSThierry Reding }, { 3135060237bSThierry Reding .id = TEGRA234_MEMORY_CLIENT_MGBEAWR, 3149a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_EQOS, 3159a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 3165060237bSThierry Reding .name = "mgbeawr", 3175060237bSThierry Reding .sid = TEGRA234_SID_MGBE, 3185060237bSThierry Reding .regs = { 3195060237bSThierry Reding .sid = { 3205060237bSThierry Reding .override = 0x2e0, 3215060237bSThierry Reding .security = 0x2e4, 3225060237bSThierry Reding }, 3235060237bSThierry Reding }, 3245060237bSThierry Reding }, { 3255060237bSThierry Reding .id = TEGRA234_MEMORY_CLIENT_MGBEBWR, 3265060237bSThierry Reding .name = "mgbebwr", 3279a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_EQOS, 3289a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 3295060237bSThierry Reding .sid = TEGRA234_SID_MGBE_VF1, 3305060237bSThierry Reding .regs = { 3315060237bSThierry Reding .sid = { 3325060237bSThierry Reding .override = 0x2f8, 3335060237bSThierry Reding .security = 0x2fc, 3345060237bSThierry Reding }, 3355060237bSThierry Reding }, 3365060237bSThierry Reding }, { 3375060237bSThierry Reding .id = TEGRA234_MEMORY_CLIENT_MGBECWR, 3385060237bSThierry Reding .name = "mgbecwr", 3399a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_EQOS, 3409a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 3415060237bSThierry Reding .sid = TEGRA234_SID_MGBE_VF2, 3425060237bSThierry Reding .regs = { 3435060237bSThierry Reding .sid = { 3445060237bSThierry Reding .override = 0x308, 3455060237bSThierry Reding .security = 0x30c, 3465060237bSThierry Reding }, 3475060237bSThierry Reding }, 3485060237bSThierry Reding }, { 34972c81bb6SThierry Reding .id = TEGRA234_MEMORY_CLIENT_SDMMCRAB, 35072c81bb6SThierry Reding .name = "sdmmcrab", 3519a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_SDMMC_4, 3529a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 35372c81bb6SThierry Reding .sid = TEGRA234_SID_SDMMC4, 35472c81bb6SThierry Reding .regs = { 35572c81bb6SThierry Reding .sid = { 35672c81bb6SThierry Reding .override = 0x318, 35772c81bb6SThierry Reding .security = 0x31c, 35872c81bb6SThierry Reding }, 35972c81bb6SThierry Reding }, 36072c81bb6SThierry Reding }, { 3615060237bSThierry Reding .id = TEGRA234_MEMORY_CLIENT_MGBEDWR, 3625060237bSThierry Reding .name = "mgbedwr", 3639a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_EQOS, 3649a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 3655060237bSThierry Reding .sid = TEGRA234_SID_MGBE_VF3, 3665060237bSThierry Reding .regs = { 3675060237bSThierry Reding .sid = { 3685060237bSThierry Reding .override = 0x328, 3695060237bSThierry Reding .security = 0x32c, 3705060237bSThierry Reding }, 3715060237bSThierry Reding }, 3725060237bSThierry Reding }, { 37372c81bb6SThierry Reding .id = TEGRA234_MEMORY_CLIENT_SDMMCWAB, 37472c81bb6SThierry Reding .name = "sdmmcwab", 3759a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_SDMMC_4, 3769a38cb27SSumit Gupta .type = TEGRA_ICC_NISO, 37772c81bb6SThierry Reding .sid = TEGRA234_SID_SDMMC4, 37872c81bb6SThierry Reding .regs = { 37972c81bb6SThierry Reding .sid = { 38072c81bb6SThierry Reding .override = 0x338, 38172c81bb6SThierry Reding .security = 0x33c, 38272c81bb6SThierry Reding }, 38372c81bb6SThierry Reding }, 38472c81bb6SThierry Reding }, { 385*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_VICSRD, 386*b18e5259SSumit Gupta .name = "vicsrd", 387*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_VIC, 388*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 389*b18e5259SSumit Gupta .sid = TEGRA234_SID_VIC, 390*b18e5259SSumit Gupta .regs = { 391*b18e5259SSumit Gupta .sid = { 392*b18e5259SSumit Gupta .override = 0x360, 393*b18e5259SSumit Gupta .security = 0x364, 394*b18e5259SSumit Gupta }, 395*b18e5259SSumit Gupta }, 396*b18e5259SSumit Gupta }, { 397*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_VICSWR, 398*b18e5259SSumit Gupta .name = "vicswr", 399*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_VIC, 400*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 401*b18e5259SSumit Gupta .sid = TEGRA234_SID_VIC, 402*b18e5259SSumit Gupta .regs = { 403*b18e5259SSumit Gupta .sid = { 404*b18e5259SSumit Gupta .override = 0x368, 405*b18e5259SSumit Gupta .security = 0x36c, 406*b18e5259SSumit Gupta }, 407*b18e5259SSumit Gupta }, 408*b18e5259SSumit Gupta }, { 4096d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_DLA1RDB1, 4106d0c4aa5SSumit Gupta .name = "dla0rdb1", 4116d0c4aa5SSumit Gupta .sid = TEGRA234_SID_NVDLA1, 4126d0c4aa5SSumit Gupta .regs = { 4136d0c4aa5SSumit Gupta .sid = { 4146d0c4aa5SSumit Gupta .override = 0x370, 4156d0c4aa5SSumit Gupta .security = 0x374, 4166d0c4aa5SSumit Gupta }, 4176d0c4aa5SSumit Gupta }, 4186d0c4aa5SSumit Gupta }, { 4196d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_DLA1WRB, 4206d0c4aa5SSumit Gupta .name = "dla0wrb", 4216d0c4aa5SSumit Gupta .sid = TEGRA234_SID_NVDLA1, 4226d0c4aa5SSumit Gupta .regs = { 4236d0c4aa5SSumit Gupta .sid = { 4246d0c4aa5SSumit Gupta .override = 0x378, 4256d0c4aa5SSumit Gupta .security = 0x37c, 4266d0c4aa5SSumit Gupta }, 4276d0c4aa5SSumit Gupta }, 4286d0c4aa5SSumit Gupta }, { 429aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_VI2W, 430aecc83f1SSumit Gupta .name = "vi2w", 431aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_VI2, 432aecc83f1SSumit Gupta .type = TEGRA_ICC_ISO_VI, 433aecc83f1SSumit Gupta .sid = TEGRA234_SID_ISO_VI2, 434aecc83f1SSumit Gupta .regs = { 435aecc83f1SSumit Gupta .sid = { 436aecc83f1SSumit Gupta .override = 0x380, 437aecc83f1SSumit Gupta .security = 0x384, 438aecc83f1SSumit Gupta }, 439aecc83f1SSumit Gupta }, 440aecc83f1SSumit Gupta }, { 441aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_VI2FALR, 442aecc83f1SSumit Gupta .name = "vi2falr", 443aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_VI2FAL, 444aecc83f1SSumit Gupta .type = TEGRA_ICC_ISO_VIFAL, 445aecc83f1SSumit Gupta .sid = TEGRA234_SID_ISO_VI2FALC, 446aecc83f1SSumit Gupta .regs = { 447aecc83f1SSumit Gupta .sid = { 448aecc83f1SSumit Gupta .override = 0x388, 449aecc83f1SSumit Gupta .security = 0x38c, 450aecc83f1SSumit Gupta }, 451aecc83f1SSumit Gupta }, 452aecc83f1SSumit Gupta }, { 453*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVDECSRD, 454*b18e5259SSumit Gupta .name = "nvdecsrd", 455*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_NVDEC, 456*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 457*b18e5259SSumit Gupta .sid = TEGRA234_SID_NVDEC, 458*b18e5259SSumit Gupta .regs = { 459*b18e5259SSumit Gupta .sid = { 460*b18e5259SSumit Gupta .override = 0x3c0, 461*b18e5259SSumit Gupta .security = 0x3c4, 462*b18e5259SSumit Gupta }, 463*b18e5259SSumit Gupta }, 464*b18e5259SSumit Gupta }, { 465*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVDECSWR, 466*b18e5259SSumit Gupta .name = "nvdecswr", 467*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_NVDEC, 468*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 469*b18e5259SSumit Gupta .sid = TEGRA234_SID_NVDEC, 470*b18e5259SSumit Gupta .regs = { 471*b18e5259SSumit Gupta .sid = { 472*b18e5259SSumit Gupta .override = 0x3c8, 473*b18e5259SSumit Gupta .security = 0x3cc, 474*b18e5259SSumit Gupta }, 475*b18e5259SSumit Gupta }, 476*b18e5259SSumit Gupta }, { 477aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_APER, 478aecc83f1SSumit Gupta .name = "aper", 479aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_APE, 480aecc83f1SSumit Gupta .type = TEGRA_ICC_ISO_AUDIO, 481aecc83f1SSumit Gupta .sid = TEGRA234_SID_APE, 482aecc83f1SSumit Gupta .regs = { 483aecc83f1SSumit Gupta .sid = { 484aecc83f1SSumit Gupta .override = 0x3d0, 485aecc83f1SSumit Gupta .security = 0x3d4, 486aecc83f1SSumit Gupta }, 487aecc83f1SSumit Gupta }, 488aecc83f1SSumit Gupta }, { 489aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_APEW, 490aecc83f1SSumit Gupta .name = "apew", 491aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_APE, 492aecc83f1SSumit Gupta .type = TEGRA_ICC_ISO_AUDIO, 493aecc83f1SSumit Gupta .sid = TEGRA234_SID_APE, 494aecc83f1SSumit Gupta .regs = { 495aecc83f1SSumit Gupta .sid = { 496aecc83f1SSumit Gupta .override = 0x3d8, 497aecc83f1SSumit Gupta .security = 0x3dc, 498aecc83f1SSumit Gupta }, 499aecc83f1SSumit Gupta }, 500aecc83f1SSumit Gupta }, { 5016d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_VI2FALW, 5026d0c4aa5SSumit Gupta .name = "vi2falw", 5036d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_VI2FAL, 5046d0c4aa5SSumit Gupta .type = TEGRA_ICC_ISO_VIFAL, 5056d0c4aa5SSumit Gupta .sid = TEGRA234_SID_ISO_VI2FALC, 5066d0c4aa5SSumit Gupta .regs = { 5076d0c4aa5SSumit Gupta .sid = { 5086d0c4aa5SSumit Gupta .override = 0x3e0, 5096d0c4aa5SSumit Gupta .security = 0x3e4, 5106d0c4aa5SSumit Gupta }, 5116d0c4aa5SSumit Gupta }, 5126d0c4aa5SSumit Gupta }, { 513*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVJPGSRD, 514*b18e5259SSumit Gupta .name = "nvjpgsrd", 515*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_NVJPG_0, 516*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 517*b18e5259SSumit Gupta .sid = TEGRA234_SID_NVJPG, 518*b18e5259SSumit Gupta .regs = { 519*b18e5259SSumit Gupta .sid = { 520*b18e5259SSumit Gupta .override = 0x3f0, 521*b18e5259SSumit Gupta .security = 0x3f4, 522*b18e5259SSumit Gupta }, 523*b18e5259SSumit Gupta }, 524*b18e5259SSumit Gupta }, { 525*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVJPGSWR, 526*b18e5259SSumit Gupta .name = "nvjpgswr", 527*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_NVJPG_0, 528*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 529*b18e5259SSumit Gupta .sid = TEGRA234_SID_NVJPG, 530*b18e5259SSumit Gupta .regs = { 531*b18e5259SSumit Gupta .sid = { 532*b18e5259SSumit Gupta .override = 0x3f8, 533*b18e5259SSumit Gupta .security = 0x3fc, 534*b18e5259SSumit Gupta }, 535*b18e5259SSumit Gupta }, 536*b18e5259SSumit Gupta }, { 537aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVDISPLAYR, 538aecc83f1SSumit Gupta .name = "nvdisplayr", 539aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_DISPLAY, 540aecc83f1SSumit Gupta .type = TEGRA_ICC_ISO_DISPLAY, 541aecc83f1SSumit Gupta .sid = TEGRA234_SID_ISO_NVDISPLAY, 542aecc83f1SSumit Gupta .regs = { 543aecc83f1SSumit Gupta .sid = { 544aecc83f1SSumit Gupta .override = 0x490, 545aecc83f1SSumit Gupta .security = 0x494, 546aecc83f1SSumit Gupta }, 547aecc83f1SSumit Gupta }, 548aecc83f1SSumit Gupta }, { 54972c81bb6SThierry Reding .id = TEGRA234_MEMORY_CLIENT_BPMPR, 55072c81bb6SThierry Reding .name = "bpmpr", 55172c81bb6SThierry Reding .sid = TEGRA234_SID_BPMP, 55272c81bb6SThierry Reding .regs = { 55372c81bb6SThierry Reding .sid = { 55472c81bb6SThierry Reding .override = 0x498, 55572c81bb6SThierry Reding .security = 0x49c, 55672c81bb6SThierry Reding }, 55772c81bb6SThierry Reding }, 55872c81bb6SThierry Reding }, { 55972c81bb6SThierry Reding .id = TEGRA234_MEMORY_CLIENT_BPMPW, 56072c81bb6SThierry Reding .name = "bpmpw", 56172c81bb6SThierry Reding .sid = TEGRA234_SID_BPMP, 56272c81bb6SThierry Reding .regs = { 56372c81bb6SThierry Reding .sid = { 56472c81bb6SThierry Reding .override = 0x4a0, 56572c81bb6SThierry Reding .security = 0x4a4, 56672c81bb6SThierry Reding }, 56772c81bb6SThierry Reding }, 56872c81bb6SThierry Reding }, { 56972c81bb6SThierry Reding .id = TEGRA234_MEMORY_CLIENT_BPMPDMAR, 57072c81bb6SThierry Reding .name = "bpmpdmar", 57172c81bb6SThierry Reding .sid = TEGRA234_SID_BPMP, 57272c81bb6SThierry Reding .regs = { 57372c81bb6SThierry Reding .sid = { 57472c81bb6SThierry Reding .override = 0x4a8, 57572c81bb6SThierry Reding .security = 0x4ac, 57672c81bb6SThierry Reding }, 57772c81bb6SThierry Reding }, 57872c81bb6SThierry Reding }, { 57972c81bb6SThierry Reding .id = TEGRA234_MEMORY_CLIENT_BPMPDMAW, 58072c81bb6SThierry Reding .name = "bpmpdmaw", 58172c81bb6SThierry Reding .sid = TEGRA234_SID_BPMP, 58272c81bb6SThierry Reding .regs = { 58372c81bb6SThierry Reding .sid = { 58472c81bb6SThierry Reding .override = 0x4b0, 58572c81bb6SThierry Reding .security = 0x4b4, 58672c81bb6SThierry Reding }, 58772c81bb6SThierry Reding }, 588cc3d696cSSameer Pujar }, { 589cc3d696cSSameer Pujar .id = TEGRA234_MEMORY_CLIENT_APEDMAR, 590cc3d696cSSameer Pujar .name = "apedmar", 5919a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_APEDMA, 5929a38cb27SSumit Gupta .type = TEGRA_ICC_ISO_AUDIO, 593cc3d696cSSameer Pujar .sid = TEGRA234_SID_APE, 594cc3d696cSSameer Pujar .regs = { 595cc3d696cSSameer Pujar .sid = { 596cc3d696cSSameer Pujar .override = 0x4f8, 597cc3d696cSSameer Pujar .security = 0x4fc, 598cc3d696cSSameer Pujar }, 599cc3d696cSSameer Pujar }, 600cc3d696cSSameer Pujar }, { 601cc3d696cSSameer Pujar .id = TEGRA234_MEMORY_CLIENT_APEDMAW, 602cc3d696cSSameer Pujar .name = "apedmaw", 6039a38cb27SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_APEDMA, 6049a38cb27SSumit Gupta .type = TEGRA_ICC_ISO_AUDIO, 605cc3d696cSSameer Pujar .sid = TEGRA234_SID_APE, 606cc3d696cSSameer Pujar .regs = { 607cc3d696cSSameer Pujar .sid = { 608cc3d696cSSameer Pujar .override = 0x500, 609cc3d696cSSameer Pujar .security = 0x504, 610cc3d696cSSameer Pujar }, 611cc3d696cSSameer Pujar }, 6125cd24ca0SJon Hunter }, { 6136d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVDISPLAYR1, 6146d0c4aa5SSumit Gupta .name = "nvdisplayr1", 6156d0c4aa5SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_DISPLAY, 6166d0c4aa5SSumit Gupta .type = TEGRA_ICC_ISO_DISPLAY, 6176d0c4aa5SSumit Gupta .sid = TEGRA234_SID_ISO_NVDISPLAY, 6186d0c4aa5SSumit Gupta .regs = { 6196d0c4aa5SSumit Gupta .sid = { 6206d0c4aa5SSumit Gupta .override = 0x508, 6216d0c4aa5SSumit Gupta .security = 0x50c, 6226d0c4aa5SSumit Gupta }, 6236d0c4aa5SSumit Gupta }, 6246d0c4aa5SSumit Gupta }, { 6255cd24ca0SJon Hunter .id = TEGRA234_MEMORY_CLIENT_DLA0RDA, 6265cd24ca0SJon Hunter .name = "dla0rda", 6275cd24ca0SJon Hunter .sid = TEGRA234_SID_NVDLA0, 6285cd24ca0SJon Hunter .regs = { 6295cd24ca0SJon Hunter .sid = { 6305cd24ca0SJon Hunter .override = 0x5f0, 6315cd24ca0SJon Hunter .security = 0x5f4, 6325cd24ca0SJon Hunter }, 6335cd24ca0SJon Hunter }, 6345cd24ca0SJon Hunter }, { 6355cd24ca0SJon Hunter .id = TEGRA234_MEMORY_CLIENT_DLA0FALRDB, 6365cd24ca0SJon Hunter .name = "dla0falrdb", 6375cd24ca0SJon Hunter .sid = TEGRA234_SID_NVDLA0, 6385cd24ca0SJon Hunter .regs = { 6395cd24ca0SJon Hunter .sid = { 6405cd24ca0SJon Hunter .override = 0x5f8, 6415cd24ca0SJon Hunter .security = 0x5fc, 6425cd24ca0SJon Hunter }, 6435cd24ca0SJon Hunter }, 6445cd24ca0SJon Hunter }, { 6455cd24ca0SJon Hunter .id = TEGRA234_MEMORY_CLIENT_DLA0WRA, 6465cd24ca0SJon Hunter .name = "dla0wra", 6475cd24ca0SJon Hunter .sid = TEGRA234_SID_NVDLA0, 6485cd24ca0SJon Hunter .regs = { 6495cd24ca0SJon Hunter .sid = { 6505cd24ca0SJon Hunter .override = 0x600, 6515cd24ca0SJon Hunter .security = 0x604, 6525cd24ca0SJon Hunter }, 6535cd24ca0SJon Hunter }, 6545cd24ca0SJon Hunter }, { 6555cd24ca0SJon Hunter .id = TEGRA234_MEMORY_CLIENT_DLA0FALWRB, 6565cd24ca0SJon Hunter .name = "dla0falwrb", 6575cd24ca0SJon Hunter .sid = TEGRA234_SID_NVDLA0, 6585cd24ca0SJon Hunter .regs = { 6595cd24ca0SJon Hunter .sid = { 6605cd24ca0SJon Hunter .override = 0x608, 6615cd24ca0SJon Hunter .security = 0x60c, 6625cd24ca0SJon Hunter }, 6635cd24ca0SJon Hunter }, 6645cd24ca0SJon Hunter }, { 6655cd24ca0SJon Hunter .id = TEGRA234_MEMORY_CLIENT_DLA1RDA, 6665cd24ca0SJon Hunter .name = "dla0rda", 6675cd24ca0SJon Hunter .sid = TEGRA234_SID_NVDLA1, 6685cd24ca0SJon Hunter .regs = { 6695cd24ca0SJon Hunter .sid = { 6705cd24ca0SJon Hunter .override = 0x610, 6715cd24ca0SJon Hunter .security = 0x614, 6725cd24ca0SJon Hunter }, 6735cd24ca0SJon Hunter }, 6745cd24ca0SJon Hunter }, { 6755cd24ca0SJon Hunter .id = TEGRA234_MEMORY_CLIENT_DLA1FALRDB, 6765cd24ca0SJon Hunter .name = "dla0falrdb", 6775cd24ca0SJon Hunter .sid = TEGRA234_SID_NVDLA1, 6785cd24ca0SJon Hunter .regs = { 6795cd24ca0SJon Hunter .sid = { 6805cd24ca0SJon Hunter .override = 0x618, 6815cd24ca0SJon Hunter .security = 0x61c, 6825cd24ca0SJon Hunter }, 6835cd24ca0SJon Hunter }, 6845cd24ca0SJon Hunter }, { 6855cd24ca0SJon Hunter .id = TEGRA234_MEMORY_CLIENT_DLA1WRA, 6865cd24ca0SJon Hunter .name = "dla0wra", 6875cd24ca0SJon Hunter .sid = TEGRA234_SID_NVDLA1, 6885cd24ca0SJon Hunter .regs = { 6895cd24ca0SJon Hunter .sid = { 6905cd24ca0SJon Hunter .override = 0x620, 6915cd24ca0SJon Hunter .security = 0x624, 6925cd24ca0SJon Hunter }, 6935cd24ca0SJon Hunter }, 6945cd24ca0SJon Hunter }, { 6955cd24ca0SJon Hunter .id = TEGRA234_MEMORY_CLIENT_DLA1FALWRB, 6965cd24ca0SJon Hunter .name = "dla0falwrb", 6975cd24ca0SJon Hunter .sid = TEGRA234_SID_NVDLA1, 6985cd24ca0SJon Hunter .regs = { 6995cd24ca0SJon Hunter .sid = { 7005cd24ca0SJon Hunter .override = 0x628, 7015cd24ca0SJon Hunter .security = 0x62c, 7025cd24ca0SJon Hunter }, 7035cd24ca0SJon Hunter }, 7045cd24ca0SJon Hunter }, { 705aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE0R, 706aecc83f1SSumit Gupta .name = "pcie0r", 707aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_0, 708aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 709aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE0, 710aecc83f1SSumit Gupta .regs = { 711aecc83f1SSumit Gupta .sid = { 712aecc83f1SSumit Gupta .override = 0x6c0, 713aecc83f1SSumit Gupta .security = 0x6c4, 714aecc83f1SSumit Gupta }, 715aecc83f1SSumit Gupta }, 716aecc83f1SSumit Gupta }, { 717aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE0W, 718aecc83f1SSumit Gupta .name = "pcie0w", 719aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_0, 720aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 721aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE0, 722aecc83f1SSumit Gupta .regs = { 723aecc83f1SSumit Gupta .sid = { 724aecc83f1SSumit Gupta .override = 0x6c8, 725aecc83f1SSumit Gupta .security = 0x6cc, 726aecc83f1SSumit Gupta }, 727aecc83f1SSumit Gupta }, 728aecc83f1SSumit Gupta }, { 729aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE1R, 730aecc83f1SSumit Gupta .name = "pcie1r", 731aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_1, 732aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 733aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE1, 734aecc83f1SSumit Gupta .regs = { 735aecc83f1SSumit Gupta .sid = { 736aecc83f1SSumit Gupta .override = 0x6d0, 737aecc83f1SSumit Gupta .security = 0x6d4, 738aecc83f1SSumit Gupta }, 739aecc83f1SSumit Gupta }, 740aecc83f1SSumit Gupta }, { 741aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE1W, 742aecc83f1SSumit Gupta .name = "pcie1w", 743aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_1, 744aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 745aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE1, 746aecc83f1SSumit Gupta .regs = { 747aecc83f1SSumit Gupta .sid = { 748aecc83f1SSumit Gupta .override = 0x6d8, 749aecc83f1SSumit Gupta .security = 0x6dc, 750aecc83f1SSumit Gupta }, 751aecc83f1SSumit Gupta }, 752aecc83f1SSumit Gupta }, { 753aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE2AR, 754aecc83f1SSumit Gupta .name = "pcie2ar", 755aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_2, 756aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 757aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE2, 758aecc83f1SSumit Gupta .regs = { 759aecc83f1SSumit Gupta .sid = { 760aecc83f1SSumit Gupta .override = 0x6e0, 761aecc83f1SSumit Gupta .security = 0x6e4, 762aecc83f1SSumit Gupta }, 763aecc83f1SSumit Gupta }, 764aecc83f1SSumit Gupta }, { 765aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE2AW, 766aecc83f1SSumit Gupta .name = "pcie2aw", 767aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_2, 768aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 769aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE2, 770aecc83f1SSumit Gupta .regs = { 771aecc83f1SSumit Gupta .sid = { 772aecc83f1SSumit Gupta .override = 0x6e8, 773aecc83f1SSumit Gupta .security = 0x6ec, 774aecc83f1SSumit Gupta }, 775aecc83f1SSumit Gupta }, 776aecc83f1SSumit Gupta }, { 777aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE3R, 778aecc83f1SSumit Gupta .name = "pcie3r", 779aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_3, 780aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 781aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE3, 782aecc83f1SSumit Gupta .regs = { 783aecc83f1SSumit Gupta .sid = { 784aecc83f1SSumit Gupta .override = 0x6f0, 785aecc83f1SSumit Gupta .security = 0x6f4, 786aecc83f1SSumit Gupta }, 787aecc83f1SSumit Gupta }, 788aecc83f1SSumit Gupta }, { 789aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE3W, 790aecc83f1SSumit Gupta .name = "pcie3w", 791aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_3, 792aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 793aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE3, 794aecc83f1SSumit Gupta .regs = { 795aecc83f1SSumit Gupta .sid = { 796aecc83f1SSumit Gupta .override = 0x6f8, 797aecc83f1SSumit Gupta .security = 0x6fc, 798aecc83f1SSumit Gupta }, 799aecc83f1SSumit Gupta }, 800aecc83f1SSumit Gupta }, { 801aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE4R, 802aecc83f1SSumit Gupta .name = "pcie4r", 803aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_4, 804aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 805aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE4, 806aecc83f1SSumit Gupta .regs = { 807aecc83f1SSumit Gupta .sid = { 808aecc83f1SSumit Gupta .override = 0x700, 809aecc83f1SSumit Gupta .security = 0x704, 810aecc83f1SSumit Gupta }, 811aecc83f1SSumit Gupta }, 812aecc83f1SSumit Gupta }, { 813aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE4W, 814aecc83f1SSumit Gupta .name = "pcie4w", 815aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_4, 816aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 817aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE4, 818aecc83f1SSumit Gupta .regs = { 819aecc83f1SSumit Gupta .sid = { 820aecc83f1SSumit Gupta .override = 0x708, 821aecc83f1SSumit Gupta .security = 0x70c, 822aecc83f1SSumit Gupta }, 823aecc83f1SSumit Gupta }, 824aecc83f1SSumit Gupta }, { 825aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE5R, 826aecc83f1SSumit Gupta .name = "pcie5r", 827aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_5, 828aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 829aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE5, 830aecc83f1SSumit Gupta .regs = { 831aecc83f1SSumit Gupta .sid = { 832aecc83f1SSumit Gupta .override = 0x710, 833aecc83f1SSumit Gupta .security = 0x714, 834aecc83f1SSumit Gupta }, 835aecc83f1SSumit Gupta }, 836aecc83f1SSumit Gupta }, { 837aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE5W, 838aecc83f1SSumit Gupta .name = "pcie5w", 839aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_5, 840aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 841aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE5, 842aecc83f1SSumit Gupta .regs = { 843aecc83f1SSumit Gupta .sid = { 844aecc83f1SSumit Gupta .override = 0x718, 845aecc83f1SSumit Gupta .security = 0x71c, 846aecc83f1SSumit Gupta }, 847aecc83f1SSumit Gupta }, 848aecc83f1SSumit Gupta }, { 8496d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_DLA0RDA1, 8506d0c4aa5SSumit Gupta .name = "dla0rda1", 8516d0c4aa5SSumit Gupta .sid = TEGRA234_SID_NVDLA0, 8526d0c4aa5SSumit Gupta .regs = { 8536d0c4aa5SSumit Gupta .sid = { 8546d0c4aa5SSumit Gupta .override = 0x748, 8556d0c4aa5SSumit Gupta .security = 0x74c, 8566d0c4aa5SSumit Gupta }, 8576d0c4aa5SSumit Gupta }, 8586d0c4aa5SSumit Gupta }, { 8596d0c4aa5SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_DLA1RDA1, 8606d0c4aa5SSumit Gupta .name = "dla0rda1", 8616d0c4aa5SSumit Gupta .sid = TEGRA234_SID_NVDLA1, 8626d0c4aa5SSumit Gupta .regs = { 8636d0c4aa5SSumit Gupta .sid = { 8646d0c4aa5SSumit Gupta .override = 0x750, 8656d0c4aa5SSumit Gupta .security = 0x754, 8666d0c4aa5SSumit Gupta }, 8676d0c4aa5SSumit Gupta }, 8686d0c4aa5SSumit Gupta }, { 869aecc83f1SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_PCIE5R1, 870aecc83f1SSumit Gupta .name = "pcie5r1", 871aecc83f1SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_PCIE_5, 872aecc83f1SSumit Gupta .type = TEGRA_ICC_NISO, 873aecc83f1SSumit Gupta .sid = TEGRA234_SID_PCIE5, 874aecc83f1SSumit Gupta .regs = { 875aecc83f1SSumit Gupta .sid = { 876aecc83f1SSumit Gupta .override = 0x778, 877aecc83f1SSumit Gupta .security = 0x77c, 878aecc83f1SSumit Gupta }, 879aecc83f1SSumit Gupta }, 880aecc83f1SSumit Gupta }, { 881*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVJPG1SRD, 882*b18e5259SSumit Gupta .name = "nvjpg1srd", 883*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_NVJPG_1, 884*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 885*b18e5259SSumit Gupta .sid = TEGRA234_SID_NVJPG1, 886*b18e5259SSumit Gupta .regs = { 887*b18e5259SSumit Gupta .sid = { 888*b18e5259SSumit Gupta .override = 0x918, 889*b18e5259SSumit Gupta .security = 0x91c, 890*b18e5259SSumit Gupta }, 891*b18e5259SSumit Gupta }, 892*b18e5259SSumit Gupta }, { 893*b18e5259SSumit Gupta .id = TEGRA234_MEMORY_CLIENT_NVJPG1SWR, 894*b18e5259SSumit Gupta .name = "nvjpg1swr", 895*b18e5259SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_NVJPG_1, 896*b18e5259SSumit Gupta .type = TEGRA_ICC_NISO, 897*b18e5259SSumit Gupta .sid = TEGRA234_SID_NVJPG1, 898*b18e5259SSumit Gupta .regs = { 899*b18e5259SSumit Gupta .sid = { 900*b18e5259SSumit Gupta .override = 0x920, 901*b18e5259SSumit Gupta .security = 0x924, 902*b18e5259SSumit Gupta }, 903*b18e5259SSumit Gupta }, 904*b18e5259SSumit Gupta }, { 90580b19e09SSumit Gupta .id = TEGRA_ICC_MC_CPU_CLUSTER0, 90680b19e09SSumit Gupta .name = "sw_cluster0", 90780b19e09SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_CPU_CLUSTER0, 90880b19e09SSumit Gupta .type = TEGRA_ICC_NISO, 90980b19e09SSumit Gupta }, { 91080b19e09SSumit Gupta .id = TEGRA_ICC_MC_CPU_CLUSTER1, 91180b19e09SSumit Gupta .name = "sw_cluster1", 91280b19e09SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_CPU_CLUSTER1, 91380b19e09SSumit Gupta .type = TEGRA_ICC_NISO, 91480b19e09SSumit Gupta }, { 91580b19e09SSumit Gupta .id = TEGRA_ICC_MC_CPU_CLUSTER2, 91680b19e09SSumit Gupta .name = "sw_cluster2", 91780b19e09SSumit Gupta .bpmp_id = TEGRA_ICC_BPMP_CPU_CLUSTER2, 91880b19e09SSumit Gupta .type = TEGRA_ICC_NISO, 91972c81bb6SThierry Reding }, 92072c81bb6SThierry Reding }; 92172c81bb6SThierry Reding 9229a38cb27SSumit Gupta /* 9239a38cb27SSumit Gupta * tegra234_mc_icc_set() - Pass MC client info to the BPMP-FW 9249a38cb27SSumit Gupta * @src: ICC node for Memory Controller's (MC) Client 9259a38cb27SSumit Gupta * @dst: ICC node for Memory Controller (MC) 9269a38cb27SSumit Gupta * 9279a38cb27SSumit Gupta * Passing the current request info from the MC to the BPMP-FW where 9289a38cb27SSumit Gupta * LA and PTSA registers are accessed and the final EMC freq is set 9299a38cb27SSumit Gupta * based on client_id, type, latency and bandwidth. 9309a38cb27SSumit Gupta * icc_set_bw() makes set_bw calls for both MC and EMC providers in 9319a38cb27SSumit Gupta * sequence. Both the calls are protected by 'mutex_lock(&icc_lock)'. 9329a38cb27SSumit Gupta * So, the data passed won't be updated by concurrent set calls from 9339a38cb27SSumit Gupta * other clients. 9349a38cb27SSumit Gupta */ 9359a38cb27SSumit Gupta static int tegra234_mc_icc_set(struct icc_node *src, struct icc_node *dst) 9369a38cb27SSumit Gupta { 9379a38cb27SSumit Gupta struct tegra_mc *mc = icc_provider_to_tegra_mc(dst->provider); 9389a38cb27SSumit Gupta struct mrq_bwmgr_int_request bwmgr_req = { 0 }; 9399a38cb27SSumit Gupta struct mrq_bwmgr_int_response bwmgr_resp = { 0 }; 9409a38cb27SSumit Gupta const struct tegra_mc_client *pclient = src->data; 9419a38cb27SSumit Gupta struct tegra_bpmp_message msg; 9429a38cb27SSumit Gupta int ret; 9439a38cb27SSumit Gupta 9449a38cb27SSumit Gupta /* 9459a38cb27SSumit Gupta * Same Src and Dst node will happen during boot from icc_node_add(). 9469a38cb27SSumit Gupta * This can be used to pre-initialize and set bandwidth for all clients 9479a38cb27SSumit Gupta * before their drivers are loaded. We are skipping this case as for us, 9489a38cb27SSumit Gupta * the pre-initialization already happened in Bootloader(MB2) and BPMP-FW. 9499a38cb27SSumit Gupta */ 9509a38cb27SSumit Gupta if (src->id == dst->id) 9519a38cb27SSumit Gupta return 0; 9529a38cb27SSumit Gupta 9539a38cb27SSumit Gupta if (!mc->bwmgr_mrq_supported) 954faafd6caSSumit Gupta return 0; 9559a38cb27SSumit Gupta 9569a38cb27SSumit Gupta if (!mc->bpmp) { 9579a38cb27SSumit Gupta dev_err(mc->dev, "BPMP reference NULL\n"); 9589a38cb27SSumit Gupta return -ENOENT; 9599a38cb27SSumit Gupta } 9609a38cb27SSumit Gupta 9619a38cb27SSumit Gupta if (pclient->type == TEGRA_ICC_NISO) 9629a38cb27SSumit Gupta bwmgr_req.bwmgr_calc_set_req.niso_bw = src->avg_bw; 9639a38cb27SSumit Gupta else 9649a38cb27SSumit Gupta bwmgr_req.bwmgr_calc_set_req.iso_bw = src->avg_bw; 9659a38cb27SSumit Gupta 9669a38cb27SSumit Gupta bwmgr_req.bwmgr_calc_set_req.client_id = pclient->bpmp_id; 9679a38cb27SSumit Gupta 9689a38cb27SSumit Gupta bwmgr_req.cmd = CMD_BWMGR_INT_CALC_AND_SET; 9699a38cb27SSumit Gupta bwmgr_req.bwmgr_calc_set_req.mc_floor = src->peak_bw; 9709a38cb27SSumit Gupta bwmgr_req.bwmgr_calc_set_req.floor_unit = BWMGR_INT_UNIT_KBPS; 9719a38cb27SSumit Gupta 9729a38cb27SSumit Gupta memset(&msg, 0, sizeof(msg)); 9739a38cb27SSumit Gupta msg.mrq = MRQ_BWMGR_INT; 9749a38cb27SSumit Gupta msg.tx.data = &bwmgr_req; 9759a38cb27SSumit Gupta msg.tx.size = sizeof(bwmgr_req); 9769a38cb27SSumit Gupta msg.rx.data = &bwmgr_resp; 9779a38cb27SSumit Gupta msg.rx.size = sizeof(bwmgr_resp); 9789a38cb27SSumit Gupta 9799a38cb27SSumit Gupta ret = tegra_bpmp_transfer(mc->bpmp, &msg); 9809a38cb27SSumit Gupta if (ret < 0) { 9819a38cb27SSumit Gupta dev_err(mc->dev, "BPMP transfer failed: %d\n", ret); 9829a38cb27SSumit Gupta goto error; 9839a38cb27SSumit Gupta } 9849a38cb27SSumit Gupta if (msg.rx.ret < 0) { 9859a38cb27SSumit Gupta pr_err("failed to set bandwidth for %u: %d\n", 9869a38cb27SSumit Gupta bwmgr_req.bwmgr_calc_set_req.client_id, msg.rx.ret); 9879a38cb27SSumit Gupta ret = -EINVAL; 9889a38cb27SSumit Gupta } 9899a38cb27SSumit Gupta 9909a38cb27SSumit Gupta error: 9919a38cb27SSumit Gupta return ret; 9929a38cb27SSumit Gupta } 9939a38cb27SSumit Gupta 994e852af72SSumit Gupta static int tegra234_mc_icc_aggregate(struct icc_node *node, u32 tag, u32 avg_bw, 995e852af72SSumit Gupta u32 peak_bw, u32 *agg_avg, u32 *agg_peak) 996e852af72SSumit Gupta { 997e852af72SSumit Gupta struct icc_provider *p = node->provider; 998e852af72SSumit Gupta struct tegra_mc *mc = icc_provider_to_tegra_mc(p); 999e852af72SSumit Gupta 1000e852af72SSumit Gupta if (!mc->bwmgr_mrq_supported) 1001faafd6caSSumit Gupta return 0; 1002e852af72SSumit Gupta 1003e852af72SSumit Gupta if (node->id == TEGRA_ICC_MC_CPU_CLUSTER0 || 1004e852af72SSumit Gupta node->id == TEGRA_ICC_MC_CPU_CLUSTER1 || 1005e852af72SSumit Gupta node->id == TEGRA_ICC_MC_CPU_CLUSTER2) { 1006e852af72SSumit Gupta if (mc) 1007e852af72SSumit Gupta peak_bw = peak_bw * mc->num_channels; 1008e852af72SSumit Gupta } 1009e852af72SSumit Gupta 1010e852af72SSumit Gupta *agg_avg += avg_bw; 1011e852af72SSumit Gupta *agg_peak = max(*agg_peak, peak_bw); 1012e852af72SSumit Gupta 1013e852af72SSumit Gupta return 0; 1014e852af72SSumit Gupta } 1015e852af72SSumit Gupta 10169a38cb27SSumit Gupta static int tegra234_mc_icc_get_init_bw(struct icc_node *node, u32 *avg, u32 *peak) 10179a38cb27SSumit Gupta { 10189a38cb27SSumit Gupta *avg = 0; 10199a38cb27SSumit Gupta *peak = 0; 10209a38cb27SSumit Gupta 10219a38cb27SSumit Gupta return 0; 10229a38cb27SSumit Gupta } 10239a38cb27SSumit Gupta 10249a38cb27SSumit Gupta static const struct tegra_mc_icc_ops tegra234_mc_icc_ops = { 1025d1478aeaSThierry Reding .xlate = tegra_mc_icc_xlate, 1026e852af72SSumit Gupta .aggregate = tegra234_mc_icc_aggregate, 10279a38cb27SSumit Gupta .get_bw = tegra234_mc_icc_get_init_bw, 10289a38cb27SSumit Gupta .set = tegra234_mc_icc_set, 10299a38cb27SSumit Gupta }; 10309a38cb27SSumit Gupta 103172c81bb6SThierry Reding const struct tegra_mc_soc tegra234_mc_soc = { 103272c81bb6SThierry Reding .num_clients = ARRAY_SIZE(tegra234_mc_clients), 103372c81bb6SThierry Reding .clients = tegra234_mc_clients, 103472c81bb6SThierry Reding .num_address_bits = 40, 1035a7cffa11SAshish Mhetre .num_channels = 16, 103654a85e09SAshish Mhetre .client_id_mask = 0x1ff, 103754a85e09SAshish Mhetre .intmask = MC_INT_DECERR_ROUTE_SANITY | 103854a85e09SAshish Mhetre MC_INT_DECERR_GENERALIZED_CARVEOUT | MC_INT_DECERR_MTS | 103954a85e09SAshish Mhetre MC_INT_SECERR_SEC | MC_INT_DECERR_VPR | 104054a85e09SAshish Mhetre MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM, 104154a85e09SAshish Mhetre .has_addr_hi_reg = true, 104272c81bb6SThierry Reding .ops = &tegra186_mc_ops, 10439a38cb27SSumit Gupta .icc_ops = &tegra234_mc_icc_ops, 104454a85e09SAshish Mhetre .ch_intmask = 0x0000ff00, 104554a85e09SAshish Mhetre .global_intstatus_channel_shift = 8, 10467946920dSMikko Perttunen /* 10477946920dSMikko Perttunen * Additionally, there are lite carveouts but those are not currently 10487946920dSMikko Perttunen * supported. 10497946920dSMikko Perttunen */ 10507946920dSMikko Perttunen .num_carveouts = 32, 105172c81bb6SThierry Reding }; 1052