162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2014 NVIDIA CORPORATION. All rights reserved. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include <linux/of.h> 762306a36Sopenharmony_ci#include <linux/device.h> 862306a36Sopenharmony_ci#include <linux/slab.h> 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <dt-bindings/memory/tegra124-mc.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include "mc.h" 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cistatic const struct tegra_mc_client tegra124_mc_clients[] = { 1562306a36Sopenharmony_ci { 1662306a36Sopenharmony_ci .id = 0x00, 1762306a36Sopenharmony_ci .name = "ptcr", 1862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_PTC, 1962306a36Sopenharmony_ci .regs = { 2062306a36Sopenharmony_ci .la = { 2162306a36Sopenharmony_ci .reg = 0x34c, 2262306a36Sopenharmony_ci .shift = 0, 2362306a36Sopenharmony_ci .mask = 0xff, 2462306a36Sopenharmony_ci .def = 0x0, 2562306a36Sopenharmony_ci }, 2662306a36Sopenharmony_ci }, 2762306a36Sopenharmony_ci }, { 2862306a36Sopenharmony_ci .id = 0x01, 2962306a36Sopenharmony_ci .name = "display0a", 3062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DC, 3162306a36Sopenharmony_ci .regs = { 3262306a36Sopenharmony_ci .smmu = { 3362306a36Sopenharmony_ci .reg = 0x228, 3462306a36Sopenharmony_ci .bit = 1, 3562306a36Sopenharmony_ci }, 3662306a36Sopenharmony_ci .la = { 3762306a36Sopenharmony_ci .reg = 0x2e8, 3862306a36Sopenharmony_ci .shift = 0, 3962306a36Sopenharmony_ci .mask = 0xff, 4062306a36Sopenharmony_ci .def = 0xc2, 4162306a36Sopenharmony_ci }, 4262306a36Sopenharmony_ci }, 4362306a36Sopenharmony_ci }, { 4462306a36Sopenharmony_ci .id = 0x02, 4562306a36Sopenharmony_ci .name = "display0ab", 4662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DCB, 4762306a36Sopenharmony_ci .regs = { 4862306a36Sopenharmony_ci .smmu = { 4962306a36Sopenharmony_ci .reg = 0x228, 5062306a36Sopenharmony_ci .bit = 2, 5162306a36Sopenharmony_ci }, 5262306a36Sopenharmony_ci .la = { 5362306a36Sopenharmony_ci .reg = 0x2f4, 5462306a36Sopenharmony_ci .shift = 0, 5562306a36Sopenharmony_ci .mask = 0xff, 5662306a36Sopenharmony_ci .def = 0xc6, 5762306a36Sopenharmony_ci }, 5862306a36Sopenharmony_ci }, 5962306a36Sopenharmony_ci }, { 6062306a36Sopenharmony_ci .id = 0x03, 6162306a36Sopenharmony_ci .name = "display0b", 6262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DC, 6362306a36Sopenharmony_ci .regs = { 6462306a36Sopenharmony_ci .smmu = { 6562306a36Sopenharmony_ci .reg = 0x228, 6662306a36Sopenharmony_ci .bit = 3, 6762306a36Sopenharmony_ci }, 6862306a36Sopenharmony_ci .la = { 6962306a36Sopenharmony_ci .reg = 0x2e8, 7062306a36Sopenharmony_ci .shift = 16, 7162306a36Sopenharmony_ci .mask = 0xff, 7262306a36Sopenharmony_ci .def = 0x50, 7362306a36Sopenharmony_ci }, 7462306a36Sopenharmony_ci }, 7562306a36Sopenharmony_ci }, { 7662306a36Sopenharmony_ci .id = 0x04, 7762306a36Sopenharmony_ci .name = "display0bb", 7862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DCB, 7962306a36Sopenharmony_ci .regs = { 8062306a36Sopenharmony_ci .smmu = { 8162306a36Sopenharmony_ci .reg = 0x228, 8262306a36Sopenharmony_ci .bit = 4, 8362306a36Sopenharmony_ci }, 8462306a36Sopenharmony_ci .la = { 8562306a36Sopenharmony_ci .reg = 0x2f4, 8662306a36Sopenharmony_ci .shift = 16, 8762306a36Sopenharmony_ci .mask = 0xff, 8862306a36Sopenharmony_ci .def = 0x50, 8962306a36Sopenharmony_ci }, 9062306a36Sopenharmony_ci }, 9162306a36Sopenharmony_ci }, { 9262306a36Sopenharmony_ci .id = 0x05, 9362306a36Sopenharmony_ci .name = "display0c", 9462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DC, 9562306a36Sopenharmony_ci .regs = { 9662306a36Sopenharmony_ci .smmu = { 9762306a36Sopenharmony_ci .reg = 0x228, 9862306a36Sopenharmony_ci .bit = 5, 9962306a36Sopenharmony_ci }, 10062306a36Sopenharmony_ci .la = { 10162306a36Sopenharmony_ci .reg = 0x2ec, 10262306a36Sopenharmony_ci .shift = 0, 10362306a36Sopenharmony_ci .mask = 0xff, 10462306a36Sopenharmony_ci .def = 0x50, 10562306a36Sopenharmony_ci }, 10662306a36Sopenharmony_ci }, 10762306a36Sopenharmony_ci }, { 10862306a36Sopenharmony_ci .id = 0x06, 10962306a36Sopenharmony_ci .name = "display0cb", 11062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DCB, 11162306a36Sopenharmony_ci .regs = { 11262306a36Sopenharmony_ci .smmu = { 11362306a36Sopenharmony_ci .reg = 0x228, 11462306a36Sopenharmony_ci .bit = 6, 11562306a36Sopenharmony_ci }, 11662306a36Sopenharmony_ci .la = { 11762306a36Sopenharmony_ci .reg = 0x2f8, 11862306a36Sopenharmony_ci .shift = 0, 11962306a36Sopenharmony_ci .mask = 0xff, 12062306a36Sopenharmony_ci .def = 0x50, 12162306a36Sopenharmony_ci }, 12262306a36Sopenharmony_ci }, 12362306a36Sopenharmony_ci }, { 12462306a36Sopenharmony_ci .id = 0x0e, 12562306a36Sopenharmony_ci .name = "afir", 12662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_AFI, 12762306a36Sopenharmony_ci .regs = { 12862306a36Sopenharmony_ci .smmu = { 12962306a36Sopenharmony_ci .reg = 0x228, 13062306a36Sopenharmony_ci .bit = 14, 13162306a36Sopenharmony_ci }, 13262306a36Sopenharmony_ci .la = { 13362306a36Sopenharmony_ci .reg = 0x2e0, 13462306a36Sopenharmony_ci .shift = 0, 13562306a36Sopenharmony_ci .mask = 0xff, 13662306a36Sopenharmony_ci .def = 0x13, 13762306a36Sopenharmony_ci }, 13862306a36Sopenharmony_ci }, 13962306a36Sopenharmony_ci }, { 14062306a36Sopenharmony_ci .id = 0x0f, 14162306a36Sopenharmony_ci .name = "avpcarm7r", 14262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_AVPC, 14362306a36Sopenharmony_ci .regs = { 14462306a36Sopenharmony_ci .smmu = { 14562306a36Sopenharmony_ci .reg = 0x228, 14662306a36Sopenharmony_ci .bit = 15, 14762306a36Sopenharmony_ci }, 14862306a36Sopenharmony_ci .la = { 14962306a36Sopenharmony_ci .reg = 0x2e4, 15062306a36Sopenharmony_ci .shift = 0, 15162306a36Sopenharmony_ci .mask = 0xff, 15262306a36Sopenharmony_ci .def = 0x04, 15362306a36Sopenharmony_ci }, 15462306a36Sopenharmony_ci }, 15562306a36Sopenharmony_ci }, { 15662306a36Sopenharmony_ci .id = 0x10, 15762306a36Sopenharmony_ci .name = "displayhc", 15862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DC, 15962306a36Sopenharmony_ci .regs = { 16062306a36Sopenharmony_ci .smmu = { 16162306a36Sopenharmony_ci .reg = 0x228, 16262306a36Sopenharmony_ci .bit = 16, 16362306a36Sopenharmony_ci }, 16462306a36Sopenharmony_ci .la = { 16562306a36Sopenharmony_ci .reg = 0x2f0, 16662306a36Sopenharmony_ci .shift = 0, 16762306a36Sopenharmony_ci .mask = 0xff, 16862306a36Sopenharmony_ci .def = 0x50, 16962306a36Sopenharmony_ci }, 17062306a36Sopenharmony_ci }, 17162306a36Sopenharmony_ci }, { 17262306a36Sopenharmony_ci .id = 0x11, 17362306a36Sopenharmony_ci .name = "displayhcb", 17462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DCB, 17562306a36Sopenharmony_ci .regs = { 17662306a36Sopenharmony_ci .smmu = { 17762306a36Sopenharmony_ci .reg = 0x228, 17862306a36Sopenharmony_ci .bit = 17, 17962306a36Sopenharmony_ci }, 18062306a36Sopenharmony_ci .la = { 18162306a36Sopenharmony_ci .reg = 0x2fc, 18262306a36Sopenharmony_ci .shift = 0, 18362306a36Sopenharmony_ci .mask = 0xff, 18462306a36Sopenharmony_ci .def = 0x50, 18562306a36Sopenharmony_ci }, 18662306a36Sopenharmony_ci }, 18762306a36Sopenharmony_ci }, { 18862306a36Sopenharmony_ci .id = 0x15, 18962306a36Sopenharmony_ci .name = "hdar", 19062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_HDA, 19162306a36Sopenharmony_ci .regs = { 19262306a36Sopenharmony_ci .smmu = { 19362306a36Sopenharmony_ci .reg = 0x228, 19462306a36Sopenharmony_ci .bit = 21, 19562306a36Sopenharmony_ci }, 19662306a36Sopenharmony_ci .la = { 19762306a36Sopenharmony_ci .reg = 0x318, 19862306a36Sopenharmony_ci .shift = 0, 19962306a36Sopenharmony_ci .mask = 0xff, 20062306a36Sopenharmony_ci .def = 0x24, 20162306a36Sopenharmony_ci }, 20262306a36Sopenharmony_ci }, 20362306a36Sopenharmony_ci }, { 20462306a36Sopenharmony_ci .id = 0x16, 20562306a36Sopenharmony_ci .name = "host1xdmar", 20662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_HC, 20762306a36Sopenharmony_ci .regs = { 20862306a36Sopenharmony_ci .smmu = { 20962306a36Sopenharmony_ci .reg = 0x228, 21062306a36Sopenharmony_ci .bit = 22, 21162306a36Sopenharmony_ci }, 21262306a36Sopenharmony_ci .la = { 21362306a36Sopenharmony_ci .reg = 0x310, 21462306a36Sopenharmony_ci .shift = 0, 21562306a36Sopenharmony_ci .mask = 0xff, 21662306a36Sopenharmony_ci .def = 0x1e, 21762306a36Sopenharmony_ci }, 21862306a36Sopenharmony_ci }, 21962306a36Sopenharmony_ci }, { 22062306a36Sopenharmony_ci .id = 0x17, 22162306a36Sopenharmony_ci .name = "host1xr", 22262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_HC, 22362306a36Sopenharmony_ci .regs = { 22462306a36Sopenharmony_ci .smmu = { 22562306a36Sopenharmony_ci .reg = 0x228, 22662306a36Sopenharmony_ci .bit = 23, 22762306a36Sopenharmony_ci }, 22862306a36Sopenharmony_ci .la = { 22962306a36Sopenharmony_ci .reg = 0x310, 23062306a36Sopenharmony_ci .shift = 16, 23162306a36Sopenharmony_ci .mask = 0xff, 23262306a36Sopenharmony_ci .def = 0x50, 23362306a36Sopenharmony_ci }, 23462306a36Sopenharmony_ci }, 23562306a36Sopenharmony_ci }, { 23662306a36Sopenharmony_ci .id = 0x1c, 23762306a36Sopenharmony_ci .name = "msencsrd", 23862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_MSENC, 23962306a36Sopenharmony_ci .regs = { 24062306a36Sopenharmony_ci .smmu = { 24162306a36Sopenharmony_ci .reg = 0x228, 24262306a36Sopenharmony_ci .bit = 28, 24362306a36Sopenharmony_ci }, 24462306a36Sopenharmony_ci .la = { 24562306a36Sopenharmony_ci .reg = 0x328, 24662306a36Sopenharmony_ci .shift = 0, 24762306a36Sopenharmony_ci .mask = 0xff, 24862306a36Sopenharmony_ci .def = 0x23, 24962306a36Sopenharmony_ci }, 25062306a36Sopenharmony_ci }, 25162306a36Sopenharmony_ci }, { 25262306a36Sopenharmony_ci .id = 0x1d, 25362306a36Sopenharmony_ci .name = "ppcsahbdmar", 25462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_PPCS, 25562306a36Sopenharmony_ci .regs = { 25662306a36Sopenharmony_ci .smmu = { 25762306a36Sopenharmony_ci .reg = 0x228, 25862306a36Sopenharmony_ci .bit = 29, 25962306a36Sopenharmony_ci }, 26062306a36Sopenharmony_ci .la = { 26162306a36Sopenharmony_ci .reg = 0x344, 26262306a36Sopenharmony_ci .shift = 0, 26362306a36Sopenharmony_ci .mask = 0xff, 26462306a36Sopenharmony_ci .def = 0x49, 26562306a36Sopenharmony_ci }, 26662306a36Sopenharmony_ci }, 26762306a36Sopenharmony_ci }, { 26862306a36Sopenharmony_ci .id = 0x1e, 26962306a36Sopenharmony_ci .name = "ppcsahbslvr", 27062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_PPCS, 27162306a36Sopenharmony_ci .regs = { 27262306a36Sopenharmony_ci .smmu = { 27362306a36Sopenharmony_ci .reg = 0x228, 27462306a36Sopenharmony_ci .bit = 30, 27562306a36Sopenharmony_ci }, 27662306a36Sopenharmony_ci .la = { 27762306a36Sopenharmony_ci .reg = 0x344, 27862306a36Sopenharmony_ci .shift = 16, 27962306a36Sopenharmony_ci .mask = 0xff, 28062306a36Sopenharmony_ci .def = 0x1a, 28162306a36Sopenharmony_ci }, 28262306a36Sopenharmony_ci }, 28362306a36Sopenharmony_ci }, { 28462306a36Sopenharmony_ci .id = 0x1f, 28562306a36Sopenharmony_ci .name = "satar", 28662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SATA, 28762306a36Sopenharmony_ci .regs = { 28862306a36Sopenharmony_ci .smmu = { 28962306a36Sopenharmony_ci .reg = 0x228, 29062306a36Sopenharmony_ci .bit = 31, 29162306a36Sopenharmony_ci }, 29262306a36Sopenharmony_ci .la = { 29362306a36Sopenharmony_ci .reg = 0x350, 29462306a36Sopenharmony_ci .shift = 0, 29562306a36Sopenharmony_ci .mask = 0xff, 29662306a36Sopenharmony_ci .def = 0x65, 29762306a36Sopenharmony_ci }, 29862306a36Sopenharmony_ci }, 29962306a36Sopenharmony_ci }, { 30062306a36Sopenharmony_ci .id = 0x22, 30162306a36Sopenharmony_ci .name = "vdebsevr", 30262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VDE, 30362306a36Sopenharmony_ci .regs = { 30462306a36Sopenharmony_ci .smmu = { 30562306a36Sopenharmony_ci .reg = 0x22c, 30662306a36Sopenharmony_ci .bit = 2, 30762306a36Sopenharmony_ci }, 30862306a36Sopenharmony_ci .la = { 30962306a36Sopenharmony_ci .reg = 0x354, 31062306a36Sopenharmony_ci .shift = 0, 31162306a36Sopenharmony_ci .mask = 0xff, 31262306a36Sopenharmony_ci .def = 0x4f, 31362306a36Sopenharmony_ci }, 31462306a36Sopenharmony_ci }, 31562306a36Sopenharmony_ci }, { 31662306a36Sopenharmony_ci .id = 0x23, 31762306a36Sopenharmony_ci .name = "vdember", 31862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VDE, 31962306a36Sopenharmony_ci .regs = { 32062306a36Sopenharmony_ci .smmu = { 32162306a36Sopenharmony_ci .reg = 0x22c, 32262306a36Sopenharmony_ci .bit = 3, 32362306a36Sopenharmony_ci }, 32462306a36Sopenharmony_ci .la = { 32562306a36Sopenharmony_ci .reg = 0x354, 32662306a36Sopenharmony_ci .shift = 16, 32762306a36Sopenharmony_ci .mask = 0xff, 32862306a36Sopenharmony_ci .def = 0x3d, 32962306a36Sopenharmony_ci }, 33062306a36Sopenharmony_ci }, 33162306a36Sopenharmony_ci }, { 33262306a36Sopenharmony_ci .id = 0x24, 33362306a36Sopenharmony_ci .name = "vdemcer", 33462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VDE, 33562306a36Sopenharmony_ci .regs = { 33662306a36Sopenharmony_ci .smmu = { 33762306a36Sopenharmony_ci .reg = 0x22c, 33862306a36Sopenharmony_ci .bit = 4, 33962306a36Sopenharmony_ci }, 34062306a36Sopenharmony_ci .la = { 34162306a36Sopenharmony_ci .reg = 0x358, 34262306a36Sopenharmony_ci .shift = 0, 34362306a36Sopenharmony_ci .mask = 0xff, 34462306a36Sopenharmony_ci .def = 0x66, 34562306a36Sopenharmony_ci }, 34662306a36Sopenharmony_ci }, 34762306a36Sopenharmony_ci }, { 34862306a36Sopenharmony_ci .id = 0x25, 34962306a36Sopenharmony_ci .name = "vdetper", 35062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VDE, 35162306a36Sopenharmony_ci .regs = { 35262306a36Sopenharmony_ci .smmu = { 35362306a36Sopenharmony_ci .reg = 0x22c, 35462306a36Sopenharmony_ci .bit = 5, 35562306a36Sopenharmony_ci }, 35662306a36Sopenharmony_ci .la = { 35762306a36Sopenharmony_ci .reg = 0x358, 35862306a36Sopenharmony_ci .shift = 16, 35962306a36Sopenharmony_ci .mask = 0xff, 36062306a36Sopenharmony_ci .def = 0xa5, 36162306a36Sopenharmony_ci }, 36262306a36Sopenharmony_ci }, 36362306a36Sopenharmony_ci }, { 36462306a36Sopenharmony_ci .id = 0x26, 36562306a36Sopenharmony_ci .name = "mpcorelpr", 36662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_MPCORELP, 36762306a36Sopenharmony_ci .regs = { 36862306a36Sopenharmony_ci .la = { 36962306a36Sopenharmony_ci .reg = 0x324, 37062306a36Sopenharmony_ci .shift = 0, 37162306a36Sopenharmony_ci .mask = 0xff, 37262306a36Sopenharmony_ci .def = 0x04, 37362306a36Sopenharmony_ci }, 37462306a36Sopenharmony_ci }, 37562306a36Sopenharmony_ci }, { 37662306a36Sopenharmony_ci .id = 0x27, 37762306a36Sopenharmony_ci .name = "mpcorer", 37862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_MPCORE, 37962306a36Sopenharmony_ci .regs = { 38062306a36Sopenharmony_ci .la = { 38162306a36Sopenharmony_ci .reg = 0x320, 38262306a36Sopenharmony_ci .shift = 0, 38362306a36Sopenharmony_ci .mask = 0xff, 38462306a36Sopenharmony_ci .def = 0x04, 38562306a36Sopenharmony_ci }, 38662306a36Sopenharmony_ci }, 38762306a36Sopenharmony_ci }, { 38862306a36Sopenharmony_ci .id = 0x2b, 38962306a36Sopenharmony_ci .name = "msencswr", 39062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_MSENC, 39162306a36Sopenharmony_ci .regs = { 39262306a36Sopenharmony_ci .smmu = { 39362306a36Sopenharmony_ci .reg = 0x22c, 39462306a36Sopenharmony_ci .bit = 11, 39562306a36Sopenharmony_ci }, 39662306a36Sopenharmony_ci .la = { 39762306a36Sopenharmony_ci .reg = 0x328, 39862306a36Sopenharmony_ci .shift = 16, 39962306a36Sopenharmony_ci .mask = 0xff, 40062306a36Sopenharmony_ci .def = 0x80, 40162306a36Sopenharmony_ci }, 40262306a36Sopenharmony_ci }, 40362306a36Sopenharmony_ci }, { 40462306a36Sopenharmony_ci .id = 0x31, 40562306a36Sopenharmony_ci .name = "afiw", 40662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_AFI, 40762306a36Sopenharmony_ci .regs = { 40862306a36Sopenharmony_ci .smmu = { 40962306a36Sopenharmony_ci .reg = 0x22c, 41062306a36Sopenharmony_ci .bit = 17, 41162306a36Sopenharmony_ci }, 41262306a36Sopenharmony_ci .la = { 41362306a36Sopenharmony_ci .reg = 0x2e0, 41462306a36Sopenharmony_ci .shift = 16, 41562306a36Sopenharmony_ci .mask = 0xff, 41662306a36Sopenharmony_ci .def = 0x80, 41762306a36Sopenharmony_ci }, 41862306a36Sopenharmony_ci }, 41962306a36Sopenharmony_ci }, { 42062306a36Sopenharmony_ci .id = 0x32, 42162306a36Sopenharmony_ci .name = "avpcarm7w", 42262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_AVPC, 42362306a36Sopenharmony_ci .regs = { 42462306a36Sopenharmony_ci .smmu = { 42562306a36Sopenharmony_ci .reg = 0x22c, 42662306a36Sopenharmony_ci .bit = 18, 42762306a36Sopenharmony_ci }, 42862306a36Sopenharmony_ci .la = { 42962306a36Sopenharmony_ci .reg = 0x2e4, 43062306a36Sopenharmony_ci .shift = 16, 43162306a36Sopenharmony_ci .mask = 0xff, 43262306a36Sopenharmony_ci .def = 0x80, 43362306a36Sopenharmony_ci }, 43462306a36Sopenharmony_ci }, 43562306a36Sopenharmony_ci }, { 43662306a36Sopenharmony_ci .id = 0x35, 43762306a36Sopenharmony_ci .name = "hdaw", 43862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_HDA, 43962306a36Sopenharmony_ci .regs = { 44062306a36Sopenharmony_ci .smmu = { 44162306a36Sopenharmony_ci .reg = 0x22c, 44262306a36Sopenharmony_ci .bit = 21, 44362306a36Sopenharmony_ci }, 44462306a36Sopenharmony_ci .la = { 44562306a36Sopenharmony_ci .reg = 0x318, 44662306a36Sopenharmony_ci .shift = 16, 44762306a36Sopenharmony_ci .mask = 0xff, 44862306a36Sopenharmony_ci .def = 0x80, 44962306a36Sopenharmony_ci }, 45062306a36Sopenharmony_ci }, 45162306a36Sopenharmony_ci }, { 45262306a36Sopenharmony_ci .id = 0x36, 45362306a36Sopenharmony_ci .name = "host1xw", 45462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_HC, 45562306a36Sopenharmony_ci .regs = { 45662306a36Sopenharmony_ci .smmu = { 45762306a36Sopenharmony_ci .reg = 0x22c, 45862306a36Sopenharmony_ci .bit = 22, 45962306a36Sopenharmony_ci }, 46062306a36Sopenharmony_ci .la = { 46162306a36Sopenharmony_ci .reg = 0x314, 46262306a36Sopenharmony_ci .shift = 0, 46362306a36Sopenharmony_ci .mask = 0xff, 46462306a36Sopenharmony_ci .def = 0x80, 46562306a36Sopenharmony_ci }, 46662306a36Sopenharmony_ci }, 46762306a36Sopenharmony_ci }, { 46862306a36Sopenharmony_ci .id = 0x38, 46962306a36Sopenharmony_ci .name = "mpcorelpw", 47062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_MPCORELP, 47162306a36Sopenharmony_ci .regs = { 47262306a36Sopenharmony_ci .la = { 47362306a36Sopenharmony_ci .reg = 0x324, 47462306a36Sopenharmony_ci .shift = 16, 47562306a36Sopenharmony_ci .mask = 0xff, 47662306a36Sopenharmony_ci .def = 0x80, 47762306a36Sopenharmony_ci }, 47862306a36Sopenharmony_ci }, 47962306a36Sopenharmony_ci }, { 48062306a36Sopenharmony_ci .id = 0x39, 48162306a36Sopenharmony_ci .name = "mpcorew", 48262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_MPCORE, 48362306a36Sopenharmony_ci .regs = { 48462306a36Sopenharmony_ci .la = { 48562306a36Sopenharmony_ci .reg = 0x320, 48662306a36Sopenharmony_ci .shift = 16, 48762306a36Sopenharmony_ci .mask = 0xff, 48862306a36Sopenharmony_ci .def = 0x80, 48962306a36Sopenharmony_ci }, 49062306a36Sopenharmony_ci }, 49162306a36Sopenharmony_ci }, { 49262306a36Sopenharmony_ci .id = 0x3b, 49362306a36Sopenharmony_ci .name = "ppcsahbdmaw", 49462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_PPCS, 49562306a36Sopenharmony_ci .regs = { 49662306a36Sopenharmony_ci .smmu = { 49762306a36Sopenharmony_ci .reg = 0x22c, 49862306a36Sopenharmony_ci .bit = 27, 49962306a36Sopenharmony_ci }, 50062306a36Sopenharmony_ci .la = { 50162306a36Sopenharmony_ci .reg = 0x348, 50262306a36Sopenharmony_ci .shift = 0, 50362306a36Sopenharmony_ci .mask = 0xff, 50462306a36Sopenharmony_ci .def = 0x80, 50562306a36Sopenharmony_ci }, 50662306a36Sopenharmony_ci }, 50762306a36Sopenharmony_ci }, { 50862306a36Sopenharmony_ci .id = 0x3c, 50962306a36Sopenharmony_ci .name = "ppcsahbslvw", 51062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_PPCS, 51162306a36Sopenharmony_ci .regs = { 51262306a36Sopenharmony_ci .smmu = { 51362306a36Sopenharmony_ci .reg = 0x22c, 51462306a36Sopenharmony_ci .bit = 28, 51562306a36Sopenharmony_ci }, 51662306a36Sopenharmony_ci .la = { 51762306a36Sopenharmony_ci .reg = 0x348, 51862306a36Sopenharmony_ci .shift = 16, 51962306a36Sopenharmony_ci .mask = 0xff, 52062306a36Sopenharmony_ci .def = 0x80, 52162306a36Sopenharmony_ci }, 52262306a36Sopenharmony_ci }, 52362306a36Sopenharmony_ci }, { 52462306a36Sopenharmony_ci .id = 0x3d, 52562306a36Sopenharmony_ci .name = "sataw", 52662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SATA, 52762306a36Sopenharmony_ci .regs = { 52862306a36Sopenharmony_ci .smmu = { 52962306a36Sopenharmony_ci .reg = 0x22c, 53062306a36Sopenharmony_ci .bit = 29, 53162306a36Sopenharmony_ci }, 53262306a36Sopenharmony_ci .la = { 53362306a36Sopenharmony_ci .reg = 0x350, 53462306a36Sopenharmony_ci .shift = 16, 53562306a36Sopenharmony_ci .mask = 0xff, 53662306a36Sopenharmony_ci .def = 0x65, 53762306a36Sopenharmony_ci }, 53862306a36Sopenharmony_ci }, 53962306a36Sopenharmony_ci }, { 54062306a36Sopenharmony_ci .id = 0x3e, 54162306a36Sopenharmony_ci .name = "vdebsevw", 54262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VDE, 54362306a36Sopenharmony_ci .regs = { 54462306a36Sopenharmony_ci .smmu = { 54562306a36Sopenharmony_ci .reg = 0x22c, 54662306a36Sopenharmony_ci .bit = 30, 54762306a36Sopenharmony_ci }, 54862306a36Sopenharmony_ci .la = { 54962306a36Sopenharmony_ci .reg = 0x35c, 55062306a36Sopenharmony_ci .shift = 0, 55162306a36Sopenharmony_ci .mask = 0xff, 55262306a36Sopenharmony_ci .def = 0x80, 55362306a36Sopenharmony_ci }, 55462306a36Sopenharmony_ci }, 55562306a36Sopenharmony_ci }, { 55662306a36Sopenharmony_ci .id = 0x3f, 55762306a36Sopenharmony_ci .name = "vdedbgw", 55862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VDE, 55962306a36Sopenharmony_ci .regs = { 56062306a36Sopenharmony_ci .smmu = { 56162306a36Sopenharmony_ci .reg = 0x22c, 56262306a36Sopenharmony_ci .bit = 31, 56362306a36Sopenharmony_ci }, 56462306a36Sopenharmony_ci .la = { 56562306a36Sopenharmony_ci .reg = 0x35c, 56662306a36Sopenharmony_ci .shift = 16, 56762306a36Sopenharmony_ci .mask = 0xff, 56862306a36Sopenharmony_ci .def = 0x80, 56962306a36Sopenharmony_ci }, 57062306a36Sopenharmony_ci }, 57162306a36Sopenharmony_ci }, { 57262306a36Sopenharmony_ci .id = 0x40, 57362306a36Sopenharmony_ci .name = "vdembew", 57462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VDE, 57562306a36Sopenharmony_ci .regs = { 57662306a36Sopenharmony_ci .smmu = { 57762306a36Sopenharmony_ci .reg = 0x230, 57862306a36Sopenharmony_ci .bit = 0, 57962306a36Sopenharmony_ci }, 58062306a36Sopenharmony_ci .la = { 58162306a36Sopenharmony_ci .reg = 0x360, 58262306a36Sopenharmony_ci .shift = 0, 58362306a36Sopenharmony_ci .mask = 0xff, 58462306a36Sopenharmony_ci .def = 0x80, 58562306a36Sopenharmony_ci }, 58662306a36Sopenharmony_ci }, 58762306a36Sopenharmony_ci }, { 58862306a36Sopenharmony_ci .id = 0x41, 58962306a36Sopenharmony_ci .name = "vdetpmw", 59062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VDE, 59162306a36Sopenharmony_ci .regs = { 59262306a36Sopenharmony_ci .smmu = { 59362306a36Sopenharmony_ci .reg = 0x230, 59462306a36Sopenharmony_ci .bit = 1, 59562306a36Sopenharmony_ci }, 59662306a36Sopenharmony_ci .la = { 59762306a36Sopenharmony_ci .reg = 0x360, 59862306a36Sopenharmony_ci .shift = 16, 59962306a36Sopenharmony_ci .mask = 0xff, 60062306a36Sopenharmony_ci .def = 0x80, 60162306a36Sopenharmony_ci }, 60262306a36Sopenharmony_ci }, 60362306a36Sopenharmony_ci }, { 60462306a36Sopenharmony_ci .id = 0x44, 60562306a36Sopenharmony_ci .name = "ispra", 60662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_ISP2, 60762306a36Sopenharmony_ci .regs = { 60862306a36Sopenharmony_ci .smmu = { 60962306a36Sopenharmony_ci .reg = 0x230, 61062306a36Sopenharmony_ci .bit = 4, 61162306a36Sopenharmony_ci }, 61262306a36Sopenharmony_ci .la = { 61362306a36Sopenharmony_ci .reg = 0x370, 61462306a36Sopenharmony_ci .shift = 0, 61562306a36Sopenharmony_ci .mask = 0xff, 61662306a36Sopenharmony_ci .def = 0x18, 61762306a36Sopenharmony_ci }, 61862306a36Sopenharmony_ci }, 61962306a36Sopenharmony_ci }, { 62062306a36Sopenharmony_ci .id = 0x46, 62162306a36Sopenharmony_ci .name = "ispwa", 62262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_ISP2, 62362306a36Sopenharmony_ci .regs = { 62462306a36Sopenharmony_ci .smmu = { 62562306a36Sopenharmony_ci .reg = 0x230, 62662306a36Sopenharmony_ci .bit = 6, 62762306a36Sopenharmony_ci }, 62862306a36Sopenharmony_ci .la = { 62962306a36Sopenharmony_ci .reg = 0x374, 63062306a36Sopenharmony_ci .shift = 0, 63162306a36Sopenharmony_ci .mask = 0xff, 63262306a36Sopenharmony_ci .def = 0x80, 63362306a36Sopenharmony_ci }, 63462306a36Sopenharmony_ci }, 63562306a36Sopenharmony_ci }, { 63662306a36Sopenharmony_ci .id = 0x47, 63762306a36Sopenharmony_ci .name = "ispwb", 63862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_ISP2, 63962306a36Sopenharmony_ci .regs = { 64062306a36Sopenharmony_ci .smmu = { 64162306a36Sopenharmony_ci .reg = 0x230, 64262306a36Sopenharmony_ci .bit = 7, 64362306a36Sopenharmony_ci }, 64462306a36Sopenharmony_ci .la = { 64562306a36Sopenharmony_ci .reg = 0x374, 64662306a36Sopenharmony_ci .shift = 16, 64762306a36Sopenharmony_ci .mask = 0xff, 64862306a36Sopenharmony_ci .def = 0x80, 64962306a36Sopenharmony_ci }, 65062306a36Sopenharmony_ci }, 65162306a36Sopenharmony_ci }, { 65262306a36Sopenharmony_ci .id = 0x4a, 65362306a36Sopenharmony_ci .name = "xusb_hostr", 65462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_XUSB_HOST, 65562306a36Sopenharmony_ci .regs = { 65662306a36Sopenharmony_ci .smmu = { 65762306a36Sopenharmony_ci .reg = 0x230, 65862306a36Sopenharmony_ci .bit = 10, 65962306a36Sopenharmony_ci }, 66062306a36Sopenharmony_ci .la = { 66162306a36Sopenharmony_ci .reg = 0x37c, 66262306a36Sopenharmony_ci .shift = 0, 66362306a36Sopenharmony_ci .mask = 0xff, 66462306a36Sopenharmony_ci .def = 0x39, 66562306a36Sopenharmony_ci }, 66662306a36Sopenharmony_ci }, 66762306a36Sopenharmony_ci }, { 66862306a36Sopenharmony_ci .id = 0x4b, 66962306a36Sopenharmony_ci .name = "xusb_hostw", 67062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_XUSB_HOST, 67162306a36Sopenharmony_ci .regs = { 67262306a36Sopenharmony_ci .smmu = { 67362306a36Sopenharmony_ci .reg = 0x230, 67462306a36Sopenharmony_ci .bit = 11, 67562306a36Sopenharmony_ci }, 67662306a36Sopenharmony_ci .la = { 67762306a36Sopenharmony_ci .reg = 0x37c, 67862306a36Sopenharmony_ci .shift = 16, 67962306a36Sopenharmony_ci .mask = 0xff, 68062306a36Sopenharmony_ci .def = 0x80, 68162306a36Sopenharmony_ci }, 68262306a36Sopenharmony_ci }, 68362306a36Sopenharmony_ci }, { 68462306a36Sopenharmony_ci .id = 0x4c, 68562306a36Sopenharmony_ci .name = "xusb_devr", 68662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_XUSB_DEV, 68762306a36Sopenharmony_ci .regs = { 68862306a36Sopenharmony_ci .smmu = { 68962306a36Sopenharmony_ci .reg = 0x230, 69062306a36Sopenharmony_ci .bit = 12, 69162306a36Sopenharmony_ci }, 69262306a36Sopenharmony_ci .la = { 69362306a36Sopenharmony_ci .reg = 0x380, 69462306a36Sopenharmony_ci .shift = 0, 69562306a36Sopenharmony_ci .mask = 0xff, 69662306a36Sopenharmony_ci .def = 0x39, 69762306a36Sopenharmony_ci }, 69862306a36Sopenharmony_ci }, 69962306a36Sopenharmony_ci }, { 70062306a36Sopenharmony_ci .id = 0x4d, 70162306a36Sopenharmony_ci .name = "xusb_devw", 70262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_XUSB_DEV, 70362306a36Sopenharmony_ci .regs = { 70462306a36Sopenharmony_ci .smmu = { 70562306a36Sopenharmony_ci .reg = 0x230, 70662306a36Sopenharmony_ci .bit = 13, 70762306a36Sopenharmony_ci }, 70862306a36Sopenharmony_ci .la = { 70962306a36Sopenharmony_ci .reg = 0x380, 71062306a36Sopenharmony_ci .shift = 16, 71162306a36Sopenharmony_ci .mask = 0xff, 71262306a36Sopenharmony_ci .def = 0x80, 71362306a36Sopenharmony_ci }, 71462306a36Sopenharmony_ci }, 71562306a36Sopenharmony_ci }, { 71662306a36Sopenharmony_ci .id = 0x4e, 71762306a36Sopenharmony_ci .name = "isprab", 71862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_ISP2B, 71962306a36Sopenharmony_ci .regs = { 72062306a36Sopenharmony_ci .smmu = { 72162306a36Sopenharmony_ci .reg = 0x230, 72262306a36Sopenharmony_ci .bit = 14, 72362306a36Sopenharmony_ci }, 72462306a36Sopenharmony_ci .la = { 72562306a36Sopenharmony_ci .reg = 0x384, 72662306a36Sopenharmony_ci .shift = 0, 72762306a36Sopenharmony_ci .mask = 0xff, 72862306a36Sopenharmony_ci .def = 0x18, 72962306a36Sopenharmony_ci }, 73062306a36Sopenharmony_ci }, 73162306a36Sopenharmony_ci }, { 73262306a36Sopenharmony_ci .id = 0x50, 73362306a36Sopenharmony_ci .name = "ispwab", 73462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_ISP2B, 73562306a36Sopenharmony_ci .regs = { 73662306a36Sopenharmony_ci .smmu = { 73762306a36Sopenharmony_ci .reg = 0x230, 73862306a36Sopenharmony_ci .bit = 16, 73962306a36Sopenharmony_ci }, 74062306a36Sopenharmony_ci .la = { 74162306a36Sopenharmony_ci .reg = 0x388, 74262306a36Sopenharmony_ci .shift = 0, 74362306a36Sopenharmony_ci .mask = 0xff, 74462306a36Sopenharmony_ci .def = 0x80, 74562306a36Sopenharmony_ci }, 74662306a36Sopenharmony_ci }, 74762306a36Sopenharmony_ci }, { 74862306a36Sopenharmony_ci .id = 0x51, 74962306a36Sopenharmony_ci .name = "ispwbb", 75062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_ISP2B, 75162306a36Sopenharmony_ci .regs = { 75262306a36Sopenharmony_ci .smmu = { 75362306a36Sopenharmony_ci .reg = 0x230, 75462306a36Sopenharmony_ci .bit = 17, 75562306a36Sopenharmony_ci }, 75662306a36Sopenharmony_ci .la = { 75762306a36Sopenharmony_ci .reg = 0x388, 75862306a36Sopenharmony_ci .shift = 16, 75962306a36Sopenharmony_ci .mask = 0xff, 76062306a36Sopenharmony_ci .def = 0x80, 76162306a36Sopenharmony_ci }, 76262306a36Sopenharmony_ci }, 76362306a36Sopenharmony_ci }, { 76462306a36Sopenharmony_ci .id = 0x54, 76562306a36Sopenharmony_ci .name = "tsecsrd", 76662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_TSEC, 76762306a36Sopenharmony_ci .regs = { 76862306a36Sopenharmony_ci .smmu = { 76962306a36Sopenharmony_ci .reg = 0x230, 77062306a36Sopenharmony_ci .bit = 20, 77162306a36Sopenharmony_ci }, 77262306a36Sopenharmony_ci .la = { 77362306a36Sopenharmony_ci .reg = 0x390, 77462306a36Sopenharmony_ci .shift = 0, 77562306a36Sopenharmony_ci .mask = 0xff, 77662306a36Sopenharmony_ci .def = 0x9b, 77762306a36Sopenharmony_ci }, 77862306a36Sopenharmony_ci }, 77962306a36Sopenharmony_ci }, { 78062306a36Sopenharmony_ci .id = 0x55, 78162306a36Sopenharmony_ci .name = "tsecswr", 78262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_TSEC, 78362306a36Sopenharmony_ci .regs = { 78462306a36Sopenharmony_ci .smmu = { 78562306a36Sopenharmony_ci .reg = 0x230, 78662306a36Sopenharmony_ci .bit = 21, 78762306a36Sopenharmony_ci }, 78862306a36Sopenharmony_ci .la = { 78962306a36Sopenharmony_ci .reg = 0x390, 79062306a36Sopenharmony_ci .shift = 16, 79162306a36Sopenharmony_ci .mask = 0xff, 79262306a36Sopenharmony_ci .def = 0x80, 79362306a36Sopenharmony_ci }, 79462306a36Sopenharmony_ci }, 79562306a36Sopenharmony_ci }, { 79662306a36Sopenharmony_ci .id = 0x56, 79762306a36Sopenharmony_ci .name = "a9avpscr", 79862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_A9AVP, 79962306a36Sopenharmony_ci .regs = { 80062306a36Sopenharmony_ci .smmu = { 80162306a36Sopenharmony_ci .reg = 0x230, 80262306a36Sopenharmony_ci .bit = 22, 80362306a36Sopenharmony_ci }, 80462306a36Sopenharmony_ci .la = { 80562306a36Sopenharmony_ci .reg = 0x3a4, 80662306a36Sopenharmony_ci .shift = 0, 80762306a36Sopenharmony_ci .mask = 0xff, 80862306a36Sopenharmony_ci .def = 0x04, 80962306a36Sopenharmony_ci }, 81062306a36Sopenharmony_ci }, 81162306a36Sopenharmony_ci }, { 81262306a36Sopenharmony_ci .id = 0x57, 81362306a36Sopenharmony_ci .name = "a9avpscw", 81462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_A9AVP, 81562306a36Sopenharmony_ci .regs = { 81662306a36Sopenharmony_ci .smmu = { 81762306a36Sopenharmony_ci .reg = 0x230, 81862306a36Sopenharmony_ci .bit = 23, 81962306a36Sopenharmony_ci }, 82062306a36Sopenharmony_ci .la = { 82162306a36Sopenharmony_ci .reg = 0x3a4, 82262306a36Sopenharmony_ci .shift = 16, 82362306a36Sopenharmony_ci .mask = 0xff, 82462306a36Sopenharmony_ci .def = 0x80, 82562306a36Sopenharmony_ci }, 82662306a36Sopenharmony_ci }, 82762306a36Sopenharmony_ci }, { 82862306a36Sopenharmony_ci .id = 0x58, 82962306a36Sopenharmony_ci .name = "gpusrd", 83062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_GPU, 83162306a36Sopenharmony_ci .regs = { 83262306a36Sopenharmony_ci .smmu = { 83362306a36Sopenharmony_ci /* read-only */ 83462306a36Sopenharmony_ci .reg = 0x230, 83562306a36Sopenharmony_ci .bit = 24, 83662306a36Sopenharmony_ci }, 83762306a36Sopenharmony_ci .la = { 83862306a36Sopenharmony_ci .reg = 0x3c8, 83962306a36Sopenharmony_ci .shift = 0, 84062306a36Sopenharmony_ci .mask = 0xff, 84162306a36Sopenharmony_ci .def = 0x1a, 84262306a36Sopenharmony_ci }, 84362306a36Sopenharmony_ci }, 84462306a36Sopenharmony_ci }, { 84562306a36Sopenharmony_ci .id = 0x59, 84662306a36Sopenharmony_ci .name = "gpuswr", 84762306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_GPU, 84862306a36Sopenharmony_ci .regs = { 84962306a36Sopenharmony_ci .smmu = { 85062306a36Sopenharmony_ci /* read-only */ 85162306a36Sopenharmony_ci .reg = 0x230, 85262306a36Sopenharmony_ci .bit = 25, 85362306a36Sopenharmony_ci }, 85462306a36Sopenharmony_ci .la = { 85562306a36Sopenharmony_ci .reg = 0x3c8, 85662306a36Sopenharmony_ci .shift = 16, 85762306a36Sopenharmony_ci .mask = 0xff, 85862306a36Sopenharmony_ci .def = 0x80, 85962306a36Sopenharmony_ci }, 86062306a36Sopenharmony_ci }, 86162306a36Sopenharmony_ci }, { 86262306a36Sopenharmony_ci .id = 0x5a, 86362306a36Sopenharmony_ci .name = "displayt", 86462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DC, 86562306a36Sopenharmony_ci .regs = { 86662306a36Sopenharmony_ci .smmu = { 86762306a36Sopenharmony_ci .reg = 0x230, 86862306a36Sopenharmony_ci .bit = 26, 86962306a36Sopenharmony_ci }, 87062306a36Sopenharmony_ci .la = { 87162306a36Sopenharmony_ci .reg = 0x2f0, 87262306a36Sopenharmony_ci .shift = 16, 87362306a36Sopenharmony_ci .mask = 0xff, 87462306a36Sopenharmony_ci .def = 0x50, 87562306a36Sopenharmony_ci }, 87662306a36Sopenharmony_ci }, 87762306a36Sopenharmony_ci }, { 87862306a36Sopenharmony_ci .id = 0x60, 87962306a36Sopenharmony_ci .name = "sdmmcra", 88062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SDMMC1A, 88162306a36Sopenharmony_ci .regs = { 88262306a36Sopenharmony_ci .smmu = { 88362306a36Sopenharmony_ci .reg = 0x234, 88462306a36Sopenharmony_ci .bit = 0, 88562306a36Sopenharmony_ci }, 88662306a36Sopenharmony_ci .la = { 88762306a36Sopenharmony_ci .reg = 0x3b8, 88862306a36Sopenharmony_ci .shift = 0, 88962306a36Sopenharmony_ci .mask = 0xff, 89062306a36Sopenharmony_ci .def = 0x49, 89162306a36Sopenharmony_ci }, 89262306a36Sopenharmony_ci }, 89362306a36Sopenharmony_ci }, { 89462306a36Sopenharmony_ci .id = 0x61, 89562306a36Sopenharmony_ci .name = "sdmmcraa", 89662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SDMMC2A, 89762306a36Sopenharmony_ci .regs = { 89862306a36Sopenharmony_ci .smmu = { 89962306a36Sopenharmony_ci .reg = 0x234, 90062306a36Sopenharmony_ci .bit = 1, 90162306a36Sopenharmony_ci }, 90262306a36Sopenharmony_ci .la = { 90362306a36Sopenharmony_ci .reg = 0x3bc, 90462306a36Sopenharmony_ci .shift = 0, 90562306a36Sopenharmony_ci .mask = 0xff, 90662306a36Sopenharmony_ci .def = 0x49, 90762306a36Sopenharmony_ci }, 90862306a36Sopenharmony_ci }, 90962306a36Sopenharmony_ci }, { 91062306a36Sopenharmony_ci .id = 0x62, 91162306a36Sopenharmony_ci .name = "sdmmcr", 91262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SDMMC3A, 91362306a36Sopenharmony_ci .regs = { 91462306a36Sopenharmony_ci .smmu = { 91562306a36Sopenharmony_ci .reg = 0x234, 91662306a36Sopenharmony_ci .bit = 2, 91762306a36Sopenharmony_ci }, 91862306a36Sopenharmony_ci .la = { 91962306a36Sopenharmony_ci .reg = 0x3c0, 92062306a36Sopenharmony_ci .shift = 0, 92162306a36Sopenharmony_ci .mask = 0xff, 92262306a36Sopenharmony_ci .def = 0x49, 92362306a36Sopenharmony_ci }, 92462306a36Sopenharmony_ci }, 92562306a36Sopenharmony_ci }, { 92662306a36Sopenharmony_ci .id = 0x63, 92762306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SDMMC4A, 92862306a36Sopenharmony_ci .name = "sdmmcrab", 92962306a36Sopenharmony_ci .regs = { 93062306a36Sopenharmony_ci .smmu = { 93162306a36Sopenharmony_ci .reg = 0x234, 93262306a36Sopenharmony_ci .bit = 3, 93362306a36Sopenharmony_ci }, 93462306a36Sopenharmony_ci .la = { 93562306a36Sopenharmony_ci .reg = 0x3c4, 93662306a36Sopenharmony_ci .shift = 0, 93762306a36Sopenharmony_ci .mask = 0xff, 93862306a36Sopenharmony_ci .def = 0x49, 93962306a36Sopenharmony_ci }, 94062306a36Sopenharmony_ci }, 94162306a36Sopenharmony_ci }, { 94262306a36Sopenharmony_ci .id = 0x64, 94362306a36Sopenharmony_ci .name = "sdmmcwa", 94462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SDMMC1A, 94562306a36Sopenharmony_ci .regs = { 94662306a36Sopenharmony_ci .smmu = { 94762306a36Sopenharmony_ci .reg = 0x234, 94862306a36Sopenharmony_ci .bit = 4, 94962306a36Sopenharmony_ci }, 95062306a36Sopenharmony_ci .la = { 95162306a36Sopenharmony_ci .reg = 0x3b8, 95262306a36Sopenharmony_ci .shift = 16, 95362306a36Sopenharmony_ci .mask = 0xff, 95462306a36Sopenharmony_ci .def = 0x80, 95562306a36Sopenharmony_ci }, 95662306a36Sopenharmony_ci }, 95762306a36Sopenharmony_ci }, { 95862306a36Sopenharmony_ci .id = 0x65, 95962306a36Sopenharmony_ci .name = "sdmmcwaa", 96062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SDMMC2A, 96162306a36Sopenharmony_ci .regs = { 96262306a36Sopenharmony_ci .smmu = { 96362306a36Sopenharmony_ci .reg = 0x234, 96462306a36Sopenharmony_ci .bit = 5, 96562306a36Sopenharmony_ci }, 96662306a36Sopenharmony_ci .la = { 96762306a36Sopenharmony_ci .reg = 0x3bc, 96862306a36Sopenharmony_ci .shift = 16, 96962306a36Sopenharmony_ci .mask = 0xff, 97062306a36Sopenharmony_ci .def = 0x80, 97162306a36Sopenharmony_ci }, 97262306a36Sopenharmony_ci }, 97362306a36Sopenharmony_ci }, { 97462306a36Sopenharmony_ci .id = 0x66, 97562306a36Sopenharmony_ci .name = "sdmmcw", 97662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SDMMC3A, 97762306a36Sopenharmony_ci .regs = { 97862306a36Sopenharmony_ci .smmu = { 97962306a36Sopenharmony_ci .reg = 0x234, 98062306a36Sopenharmony_ci .bit = 6, 98162306a36Sopenharmony_ci }, 98262306a36Sopenharmony_ci .la = { 98362306a36Sopenharmony_ci .reg = 0x3c0, 98462306a36Sopenharmony_ci .shift = 16, 98562306a36Sopenharmony_ci .mask = 0xff, 98662306a36Sopenharmony_ci .def = 0x80, 98762306a36Sopenharmony_ci }, 98862306a36Sopenharmony_ci }, 98962306a36Sopenharmony_ci }, { 99062306a36Sopenharmony_ci .id = 0x67, 99162306a36Sopenharmony_ci .name = "sdmmcwab", 99262306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_SDMMC4A, 99362306a36Sopenharmony_ci .regs = { 99462306a36Sopenharmony_ci .smmu = { 99562306a36Sopenharmony_ci .reg = 0x234, 99662306a36Sopenharmony_ci .bit = 7, 99762306a36Sopenharmony_ci }, 99862306a36Sopenharmony_ci .la = { 99962306a36Sopenharmony_ci .reg = 0x3c4, 100062306a36Sopenharmony_ci .shift = 16, 100162306a36Sopenharmony_ci .mask = 0xff, 100262306a36Sopenharmony_ci .def = 0x80, 100362306a36Sopenharmony_ci }, 100462306a36Sopenharmony_ci }, 100562306a36Sopenharmony_ci }, { 100662306a36Sopenharmony_ci .id = 0x6c, 100762306a36Sopenharmony_ci .name = "vicsrd", 100862306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VIC, 100962306a36Sopenharmony_ci .regs = { 101062306a36Sopenharmony_ci .smmu = { 101162306a36Sopenharmony_ci .reg = 0x234, 101262306a36Sopenharmony_ci .bit = 12, 101362306a36Sopenharmony_ci }, 101462306a36Sopenharmony_ci .la = { 101562306a36Sopenharmony_ci .reg = 0x394, 101662306a36Sopenharmony_ci .shift = 0, 101762306a36Sopenharmony_ci .mask = 0xff, 101862306a36Sopenharmony_ci .def = 0x1a, 101962306a36Sopenharmony_ci }, 102062306a36Sopenharmony_ci }, 102162306a36Sopenharmony_ci }, { 102262306a36Sopenharmony_ci .id = 0x6d, 102362306a36Sopenharmony_ci .name = "vicswr", 102462306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VIC, 102562306a36Sopenharmony_ci .regs = { 102662306a36Sopenharmony_ci .smmu = { 102762306a36Sopenharmony_ci .reg = 0x234, 102862306a36Sopenharmony_ci .bit = 13, 102962306a36Sopenharmony_ci }, 103062306a36Sopenharmony_ci .la = { 103162306a36Sopenharmony_ci .reg = 0x394, 103262306a36Sopenharmony_ci .shift = 16, 103362306a36Sopenharmony_ci .mask = 0xff, 103462306a36Sopenharmony_ci .def = 0x80, 103562306a36Sopenharmony_ci }, 103662306a36Sopenharmony_ci }, 103762306a36Sopenharmony_ci }, { 103862306a36Sopenharmony_ci .id = 0x72, 103962306a36Sopenharmony_ci .name = "viw", 104062306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_VI, 104162306a36Sopenharmony_ci .regs = { 104262306a36Sopenharmony_ci .smmu = { 104362306a36Sopenharmony_ci .reg = 0x234, 104462306a36Sopenharmony_ci .bit = 18, 104562306a36Sopenharmony_ci }, 104662306a36Sopenharmony_ci .la = { 104762306a36Sopenharmony_ci .reg = 0x398, 104862306a36Sopenharmony_ci .shift = 0, 104962306a36Sopenharmony_ci .mask = 0xff, 105062306a36Sopenharmony_ci .def = 0x80, 105162306a36Sopenharmony_ci }, 105262306a36Sopenharmony_ci }, 105362306a36Sopenharmony_ci }, { 105462306a36Sopenharmony_ci .id = 0x73, 105562306a36Sopenharmony_ci .name = "displayd", 105662306a36Sopenharmony_ci .swgroup = TEGRA_SWGROUP_DC, 105762306a36Sopenharmony_ci .regs = { 105862306a36Sopenharmony_ci .smmu = { 105962306a36Sopenharmony_ci .reg = 0x234, 106062306a36Sopenharmony_ci .bit = 19, 106162306a36Sopenharmony_ci }, 106262306a36Sopenharmony_ci .la = { 106362306a36Sopenharmony_ci .reg = 0x3c8, 106462306a36Sopenharmony_ci .shift = 0, 106562306a36Sopenharmony_ci .mask = 0xff, 106662306a36Sopenharmony_ci .def = 0x50, 106762306a36Sopenharmony_ci }, 106862306a36Sopenharmony_ci }, 106962306a36Sopenharmony_ci }, 107062306a36Sopenharmony_ci}; 107162306a36Sopenharmony_ci 107262306a36Sopenharmony_cistatic const struct tegra_smmu_swgroup tegra124_swgroups[] = { 107362306a36Sopenharmony_ci { .name = "dc", .swgroup = TEGRA_SWGROUP_DC, .reg = 0x240 }, 107462306a36Sopenharmony_ci { .name = "dcb", .swgroup = TEGRA_SWGROUP_DCB, .reg = 0x244 }, 107562306a36Sopenharmony_ci { .name = "afi", .swgroup = TEGRA_SWGROUP_AFI, .reg = 0x238 }, 107662306a36Sopenharmony_ci { .name = "avpc", .swgroup = TEGRA_SWGROUP_AVPC, .reg = 0x23c }, 107762306a36Sopenharmony_ci { .name = "hda", .swgroup = TEGRA_SWGROUP_HDA, .reg = 0x254 }, 107862306a36Sopenharmony_ci { .name = "hc", .swgroup = TEGRA_SWGROUP_HC, .reg = 0x250 }, 107962306a36Sopenharmony_ci { .name = "msenc", .swgroup = TEGRA_SWGROUP_MSENC, .reg = 0x264 }, 108062306a36Sopenharmony_ci { .name = "ppcs", .swgroup = TEGRA_SWGROUP_PPCS, .reg = 0x270 }, 108162306a36Sopenharmony_ci { .name = "sata", .swgroup = TEGRA_SWGROUP_SATA, .reg = 0x274 }, 108262306a36Sopenharmony_ci { .name = "vde", .swgroup = TEGRA_SWGROUP_VDE, .reg = 0x27c }, 108362306a36Sopenharmony_ci { .name = "isp2", .swgroup = TEGRA_SWGROUP_ISP2, .reg = 0x258 }, 108462306a36Sopenharmony_ci { .name = "xusb_host", .swgroup = TEGRA_SWGROUP_XUSB_HOST, .reg = 0x288 }, 108562306a36Sopenharmony_ci { .name = "xusb_dev", .swgroup = TEGRA_SWGROUP_XUSB_DEV, .reg = 0x28c }, 108662306a36Sopenharmony_ci { .name = "isp2b", .swgroup = TEGRA_SWGROUP_ISP2B, .reg = 0xaa4 }, 108762306a36Sopenharmony_ci { .name = "tsec", .swgroup = TEGRA_SWGROUP_TSEC, .reg = 0x294 }, 108862306a36Sopenharmony_ci { .name = "a9avp", .swgroup = TEGRA_SWGROUP_A9AVP, .reg = 0x290 }, 108962306a36Sopenharmony_ci { .name = "gpu", .swgroup = TEGRA_SWGROUP_GPU, .reg = 0xaac }, 109062306a36Sopenharmony_ci { .name = "sdmmc1a", .swgroup = TEGRA_SWGROUP_SDMMC1A, .reg = 0xa94 }, 109162306a36Sopenharmony_ci { .name = "sdmmc2a", .swgroup = TEGRA_SWGROUP_SDMMC2A, .reg = 0xa98 }, 109262306a36Sopenharmony_ci { .name = "sdmmc3a", .swgroup = TEGRA_SWGROUP_SDMMC3A, .reg = 0xa9c }, 109362306a36Sopenharmony_ci { .name = "sdmmc4a", .swgroup = TEGRA_SWGROUP_SDMMC4A, .reg = 0xaa0 }, 109462306a36Sopenharmony_ci { .name = "vic", .swgroup = TEGRA_SWGROUP_VIC, .reg = 0x284 }, 109562306a36Sopenharmony_ci { .name = "vi", .swgroup = TEGRA_SWGROUP_VI, .reg = 0x280 }, 109662306a36Sopenharmony_ci}; 109762306a36Sopenharmony_ci 109862306a36Sopenharmony_cistatic const unsigned int tegra124_group_drm[] = { 109962306a36Sopenharmony_ci TEGRA_SWGROUP_DC, 110062306a36Sopenharmony_ci TEGRA_SWGROUP_DCB, 110162306a36Sopenharmony_ci TEGRA_SWGROUP_VIC, 110262306a36Sopenharmony_ci}; 110362306a36Sopenharmony_ci 110462306a36Sopenharmony_cistatic const struct tegra_smmu_group_soc tegra124_groups[] = { 110562306a36Sopenharmony_ci { 110662306a36Sopenharmony_ci .name = "drm", 110762306a36Sopenharmony_ci .swgroups = tegra124_group_drm, 110862306a36Sopenharmony_ci .num_swgroups = ARRAY_SIZE(tegra124_group_drm), 110962306a36Sopenharmony_ci }, 111062306a36Sopenharmony_ci}; 111162306a36Sopenharmony_ci 111262306a36Sopenharmony_ci#define TEGRA124_MC_RESET(_name, _control, _status, _bit) \ 111362306a36Sopenharmony_ci { \ 111462306a36Sopenharmony_ci .name = #_name, \ 111562306a36Sopenharmony_ci .id = TEGRA124_MC_RESET_##_name, \ 111662306a36Sopenharmony_ci .control = _control, \ 111762306a36Sopenharmony_ci .status = _status, \ 111862306a36Sopenharmony_ci .bit = _bit, \ 111962306a36Sopenharmony_ci } 112062306a36Sopenharmony_ci 112162306a36Sopenharmony_cistatic const struct tegra_mc_reset tegra124_mc_resets[] = { 112262306a36Sopenharmony_ci TEGRA124_MC_RESET(AFI, 0x200, 0x204, 0), 112362306a36Sopenharmony_ci TEGRA124_MC_RESET(AVPC, 0x200, 0x204, 1), 112462306a36Sopenharmony_ci TEGRA124_MC_RESET(DC, 0x200, 0x204, 2), 112562306a36Sopenharmony_ci TEGRA124_MC_RESET(DCB, 0x200, 0x204, 3), 112662306a36Sopenharmony_ci TEGRA124_MC_RESET(HC, 0x200, 0x204, 6), 112762306a36Sopenharmony_ci TEGRA124_MC_RESET(HDA, 0x200, 0x204, 7), 112862306a36Sopenharmony_ci TEGRA124_MC_RESET(ISP2, 0x200, 0x204, 8), 112962306a36Sopenharmony_ci TEGRA124_MC_RESET(MPCORE, 0x200, 0x204, 9), 113062306a36Sopenharmony_ci TEGRA124_MC_RESET(MPCORELP, 0x200, 0x204, 10), 113162306a36Sopenharmony_ci TEGRA124_MC_RESET(MSENC, 0x200, 0x204, 11), 113262306a36Sopenharmony_ci TEGRA124_MC_RESET(PPCS, 0x200, 0x204, 14), 113362306a36Sopenharmony_ci TEGRA124_MC_RESET(SATA, 0x200, 0x204, 15), 113462306a36Sopenharmony_ci TEGRA124_MC_RESET(VDE, 0x200, 0x204, 16), 113562306a36Sopenharmony_ci TEGRA124_MC_RESET(VI, 0x200, 0x204, 17), 113662306a36Sopenharmony_ci TEGRA124_MC_RESET(VIC, 0x200, 0x204, 18), 113762306a36Sopenharmony_ci TEGRA124_MC_RESET(XUSB_HOST, 0x200, 0x204, 19), 113862306a36Sopenharmony_ci TEGRA124_MC_RESET(XUSB_DEV, 0x200, 0x204, 20), 113962306a36Sopenharmony_ci TEGRA124_MC_RESET(TSEC, 0x200, 0x204, 21), 114062306a36Sopenharmony_ci TEGRA124_MC_RESET(SDMMC1, 0x200, 0x204, 22), 114162306a36Sopenharmony_ci TEGRA124_MC_RESET(SDMMC2, 0x200, 0x204, 23), 114262306a36Sopenharmony_ci TEGRA124_MC_RESET(SDMMC3, 0x200, 0x204, 25), 114362306a36Sopenharmony_ci TEGRA124_MC_RESET(SDMMC4, 0x970, 0x974, 0), 114462306a36Sopenharmony_ci TEGRA124_MC_RESET(ISP2B, 0x970, 0x974, 1), 114562306a36Sopenharmony_ci TEGRA124_MC_RESET(GPU, 0x970, 0x974, 2), 114662306a36Sopenharmony_ci}; 114762306a36Sopenharmony_ci 114862306a36Sopenharmony_cistatic int tegra124_mc_icc_set(struct icc_node *src, struct icc_node *dst) 114962306a36Sopenharmony_ci{ 115062306a36Sopenharmony_ci /* TODO: program PTSA */ 115162306a36Sopenharmony_ci return 0; 115262306a36Sopenharmony_ci} 115362306a36Sopenharmony_ci 115462306a36Sopenharmony_cistatic int tegra124_mc_icc_aggreate(struct icc_node *node, u32 tag, u32 avg_bw, 115562306a36Sopenharmony_ci u32 peak_bw, u32 *agg_avg, u32 *agg_peak) 115662306a36Sopenharmony_ci{ 115762306a36Sopenharmony_ci /* 115862306a36Sopenharmony_ci * ISO clients need to reserve extra bandwidth up-front because 115962306a36Sopenharmony_ci * there could be high bandwidth pressure during initial filling 116062306a36Sopenharmony_ci * of the client's FIFO buffers. Secondly, we need to take into 116162306a36Sopenharmony_ci * account impurities of the memory subsystem. 116262306a36Sopenharmony_ci */ 116362306a36Sopenharmony_ci if (tag & TEGRA_MC_ICC_TAG_ISO) 116462306a36Sopenharmony_ci peak_bw = tegra_mc_scale_percents(peak_bw, 400); 116562306a36Sopenharmony_ci 116662306a36Sopenharmony_ci *agg_avg += avg_bw; 116762306a36Sopenharmony_ci *agg_peak = max(*agg_peak, peak_bw); 116862306a36Sopenharmony_ci 116962306a36Sopenharmony_ci return 0; 117062306a36Sopenharmony_ci} 117162306a36Sopenharmony_ci 117262306a36Sopenharmony_cistatic struct icc_node_data * 117362306a36Sopenharmony_citegra124_mc_of_icc_xlate_extended(struct of_phandle_args *spec, void *data) 117462306a36Sopenharmony_ci{ 117562306a36Sopenharmony_ci struct tegra_mc *mc = icc_provider_to_tegra_mc(data); 117662306a36Sopenharmony_ci const struct tegra_mc_client *client; 117762306a36Sopenharmony_ci unsigned int i, idx = spec->args[0]; 117862306a36Sopenharmony_ci struct icc_node_data *ndata; 117962306a36Sopenharmony_ci struct icc_node *node; 118062306a36Sopenharmony_ci 118162306a36Sopenharmony_ci list_for_each_entry(node, &mc->provider.nodes, node_list) { 118262306a36Sopenharmony_ci if (node->id != idx) 118362306a36Sopenharmony_ci continue; 118462306a36Sopenharmony_ci 118562306a36Sopenharmony_ci ndata = kzalloc(sizeof(*ndata), GFP_KERNEL); 118662306a36Sopenharmony_ci if (!ndata) 118762306a36Sopenharmony_ci return ERR_PTR(-ENOMEM); 118862306a36Sopenharmony_ci 118962306a36Sopenharmony_ci client = &mc->soc->clients[idx]; 119062306a36Sopenharmony_ci ndata->node = node; 119162306a36Sopenharmony_ci 119262306a36Sopenharmony_ci switch (client->swgroup) { 119362306a36Sopenharmony_ci case TEGRA_SWGROUP_DC: 119462306a36Sopenharmony_ci case TEGRA_SWGROUP_DCB: 119562306a36Sopenharmony_ci case TEGRA_SWGROUP_PTC: 119662306a36Sopenharmony_ci case TEGRA_SWGROUP_VI: 119762306a36Sopenharmony_ci /* these clients are isochronous by default */ 119862306a36Sopenharmony_ci ndata->tag = TEGRA_MC_ICC_TAG_ISO; 119962306a36Sopenharmony_ci break; 120062306a36Sopenharmony_ci 120162306a36Sopenharmony_ci default: 120262306a36Sopenharmony_ci ndata->tag = TEGRA_MC_ICC_TAG_DEFAULT; 120362306a36Sopenharmony_ci break; 120462306a36Sopenharmony_ci } 120562306a36Sopenharmony_ci 120662306a36Sopenharmony_ci return ndata; 120762306a36Sopenharmony_ci } 120862306a36Sopenharmony_ci 120962306a36Sopenharmony_ci for (i = 0; i < mc->soc->num_clients; i++) { 121062306a36Sopenharmony_ci if (mc->soc->clients[i].id == idx) 121162306a36Sopenharmony_ci return ERR_PTR(-EPROBE_DEFER); 121262306a36Sopenharmony_ci } 121362306a36Sopenharmony_ci 121462306a36Sopenharmony_ci dev_err(mc->dev, "invalid ICC client ID %u\n", idx); 121562306a36Sopenharmony_ci 121662306a36Sopenharmony_ci return ERR_PTR(-EINVAL); 121762306a36Sopenharmony_ci} 121862306a36Sopenharmony_ci 121962306a36Sopenharmony_cistatic const struct tegra_mc_icc_ops tegra124_mc_icc_ops = { 122062306a36Sopenharmony_ci .xlate_extended = tegra124_mc_of_icc_xlate_extended, 122162306a36Sopenharmony_ci .aggregate = tegra124_mc_icc_aggreate, 122262306a36Sopenharmony_ci .set = tegra124_mc_icc_set, 122362306a36Sopenharmony_ci}; 122462306a36Sopenharmony_ci 122562306a36Sopenharmony_ci#ifdef CONFIG_ARCH_TEGRA_124_SOC 122662306a36Sopenharmony_cistatic const unsigned long tegra124_mc_emem_regs[] = { 122762306a36Sopenharmony_ci MC_EMEM_ARB_CFG, 122862306a36Sopenharmony_ci MC_EMEM_ARB_OUTSTANDING_REQ, 122962306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_RCD, 123062306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_RP, 123162306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_RC, 123262306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_RAS, 123362306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_FAW, 123462306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_RRD, 123562306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_RAP2PRE, 123662306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_WAP2PRE, 123762306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_R2R, 123862306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_W2W, 123962306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_R2W, 124062306a36Sopenharmony_ci MC_EMEM_ARB_TIMING_W2R, 124162306a36Sopenharmony_ci MC_EMEM_ARB_DA_TURNS, 124262306a36Sopenharmony_ci MC_EMEM_ARB_DA_COVERS, 124362306a36Sopenharmony_ci MC_EMEM_ARB_MISC0, 124462306a36Sopenharmony_ci MC_EMEM_ARB_MISC1, 124562306a36Sopenharmony_ci MC_EMEM_ARB_RING1_THROTTLE 124662306a36Sopenharmony_ci}; 124762306a36Sopenharmony_ci 124862306a36Sopenharmony_cistatic const struct tegra_smmu_soc tegra124_smmu_soc = { 124962306a36Sopenharmony_ci .clients = tegra124_mc_clients, 125062306a36Sopenharmony_ci .num_clients = ARRAY_SIZE(tegra124_mc_clients), 125162306a36Sopenharmony_ci .swgroups = tegra124_swgroups, 125262306a36Sopenharmony_ci .num_swgroups = ARRAY_SIZE(tegra124_swgroups), 125362306a36Sopenharmony_ci .groups = tegra124_groups, 125462306a36Sopenharmony_ci .num_groups = ARRAY_SIZE(tegra124_groups), 125562306a36Sopenharmony_ci .supports_round_robin_arbitration = true, 125662306a36Sopenharmony_ci .supports_request_limit = true, 125762306a36Sopenharmony_ci .num_tlb_lines = 32, 125862306a36Sopenharmony_ci .num_asids = 128, 125962306a36Sopenharmony_ci}; 126062306a36Sopenharmony_ci 126162306a36Sopenharmony_ciconst struct tegra_mc_soc tegra124_mc_soc = { 126262306a36Sopenharmony_ci .clients = tegra124_mc_clients, 126362306a36Sopenharmony_ci .num_clients = ARRAY_SIZE(tegra124_mc_clients), 126462306a36Sopenharmony_ci .num_address_bits = 34, 126562306a36Sopenharmony_ci .atom_size = 32, 126662306a36Sopenharmony_ci .client_id_mask = 0x7f, 126762306a36Sopenharmony_ci .smmu = &tegra124_smmu_soc, 126862306a36Sopenharmony_ci .emem_regs = tegra124_mc_emem_regs, 126962306a36Sopenharmony_ci .num_emem_regs = ARRAY_SIZE(tegra124_mc_emem_regs), 127062306a36Sopenharmony_ci .intmask = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR | 127162306a36Sopenharmony_ci MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE | 127262306a36Sopenharmony_ci MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM, 127362306a36Sopenharmony_ci .reset_ops = &tegra_mc_reset_ops_common, 127462306a36Sopenharmony_ci .resets = tegra124_mc_resets, 127562306a36Sopenharmony_ci .num_resets = ARRAY_SIZE(tegra124_mc_resets), 127662306a36Sopenharmony_ci .icc_ops = &tegra124_mc_icc_ops, 127762306a36Sopenharmony_ci .ops = &tegra30_mc_ops, 127862306a36Sopenharmony_ci}; 127962306a36Sopenharmony_ci#endif /* CONFIG_ARCH_TEGRA_124_SOC */ 128062306a36Sopenharmony_ci 128162306a36Sopenharmony_ci#ifdef CONFIG_ARCH_TEGRA_132_SOC 128262306a36Sopenharmony_cistatic const struct tegra_smmu_soc tegra132_smmu_soc = { 128362306a36Sopenharmony_ci .clients = tegra124_mc_clients, 128462306a36Sopenharmony_ci .num_clients = ARRAY_SIZE(tegra124_mc_clients), 128562306a36Sopenharmony_ci .swgroups = tegra124_swgroups, 128662306a36Sopenharmony_ci .num_swgroups = ARRAY_SIZE(tegra124_swgroups), 128762306a36Sopenharmony_ci .groups = tegra124_groups, 128862306a36Sopenharmony_ci .num_groups = ARRAY_SIZE(tegra124_groups), 128962306a36Sopenharmony_ci .supports_round_robin_arbitration = true, 129062306a36Sopenharmony_ci .supports_request_limit = true, 129162306a36Sopenharmony_ci .num_tlb_lines = 32, 129262306a36Sopenharmony_ci .num_asids = 128, 129362306a36Sopenharmony_ci}; 129462306a36Sopenharmony_ci 129562306a36Sopenharmony_ciconst struct tegra_mc_soc tegra132_mc_soc = { 129662306a36Sopenharmony_ci .clients = tegra124_mc_clients, 129762306a36Sopenharmony_ci .num_clients = ARRAY_SIZE(tegra124_mc_clients), 129862306a36Sopenharmony_ci .num_address_bits = 34, 129962306a36Sopenharmony_ci .atom_size = 32, 130062306a36Sopenharmony_ci .client_id_mask = 0x7f, 130162306a36Sopenharmony_ci .smmu = &tegra132_smmu_soc, 130262306a36Sopenharmony_ci .intmask = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR | 130362306a36Sopenharmony_ci MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE | 130462306a36Sopenharmony_ci MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM, 130562306a36Sopenharmony_ci .reset_ops = &tegra_mc_reset_ops_common, 130662306a36Sopenharmony_ci .resets = tegra124_mc_resets, 130762306a36Sopenharmony_ci .num_resets = ARRAY_SIZE(tegra124_mc_resets), 130862306a36Sopenharmony_ci .icc_ops = &tegra124_mc_icc_ops, 130962306a36Sopenharmony_ci .ops = &tegra30_mc_ops, 131062306a36Sopenharmony_ci}; 131162306a36Sopenharmony_ci#endif /* CONFIG_ARCH_TEGRA_132_SOC */ 1312