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/mm.h>
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <dt-bindings/memory/tegra114-mc.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include "mc.h"
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cistatic const struct tegra_mc_client tegra114_mc_clients[] = {
1462306a36Sopenharmony_ci	{
1562306a36Sopenharmony_ci		.id = 0x00,
1662306a36Sopenharmony_ci		.name = "ptcr",
1762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_PTC,
1862306a36Sopenharmony_ci		.regs = {
1962306a36Sopenharmony_ci			.la = {
2062306a36Sopenharmony_ci				.reg = 0x34c,
2162306a36Sopenharmony_ci				.shift = 0,
2262306a36Sopenharmony_ci				.mask = 0xff,
2362306a36Sopenharmony_ci				.def = 0x0,
2462306a36Sopenharmony_ci			},
2562306a36Sopenharmony_ci		},
2662306a36Sopenharmony_ci	}, {
2762306a36Sopenharmony_ci		.id = 0x01,
2862306a36Sopenharmony_ci		.name = "display0a",
2962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_DC,
3062306a36Sopenharmony_ci		.regs = {
3162306a36Sopenharmony_ci			.smmu = {
3262306a36Sopenharmony_ci				.reg = 0x228,
3362306a36Sopenharmony_ci				.bit = 1,
3462306a36Sopenharmony_ci			},
3562306a36Sopenharmony_ci			.la = {
3662306a36Sopenharmony_ci				.reg = 0x2e8,
3762306a36Sopenharmony_ci				.shift = 0,
3862306a36Sopenharmony_ci				.mask = 0xff,
3962306a36Sopenharmony_ci				.def = 0x4e,
4062306a36Sopenharmony_ci			},
4162306a36Sopenharmony_ci		},
4262306a36Sopenharmony_ci	}, {
4362306a36Sopenharmony_ci		.id = 0x02,
4462306a36Sopenharmony_ci		.name = "display0ab",
4562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_DCB,
4662306a36Sopenharmony_ci		.regs = {
4762306a36Sopenharmony_ci			.smmu = {
4862306a36Sopenharmony_ci				.reg = 0x228,
4962306a36Sopenharmony_ci				.bit = 2,
5062306a36Sopenharmony_ci			},
5162306a36Sopenharmony_ci			.la = {
5262306a36Sopenharmony_ci				.reg = 0x2f4,
5362306a36Sopenharmony_ci				.shift = 0,
5462306a36Sopenharmony_ci				.mask = 0xff,
5562306a36Sopenharmony_ci				.def = 0x4e,
5662306a36Sopenharmony_ci			},
5762306a36Sopenharmony_ci		},
5862306a36Sopenharmony_ci	}, {
5962306a36Sopenharmony_ci		.id = 0x03,
6062306a36Sopenharmony_ci		.name = "display0b",
6162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_DC,
6262306a36Sopenharmony_ci		.regs = {
6362306a36Sopenharmony_ci			.smmu = {
6462306a36Sopenharmony_ci				.reg = 0x228,
6562306a36Sopenharmony_ci				.bit = 3,
6662306a36Sopenharmony_ci			},
6762306a36Sopenharmony_ci			.la = {
6862306a36Sopenharmony_ci				.reg = 0x2e8,
6962306a36Sopenharmony_ci				.shift = 16,
7062306a36Sopenharmony_ci				.mask = 0xff,
7162306a36Sopenharmony_ci				.def = 0x4e,
7262306a36Sopenharmony_ci			},
7362306a36Sopenharmony_ci		},
7462306a36Sopenharmony_ci	}, {
7562306a36Sopenharmony_ci		.id = 0x04,
7662306a36Sopenharmony_ci		.name = "display0bb",
7762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_DCB,
7862306a36Sopenharmony_ci		.regs = {
7962306a36Sopenharmony_ci			.smmu = {
8062306a36Sopenharmony_ci				.reg = 0x228,
8162306a36Sopenharmony_ci				.bit = 4,
8262306a36Sopenharmony_ci			},
8362306a36Sopenharmony_ci			.la = {
8462306a36Sopenharmony_ci				.reg = 0x2f4,
8562306a36Sopenharmony_ci				.shift = 16,
8662306a36Sopenharmony_ci				.mask = 0xff,
8762306a36Sopenharmony_ci				.def = 0x4e,
8862306a36Sopenharmony_ci			},
8962306a36Sopenharmony_ci		},
9062306a36Sopenharmony_ci	}, {
9162306a36Sopenharmony_ci		.id = 0x05,
9262306a36Sopenharmony_ci		.name = "display0c",
9362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_DC,
9462306a36Sopenharmony_ci		.regs = {
9562306a36Sopenharmony_ci			.smmu = {
9662306a36Sopenharmony_ci				.reg = 0x228,
9762306a36Sopenharmony_ci				.bit = 5,
9862306a36Sopenharmony_ci			},
9962306a36Sopenharmony_ci			.la = {
10062306a36Sopenharmony_ci				.reg = 0x2ec,
10162306a36Sopenharmony_ci				.shift = 0,
10262306a36Sopenharmony_ci				.mask = 0xff,
10362306a36Sopenharmony_ci				.def = 0x4e,
10462306a36Sopenharmony_ci			},
10562306a36Sopenharmony_ci		},
10662306a36Sopenharmony_ci	}, {
10762306a36Sopenharmony_ci		.id = 0x06,
10862306a36Sopenharmony_ci		.name = "display0cb",
10962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_DCB,
11062306a36Sopenharmony_ci		.regs = {
11162306a36Sopenharmony_ci			.smmu = {
11262306a36Sopenharmony_ci				.reg = 0x228,
11362306a36Sopenharmony_ci				.bit = 6,
11462306a36Sopenharmony_ci			},
11562306a36Sopenharmony_ci			.la = {
11662306a36Sopenharmony_ci				.reg = 0x2f8,
11762306a36Sopenharmony_ci				.shift = 0,
11862306a36Sopenharmony_ci				.mask = 0xff,
11962306a36Sopenharmony_ci				.def = 0x4e,
12062306a36Sopenharmony_ci			},
12162306a36Sopenharmony_ci		},
12262306a36Sopenharmony_ci	}, {
12362306a36Sopenharmony_ci		.id = 0x09,
12462306a36Sopenharmony_ci		.name = "eppup",
12562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_EPP,
12662306a36Sopenharmony_ci		.regs = {
12762306a36Sopenharmony_ci			.smmu = {
12862306a36Sopenharmony_ci				.reg = 0x228,
12962306a36Sopenharmony_ci				.bit = 9,
13062306a36Sopenharmony_ci			},
13162306a36Sopenharmony_ci			.la = {
13262306a36Sopenharmony_ci				.reg = 0x300,
13362306a36Sopenharmony_ci				.shift = 0,
13462306a36Sopenharmony_ci				.mask = 0xff,
13562306a36Sopenharmony_ci				.def = 0x33,
13662306a36Sopenharmony_ci			},
13762306a36Sopenharmony_ci		},
13862306a36Sopenharmony_ci	}, {
13962306a36Sopenharmony_ci		.id = 0x0a,
14062306a36Sopenharmony_ci		.name = "g2pr",
14162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_G2,
14262306a36Sopenharmony_ci		.regs = {
14362306a36Sopenharmony_ci			.smmu = {
14462306a36Sopenharmony_ci				.reg = 0x228,
14562306a36Sopenharmony_ci				.bit = 10,
14662306a36Sopenharmony_ci			},
14762306a36Sopenharmony_ci			.la = {
14862306a36Sopenharmony_ci				.reg = 0x308,
14962306a36Sopenharmony_ci				.shift = 0,
15062306a36Sopenharmony_ci				.mask = 0xff,
15162306a36Sopenharmony_ci				.def = 0x09,
15262306a36Sopenharmony_ci			},
15362306a36Sopenharmony_ci		},
15462306a36Sopenharmony_ci	}, {
15562306a36Sopenharmony_ci		.id = 0x0b,
15662306a36Sopenharmony_ci		.name = "g2sr",
15762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_G2,
15862306a36Sopenharmony_ci		.regs = {
15962306a36Sopenharmony_ci			.smmu = {
16062306a36Sopenharmony_ci				.reg = 0x228,
16162306a36Sopenharmony_ci				.bit = 11,
16262306a36Sopenharmony_ci			},
16362306a36Sopenharmony_ci			.la = {
16462306a36Sopenharmony_ci				.reg = 0x308,
16562306a36Sopenharmony_ci				.shift = 16,
16662306a36Sopenharmony_ci				.mask = 0xff,
16762306a36Sopenharmony_ci				.def = 0x09,
16862306a36Sopenharmony_ci			},
16962306a36Sopenharmony_ci		},
17062306a36Sopenharmony_ci	}, {
17162306a36Sopenharmony_ci		.id = 0x0f,
17262306a36Sopenharmony_ci		.name = "avpcarm7r",
17362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_AVPC,
17462306a36Sopenharmony_ci		.regs = {
17562306a36Sopenharmony_ci			.smmu = {
17662306a36Sopenharmony_ci				.reg = 0x228,
17762306a36Sopenharmony_ci				.bit = 15,
17862306a36Sopenharmony_ci			},
17962306a36Sopenharmony_ci			.la = {
18062306a36Sopenharmony_ci				.reg = 0x2e4,
18162306a36Sopenharmony_ci				.shift = 0,
18262306a36Sopenharmony_ci				.mask = 0xff,
18362306a36Sopenharmony_ci				.def = 0x04,
18462306a36Sopenharmony_ci			},
18562306a36Sopenharmony_ci		},
18662306a36Sopenharmony_ci	}, {
18762306a36Sopenharmony_ci		.id = 0x10,
18862306a36Sopenharmony_ci		.name = "displayhc",
18962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_DC,
19062306a36Sopenharmony_ci		.regs = {
19162306a36Sopenharmony_ci			.smmu = {
19262306a36Sopenharmony_ci				.reg = 0x228,
19362306a36Sopenharmony_ci				.bit = 16,
19462306a36Sopenharmony_ci			},
19562306a36Sopenharmony_ci			.la = {
19662306a36Sopenharmony_ci				.reg = 0x2f0,
19762306a36Sopenharmony_ci				.shift = 0,
19862306a36Sopenharmony_ci				.mask = 0xff,
19962306a36Sopenharmony_ci				.def = 0x68,
20062306a36Sopenharmony_ci			},
20162306a36Sopenharmony_ci		},
20262306a36Sopenharmony_ci	}, {
20362306a36Sopenharmony_ci		.id = 0x11,
20462306a36Sopenharmony_ci		.name = "displayhcb",
20562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_DCB,
20662306a36Sopenharmony_ci		.regs = {
20762306a36Sopenharmony_ci			.smmu = {
20862306a36Sopenharmony_ci				.reg = 0x228,
20962306a36Sopenharmony_ci				.bit = 17,
21062306a36Sopenharmony_ci			},
21162306a36Sopenharmony_ci			.la = {
21262306a36Sopenharmony_ci				.reg = 0x2fc,
21362306a36Sopenharmony_ci				.shift = 0,
21462306a36Sopenharmony_ci				.mask = 0xff,
21562306a36Sopenharmony_ci				.def = 0x68,
21662306a36Sopenharmony_ci			},
21762306a36Sopenharmony_ci		},
21862306a36Sopenharmony_ci	}, {
21962306a36Sopenharmony_ci		.id = 0x12,
22062306a36Sopenharmony_ci		.name = "fdcdrd",
22162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
22262306a36Sopenharmony_ci		.regs = {
22362306a36Sopenharmony_ci			.smmu = {
22462306a36Sopenharmony_ci				.reg = 0x228,
22562306a36Sopenharmony_ci				.bit = 18,
22662306a36Sopenharmony_ci			},
22762306a36Sopenharmony_ci			.la = {
22862306a36Sopenharmony_ci				.reg = 0x334,
22962306a36Sopenharmony_ci				.shift = 0,
23062306a36Sopenharmony_ci				.mask = 0xff,
23162306a36Sopenharmony_ci				.def = 0x0c,
23262306a36Sopenharmony_ci			},
23362306a36Sopenharmony_ci		},
23462306a36Sopenharmony_ci	}, {
23562306a36Sopenharmony_ci		.id = 0x13,
23662306a36Sopenharmony_ci		.name = "fdcdrd2",
23762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
23862306a36Sopenharmony_ci		.regs = {
23962306a36Sopenharmony_ci			.smmu = {
24062306a36Sopenharmony_ci				.reg = 0x228,
24162306a36Sopenharmony_ci				.bit = 19,
24262306a36Sopenharmony_ci			},
24362306a36Sopenharmony_ci			.la = {
24462306a36Sopenharmony_ci				.reg = 0x33c,
24562306a36Sopenharmony_ci				.shift = 0,
24662306a36Sopenharmony_ci				.mask = 0xff,
24762306a36Sopenharmony_ci				.def = 0x0c,
24862306a36Sopenharmony_ci			},
24962306a36Sopenharmony_ci		},
25062306a36Sopenharmony_ci	}, {
25162306a36Sopenharmony_ci		.id = 0x14,
25262306a36Sopenharmony_ci		.name = "g2dr",
25362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_G2,
25462306a36Sopenharmony_ci		.regs = {
25562306a36Sopenharmony_ci			.smmu = {
25662306a36Sopenharmony_ci				.reg = 0x228,
25762306a36Sopenharmony_ci				.bit = 20,
25862306a36Sopenharmony_ci			},
25962306a36Sopenharmony_ci			.la = {
26062306a36Sopenharmony_ci				.reg = 0x30c,
26162306a36Sopenharmony_ci				.shift = 0,
26262306a36Sopenharmony_ci				.mask = 0xff,
26362306a36Sopenharmony_ci				.def = 0x0a,
26462306a36Sopenharmony_ci			},
26562306a36Sopenharmony_ci		},
26662306a36Sopenharmony_ci	}, {
26762306a36Sopenharmony_ci		.id = 0x15,
26862306a36Sopenharmony_ci		.name = "hdar",
26962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_HDA,
27062306a36Sopenharmony_ci		.regs = {
27162306a36Sopenharmony_ci			.smmu = {
27262306a36Sopenharmony_ci				.reg = 0x228,
27362306a36Sopenharmony_ci				.bit = 21,
27462306a36Sopenharmony_ci			},
27562306a36Sopenharmony_ci			.la = {
27662306a36Sopenharmony_ci				.reg = 0x318,
27762306a36Sopenharmony_ci				.shift = 0,
27862306a36Sopenharmony_ci				.mask = 0xff,
27962306a36Sopenharmony_ci				.def = 0xff,
28062306a36Sopenharmony_ci			},
28162306a36Sopenharmony_ci		},
28262306a36Sopenharmony_ci	}, {
28362306a36Sopenharmony_ci		.id = 0x16,
28462306a36Sopenharmony_ci		.name = "host1xdmar",
28562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_HC,
28662306a36Sopenharmony_ci		.regs = {
28762306a36Sopenharmony_ci			.smmu = {
28862306a36Sopenharmony_ci				.reg = 0x228,
28962306a36Sopenharmony_ci				.bit = 22,
29062306a36Sopenharmony_ci			},
29162306a36Sopenharmony_ci			.la = {
29262306a36Sopenharmony_ci				.reg = 0x310,
29362306a36Sopenharmony_ci				.shift = 0,
29462306a36Sopenharmony_ci				.mask = 0xff,
29562306a36Sopenharmony_ci				.def = 0x10,
29662306a36Sopenharmony_ci			},
29762306a36Sopenharmony_ci		},
29862306a36Sopenharmony_ci	}, {
29962306a36Sopenharmony_ci		.id = 0x17,
30062306a36Sopenharmony_ci		.name = "host1xr",
30162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_HC,
30262306a36Sopenharmony_ci		.regs = {
30362306a36Sopenharmony_ci			.smmu = {
30462306a36Sopenharmony_ci				.reg = 0x228,
30562306a36Sopenharmony_ci				.bit = 23,
30662306a36Sopenharmony_ci			},
30762306a36Sopenharmony_ci			.la = {
30862306a36Sopenharmony_ci				.reg = 0x310,
30962306a36Sopenharmony_ci				.shift = 16,
31062306a36Sopenharmony_ci				.mask = 0xff,
31162306a36Sopenharmony_ci				.def = 0xa5,
31262306a36Sopenharmony_ci			},
31362306a36Sopenharmony_ci		},
31462306a36Sopenharmony_ci	}, {
31562306a36Sopenharmony_ci		.id = 0x18,
31662306a36Sopenharmony_ci		.name = "idxsrd",
31762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
31862306a36Sopenharmony_ci		.regs = {
31962306a36Sopenharmony_ci			.smmu = {
32062306a36Sopenharmony_ci				.reg = 0x228,
32162306a36Sopenharmony_ci				.bit = 24,
32262306a36Sopenharmony_ci			},
32362306a36Sopenharmony_ci			.la = {
32462306a36Sopenharmony_ci				.reg = 0x334,
32562306a36Sopenharmony_ci				.shift = 16,
32662306a36Sopenharmony_ci				.mask = 0xff,
32762306a36Sopenharmony_ci				.def = 0x0b,
32862306a36Sopenharmony_ci			},
32962306a36Sopenharmony_ci		},
33062306a36Sopenharmony_ci	}, {
33162306a36Sopenharmony_ci		.id = 0x1c,
33262306a36Sopenharmony_ci		.name = "msencsrd",
33362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_MSENC,
33462306a36Sopenharmony_ci		.regs = {
33562306a36Sopenharmony_ci			.smmu = {
33662306a36Sopenharmony_ci				.reg = 0x228,
33762306a36Sopenharmony_ci				.bit = 28,
33862306a36Sopenharmony_ci			},
33962306a36Sopenharmony_ci			.la = {
34062306a36Sopenharmony_ci				.reg = 0x328,
34162306a36Sopenharmony_ci				.shift = 0,
34262306a36Sopenharmony_ci				.mask = 0xff,
34362306a36Sopenharmony_ci				.def = 0x80,
34462306a36Sopenharmony_ci			},
34562306a36Sopenharmony_ci		},
34662306a36Sopenharmony_ci	}, {
34762306a36Sopenharmony_ci		.id = 0x1d,
34862306a36Sopenharmony_ci		.name = "ppcsahbdmar",
34962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_PPCS,
35062306a36Sopenharmony_ci		.regs = {
35162306a36Sopenharmony_ci			.smmu = {
35262306a36Sopenharmony_ci				.reg = 0x228,
35362306a36Sopenharmony_ci				.bit = 29,
35462306a36Sopenharmony_ci			},
35562306a36Sopenharmony_ci			.la = {
35662306a36Sopenharmony_ci				.reg = 0x344,
35762306a36Sopenharmony_ci				.shift = 0,
35862306a36Sopenharmony_ci				.mask = 0xff,
35962306a36Sopenharmony_ci				.def = 0x50,
36062306a36Sopenharmony_ci			},
36162306a36Sopenharmony_ci		},
36262306a36Sopenharmony_ci	}, {
36362306a36Sopenharmony_ci		.id = 0x1e,
36462306a36Sopenharmony_ci		.name = "ppcsahbslvr",
36562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_PPCS,
36662306a36Sopenharmony_ci		.regs = {
36762306a36Sopenharmony_ci			.smmu = {
36862306a36Sopenharmony_ci				.reg = 0x228,
36962306a36Sopenharmony_ci				.bit = 30,
37062306a36Sopenharmony_ci			},
37162306a36Sopenharmony_ci			.la = {
37262306a36Sopenharmony_ci				.reg = 0x344,
37362306a36Sopenharmony_ci				.shift = 16,
37462306a36Sopenharmony_ci				.mask = 0xff,
37562306a36Sopenharmony_ci				.def = 0xe8,
37662306a36Sopenharmony_ci			},
37762306a36Sopenharmony_ci		},
37862306a36Sopenharmony_ci	}, {
37962306a36Sopenharmony_ci		.id = 0x20,
38062306a36Sopenharmony_ci		.name = "texl2srd",
38162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
38262306a36Sopenharmony_ci		.regs = {
38362306a36Sopenharmony_ci			.smmu = {
38462306a36Sopenharmony_ci				.reg = 0x22c,
38562306a36Sopenharmony_ci				.bit = 0,
38662306a36Sopenharmony_ci			},
38762306a36Sopenharmony_ci			.la = {
38862306a36Sopenharmony_ci				.reg = 0x338,
38962306a36Sopenharmony_ci				.shift = 0,
39062306a36Sopenharmony_ci				.mask = 0xff,
39162306a36Sopenharmony_ci				.def = 0x0c,
39262306a36Sopenharmony_ci			},
39362306a36Sopenharmony_ci		},
39462306a36Sopenharmony_ci	}, {
39562306a36Sopenharmony_ci		.id = 0x22,
39662306a36Sopenharmony_ci		.name = "vdebsevr",
39762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VDE,
39862306a36Sopenharmony_ci		.regs = {
39962306a36Sopenharmony_ci			.smmu = {
40062306a36Sopenharmony_ci				.reg = 0x22c,
40162306a36Sopenharmony_ci				.bit = 2,
40262306a36Sopenharmony_ci			},
40362306a36Sopenharmony_ci			.la = {
40462306a36Sopenharmony_ci				.reg = 0x354,
40562306a36Sopenharmony_ci				.shift = 0,
40662306a36Sopenharmony_ci				.mask = 0xff,
40762306a36Sopenharmony_ci				.def = 0xff,
40862306a36Sopenharmony_ci			},
40962306a36Sopenharmony_ci		},
41062306a36Sopenharmony_ci	}, {
41162306a36Sopenharmony_ci		.id = 0x23,
41262306a36Sopenharmony_ci		.name = "vdember",
41362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VDE,
41462306a36Sopenharmony_ci		.regs = {
41562306a36Sopenharmony_ci			.smmu = {
41662306a36Sopenharmony_ci				.reg = 0x22c,
41762306a36Sopenharmony_ci				.bit = 3,
41862306a36Sopenharmony_ci			},
41962306a36Sopenharmony_ci			.la = {
42062306a36Sopenharmony_ci				.reg = 0x354,
42162306a36Sopenharmony_ci				.shift = 16,
42262306a36Sopenharmony_ci				.mask = 0xff,
42362306a36Sopenharmony_ci				.def = 0xff,
42462306a36Sopenharmony_ci			},
42562306a36Sopenharmony_ci		},
42662306a36Sopenharmony_ci	}, {
42762306a36Sopenharmony_ci		.id = 0x24,
42862306a36Sopenharmony_ci		.name = "vdemcer",
42962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VDE,
43062306a36Sopenharmony_ci		.regs = {
43162306a36Sopenharmony_ci			.smmu = {
43262306a36Sopenharmony_ci				.reg = 0x22c,
43362306a36Sopenharmony_ci				.bit = 4,
43462306a36Sopenharmony_ci			},
43562306a36Sopenharmony_ci			.la = {
43662306a36Sopenharmony_ci				.reg = 0x358,
43762306a36Sopenharmony_ci				.shift = 0,
43862306a36Sopenharmony_ci				.mask = 0xff,
43962306a36Sopenharmony_ci				.def = 0xb8,
44062306a36Sopenharmony_ci			},
44162306a36Sopenharmony_ci		},
44262306a36Sopenharmony_ci	}, {
44362306a36Sopenharmony_ci		.id = 0x25,
44462306a36Sopenharmony_ci		.name = "vdetper",
44562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VDE,
44662306a36Sopenharmony_ci		.regs = {
44762306a36Sopenharmony_ci			.smmu = {
44862306a36Sopenharmony_ci				.reg = 0x22c,
44962306a36Sopenharmony_ci				.bit = 5,
45062306a36Sopenharmony_ci			},
45162306a36Sopenharmony_ci			.la = {
45262306a36Sopenharmony_ci				.reg = 0x358,
45362306a36Sopenharmony_ci				.shift = 16,
45462306a36Sopenharmony_ci				.mask = 0xff,
45562306a36Sopenharmony_ci				.def = 0xee,
45662306a36Sopenharmony_ci			},
45762306a36Sopenharmony_ci		},
45862306a36Sopenharmony_ci	}, {
45962306a36Sopenharmony_ci		.id = 0x26,
46062306a36Sopenharmony_ci		.name = "mpcorelpr",
46162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_MPCORELP,
46262306a36Sopenharmony_ci		.regs = {
46362306a36Sopenharmony_ci			.la = {
46462306a36Sopenharmony_ci				.reg = 0x324,
46562306a36Sopenharmony_ci				.shift = 0,
46662306a36Sopenharmony_ci				.mask = 0xff,
46762306a36Sopenharmony_ci				.def = 0x04,
46862306a36Sopenharmony_ci			},
46962306a36Sopenharmony_ci		},
47062306a36Sopenharmony_ci	}, {
47162306a36Sopenharmony_ci		.id = 0x27,
47262306a36Sopenharmony_ci		.name = "mpcorer",
47362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_MPCORE,
47462306a36Sopenharmony_ci		.regs = {
47562306a36Sopenharmony_ci			.la = {
47662306a36Sopenharmony_ci				.reg = 0x320,
47762306a36Sopenharmony_ci				.shift = 0,
47862306a36Sopenharmony_ci				.mask = 0xff,
47962306a36Sopenharmony_ci				.def = 0x04,
48062306a36Sopenharmony_ci			},
48162306a36Sopenharmony_ci		},
48262306a36Sopenharmony_ci	}, {
48362306a36Sopenharmony_ci		.id = 0x28,
48462306a36Sopenharmony_ci		.name = "eppu",
48562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_EPP,
48662306a36Sopenharmony_ci		.regs = {
48762306a36Sopenharmony_ci			.smmu = {
48862306a36Sopenharmony_ci				.reg = 0x22c,
48962306a36Sopenharmony_ci				.bit = 8,
49062306a36Sopenharmony_ci			},
49162306a36Sopenharmony_ci			.la = {
49262306a36Sopenharmony_ci				.reg = 0x300,
49362306a36Sopenharmony_ci				.shift = 16,
49462306a36Sopenharmony_ci				.mask = 0xff,
49562306a36Sopenharmony_ci				.def = 0x33,
49662306a36Sopenharmony_ci			},
49762306a36Sopenharmony_ci		},
49862306a36Sopenharmony_ci	}, {
49962306a36Sopenharmony_ci		.id = 0x29,
50062306a36Sopenharmony_ci		.name = "eppv",
50162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_EPP,
50262306a36Sopenharmony_ci		.regs = {
50362306a36Sopenharmony_ci			.smmu = {
50462306a36Sopenharmony_ci				.reg = 0x22c,
50562306a36Sopenharmony_ci				.bit = 9,
50662306a36Sopenharmony_ci			},
50762306a36Sopenharmony_ci			.la = {
50862306a36Sopenharmony_ci				.reg = 0x304,
50962306a36Sopenharmony_ci				.shift = 0,
51062306a36Sopenharmony_ci				.mask = 0xff,
51162306a36Sopenharmony_ci				.def = 0x6c,
51262306a36Sopenharmony_ci			},
51362306a36Sopenharmony_ci		},
51462306a36Sopenharmony_ci	}, {
51562306a36Sopenharmony_ci		.id = 0x2a,
51662306a36Sopenharmony_ci		.name = "eppy",
51762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_EPP,
51862306a36Sopenharmony_ci		.regs = {
51962306a36Sopenharmony_ci			.smmu = {
52062306a36Sopenharmony_ci				.reg = 0x22c,
52162306a36Sopenharmony_ci				.bit = 10,
52262306a36Sopenharmony_ci			},
52362306a36Sopenharmony_ci			.la = {
52462306a36Sopenharmony_ci				.reg = 0x304,
52562306a36Sopenharmony_ci				.shift = 16,
52662306a36Sopenharmony_ci				.mask = 0xff,
52762306a36Sopenharmony_ci				.def = 0x6c,
52862306a36Sopenharmony_ci			},
52962306a36Sopenharmony_ci		},
53062306a36Sopenharmony_ci	}, {
53162306a36Sopenharmony_ci		.id = 0x2b,
53262306a36Sopenharmony_ci		.name = "msencswr",
53362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_MSENC,
53462306a36Sopenharmony_ci		.regs = {
53562306a36Sopenharmony_ci			.smmu = {
53662306a36Sopenharmony_ci				.reg = 0x22c,
53762306a36Sopenharmony_ci				.bit = 11,
53862306a36Sopenharmony_ci			},
53962306a36Sopenharmony_ci			.la = {
54062306a36Sopenharmony_ci				.reg = 0x328,
54162306a36Sopenharmony_ci				.shift = 16,
54262306a36Sopenharmony_ci				.mask = 0xff,
54362306a36Sopenharmony_ci				.def = 0x80,
54462306a36Sopenharmony_ci			},
54562306a36Sopenharmony_ci		},
54662306a36Sopenharmony_ci	}, {
54762306a36Sopenharmony_ci		.id = 0x2c,
54862306a36Sopenharmony_ci		.name = "viwsb",
54962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VI,
55062306a36Sopenharmony_ci		.regs = {
55162306a36Sopenharmony_ci			.smmu = {
55262306a36Sopenharmony_ci				.reg = 0x22c,
55362306a36Sopenharmony_ci				.bit = 12,
55462306a36Sopenharmony_ci			},
55562306a36Sopenharmony_ci			.la = {
55662306a36Sopenharmony_ci				.reg = 0x364,
55762306a36Sopenharmony_ci				.shift = 0,
55862306a36Sopenharmony_ci				.mask = 0xff,
55962306a36Sopenharmony_ci				.def = 0x47,
56062306a36Sopenharmony_ci			},
56162306a36Sopenharmony_ci		},
56262306a36Sopenharmony_ci	}, {
56362306a36Sopenharmony_ci		.id = 0x2d,
56462306a36Sopenharmony_ci		.name = "viwu",
56562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VI,
56662306a36Sopenharmony_ci		.regs = {
56762306a36Sopenharmony_ci			.smmu = {
56862306a36Sopenharmony_ci				.reg = 0x22c,
56962306a36Sopenharmony_ci				.bit = 13,
57062306a36Sopenharmony_ci			},
57162306a36Sopenharmony_ci			.la = {
57262306a36Sopenharmony_ci				.reg = 0x368,
57362306a36Sopenharmony_ci				.shift = 0,
57462306a36Sopenharmony_ci				.mask = 0xff,
57562306a36Sopenharmony_ci				.def = 0xff,
57662306a36Sopenharmony_ci			},
57762306a36Sopenharmony_ci		},
57862306a36Sopenharmony_ci	}, {
57962306a36Sopenharmony_ci		.id = 0x2e,
58062306a36Sopenharmony_ci		.name = "viwv",
58162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VI,
58262306a36Sopenharmony_ci		.regs = {
58362306a36Sopenharmony_ci			.smmu = {
58462306a36Sopenharmony_ci				.reg = 0x22c,
58562306a36Sopenharmony_ci				.bit = 14,
58662306a36Sopenharmony_ci			},
58762306a36Sopenharmony_ci			.la = {
58862306a36Sopenharmony_ci				.reg = 0x368,
58962306a36Sopenharmony_ci				.shift = 16,
59062306a36Sopenharmony_ci				.mask = 0xff,
59162306a36Sopenharmony_ci				.def = 0xff,
59262306a36Sopenharmony_ci			},
59362306a36Sopenharmony_ci		},
59462306a36Sopenharmony_ci	}, {
59562306a36Sopenharmony_ci		.id = 0x2f,
59662306a36Sopenharmony_ci		.name = "viwy",
59762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VI,
59862306a36Sopenharmony_ci		.regs = {
59962306a36Sopenharmony_ci			.smmu = {
60062306a36Sopenharmony_ci				.reg = 0x22c,
60162306a36Sopenharmony_ci				.bit = 15,
60262306a36Sopenharmony_ci			},
60362306a36Sopenharmony_ci			.la = {
60462306a36Sopenharmony_ci				.reg = 0x36c,
60562306a36Sopenharmony_ci				.shift = 0,
60662306a36Sopenharmony_ci				.mask = 0xff,
60762306a36Sopenharmony_ci				.def = 0x47,
60862306a36Sopenharmony_ci			},
60962306a36Sopenharmony_ci		},
61062306a36Sopenharmony_ci	}, {
61162306a36Sopenharmony_ci		.id = 0x30,
61262306a36Sopenharmony_ci		.name = "g2dw",
61362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_G2,
61462306a36Sopenharmony_ci		.regs = {
61562306a36Sopenharmony_ci			.smmu = {
61662306a36Sopenharmony_ci				.reg = 0x22c,
61762306a36Sopenharmony_ci				.bit = 16,
61862306a36Sopenharmony_ci			},
61962306a36Sopenharmony_ci			.la = {
62062306a36Sopenharmony_ci				.reg = 0x30c,
62162306a36Sopenharmony_ci				.shift = 16,
62262306a36Sopenharmony_ci				.mask = 0xff,
62362306a36Sopenharmony_ci				.def = 0x9,
62462306a36Sopenharmony_ci			},
62562306a36Sopenharmony_ci		},
62662306a36Sopenharmony_ci	}, {
62762306a36Sopenharmony_ci		.id = 0x32,
62862306a36Sopenharmony_ci		.name = "avpcarm7w",
62962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_AVPC,
63062306a36Sopenharmony_ci		.regs = {
63162306a36Sopenharmony_ci			.smmu = {
63262306a36Sopenharmony_ci				.reg = 0x22c,
63362306a36Sopenharmony_ci				.bit = 18,
63462306a36Sopenharmony_ci			},
63562306a36Sopenharmony_ci			.la = {
63662306a36Sopenharmony_ci				.reg = 0x2e4,
63762306a36Sopenharmony_ci				.shift = 16,
63862306a36Sopenharmony_ci				.mask = 0xff,
63962306a36Sopenharmony_ci				.def = 0x0e,
64062306a36Sopenharmony_ci			},
64162306a36Sopenharmony_ci		},
64262306a36Sopenharmony_ci	}, {
64362306a36Sopenharmony_ci		.id = 0x33,
64462306a36Sopenharmony_ci		.name = "fdcdwr",
64562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
64662306a36Sopenharmony_ci		.regs = {
64762306a36Sopenharmony_ci			.smmu = {
64862306a36Sopenharmony_ci				.reg = 0x22c,
64962306a36Sopenharmony_ci				.bit = 19,
65062306a36Sopenharmony_ci			},
65162306a36Sopenharmony_ci			.la = {
65262306a36Sopenharmony_ci				.reg = 0x338,
65362306a36Sopenharmony_ci				.shift = 16,
65462306a36Sopenharmony_ci				.mask = 0xff,
65562306a36Sopenharmony_ci				.def = 0x10,
65662306a36Sopenharmony_ci			},
65762306a36Sopenharmony_ci		},
65862306a36Sopenharmony_ci	}, {
65962306a36Sopenharmony_ci		.id = 0x34,
66062306a36Sopenharmony_ci		.name = "fdcdwr2",
66162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
66262306a36Sopenharmony_ci		.regs = {
66362306a36Sopenharmony_ci			.smmu = {
66462306a36Sopenharmony_ci				.reg = 0x22c,
66562306a36Sopenharmony_ci				.bit = 20,
66662306a36Sopenharmony_ci			},
66762306a36Sopenharmony_ci			.la = {
66862306a36Sopenharmony_ci				.reg = 0x340,
66962306a36Sopenharmony_ci				.shift = 0,
67062306a36Sopenharmony_ci				.mask = 0xff,
67162306a36Sopenharmony_ci				.def = 0x10,
67262306a36Sopenharmony_ci			},
67362306a36Sopenharmony_ci		},
67462306a36Sopenharmony_ci	}, {
67562306a36Sopenharmony_ci		.id = 0x35,
67662306a36Sopenharmony_ci		.name = "hdaw",
67762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_HDA,
67862306a36Sopenharmony_ci		.regs = {
67962306a36Sopenharmony_ci			.smmu = {
68062306a36Sopenharmony_ci				.reg = 0x22c,
68162306a36Sopenharmony_ci				.bit = 21,
68262306a36Sopenharmony_ci			},
68362306a36Sopenharmony_ci			.la = {
68462306a36Sopenharmony_ci				.reg = 0x318,
68562306a36Sopenharmony_ci				.shift = 16,
68662306a36Sopenharmony_ci				.mask = 0xff,
68762306a36Sopenharmony_ci				.def = 0xff,
68862306a36Sopenharmony_ci			},
68962306a36Sopenharmony_ci		},
69062306a36Sopenharmony_ci	}, {
69162306a36Sopenharmony_ci		.id = 0x36,
69262306a36Sopenharmony_ci		.name = "host1xw",
69362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_HC,
69462306a36Sopenharmony_ci		.regs = {
69562306a36Sopenharmony_ci			.smmu = {
69662306a36Sopenharmony_ci				.reg = 0x22c,
69762306a36Sopenharmony_ci				.bit = 22,
69862306a36Sopenharmony_ci			},
69962306a36Sopenharmony_ci			.la = {
70062306a36Sopenharmony_ci				.reg = 0x314,
70162306a36Sopenharmony_ci				.shift = 0,
70262306a36Sopenharmony_ci				.mask = 0xff,
70362306a36Sopenharmony_ci				.def = 0x25,
70462306a36Sopenharmony_ci			},
70562306a36Sopenharmony_ci		},
70662306a36Sopenharmony_ci	}, {
70762306a36Sopenharmony_ci		.id = 0x37,
70862306a36Sopenharmony_ci		.name = "ispw",
70962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_ISP,
71062306a36Sopenharmony_ci		.regs = {
71162306a36Sopenharmony_ci			.smmu = {
71262306a36Sopenharmony_ci				.reg = 0x22c,
71362306a36Sopenharmony_ci				.bit = 23,
71462306a36Sopenharmony_ci			},
71562306a36Sopenharmony_ci			.la = {
71662306a36Sopenharmony_ci				.reg = 0x31c,
71762306a36Sopenharmony_ci				.shift = 0,
71862306a36Sopenharmony_ci				.mask = 0xff,
71962306a36Sopenharmony_ci				.def = 0xff,
72062306a36Sopenharmony_ci			},
72162306a36Sopenharmony_ci		},
72262306a36Sopenharmony_ci	}, {
72362306a36Sopenharmony_ci		.id = 0x38,
72462306a36Sopenharmony_ci		.name = "mpcorelpw",
72562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_MPCORELP,
72662306a36Sopenharmony_ci		.regs = {
72762306a36Sopenharmony_ci			.la = {
72862306a36Sopenharmony_ci				.reg = 0x324,
72962306a36Sopenharmony_ci				.shift = 16,
73062306a36Sopenharmony_ci				.mask = 0xff,
73162306a36Sopenharmony_ci				.def = 0x80,
73262306a36Sopenharmony_ci			},
73362306a36Sopenharmony_ci		},
73462306a36Sopenharmony_ci	}, {
73562306a36Sopenharmony_ci		.id = 0x39,
73662306a36Sopenharmony_ci		.name = "mpcorew",
73762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_MPCORE,
73862306a36Sopenharmony_ci		.regs = {
73962306a36Sopenharmony_ci			.la = {
74062306a36Sopenharmony_ci				.reg = 0x320,
74162306a36Sopenharmony_ci				.shift = 16,
74262306a36Sopenharmony_ci				.mask = 0xff,
74362306a36Sopenharmony_ci				.def = 0x0e,
74462306a36Sopenharmony_ci			},
74562306a36Sopenharmony_ci		},
74662306a36Sopenharmony_ci	}, {
74762306a36Sopenharmony_ci		.id = 0x3b,
74862306a36Sopenharmony_ci		.name = "ppcsahbdmaw",
74962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_PPCS,
75062306a36Sopenharmony_ci		.regs = {
75162306a36Sopenharmony_ci			.smmu = {
75262306a36Sopenharmony_ci				.reg = 0x22c,
75362306a36Sopenharmony_ci				.bit = 27,
75462306a36Sopenharmony_ci			},
75562306a36Sopenharmony_ci			.la = {
75662306a36Sopenharmony_ci				.reg = 0x348,
75762306a36Sopenharmony_ci				.shift = 0,
75862306a36Sopenharmony_ci				.mask = 0xff,
75962306a36Sopenharmony_ci				.def = 0xa5,
76062306a36Sopenharmony_ci			},
76162306a36Sopenharmony_ci		},
76262306a36Sopenharmony_ci	}, {
76362306a36Sopenharmony_ci		.id = 0x3c,
76462306a36Sopenharmony_ci		.name = "ppcsahbslvw",
76562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_PPCS,
76662306a36Sopenharmony_ci		.regs = {
76762306a36Sopenharmony_ci			.smmu = {
76862306a36Sopenharmony_ci				.reg = 0x22c,
76962306a36Sopenharmony_ci				.bit = 28,
77062306a36Sopenharmony_ci			},
77162306a36Sopenharmony_ci			.la = {
77262306a36Sopenharmony_ci				.reg = 0x348,
77362306a36Sopenharmony_ci				.shift = 16,
77462306a36Sopenharmony_ci				.mask = 0xff,
77562306a36Sopenharmony_ci				.def = 0xe8,
77662306a36Sopenharmony_ci			},
77762306a36Sopenharmony_ci		},
77862306a36Sopenharmony_ci	}, {
77962306a36Sopenharmony_ci		.id = 0x3e,
78062306a36Sopenharmony_ci		.name = "vdebsevw",
78162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VDE,
78262306a36Sopenharmony_ci		.regs = {
78362306a36Sopenharmony_ci			.smmu = {
78462306a36Sopenharmony_ci				.reg = 0x22c,
78562306a36Sopenharmony_ci				.bit = 30,
78662306a36Sopenharmony_ci			},
78762306a36Sopenharmony_ci			.la = {
78862306a36Sopenharmony_ci				.reg = 0x35c,
78962306a36Sopenharmony_ci				.shift = 0,
79062306a36Sopenharmony_ci				.mask = 0xff,
79162306a36Sopenharmony_ci				.def = 0xff,
79262306a36Sopenharmony_ci			},
79362306a36Sopenharmony_ci		},
79462306a36Sopenharmony_ci	}, {
79562306a36Sopenharmony_ci		.id = 0x3f,
79662306a36Sopenharmony_ci		.name = "vdedbgw",
79762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VDE,
79862306a36Sopenharmony_ci		.regs = {
79962306a36Sopenharmony_ci			.smmu = {
80062306a36Sopenharmony_ci				.reg = 0x22c,
80162306a36Sopenharmony_ci				.bit = 31,
80262306a36Sopenharmony_ci			},
80362306a36Sopenharmony_ci			.la = {
80462306a36Sopenharmony_ci				.reg = 0x35c,
80562306a36Sopenharmony_ci				.shift = 16,
80662306a36Sopenharmony_ci				.mask = 0xff,
80762306a36Sopenharmony_ci				.def = 0xff,
80862306a36Sopenharmony_ci			},
80962306a36Sopenharmony_ci		},
81062306a36Sopenharmony_ci	}, {
81162306a36Sopenharmony_ci		.id = 0x40,
81262306a36Sopenharmony_ci		.name = "vdembew",
81362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VDE,
81462306a36Sopenharmony_ci		.regs = {
81562306a36Sopenharmony_ci			.smmu = {
81662306a36Sopenharmony_ci				.reg = 0x230,
81762306a36Sopenharmony_ci				.bit = 0,
81862306a36Sopenharmony_ci			},
81962306a36Sopenharmony_ci			.la = {
82062306a36Sopenharmony_ci				.reg = 0x360,
82162306a36Sopenharmony_ci				.shift = 0,
82262306a36Sopenharmony_ci				.mask = 0xff,
82362306a36Sopenharmony_ci				.def = 0x89,
82462306a36Sopenharmony_ci			},
82562306a36Sopenharmony_ci		},
82662306a36Sopenharmony_ci	}, {
82762306a36Sopenharmony_ci		.id = 0x41,
82862306a36Sopenharmony_ci		.name = "vdetpmw",
82962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_VDE,
83062306a36Sopenharmony_ci		.regs = {
83162306a36Sopenharmony_ci			.smmu = {
83262306a36Sopenharmony_ci				.reg = 0x230,
83362306a36Sopenharmony_ci				.bit = 1,
83462306a36Sopenharmony_ci			},
83562306a36Sopenharmony_ci			.la = {
83662306a36Sopenharmony_ci				.reg = 0x360,
83762306a36Sopenharmony_ci				.shift = 16,
83862306a36Sopenharmony_ci				.mask = 0xff,
83962306a36Sopenharmony_ci				.def = 0x59,
84062306a36Sopenharmony_ci			},
84162306a36Sopenharmony_ci		},
84262306a36Sopenharmony_ci	}, {
84362306a36Sopenharmony_ci		.id = 0x4a,
84462306a36Sopenharmony_ci		.name = "xusb_hostr",
84562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_XUSB_HOST,
84662306a36Sopenharmony_ci		.regs = {
84762306a36Sopenharmony_ci			.smmu = {
84862306a36Sopenharmony_ci				.reg = 0x230,
84962306a36Sopenharmony_ci				.bit = 10,
85062306a36Sopenharmony_ci			},
85162306a36Sopenharmony_ci			.la = {
85262306a36Sopenharmony_ci				.reg = 0x37c,
85362306a36Sopenharmony_ci				.shift = 0,
85462306a36Sopenharmony_ci				.mask = 0xff,
85562306a36Sopenharmony_ci				.def = 0xa5,
85662306a36Sopenharmony_ci			},
85762306a36Sopenharmony_ci		},
85862306a36Sopenharmony_ci	}, {
85962306a36Sopenharmony_ci		.id = 0x4b,
86062306a36Sopenharmony_ci		.name = "xusb_hostw",
86162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_XUSB_HOST,
86262306a36Sopenharmony_ci		.regs = {
86362306a36Sopenharmony_ci			.smmu = {
86462306a36Sopenharmony_ci				.reg = 0x230,
86562306a36Sopenharmony_ci				.bit = 11,
86662306a36Sopenharmony_ci			},
86762306a36Sopenharmony_ci			.la = {
86862306a36Sopenharmony_ci				.reg = 0x37c,
86962306a36Sopenharmony_ci				.shift = 16,
87062306a36Sopenharmony_ci				.mask = 0xff,
87162306a36Sopenharmony_ci				.def = 0xa5,
87262306a36Sopenharmony_ci			},
87362306a36Sopenharmony_ci		},
87462306a36Sopenharmony_ci	}, {
87562306a36Sopenharmony_ci		.id = 0x4c,
87662306a36Sopenharmony_ci		.name = "xusb_devr",
87762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_XUSB_DEV,
87862306a36Sopenharmony_ci		.regs = {
87962306a36Sopenharmony_ci			.smmu = {
88062306a36Sopenharmony_ci				.reg = 0x230,
88162306a36Sopenharmony_ci				.bit = 12,
88262306a36Sopenharmony_ci			},
88362306a36Sopenharmony_ci			.la = {
88462306a36Sopenharmony_ci				.reg = 0x380,
88562306a36Sopenharmony_ci				.shift = 0,
88662306a36Sopenharmony_ci				.mask = 0xff,
88762306a36Sopenharmony_ci				.def = 0xa5,
88862306a36Sopenharmony_ci			},
88962306a36Sopenharmony_ci		},
89062306a36Sopenharmony_ci	}, {
89162306a36Sopenharmony_ci		.id = 0x4d,
89262306a36Sopenharmony_ci		.name = "xusb_devw",
89362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_XUSB_DEV,
89462306a36Sopenharmony_ci		.regs = {
89562306a36Sopenharmony_ci			.smmu = {
89662306a36Sopenharmony_ci				.reg = 0x230,
89762306a36Sopenharmony_ci				.bit = 13,
89862306a36Sopenharmony_ci			},
89962306a36Sopenharmony_ci			.la = {
90062306a36Sopenharmony_ci				.reg = 0x380,
90162306a36Sopenharmony_ci				.shift = 16,
90262306a36Sopenharmony_ci				.mask = 0xff,
90362306a36Sopenharmony_ci				.def = 0xa5,
90462306a36Sopenharmony_ci			},
90562306a36Sopenharmony_ci		},
90662306a36Sopenharmony_ci	}, {
90762306a36Sopenharmony_ci		.id = 0x4e,
90862306a36Sopenharmony_ci		.name = "fdcdwr3",
90962306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
91062306a36Sopenharmony_ci		.regs = {
91162306a36Sopenharmony_ci			.smmu = {
91262306a36Sopenharmony_ci				.reg = 0x230,
91362306a36Sopenharmony_ci				.bit = 14,
91462306a36Sopenharmony_ci			},
91562306a36Sopenharmony_ci			.la = {
91662306a36Sopenharmony_ci				.reg = 0x388,
91762306a36Sopenharmony_ci				.shift = 0,
91862306a36Sopenharmony_ci				.mask = 0xff,
91962306a36Sopenharmony_ci				.def = 0x10,
92062306a36Sopenharmony_ci			},
92162306a36Sopenharmony_ci		},
92262306a36Sopenharmony_ci	}, {
92362306a36Sopenharmony_ci		.id = 0x4f,
92462306a36Sopenharmony_ci		.name = "fdcdrd3",
92562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
92662306a36Sopenharmony_ci		.regs = {
92762306a36Sopenharmony_ci			.smmu = {
92862306a36Sopenharmony_ci				.reg = 0x230,
92962306a36Sopenharmony_ci				.bit = 15,
93062306a36Sopenharmony_ci			},
93162306a36Sopenharmony_ci			.la = {
93262306a36Sopenharmony_ci				.reg = 0x384,
93362306a36Sopenharmony_ci				.shift = 0,
93462306a36Sopenharmony_ci				.mask = 0xff,
93562306a36Sopenharmony_ci				.def = 0x0c,
93662306a36Sopenharmony_ci			},
93762306a36Sopenharmony_ci		},
93862306a36Sopenharmony_ci	}, {
93962306a36Sopenharmony_ci		.id = 0x50,
94062306a36Sopenharmony_ci		.name = "fdcwr4",
94162306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
94262306a36Sopenharmony_ci		.regs = {
94362306a36Sopenharmony_ci			.smmu = {
94462306a36Sopenharmony_ci				.reg = 0x230,
94562306a36Sopenharmony_ci				.bit = 16,
94662306a36Sopenharmony_ci			},
94762306a36Sopenharmony_ci			.la = {
94862306a36Sopenharmony_ci				.reg = 0x388,
94962306a36Sopenharmony_ci				.shift = 16,
95062306a36Sopenharmony_ci				.mask = 0xff,
95162306a36Sopenharmony_ci				.def = 0x10,
95262306a36Sopenharmony_ci			},
95362306a36Sopenharmony_ci		},
95462306a36Sopenharmony_ci	}, {
95562306a36Sopenharmony_ci		.id = 0x51,
95662306a36Sopenharmony_ci		.name = "fdcrd4",
95762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_NV,
95862306a36Sopenharmony_ci		.regs = {
95962306a36Sopenharmony_ci			.smmu = {
96062306a36Sopenharmony_ci				.reg = 0x230,
96162306a36Sopenharmony_ci				.bit = 17,
96262306a36Sopenharmony_ci			},
96362306a36Sopenharmony_ci			.la = {
96462306a36Sopenharmony_ci				.reg = 0x384,
96562306a36Sopenharmony_ci				.shift = 16,
96662306a36Sopenharmony_ci				.mask = 0xff,
96762306a36Sopenharmony_ci				.def = 0x0c,
96862306a36Sopenharmony_ci			},
96962306a36Sopenharmony_ci		},
97062306a36Sopenharmony_ci	}, {
97162306a36Sopenharmony_ci		.id = 0x52,
97262306a36Sopenharmony_ci		.name = "emucifr",
97362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_EMUCIF,
97462306a36Sopenharmony_ci		.regs = {
97562306a36Sopenharmony_ci			.la = {
97662306a36Sopenharmony_ci				.reg = 0x38c,
97762306a36Sopenharmony_ci				.shift = 0,
97862306a36Sopenharmony_ci				.mask = 0xff,
97962306a36Sopenharmony_ci				.def = 0x04,
98062306a36Sopenharmony_ci			},
98162306a36Sopenharmony_ci		},
98262306a36Sopenharmony_ci	}, {
98362306a36Sopenharmony_ci		.id = 0x53,
98462306a36Sopenharmony_ci		.name = "emucifw",
98562306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_EMUCIF,
98662306a36Sopenharmony_ci		.regs = {
98762306a36Sopenharmony_ci			.la = {
98862306a36Sopenharmony_ci				.reg = 0x38c,
98962306a36Sopenharmony_ci				.shift = 16,
99062306a36Sopenharmony_ci				.mask = 0xff,
99162306a36Sopenharmony_ci				.def = 0x0e,
99262306a36Sopenharmony_ci			},
99362306a36Sopenharmony_ci		},
99462306a36Sopenharmony_ci	}, {
99562306a36Sopenharmony_ci		.id = 0x54,
99662306a36Sopenharmony_ci		.name = "tsecsrd",
99762306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_TSEC,
99862306a36Sopenharmony_ci		.regs = {
99962306a36Sopenharmony_ci			.smmu = {
100062306a36Sopenharmony_ci				.reg = 0x230,
100162306a36Sopenharmony_ci				.bit = 20,
100262306a36Sopenharmony_ci			},
100362306a36Sopenharmony_ci			.la = {
100462306a36Sopenharmony_ci				.reg = 0x390,
100562306a36Sopenharmony_ci				.shift = 0,
100662306a36Sopenharmony_ci				.mask = 0xff,
100762306a36Sopenharmony_ci				.def = 0x50,
100862306a36Sopenharmony_ci			},
100962306a36Sopenharmony_ci		},
101062306a36Sopenharmony_ci	}, {
101162306a36Sopenharmony_ci		.id = 0x55,
101262306a36Sopenharmony_ci		.name = "tsecswr",
101362306a36Sopenharmony_ci		.swgroup = TEGRA_SWGROUP_TSEC,
101462306a36Sopenharmony_ci		.regs = {
101562306a36Sopenharmony_ci			.smmu = {
101662306a36Sopenharmony_ci				.reg = 0x230,
101762306a36Sopenharmony_ci				.bit = 21,
101862306a36Sopenharmony_ci			},
101962306a36Sopenharmony_ci			.la = {
102062306a36Sopenharmony_ci				.reg = 0x390,
102162306a36Sopenharmony_ci				.shift = 16,
102262306a36Sopenharmony_ci				.mask = 0xff,
102362306a36Sopenharmony_ci				.def = 0x50,
102462306a36Sopenharmony_ci			},
102562306a36Sopenharmony_ci		},
102662306a36Sopenharmony_ci	},
102762306a36Sopenharmony_ci};
102862306a36Sopenharmony_ci
102962306a36Sopenharmony_cistatic const struct tegra_smmu_swgroup tegra114_swgroups[] = {
103062306a36Sopenharmony_ci	{ .name = "dc",        .swgroup = TEGRA_SWGROUP_DC,        .reg = 0x240 },
103162306a36Sopenharmony_ci	{ .name = "dcb",       .swgroup = TEGRA_SWGROUP_DCB,       .reg = 0x244 },
103262306a36Sopenharmony_ci	{ .name = "epp",       .swgroup = TEGRA_SWGROUP_EPP,       .reg = 0x248 },
103362306a36Sopenharmony_ci	{ .name = "g2",        .swgroup = TEGRA_SWGROUP_G2,        .reg = 0x24c },
103462306a36Sopenharmony_ci	{ .name = "avpc",      .swgroup = TEGRA_SWGROUP_AVPC,      .reg = 0x23c },
103562306a36Sopenharmony_ci	{ .name = "nv",        .swgroup = TEGRA_SWGROUP_NV,        .reg = 0x268 },
103662306a36Sopenharmony_ci	{ .name = "hda",       .swgroup = TEGRA_SWGROUP_HDA,       .reg = 0x254 },
103762306a36Sopenharmony_ci	{ .name = "hc",        .swgroup = TEGRA_SWGROUP_HC,        .reg = 0x250 },
103862306a36Sopenharmony_ci	{ .name = "msenc",     .swgroup = TEGRA_SWGROUP_MSENC,     .reg = 0x264 },
103962306a36Sopenharmony_ci	{ .name = "ppcs",      .swgroup = TEGRA_SWGROUP_PPCS,      .reg = 0x270 },
104062306a36Sopenharmony_ci	{ .name = "vde",       .swgroup = TEGRA_SWGROUP_VDE,       .reg = 0x27c },
104162306a36Sopenharmony_ci	{ .name = "vi",        .swgroup = TEGRA_SWGROUP_VI,        .reg = 0x280 },
104262306a36Sopenharmony_ci	{ .name = "isp",       .swgroup = TEGRA_SWGROUP_ISP,       .reg = 0x258 },
104362306a36Sopenharmony_ci	{ .name = "xusb_host", .swgroup = TEGRA_SWGROUP_XUSB_HOST, .reg = 0x288 },
104462306a36Sopenharmony_ci	{ .name = "xusb_dev",  .swgroup = TEGRA_SWGROUP_XUSB_DEV,  .reg = 0x28c },
104562306a36Sopenharmony_ci	{ .name = "tsec",      .swgroup = TEGRA_SWGROUP_TSEC,      .reg = 0x294 },
104662306a36Sopenharmony_ci};
104762306a36Sopenharmony_ci
104862306a36Sopenharmony_cistatic const unsigned int tegra114_group_drm[] = {
104962306a36Sopenharmony_ci	TEGRA_SWGROUP_DC,
105062306a36Sopenharmony_ci	TEGRA_SWGROUP_DCB,
105162306a36Sopenharmony_ci	TEGRA_SWGROUP_G2,
105262306a36Sopenharmony_ci	TEGRA_SWGROUP_NV,
105362306a36Sopenharmony_ci};
105462306a36Sopenharmony_ci
105562306a36Sopenharmony_cistatic const struct tegra_smmu_group_soc tegra114_groups[] = {
105662306a36Sopenharmony_ci	{
105762306a36Sopenharmony_ci		.name = "drm",
105862306a36Sopenharmony_ci		.swgroups = tegra114_group_drm,
105962306a36Sopenharmony_ci		.num_swgroups = ARRAY_SIZE(tegra114_group_drm),
106062306a36Sopenharmony_ci	},
106162306a36Sopenharmony_ci};
106262306a36Sopenharmony_ci
106362306a36Sopenharmony_cistatic const struct tegra_smmu_soc tegra114_smmu_soc = {
106462306a36Sopenharmony_ci	.clients = tegra114_mc_clients,
106562306a36Sopenharmony_ci	.num_clients = ARRAY_SIZE(tegra114_mc_clients),
106662306a36Sopenharmony_ci	.swgroups = tegra114_swgroups,
106762306a36Sopenharmony_ci	.num_swgroups = ARRAY_SIZE(tegra114_swgroups),
106862306a36Sopenharmony_ci	.groups = tegra114_groups,
106962306a36Sopenharmony_ci	.num_groups = ARRAY_SIZE(tegra114_groups),
107062306a36Sopenharmony_ci	.supports_round_robin_arbitration = false,
107162306a36Sopenharmony_ci	.supports_request_limit = false,
107262306a36Sopenharmony_ci	.num_tlb_lines = 32,
107362306a36Sopenharmony_ci	.num_asids = 4,
107462306a36Sopenharmony_ci};
107562306a36Sopenharmony_ci
107662306a36Sopenharmony_ci#define TEGRA114_MC_RESET(_name, _control, _status, _bit)	\
107762306a36Sopenharmony_ci	{							\
107862306a36Sopenharmony_ci		.name = #_name,					\
107962306a36Sopenharmony_ci		.id = TEGRA114_MC_RESET_##_name,		\
108062306a36Sopenharmony_ci		.control = _control,				\
108162306a36Sopenharmony_ci		.status = _status,				\
108262306a36Sopenharmony_ci		.bit = _bit,					\
108362306a36Sopenharmony_ci	}
108462306a36Sopenharmony_ci
108562306a36Sopenharmony_cistatic const struct tegra_mc_reset tegra114_mc_resets[] = {
108662306a36Sopenharmony_ci	TEGRA114_MC_RESET(AVPC,     0x200, 0x204,  1),
108762306a36Sopenharmony_ci	TEGRA114_MC_RESET(DC,       0x200, 0x204,  2),
108862306a36Sopenharmony_ci	TEGRA114_MC_RESET(DCB,      0x200, 0x204,  3),
108962306a36Sopenharmony_ci	TEGRA114_MC_RESET(EPP,      0x200, 0x204,  4),
109062306a36Sopenharmony_ci	TEGRA114_MC_RESET(2D,       0x200, 0x204,  5),
109162306a36Sopenharmony_ci	TEGRA114_MC_RESET(HC,       0x200, 0x204,  6),
109262306a36Sopenharmony_ci	TEGRA114_MC_RESET(HDA,      0x200, 0x204,  7),
109362306a36Sopenharmony_ci	TEGRA114_MC_RESET(ISP,      0x200, 0x204,  8),
109462306a36Sopenharmony_ci	TEGRA114_MC_RESET(MPCORE,   0x200, 0x204,  9),
109562306a36Sopenharmony_ci	TEGRA114_MC_RESET(MPCORELP, 0x200, 0x204, 10),
109662306a36Sopenharmony_ci	TEGRA114_MC_RESET(MPE,      0x200, 0x204, 11),
109762306a36Sopenharmony_ci	TEGRA114_MC_RESET(3D,       0x200, 0x204, 12),
109862306a36Sopenharmony_ci	TEGRA114_MC_RESET(3D2,      0x200, 0x204, 13),
109962306a36Sopenharmony_ci	TEGRA114_MC_RESET(PPCS,     0x200, 0x204, 14),
110062306a36Sopenharmony_ci	TEGRA114_MC_RESET(VDE,      0x200, 0x204, 16),
110162306a36Sopenharmony_ci	TEGRA114_MC_RESET(VI,       0x200, 0x204, 17),
110262306a36Sopenharmony_ci};
110362306a36Sopenharmony_ci
110462306a36Sopenharmony_ciconst struct tegra_mc_soc tegra114_mc_soc = {
110562306a36Sopenharmony_ci	.clients = tegra114_mc_clients,
110662306a36Sopenharmony_ci	.num_clients = ARRAY_SIZE(tegra114_mc_clients),
110762306a36Sopenharmony_ci	.num_address_bits = 32,
110862306a36Sopenharmony_ci	.atom_size = 32,
110962306a36Sopenharmony_ci	.client_id_mask = 0x7f,
111062306a36Sopenharmony_ci	.smmu = &tegra114_smmu_soc,
111162306a36Sopenharmony_ci	.intmask = MC_INT_INVALID_SMMU_PAGE | MC_INT_SECURITY_VIOLATION |
111262306a36Sopenharmony_ci		   MC_INT_DECERR_EMEM,
111362306a36Sopenharmony_ci	.reset_ops = &tegra_mc_reset_ops_common,
111462306a36Sopenharmony_ci	.resets = tegra114_mc_resets,
111562306a36Sopenharmony_ci	.num_resets = ARRAY_SIZE(tegra114_mc_resets),
111662306a36Sopenharmony_ci	.ops = &tegra30_mc_ops,
111762306a36Sopenharmony_ci};
1118