162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2022-2023, NVIDIA CORPORATION.  All rights reserved.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <soc/tegra/mc.h>
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <dt-bindings/memory/tegra234-mc.h>
962306a36Sopenharmony_ci#include <linux/interconnect.h>
1062306a36Sopenharmony_ci#include <linux/tegra-icc.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include <soc/tegra/bpmp.h>
1362306a36Sopenharmony_ci#include "mc.h"
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/*
1662306a36Sopenharmony_ci * MC Client entries are sorted in the increasing order of the
1762306a36Sopenharmony_ci * override and security register offsets.
1862306a36Sopenharmony_ci */
1962306a36Sopenharmony_cistatic const struct tegra_mc_client tegra234_mc_clients[] = {
2062306a36Sopenharmony_ci	{
2162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_HDAR,
2262306a36Sopenharmony_ci		.name = "hdar",
2362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_HDA,
2462306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_AUDIO,
2562306a36Sopenharmony_ci		.sid = TEGRA234_SID_HDA,
2662306a36Sopenharmony_ci		.regs = {
2762306a36Sopenharmony_ci			.sid = {
2862306a36Sopenharmony_ci				.override = 0xa8,
2962306a36Sopenharmony_ci				.security = 0xac,
3062306a36Sopenharmony_ci			},
3162306a36Sopenharmony_ci		},
3262306a36Sopenharmony_ci	}, {
3362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVENCSRD,
3462306a36Sopenharmony_ci		.name = "nvencsrd",
3562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_NVENC,
3662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
3762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVENC,
3862306a36Sopenharmony_ci		.regs = {
3962306a36Sopenharmony_ci			.sid = {
4062306a36Sopenharmony_ci				.override = 0xe0,
4162306a36Sopenharmony_ci				.security = 0xe4,
4262306a36Sopenharmony_ci			},
4362306a36Sopenharmony_ci		},
4462306a36Sopenharmony_ci	}, {
4562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE6AR,
4662306a36Sopenharmony_ci		.name = "pcie6ar",
4762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_6,
4862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
4962306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE6,
5062306a36Sopenharmony_ci		.regs = {
5162306a36Sopenharmony_ci			.sid = {
5262306a36Sopenharmony_ci				.override = 0x140,
5362306a36Sopenharmony_ci				.security = 0x144,
5462306a36Sopenharmony_ci			},
5562306a36Sopenharmony_ci		},
5662306a36Sopenharmony_ci	}, {
5762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE6AW,
5862306a36Sopenharmony_ci		.name = "pcie6aw",
5962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_6,
6062306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
6162306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE6,
6262306a36Sopenharmony_ci		.regs = {
6362306a36Sopenharmony_ci			.sid = {
6462306a36Sopenharmony_ci				.override = 0x148,
6562306a36Sopenharmony_ci				.security = 0x14c,
6662306a36Sopenharmony_ci			},
6762306a36Sopenharmony_ci		},
6862306a36Sopenharmony_ci	}, {
6962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE7AR,
7062306a36Sopenharmony_ci		.name = "pcie7ar",
7162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_7,
7262306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
7362306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE7,
7462306a36Sopenharmony_ci		.regs = {
7562306a36Sopenharmony_ci			.sid = {
7662306a36Sopenharmony_ci				.override = 0x150,
7762306a36Sopenharmony_ci				.security = 0x154,
7862306a36Sopenharmony_ci			},
7962306a36Sopenharmony_ci		},
8062306a36Sopenharmony_ci	}, {
8162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVENCSWR,
8262306a36Sopenharmony_ci		.name = "nvencswr",
8362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_NVENC,
8462306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
8562306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVENC,
8662306a36Sopenharmony_ci		.regs = {
8762306a36Sopenharmony_ci			.sid = {
8862306a36Sopenharmony_ci				.override = 0x158,
8962306a36Sopenharmony_ci				.security = 0x15c,
9062306a36Sopenharmony_ci			},
9162306a36Sopenharmony_ci		},
9262306a36Sopenharmony_ci	}, {
9362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA0RDB,
9462306a36Sopenharmony_ci		.name = "dla0rdb",
9562306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA0,
9662306a36Sopenharmony_ci		.regs = {
9762306a36Sopenharmony_ci			.sid = {
9862306a36Sopenharmony_ci				.override = 0x160,
9962306a36Sopenharmony_ci				.security = 0x164,
10062306a36Sopenharmony_ci			},
10162306a36Sopenharmony_ci		},
10262306a36Sopenharmony_ci	}, {
10362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA0RDB1,
10462306a36Sopenharmony_ci		.name = "dla0rdb1",
10562306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA0,
10662306a36Sopenharmony_ci		.regs = {
10762306a36Sopenharmony_ci			.sid = {
10862306a36Sopenharmony_ci				.override = 0x168,
10962306a36Sopenharmony_ci				.security = 0x16c,
11062306a36Sopenharmony_ci			},
11162306a36Sopenharmony_ci		},
11262306a36Sopenharmony_ci	}, {
11362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA0WRB,
11462306a36Sopenharmony_ci		.name = "dla0wrb",
11562306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA0,
11662306a36Sopenharmony_ci		.regs = {
11762306a36Sopenharmony_ci			.sid = {
11862306a36Sopenharmony_ci				.override = 0x170,
11962306a36Sopenharmony_ci				.security = 0x174,
12062306a36Sopenharmony_ci			},
12162306a36Sopenharmony_ci		},
12262306a36Sopenharmony_ci	}, {
12362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA1RDB,
12462306a36Sopenharmony_ci		.name = "dla1rdb",
12562306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA1,
12662306a36Sopenharmony_ci		.regs = {
12762306a36Sopenharmony_ci			.sid = {
12862306a36Sopenharmony_ci				.override = 0x178,
12962306a36Sopenharmony_ci				.security = 0x17c,
13062306a36Sopenharmony_ci			},
13162306a36Sopenharmony_ci		},
13262306a36Sopenharmony_ci	}, {
13362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE7AW,
13462306a36Sopenharmony_ci		.name = "pcie7aw",
13562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_7,
13662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
13762306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE7,
13862306a36Sopenharmony_ci		.regs = {
13962306a36Sopenharmony_ci			.sid = {
14062306a36Sopenharmony_ci				.override = 0x180,
14162306a36Sopenharmony_ci				.security = 0x184,
14262306a36Sopenharmony_ci			},
14362306a36Sopenharmony_ci		},
14462306a36Sopenharmony_ci	}, {
14562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE8AR,
14662306a36Sopenharmony_ci		.name = "pcie8ar",
14762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_8,
14862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
14962306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE8,
15062306a36Sopenharmony_ci		.regs = {
15162306a36Sopenharmony_ci			.sid = {
15262306a36Sopenharmony_ci				.override = 0x190,
15362306a36Sopenharmony_ci				.security = 0x194,
15462306a36Sopenharmony_ci			},
15562306a36Sopenharmony_ci		},
15662306a36Sopenharmony_ci	}, {
15762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_HDAW,
15862306a36Sopenharmony_ci		.name = "hdaw",
15962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_HDA,
16062306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_AUDIO,
16162306a36Sopenharmony_ci		.sid = TEGRA234_SID_HDA,
16262306a36Sopenharmony_ci		.regs = {
16362306a36Sopenharmony_ci			.sid = {
16462306a36Sopenharmony_ci				.override = 0x1a8,
16562306a36Sopenharmony_ci				.security = 0x1ac,
16662306a36Sopenharmony_ci			},
16762306a36Sopenharmony_ci		},
16862306a36Sopenharmony_ci	}, {
16962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE8AW,
17062306a36Sopenharmony_ci		.name = "pcie8aw",
17162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_8,
17262306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
17362306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE8,
17462306a36Sopenharmony_ci		.regs = {
17562306a36Sopenharmony_ci			.sid = {
17662306a36Sopenharmony_ci				.override = 0x1d8,
17762306a36Sopenharmony_ci				.security = 0x1dc,
17862306a36Sopenharmony_ci			},
17962306a36Sopenharmony_ci		},
18062306a36Sopenharmony_ci	}, {
18162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE9AR,
18262306a36Sopenharmony_ci		.name = "pcie9ar",
18362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_9,
18462306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
18562306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE9,
18662306a36Sopenharmony_ci		.regs = {
18762306a36Sopenharmony_ci			.sid = {
18862306a36Sopenharmony_ci				.override = 0x1e0,
18962306a36Sopenharmony_ci				.security = 0x1e4,
19062306a36Sopenharmony_ci			},
19162306a36Sopenharmony_ci		},
19262306a36Sopenharmony_ci	}, {
19362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE6AR1,
19462306a36Sopenharmony_ci		.name = "pcie6ar1",
19562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_6,
19662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
19762306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE6,
19862306a36Sopenharmony_ci		.regs = {
19962306a36Sopenharmony_ci			.sid = {
20062306a36Sopenharmony_ci				.override = 0x1e8,
20162306a36Sopenharmony_ci				.security = 0x1ec,
20262306a36Sopenharmony_ci			},
20362306a36Sopenharmony_ci		},
20462306a36Sopenharmony_ci	}, {
20562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE9AW,
20662306a36Sopenharmony_ci		.name = "pcie9aw",
20762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_9,
20862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
20962306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE9,
21062306a36Sopenharmony_ci		.regs = {
21162306a36Sopenharmony_ci			.sid = {
21262306a36Sopenharmony_ci				.override = 0x1f0,
21362306a36Sopenharmony_ci				.security = 0x1f4,
21462306a36Sopenharmony_ci			},
21562306a36Sopenharmony_ci		},
21662306a36Sopenharmony_ci	}, {
21762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE10AR,
21862306a36Sopenharmony_ci		.name = "pcie10ar",
21962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_10,
22062306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
22162306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE10,
22262306a36Sopenharmony_ci		.regs = {
22362306a36Sopenharmony_ci			.sid = {
22462306a36Sopenharmony_ci				.override = 0x1f8,
22562306a36Sopenharmony_ci				.security = 0x1fc,
22662306a36Sopenharmony_ci			},
22762306a36Sopenharmony_ci		},
22862306a36Sopenharmony_ci	}, {
22962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE10AW,
23062306a36Sopenharmony_ci		.name = "pcie10aw",
23162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_10,
23262306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
23362306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE10,
23462306a36Sopenharmony_ci		.regs = {
23562306a36Sopenharmony_ci			.sid = {
23662306a36Sopenharmony_ci				.override = 0x200,
23762306a36Sopenharmony_ci				.security = 0x204,
23862306a36Sopenharmony_ci			},
23962306a36Sopenharmony_ci		},
24062306a36Sopenharmony_ci	}, {
24162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE10AR1,
24262306a36Sopenharmony_ci		.name = "pcie10ar1",
24362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_10,
24462306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
24562306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE10,
24662306a36Sopenharmony_ci		.regs = {
24762306a36Sopenharmony_ci			.sid = {
24862306a36Sopenharmony_ci				.override = 0x240,
24962306a36Sopenharmony_ci				.security = 0x244,
25062306a36Sopenharmony_ci			},
25162306a36Sopenharmony_ci		},
25262306a36Sopenharmony_ci	}, {
25362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE7AR1,
25462306a36Sopenharmony_ci		.name = "pcie7ar1",
25562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_7,
25662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
25762306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE7,
25862306a36Sopenharmony_ci		.regs = {
25962306a36Sopenharmony_ci			.sid = {
26062306a36Sopenharmony_ci				.override = 0x248,
26162306a36Sopenharmony_ci				.security = 0x24c,
26262306a36Sopenharmony_ci			},
26362306a36Sopenharmony_ci		},
26462306a36Sopenharmony_ci	}, {
26562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_MGBEARD,
26662306a36Sopenharmony_ci		.name = "mgbeard",
26762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_EQOS,
26862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
26962306a36Sopenharmony_ci		.sid = TEGRA234_SID_MGBE,
27062306a36Sopenharmony_ci		.regs = {
27162306a36Sopenharmony_ci			.sid = {
27262306a36Sopenharmony_ci				.override = 0x2c0,
27362306a36Sopenharmony_ci				.security = 0x2c4,
27462306a36Sopenharmony_ci			},
27562306a36Sopenharmony_ci		},
27662306a36Sopenharmony_ci	}, {
27762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_MGBEBRD,
27862306a36Sopenharmony_ci		.name = "mgbebrd",
27962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_EQOS,
28062306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
28162306a36Sopenharmony_ci		.sid = TEGRA234_SID_MGBE_VF1,
28262306a36Sopenharmony_ci		.regs = {
28362306a36Sopenharmony_ci			.sid = {
28462306a36Sopenharmony_ci				.override = 0x2c8,
28562306a36Sopenharmony_ci				.security = 0x2cc,
28662306a36Sopenharmony_ci			},
28762306a36Sopenharmony_ci		},
28862306a36Sopenharmony_ci	}, {
28962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_MGBECRD,
29062306a36Sopenharmony_ci		.name = "mgbecrd",
29162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_EQOS,
29262306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
29362306a36Sopenharmony_ci		.sid = TEGRA234_SID_MGBE_VF2,
29462306a36Sopenharmony_ci		.regs = {
29562306a36Sopenharmony_ci			.sid = {
29662306a36Sopenharmony_ci				.override = 0x2d0,
29762306a36Sopenharmony_ci				.security = 0x2d4,
29862306a36Sopenharmony_ci			},
29962306a36Sopenharmony_ci		},
30062306a36Sopenharmony_ci	}, {
30162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_MGBEDRD,
30262306a36Sopenharmony_ci		.name = "mgbedrd",
30362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_EQOS,
30462306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
30562306a36Sopenharmony_ci		.sid = TEGRA234_SID_MGBE_VF3,
30662306a36Sopenharmony_ci		.regs = {
30762306a36Sopenharmony_ci			.sid = {
30862306a36Sopenharmony_ci				.override = 0x2d8,
30962306a36Sopenharmony_ci				.security = 0x2dc,
31062306a36Sopenharmony_ci			},
31162306a36Sopenharmony_ci		},
31262306a36Sopenharmony_ci	}, {
31362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_MGBEAWR,
31462306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_EQOS,
31562306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
31662306a36Sopenharmony_ci		.name = "mgbeawr",
31762306a36Sopenharmony_ci		.sid = TEGRA234_SID_MGBE,
31862306a36Sopenharmony_ci		.regs = {
31962306a36Sopenharmony_ci			.sid = {
32062306a36Sopenharmony_ci				.override = 0x2e0,
32162306a36Sopenharmony_ci				.security = 0x2e4,
32262306a36Sopenharmony_ci			},
32362306a36Sopenharmony_ci		},
32462306a36Sopenharmony_ci	}, {
32562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_MGBEBWR,
32662306a36Sopenharmony_ci		.name = "mgbebwr",
32762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_EQOS,
32862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
32962306a36Sopenharmony_ci		.sid = TEGRA234_SID_MGBE_VF1,
33062306a36Sopenharmony_ci		.regs = {
33162306a36Sopenharmony_ci			.sid = {
33262306a36Sopenharmony_ci				.override = 0x2f8,
33362306a36Sopenharmony_ci				.security = 0x2fc,
33462306a36Sopenharmony_ci			},
33562306a36Sopenharmony_ci		},
33662306a36Sopenharmony_ci	}, {
33762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_MGBECWR,
33862306a36Sopenharmony_ci		.name = "mgbecwr",
33962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_EQOS,
34062306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
34162306a36Sopenharmony_ci		.sid = TEGRA234_SID_MGBE_VF2,
34262306a36Sopenharmony_ci		.regs = {
34362306a36Sopenharmony_ci			.sid = {
34462306a36Sopenharmony_ci				.override = 0x308,
34562306a36Sopenharmony_ci				.security = 0x30c,
34662306a36Sopenharmony_ci			},
34762306a36Sopenharmony_ci		},
34862306a36Sopenharmony_ci	}, {
34962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_SDMMCRAB,
35062306a36Sopenharmony_ci		.name = "sdmmcrab",
35162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_SDMMC_4,
35262306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
35362306a36Sopenharmony_ci		.sid = TEGRA234_SID_SDMMC4,
35462306a36Sopenharmony_ci		.regs = {
35562306a36Sopenharmony_ci			.sid = {
35662306a36Sopenharmony_ci				.override = 0x318,
35762306a36Sopenharmony_ci				.security = 0x31c,
35862306a36Sopenharmony_ci			},
35962306a36Sopenharmony_ci		},
36062306a36Sopenharmony_ci	}, {
36162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_MGBEDWR,
36262306a36Sopenharmony_ci		.name = "mgbedwr",
36362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_EQOS,
36462306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
36562306a36Sopenharmony_ci		.sid = TEGRA234_SID_MGBE_VF3,
36662306a36Sopenharmony_ci		.regs = {
36762306a36Sopenharmony_ci			.sid = {
36862306a36Sopenharmony_ci				.override = 0x328,
36962306a36Sopenharmony_ci				.security = 0x32c,
37062306a36Sopenharmony_ci			},
37162306a36Sopenharmony_ci		},
37262306a36Sopenharmony_ci	}, {
37362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_SDMMCWAB,
37462306a36Sopenharmony_ci		.name = "sdmmcwab",
37562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_SDMMC_4,
37662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
37762306a36Sopenharmony_ci		.sid = TEGRA234_SID_SDMMC4,
37862306a36Sopenharmony_ci		.regs = {
37962306a36Sopenharmony_ci			.sid = {
38062306a36Sopenharmony_ci				.override = 0x338,
38162306a36Sopenharmony_ci				.security = 0x33c,
38262306a36Sopenharmony_ci			},
38362306a36Sopenharmony_ci		},
38462306a36Sopenharmony_ci	}, {
38562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_VICSRD,
38662306a36Sopenharmony_ci		.name = "vicsrd",
38762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_VIC,
38862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
38962306a36Sopenharmony_ci		.sid = TEGRA234_SID_VIC,
39062306a36Sopenharmony_ci		.regs = {
39162306a36Sopenharmony_ci			.sid = {
39262306a36Sopenharmony_ci				.override = 0x360,
39362306a36Sopenharmony_ci				.security = 0x364,
39462306a36Sopenharmony_ci			},
39562306a36Sopenharmony_ci		},
39662306a36Sopenharmony_ci	}, {
39762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_VICSWR,
39862306a36Sopenharmony_ci		.name = "vicswr",
39962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_VIC,
40062306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
40162306a36Sopenharmony_ci		.sid = TEGRA234_SID_VIC,
40262306a36Sopenharmony_ci		.regs = {
40362306a36Sopenharmony_ci			.sid = {
40462306a36Sopenharmony_ci				.override = 0x368,
40562306a36Sopenharmony_ci				.security = 0x36c,
40662306a36Sopenharmony_ci			},
40762306a36Sopenharmony_ci		},
40862306a36Sopenharmony_ci	}, {
40962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA1RDB1,
41062306a36Sopenharmony_ci		.name = "dla1rdb1",
41162306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA1,
41262306a36Sopenharmony_ci		.regs = {
41362306a36Sopenharmony_ci			.sid = {
41462306a36Sopenharmony_ci				.override = 0x370,
41562306a36Sopenharmony_ci				.security = 0x374,
41662306a36Sopenharmony_ci			},
41762306a36Sopenharmony_ci		},
41862306a36Sopenharmony_ci	}, {
41962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA1WRB,
42062306a36Sopenharmony_ci		.name = "dla1wrb",
42162306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA1,
42262306a36Sopenharmony_ci		.regs = {
42362306a36Sopenharmony_ci			.sid = {
42462306a36Sopenharmony_ci				.override = 0x378,
42562306a36Sopenharmony_ci				.security = 0x37c,
42662306a36Sopenharmony_ci			},
42762306a36Sopenharmony_ci		},
42862306a36Sopenharmony_ci	}, {
42962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_VI2W,
43062306a36Sopenharmony_ci		.name = "vi2w",
43162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_VI2,
43262306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_VI,
43362306a36Sopenharmony_ci		.sid = TEGRA234_SID_ISO_VI2,
43462306a36Sopenharmony_ci		.regs = {
43562306a36Sopenharmony_ci			.sid = {
43662306a36Sopenharmony_ci				.override = 0x380,
43762306a36Sopenharmony_ci				.security = 0x384,
43862306a36Sopenharmony_ci			},
43962306a36Sopenharmony_ci		},
44062306a36Sopenharmony_ci	}, {
44162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_VI2FALR,
44262306a36Sopenharmony_ci		.name = "vi2falr",
44362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_VI2FAL,
44462306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_VIFAL,
44562306a36Sopenharmony_ci		.sid = TEGRA234_SID_ISO_VI2FALC,
44662306a36Sopenharmony_ci		.regs = {
44762306a36Sopenharmony_ci			.sid = {
44862306a36Sopenharmony_ci				.override = 0x388,
44962306a36Sopenharmony_ci				.security = 0x38c,
45062306a36Sopenharmony_ci			},
45162306a36Sopenharmony_ci		},
45262306a36Sopenharmony_ci	}, {
45362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVDECSRD,
45462306a36Sopenharmony_ci		.name = "nvdecsrd",
45562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_NVDEC,
45662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
45762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDEC,
45862306a36Sopenharmony_ci		.regs = {
45962306a36Sopenharmony_ci			.sid = {
46062306a36Sopenharmony_ci				.override = 0x3c0,
46162306a36Sopenharmony_ci				.security = 0x3c4,
46262306a36Sopenharmony_ci			},
46362306a36Sopenharmony_ci		},
46462306a36Sopenharmony_ci	}, {
46562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVDECSWR,
46662306a36Sopenharmony_ci		.name = "nvdecswr",
46762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_NVDEC,
46862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
46962306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDEC,
47062306a36Sopenharmony_ci		.regs = {
47162306a36Sopenharmony_ci			.sid = {
47262306a36Sopenharmony_ci				.override = 0x3c8,
47362306a36Sopenharmony_ci				.security = 0x3cc,
47462306a36Sopenharmony_ci			},
47562306a36Sopenharmony_ci		},
47662306a36Sopenharmony_ci	}, {
47762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_APER,
47862306a36Sopenharmony_ci		.name = "aper",
47962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_APE,
48062306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_AUDIO,
48162306a36Sopenharmony_ci		.sid = TEGRA234_SID_APE,
48262306a36Sopenharmony_ci		.regs = {
48362306a36Sopenharmony_ci			.sid = {
48462306a36Sopenharmony_ci				.override = 0x3d0,
48562306a36Sopenharmony_ci				.security = 0x3d4,
48662306a36Sopenharmony_ci			},
48762306a36Sopenharmony_ci		},
48862306a36Sopenharmony_ci	}, {
48962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_APEW,
49062306a36Sopenharmony_ci		.name = "apew",
49162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_APE,
49262306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_AUDIO,
49362306a36Sopenharmony_ci		.sid = TEGRA234_SID_APE,
49462306a36Sopenharmony_ci		.regs = {
49562306a36Sopenharmony_ci			.sid = {
49662306a36Sopenharmony_ci				.override = 0x3d8,
49762306a36Sopenharmony_ci				.security = 0x3dc,
49862306a36Sopenharmony_ci			},
49962306a36Sopenharmony_ci		},
50062306a36Sopenharmony_ci	}, {
50162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_VI2FALW,
50262306a36Sopenharmony_ci		.name = "vi2falw",
50362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_VI2FAL,
50462306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_VIFAL,
50562306a36Sopenharmony_ci		.sid = TEGRA234_SID_ISO_VI2FALC,
50662306a36Sopenharmony_ci		.regs = {
50762306a36Sopenharmony_ci			.sid = {
50862306a36Sopenharmony_ci				.override = 0x3e0,
50962306a36Sopenharmony_ci				.security = 0x3e4,
51062306a36Sopenharmony_ci			},
51162306a36Sopenharmony_ci		},
51262306a36Sopenharmony_ci	}, {
51362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVJPGSRD,
51462306a36Sopenharmony_ci		.name = "nvjpgsrd",
51562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_NVJPG_0,
51662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
51762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVJPG,
51862306a36Sopenharmony_ci		.regs = {
51962306a36Sopenharmony_ci			.sid = {
52062306a36Sopenharmony_ci				.override = 0x3f0,
52162306a36Sopenharmony_ci				.security = 0x3f4,
52262306a36Sopenharmony_ci			},
52362306a36Sopenharmony_ci		},
52462306a36Sopenharmony_ci	}, {
52562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVJPGSWR,
52662306a36Sopenharmony_ci		.name = "nvjpgswr",
52762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_NVJPG_0,
52862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
52962306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVJPG,
53062306a36Sopenharmony_ci			.regs = {
53162306a36Sopenharmony_ci			.sid = {
53262306a36Sopenharmony_ci				.override = 0x3f8,
53362306a36Sopenharmony_ci				.security = 0x3fc,
53462306a36Sopenharmony_ci			},
53562306a36Sopenharmony_ci		},
53662306a36Sopenharmony_ci	}, {
53762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVDISPLAYR,
53862306a36Sopenharmony_ci		.name = "nvdisplayr",
53962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_DISPLAY,
54062306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_DISPLAY,
54162306a36Sopenharmony_ci		.sid = TEGRA234_SID_ISO_NVDISPLAY,
54262306a36Sopenharmony_ci		.regs = {
54362306a36Sopenharmony_ci			.sid = {
54462306a36Sopenharmony_ci				.override = 0x490,
54562306a36Sopenharmony_ci				.security = 0x494,
54662306a36Sopenharmony_ci			},
54762306a36Sopenharmony_ci		},
54862306a36Sopenharmony_ci	}, {
54962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_BPMPR,
55062306a36Sopenharmony_ci		.name = "bpmpr",
55162306a36Sopenharmony_ci		.sid = TEGRA234_SID_BPMP,
55262306a36Sopenharmony_ci		.regs = {
55362306a36Sopenharmony_ci			.sid = {
55462306a36Sopenharmony_ci				.override = 0x498,
55562306a36Sopenharmony_ci				.security = 0x49c,
55662306a36Sopenharmony_ci			},
55762306a36Sopenharmony_ci		},
55862306a36Sopenharmony_ci	}, {
55962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_BPMPW,
56062306a36Sopenharmony_ci		.name = "bpmpw",
56162306a36Sopenharmony_ci		.sid = TEGRA234_SID_BPMP,
56262306a36Sopenharmony_ci		.regs = {
56362306a36Sopenharmony_ci			.sid = {
56462306a36Sopenharmony_ci				.override = 0x4a0,
56562306a36Sopenharmony_ci				.security = 0x4a4,
56662306a36Sopenharmony_ci			},
56762306a36Sopenharmony_ci		},
56862306a36Sopenharmony_ci	}, {
56962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_BPMPDMAR,
57062306a36Sopenharmony_ci		.name = "bpmpdmar",
57162306a36Sopenharmony_ci		.sid = TEGRA234_SID_BPMP,
57262306a36Sopenharmony_ci		.regs = {
57362306a36Sopenharmony_ci			.sid = {
57462306a36Sopenharmony_ci				.override = 0x4a8,
57562306a36Sopenharmony_ci				.security = 0x4ac,
57662306a36Sopenharmony_ci			},
57762306a36Sopenharmony_ci		},
57862306a36Sopenharmony_ci	}, {
57962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_BPMPDMAW,
58062306a36Sopenharmony_ci		.name = "bpmpdmaw",
58162306a36Sopenharmony_ci		.sid = TEGRA234_SID_BPMP,
58262306a36Sopenharmony_ci		.regs = {
58362306a36Sopenharmony_ci			.sid = {
58462306a36Sopenharmony_ci				.override = 0x4b0,
58562306a36Sopenharmony_ci				.security = 0x4b4,
58662306a36Sopenharmony_ci			},
58762306a36Sopenharmony_ci		},
58862306a36Sopenharmony_ci	}, {
58962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_APEDMAR,
59062306a36Sopenharmony_ci		.name = "apedmar",
59162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_APEDMA,
59262306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_AUDIO,
59362306a36Sopenharmony_ci		.sid = TEGRA234_SID_APE,
59462306a36Sopenharmony_ci		.regs = {
59562306a36Sopenharmony_ci			.sid = {
59662306a36Sopenharmony_ci				.override = 0x4f8,
59762306a36Sopenharmony_ci				.security = 0x4fc,
59862306a36Sopenharmony_ci			},
59962306a36Sopenharmony_ci		},
60062306a36Sopenharmony_ci	}, {
60162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_APEDMAW,
60262306a36Sopenharmony_ci		.name = "apedmaw",
60362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_APEDMA,
60462306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_AUDIO,
60562306a36Sopenharmony_ci		.sid = TEGRA234_SID_APE,
60662306a36Sopenharmony_ci		.regs = {
60762306a36Sopenharmony_ci			.sid = {
60862306a36Sopenharmony_ci				.override = 0x500,
60962306a36Sopenharmony_ci				.security = 0x504,
61062306a36Sopenharmony_ci			},
61162306a36Sopenharmony_ci		},
61262306a36Sopenharmony_ci	}, {
61362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVDISPLAYR1,
61462306a36Sopenharmony_ci		.name = "nvdisplayr1",
61562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_DISPLAY,
61662306a36Sopenharmony_ci		.type = TEGRA_ICC_ISO_DISPLAY,
61762306a36Sopenharmony_ci		.sid = TEGRA234_SID_ISO_NVDISPLAY,
61862306a36Sopenharmony_ci		.regs = {
61962306a36Sopenharmony_ci			.sid = {
62062306a36Sopenharmony_ci				.override = 0x508,
62162306a36Sopenharmony_ci				.security = 0x50c,
62262306a36Sopenharmony_ci			},
62362306a36Sopenharmony_ci		},
62462306a36Sopenharmony_ci	}, {
62562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA0RDA,
62662306a36Sopenharmony_ci		.name = "dla0rda",
62762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA0,
62862306a36Sopenharmony_ci		.regs = {
62962306a36Sopenharmony_ci			.sid = {
63062306a36Sopenharmony_ci				.override = 0x5f0,
63162306a36Sopenharmony_ci				.security = 0x5f4,
63262306a36Sopenharmony_ci			},
63362306a36Sopenharmony_ci		},
63462306a36Sopenharmony_ci	}, {
63562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA0FALRDB,
63662306a36Sopenharmony_ci		.name = "dla0falrdb",
63762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA0,
63862306a36Sopenharmony_ci		.regs = {
63962306a36Sopenharmony_ci			.sid = {
64062306a36Sopenharmony_ci				.override = 0x5f8,
64162306a36Sopenharmony_ci				.security = 0x5fc,
64262306a36Sopenharmony_ci			},
64362306a36Sopenharmony_ci		},
64462306a36Sopenharmony_ci	}, {
64562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA0WRA,
64662306a36Sopenharmony_ci		.name = "dla0wra",
64762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA0,
64862306a36Sopenharmony_ci		.regs = {
64962306a36Sopenharmony_ci			.sid = {
65062306a36Sopenharmony_ci				.override = 0x600,
65162306a36Sopenharmony_ci				.security = 0x604,
65262306a36Sopenharmony_ci			},
65362306a36Sopenharmony_ci		},
65462306a36Sopenharmony_ci	}, {
65562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA0FALWRB,
65662306a36Sopenharmony_ci		.name = "dla0falwrb",
65762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA0,
65862306a36Sopenharmony_ci		.regs = {
65962306a36Sopenharmony_ci			.sid = {
66062306a36Sopenharmony_ci				.override = 0x608,
66162306a36Sopenharmony_ci				.security = 0x60c,
66262306a36Sopenharmony_ci			},
66362306a36Sopenharmony_ci		},
66462306a36Sopenharmony_ci	}, {
66562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA1RDA,
66662306a36Sopenharmony_ci		.name = "dla1rda",
66762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA1,
66862306a36Sopenharmony_ci		.regs = {
66962306a36Sopenharmony_ci			.sid = {
67062306a36Sopenharmony_ci				.override = 0x610,
67162306a36Sopenharmony_ci				.security = 0x614,
67262306a36Sopenharmony_ci			},
67362306a36Sopenharmony_ci		},
67462306a36Sopenharmony_ci	}, {
67562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA1FALRDB,
67662306a36Sopenharmony_ci		.name = "dla1falrdb",
67762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA1,
67862306a36Sopenharmony_ci		.regs = {
67962306a36Sopenharmony_ci			.sid = {
68062306a36Sopenharmony_ci				.override = 0x618,
68162306a36Sopenharmony_ci				.security = 0x61c,
68262306a36Sopenharmony_ci			},
68362306a36Sopenharmony_ci		},
68462306a36Sopenharmony_ci	}, {
68562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA1WRA,
68662306a36Sopenharmony_ci		.name = "dla1wra",
68762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA1,
68862306a36Sopenharmony_ci		.regs = {
68962306a36Sopenharmony_ci			.sid = {
69062306a36Sopenharmony_ci				.override = 0x620,
69162306a36Sopenharmony_ci				.security = 0x624,
69262306a36Sopenharmony_ci			},
69362306a36Sopenharmony_ci		},
69462306a36Sopenharmony_ci	}, {
69562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA1FALWRB,
69662306a36Sopenharmony_ci		.name = "dla1falwrb",
69762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA1,
69862306a36Sopenharmony_ci		.regs = {
69962306a36Sopenharmony_ci			.sid = {
70062306a36Sopenharmony_ci				.override = 0x628,
70162306a36Sopenharmony_ci				.security = 0x62c,
70262306a36Sopenharmony_ci			},
70362306a36Sopenharmony_ci		},
70462306a36Sopenharmony_ci	}, {
70562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE0R,
70662306a36Sopenharmony_ci		.name = "pcie0r",
70762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_0,
70862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
70962306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE0,
71062306a36Sopenharmony_ci		.regs = {
71162306a36Sopenharmony_ci			.sid = {
71262306a36Sopenharmony_ci				.override = 0x6c0,
71362306a36Sopenharmony_ci				.security = 0x6c4,
71462306a36Sopenharmony_ci			},
71562306a36Sopenharmony_ci		},
71662306a36Sopenharmony_ci	}, {
71762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE0W,
71862306a36Sopenharmony_ci		.name = "pcie0w",
71962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_0,
72062306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
72162306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE0,
72262306a36Sopenharmony_ci		.regs = {
72362306a36Sopenharmony_ci			.sid = {
72462306a36Sopenharmony_ci				.override = 0x6c8,
72562306a36Sopenharmony_ci				.security = 0x6cc,
72662306a36Sopenharmony_ci			},
72762306a36Sopenharmony_ci		},
72862306a36Sopenharmony_ci	}, {
72962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE1R,
73062306a36Sopenharmony_ci		.name = "pcie1r",
73162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_1,
73262306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
73362306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE1,
73462306a36Sopenharmony_ci		.regs = {
73562306a36Sopenharmony_ci			.sid = {
73662306a36Sopenharmony_ci				.override = 0x6d0,
73762306a36Sopenharmony_ci				.security = 0x6d4,
73862306a36Sopenharmony_ci			},
73962306a36Sopenharmony_ci		},
74062306a36Sopenharmony_ci	}, {
74162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE1W,
74262306a36Sopenharmony_ci		.name = "pcie1w",
74362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_1,
74462306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
74562306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE1,
74662306a36Sopenharmony_ci		.regs = {
74762306a36Sopenharmony_ci			.sid = {
74862306a36Sopenharmony_ci				.override = 0x6d8,
74962306a36Sopenharmony_ci				.security = 0x6dc,
75062306a36Sopenharmony_ci			},
75162306a36Sopenharmony_ci		},
75262306a36Sopenharmony_ci	}, {
75362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE2AR,
75462306a36Sopenharmony_ci		.name = "pcie2ar",
75562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_2,
75662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
75762306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE2,
75862306a36Sopenharmony_ci		.regs = {
75962306a36Sopenharmony_ci			.sid = {
76062306a36Sopenharmony_ci				.override = 0x6e0,
76162306a36Sopenharmony_ci				.security = 0x6e4,
76262306a36Sopenharmony_ci			},
76362306a36Sopenharmony_ci		},
76462306a36Sopenharmony_ci	}, {
76562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE2AW,
76662306a36Sopenharmony_ci		.name = "pcie2aw",
76762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_2,
76862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
76962306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE2,
77062306a36Sopenharmony_ci		.regs = {
77162306a36Sopenharmony_ci			.sid = {
77262306a36Sopenharmony_ci				.override = 0x6e8,
77362306a36Sopenharmony_ci				.security = 0x6ec,
77462306a36Sopenharmony_ci			},
77562306a36Sopenharmony_ci		},
77662306a36Sopenharmony_ci	}, {
77762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE3R,
77862306a36Sopenharmony_ci		.name = "pcie3r",
77962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_3,
78062306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
78162306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE3,
78262306a36Sopenharmony_ci		.regs = {
78362306a36Sopenharmony_ci			.sid = {
78462306a36Sopenharmony_ci				.override = 0x6f0,
78562306a36Sopenharmony_ci				.security = 0x6f4,
78662306a36Sopenharmony_ci			},
78762306a36Sopenharmony_ci		},
78862306a36Sopenharmony_ci	}, {
78962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE3W,
79062306a36Sopenharmony_ci		.name = "pcie3w",
79162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_3,
79262306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
79362306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE3,
79462306a36Sopenharmony_ci		.regs = {
79562306a36Sopenharmony_ci			.sid = {
79662306a36Sopenharmony_ci				.override = 0x6f8,
79762306a36Sopenharmony_ci				.security = 0x6fc,
79862306a36Sopenharmony_ci			},
79962306a36Sopenharmony_ci		},
80062306a36Sopenharmony_ci	}, {
80162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE4R,
80262306a36Sopenharmony_ci		.name = "pcie4r",
80362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_4,
80462306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
80562306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE4,
80662306a36Sopenharmony_ci		.regs = {
80762306a36Sopenharmony_ci			.sid = {
80862306a36Sopenharmony_ci				.override = 0x700,
80962306a36Sopenharmony_ci				.security = 0x704,
81062306a36Sopenharmony_ci			},
81162306a36Sopenharmony_ci		},
81262306a36Sopenharmony_ci	}, {
81362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE4W,
81462306a36Sopenharmony_ci		.name = "pcie4w",
81562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_4,
81662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
81762306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE4,
81862306a36Sopenharmony_ci		.regs = {
81962306a36Sopenharmony_ci			.sid = {
82062306a36Sopenharmony_ci				.override = 0x708,
82162306a36Sopenharmony_ci				.security = 0x70c,
82262306a36Sopenharmony_ci			},
82362306a36Sopenharmony_ci		},
82462306a36Sopenharmony_ci	}, {
82562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE5R,
82662306a36Sopenharmony_ci		.name = "pcie5r",
82762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_5,
82862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
82962306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE5,
83062306a36Sopenharmony_ci		.regs = {
83162306a36Sopenharmony_ci			.sid = {
83262306a36Sopenharmony_ci				.override = 0x710,
83362306a36Sopenharmony_ci				.security = 0x714,
83462306a36Sopenharmony_ci			},
83562306a36Sopenharmony_ci		},
83662306a36Sopenharmony_ci	}, {
83762306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE5W,
83862306a36Sopenharmony_ci		.name = "pcie5w",
83962306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_5,
84062306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
84162306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE5,
84262306a36Sopenharmony_ci		.regs = {
84362306a36Sopenharmony_ci			.sid = {
84462306a36Sopenharmony_ci				.override = 0x718,
84562306a36Sopenharmony_ci				.security = 0x71c,
84662306a36Sopenharmony_ci			},
84762306a36Sopenharmony_ci		},
84862306a36Sopenharmony_ci	}, {
84962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA0RDA1,
85062306a36Sopenharmony_ci		.name = "dla0rda1",
85162306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA0,
85262306a36Sopenharmony_ci		.regs = {
85362306a36Sopenharmony_ci			.sid = {
85462306a36Sopenharmony_ci				.override = 0x748,
85562306a36Sopenharmony_ci				.security = 0x74c,
85662306a36Sopenharmony_ci			},
85762306a36Sopenharmony_ci		},
85862306a36Sopenharmony_ci	}, {
85962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_DLA1RDA1,
86062306a36Sopenharmony_ci		.name = "dla1rda1",
86162306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVDLA1,
86262306a36Sopenharmony_ci		.regs = {
86362306a36Sopenharmony_ci			.sid = {
86462306a36Sopenharmony_ci				.override = 0x750,
86562306a36Sopenharmony_ci				.security = 0x754,
86662306a36Sopenharmony_ci			},
86762306a36Sopenharmony_ci		},
86862306a36Sopenharmony_ci	}, {
86962306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_PCIE5R1,
87062306a36Sopenharmony_ci		.name = "pcie5r1",
87162306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_PCIE_5,
87262306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
87362306a36Sopenharmony_ci		.sid = TEGRA234_SID_PCIE5,
87462306a36Sopenharmony_ci		.regs = {
87562306a36Sopenharmony_ci			.sid = {
87662306a36Sopenharmony_ci				.override = 0x778,
87762306a36Sopenharmony_ci				.security = 0x77c,
87862306a36Sopenharmony_ci			},
87962306a36Sopenharmony_ci		},
88062306a36Sopenharmony_ci	}, {
88162306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVJPG1SRD,
88262306a36Sopenharmony_ci		.name = "nvjpg1srd",
88362306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_NVJPG_1,
88462306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
88562306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVJPG1,
88662306a36Sopenharmony_ci		.regs = {
88762306a36Sopenharmony_ci			.sid = {
88862306a36Sopenharmony_ci				.override = 0x918,
88962306a36Sopenharmony_ci				.security = 0x91c,
89062306a36Sopenharmony_ci			},
89162306a36Sopenharmony_ci		},
89262306a36Sopenharmony_ci	}, {
89362306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVJPG1SWR,
89462306a36Sopenharmony_ci		.name = "nvjpg1swr",
89562306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_NVJPG_1,
89662306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
89762306a36Sopenharmony_ci		.sid = TEGRA234_SID_NVJPG1,
89862306a36Sopenharmony_ci		.regs = {
89962306a36Sopenharmony_ci			.sid = {
90062306a36Sopenharmony_ci				.override = 0x920,
90162306a36Sopenharmony_ci				.security = 0x924,
90262306a36Sopenharmony_ci			},
90362306a36Sopenharmony_ci		},
90462306a36Sopenharmony_ci	}, {
90562306a36Sopenharmony_ci		.id = TEGRA_ICC_MC_CPU_CLUSTER0,
90662306a36Sopenharmony_ci		.name = "sw_cluster0",
90762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_CPU_CLUSTER0,
90862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
90962306a36Sopenharmony_ci	}, {
91062306a36Sopenharmony_ci		.id = TEGRA_ICC_MC_CPU_CLUSTER1,
91162306a36Sopenharmony_ci		.name = "sw_cluster1",
91262306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_CPU_CLUSTER1,
91362306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
91462306a36Sopenharmony_ci	}, {
91562306a36Sopenharmony_ci		.id = TEGRA_ICC_MC_CPU_CLUSTER2,
91662306a36Sopenharmony_ci		.name = "sw_cluster2",
91762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_CPU_CLUSTER2,
91862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
91962306a36Sopenharmony_ci	}, {
92062306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVL1R,
92162306a36Sopenharmony_ci		.name = "nvl1r",
92262306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_GPU,
92362306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
92462306a36Sopenharmony_ci	}, {
92562306a36Sopenharmony_ci		.id = TEGRA234_MEMORY_CLIENT_NVL1W,
92662306a36Sopenharmony_ci		.name = "nvl1w",
92762306a36Sopenharmony_ci		.bpmp_id = TEGRA_ICC_BPMP_GPU,
92862306a36Sopenharmony_ci		.type = TEGRA_ICC_NISO,
92962306a36Sopenharmony_ci	},
93062306a36Sopenharmony_ci};
93162306a36Sopenharmony_ci
93262306a36Sopenharmony_ci/*
93362306a36Sopenharmony_ci * tegra234_mc_icc_set() - Pass MC client info to the BPMP-FW
93462306a36Sopenharmony_ci * @src: ICC node for Memory Controller's (MC) Client
93562306a36Sopenharmony_ci * @dst: ICC node for Memory Controller (MC)
93662306a36Sopenharmony_ci *
93762306a36Sopenharmony_ci * Passing the current request info from the MC to the BPMP-FW where
93862306a36Sopenharmony_ci * LA and PTSA registers are accessed and the final EMC freq is set
93962306a36Sopenharmony_ci * based on client_id, type, latency and bandwidth.
94062306a36Sopenharmony_ci * icc_set_bw() makes set_bw calls for both MC and EMC providers in
94162306a36Sopenharmony_ci * sequence. Both the calls are protected by 'mutex_lock(&icc_lock)'.
94262306a36Sopenharmony_ci * So, the data passed won't be updated by concurrent set calls from
94362306a36Sopenharmony_ci * other clients.
94462306a36Sopenharmony_ci */
94562306a36Sopenharmony_cistatic int tegra234_mc_icc_set(struct icc_node *src, struct icc_node *dst)
94662306a36Sopenharmony_ci{
94762306a36Sopenharmony_ci	struct tegra_mc *mc = icc_provider_to_tegra_mc(dst->provider);
94862306a36Sopenharmony_ci	struct mrq_bwmgr_int_request bwmgr_req = { 0 };
94962306a36Sopenharmony_ci	struct mrq_bwmgr_int_response bwmgr_resp = { 0 };
95062306a36Sopenharmony_ci	const struct tegra_mc_client *pclient = src->data;
95162306a36Sopenharmony_ci	struct tegra_bpmp_message msg;
95262306a36Sopenharmony_ci	int ret;
95362306a36Sopenharmony_ci
95462306a36Sopenharmony_ci	/*
95562306a36Sopenharmony_ci	 * Same Src and Dst node will happen during boot from icc_node_add().
95662306a36Sopenharmony_ci	 * This can be used to pre-initialize and set bandwidth for all clients
95762306a36Sopenharmony_ci	 * before their drivers are loaded. We are skipping this case as for us,
95862306a36Sopenharmony_ci	 * the pre-initialization already happened in Bootloader(MB2) and BPMP-FW.
95962306a36Sopenharmony_ci	 */
96062306a36Sopenharmony_ci	if (src->id == dst->id)
96162306a36Sopenharmony_ci		return 0;
96262306a36Sopenharmony_ci
96362306a36Sopenharmony_ci	if (!mc->bwmgr_mrq_supported)
96462306a36Sopenharmony_ci		return 0;
96562306a36Sopenharmony_ci
96662306a36Sopenharmony_ci	if (!mc->bpmp) {
96762306a36Sopenharmony_ci		dev_err(mc->dev, "BPMP reference NULL\n");
96862306a36Sopenharmony_ci		return -ENOENT;
96962306a36Sopenharmony_ci	}
97062306a36Sopenharmony_ci
97162306a36Sopenharmony_ci	if (pclient->type == TEGRA_ICC_NISO)
97262306a36Sopenharmony_ci		bwmgr_req.bwmgr_calc_set_req.niso_bw = src->avg_bw;
97362306a36Sopenharmony_ci	else
97462306a36Sopenharmony_ci		bwmgr_req.bwmgr_calc_set_req.iso_bw = src->avg_bw;
97562306a36Sopenharmony_ci
97662306a36Sopenharmony_ci	bwmgr_req.bwmgr_calc_set_req.client_id = pclient->bpmp_id;
97762306a36Sopenharmony_ci
97862306a36Sopenharmony_ci	bwmgr_req.cmd = CMD_BWMGR_INT_CALC_AND_SET;
97962306a36Sopenharmony_ci	bwmgr_req.bwmgr_calc_set_req.mc_floor = src->peak_bw;
98062306a36Sopenharmony_ci	bwmgr_req.bwmgr_calc_set_req.floor_unit = BWMGR_INT_UNIT_KBPS;
98162306a36Sopenharmony_ci
98262306a36Sopenharmony_ci	memset(&msg, 0, sizeof(msg));
98362306a36Sopenharmony_ci	msg.mrq = MRQ_BWMGR_INT;
98462306a36Sopenharmony_ci	msg.tx.data = &bwmgr_req;
98562306a36Sopenharmony_ci	msg.tx.size = sizeof(bwmgr_req);
98662306a36Sopenharmony_ci	msg.rx.data = &bwmgr_resp;
98762306a36Sopenharmony_ci	msg.rx.size = sizeof(bwmgr_resp);
98862306a36Sopenharmony_ci
98962306a36Sopenharmony_ci	if (pclient->bpmp_id >= TEGRA_ICC_BPMP_CPU_CLUSTER0 &&
99062306a36Sopenharmony_ci	    pclient->bpmp_id <= TEGRA_ICC_BPMP_CPU_CLUSTER2)
99162306a36Sopenharmony_ci		msg.flags = TEGRA_BPMP_MESSAGE_RESET;
99262306a36Sopenharmony_ci
99362306a36Sopenharmony_ci	ret = tegra_bpmp_transfer(mc->bpmp, &msg);
99462306a36Sopenharmony_ci	if (ret < 0) {
99562306a36Sopenharmony_ci		dev_err(mc->dev, "BPMP transfer failed: %d\n", ret);
99662306a36Sopenharmony_ci		goto error;
99762306a36Sopenharmony_ci	}
99862306a36Sopenharmony_ci	if (msg.rx.ret < 0) {
99962306a36Sopenharmony_ci		pr_err("failed to set bandwidth for %u: %d\n",
100062306a36Sopenharmony_ci		       bwmgr_req.bwmgr_calc_set_req.client_id, msg.rx.ret);
100162306a36Sopenharmony_ci		ret = -EINVAL;
100262306a36Sopenharmony_ci	}
100362306a36Sopenharmony_ci
100462306a36Sopenharmony_cierror:
100562306a36Sopenharmony_ci	return ret;
100662306a36Sopenharmony_ci}
100762306a36Sopenharmony_ci
100862306a36Sopenharmony_cistatic int tegra234_mc_icc_aggregate(struct icc_node *node, u32 tag, u32 avg_bw,
100962306a36Sopenharmony_ci				     u32 peak_bw, u32 *agg_avg, u32 *agg_peak)
101062306a36Sopenharmony_ci{
101162306a36Sopenharmony_ci	struct icc_provider *p = node->provider;
101262306a36Sopenharmony_ci	struct tegra_mc *mc = icc_provider_to_tegra_mc(p);
101362306a36Sopenharmony_ci
101462306a36Sopenharmony_ci	if (!mc->bwmgr_mrq_supported)
101562306a36Sopenharmony_ci		return 0;
101662306a36Sopenharmony_ci
101762306a36Sopenharmony_ci	if (node->id == TEGRA_ICC_MC_CPU_CLUSTER0 ||
101862306a36Sopenharmony_ci	    node->id == TEGRA_ICC_MC_CPU_CLUSTER1 ||
101962306a36Sopenharmony_ci	    node->id == TEGRA_ICC_MC_CPU_CLUSTER2) {
102062306a36Sopenharmony_ci		if (mc)
102162306a36Sopenharmony_ci			peak_bw = peak_bw * mc->num_channels;
102262306a36Sopenharmony_ci	}
102362306a36Sopenharmony_ci
102462306a36Sopenharmony_ci	*agg_avg += avg_bw;
102562306a36Sopenharmony_ci	*agg_peak = max(*agg_peak, peak_bw);
102662306a36Sopenharmony_ci
102762306a36Sopenharmony_ci	return 0;
102862306a36Sopenharmony_ci}
102962306a36Sopenharmony_ci
103062306a36Sopenharmony_cistatic int tegra234_mc_icc_get_init_bw(struct icc_node *node, u32 *avg, u32 *peak)
103162306a36Sopenharmony_ci{
103262306a36Sopenharmony_ci	*avg = 0;
103362306a36Sopenharmony_ci	*peak = 0;
103462306a36Sopenharmony_ci
103562306a36Sopenharmony_ci	return 0;
103662306a36Sopenharmony_ci}
103762306a36Sopenharmony_ci
103862306a36Sopenharmony_cistatic const struct tegra_mc_icc_ops tegra234_mc_icc_ops = {
103962306a36Sopenharmony_ci	.xlate = tegra_mc_icc_xlate,
104062306a36Sopenharmony_ci	.aggregate = tegra234_mc_icc_aggregate,
104162306a36Sopenharmony_ci	.get_bw = tegra234_mc_icc_get_init_bw,
104262306a36Sopenharmony_ci	.set = tegra234_mc_icc_set,
104362306a36Sopenharmony_ci};
104462306a36Sopenharmony_ci
104562306a36Sopenharmony_ciconst struct tegra_mc_soc tegra234_mc_soc = {
104662306a36Sopenharmony_ci	.num_clients = ARRAY_SIZE(tegra234_mc_clients),
104762306a36Sopenharmony_ci	.clients = tegra234_mc_clients,
104862306a36Sopenharmony_ci	.num_address_bits = 40,
104962306a36Sopenharmony_ci	.num_channels = 16,
105062306a36Sopenharmony_ci	.client_id_mask = 0x1ff,
105162306a36Sopenharmony_ci	.intmask = MC_INT_DECERR_ROUTE_SANITY |
105262306a36Sopenharmony_ci		   MC_INT_DECERR_GENERALIZED_CARVEOUT | MC_INT_DECERR_MTS |
105362306a36Sopenharmony_ci		   MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
105462306a36Sopenharmony_ci		   MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM,
105562306a36Sopenharmony_ci	.has_addr_hi_reg = true,
105662306a36Sopenharmony_ci	.ops = &tegra186_mc_ops,
105762306a36Sopenharmony_ci	.icc_ops = &tegra234_mc_icc_ops,
105862306a36Sopenharmony_ci	.ch_intmask = 0x0000ff00,
105962306a36Sopenharmony_ci	.global_intstatus_channel_shift = 8,
106062306a36Sopenharmony_ci	/*
106162306a36Sopenharmony_ci	 * Additionally, there are lite carveouts but those are not currently
106262306a36Sopenharmony_ci	 * supported.
106362306a36Sopenharmony_ci	 */
106462306a36Sopenharmony_ci	.num_carveouts = 32,
106562306a36Sopenharmony_ci};
1066