xref: /openbmc/linux/drivers/memory/tegra/tegra124.c (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
289184651SThierry Reding /*
389184651SThierry Reding  * Copyright (C) 2014 NVIDIA CORPORATION.  All rights reserved.
489184651SThierry Reding  */
589184651SThierry Reding 
689184651SThierry Reding #include <linux/of.h>
7*0b483871SRob Herring #include <linux/device.h>
8380def2dSDmitry Osipenko #include <linux/slab.h>
989184651SThierry Reding 
1089184651SThierry Reding #include <dt-bindings/memory/tegra124-mc.h>
1189184651SThierry Reding 
1289184651SThierry Reding #include "mc.h"
1389184651SThierry Reding 
1489184651SThierry Reding static const struct tegra_mc_client tegra124_mc_clients[] = {
1589184651SThierry Reding 	{
1689184651SThierry Reding 		.id = 0x00,
1789184651SThierry Reding 		.name = "ptcr",
1889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_PTC,
194f1ac76eSThierry Reding 		.regs = {
20d5ecac0aSDmitry Osipenko 			.la = {
21d5ecac0aSDmitry Osipenko 				.reg = 0x34c,
22d5ecac0aSDmitry Osipenko 				.shift = 0,
23d5ecac0aSDmitry Osipenko 				.mask = 0xff,
24d5ecac0aSDmitry Osipenko 				.def = 0x0,
25d5ecac0aSDmitry Osipenko 			},
264f1ac76eSThierry Reding 		},
2789184651SThierry Reding 	}, {
2889184651SThierry Reding 		.id = 0x01,
2989184651SThierry Reding 		.name = "display0a",
3089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DC,
314f1ac76eSThierry Reding 		.regs = {
3289184651SThierry Reding 			.smmu = {
3389184651SThierry Reding 				.reg = 0x228,
3489184651SThierry Reding 				.bit = 1,
3589184651SThierry Reding 			},
3689184651SThierry Reding 			.la = {
3789184651SThierry Reding 				.reg = 0x2e8,
3889184651SThierry Reding 				.shift = 0,
3989184651SThierry Reding 				.mask = 0xff,
4089184651SThierry Reding 				.def = 0xc2,
4189184651SThierry Reding 			},
424f1ac76eSThierry Reding 		},
4389184651SThierry Reding 	}, {
4489184651SThierry Reding 		.id = 0x02,
4589184651SThierry Reding 		.name = "display0ab",
4689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DCB,
474f1ac76eSThierry Reding 		.regs = {
4889184651SThierry Reding 			.smmu = {
4989184651SThierry Reding 				.reg = 0x228,
5089184651SThierry Reding 				.bit = 2,
5189184651SThierry Reding 			},
5289184651SThierry Reding 			.la = {
5389184651SThierry Reding 				.reg = 0x2f4,
5489184651SThierry Reding 				.shift = 0,
5589184651SThierry Reding 				.mask = 0xff,
5689184651SThierry Reding 				.def = 0xc6,
5789184651SThierry Reding 			},
584f1ac76eSThierry Reding 		},
5989184651SThierry Reding 	}, {
6089184651SThierry Reding 		.id = 0x03,
6189184651SThierry Reding 		.name = "display0b",
6289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DC,
634f1ac76eSThierry Reding 		.regs = {
6489184651SThierry Reding 			.smmu = {
6589184651SThierry Reding 				.reg = 0x228,
6689184651SThierry Reding 				.bit = 3,
6789184651SThierry Reding 			},
6889184651SThierry Reding 			.la = {
6989184651SThierry Reding 				.reg = 0x2e8,
7089184651SThierry Reding 				.shift = 16,
7189184651SThierry Reding 				.mask = 0xff,
7289184651SThierry Reding 				.def = 0x50,
7389184651SThierry Reding 			},
744f1ac76eSThierry Reding 		},
7589184651SThierry Reding 	}, {
7689184651SThierry Reding 		.id = 0x04,
7789184651SThierry Reding 		.name = "display0bb",
7889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DCB,
794f1ac76eSThierry Reding 		.regs = {
8089184651SThierry Reding 			.smmu = {
8189184651SThierry Reding 				.reg = 0x228,
8289184651SThierry Reding 				.bit = 4,
8389184651SThierry Reding 			},
8489184651SThierry Reding 			.la = {
8589184651SThierry Reding 				.reg = 0x2f4,
8689184651SThierry Reding 				.shift = 16,
8789184651SThierry Reding 				.mask = 0xff,
8889184651SThierry Reding 				.def = 0x50,
8989184651SThierry Reding 			},
904f1ac76eSThierry Reding 		},
9189184651SThierry Reding 	}, {
9289184651SThierry Reding 		.id = 0x05,
9389184651SThierry Reding 		.name = "display0c",
9489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DC,
954f1ac76eSThierry Reding 		.regs = {
9689184651SThierry Reding 			.smmu = {
9789184651SThierry Reding 				.reg = 0x228,
9889184651SThierry Reding 				.bit = 5,
9989184651SThierry Reding 			},
10089184651SThierry Reding 			.la = {
10189184651SThierry Reding 				.reg = 0x2ec,
10289184651SThierry Reding 				.shift = 0,
10389184651SThierry Reding 				.mask = 0xff,
10489184651SThierry Reding 				.def = 0x50,
10589184651SThierry Reding 			},
1064f1ac76eSThierry Reding 		},
10789184651SThierry Reding 	}, {
10889184651SThierry Reding 		.id = 0x06,
10989184651SThierry Reding 		.name = "display0cb",
11089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DCB,
1114f1ac76eSThierry Reding 		.regs = {
11289184651SThierry Reding 			.smmu = {
11389184651SThierry Reding 				.reg = 0x228,
11489184651SThierry Reding 				.bit = 6,
11589184651SThierry Reding 			},
11689184651SThierry Reding 			.la = {
11789184651SThierry Reding 				.reg = 0x2f8,
11889184651SThierry Reding 				.shift = 0,
11989184651SThierry Reding 				.mask = 0xff,
12089184651SThierry Reding 				.def = 0x50,
12189184651SThierry Reding 			},
1224f1ac76eSThierry Reding 		},
12389184651SThierry Reding 	}, {
12489184651SThierry Reding 		.id = 0x0e,
12589184651SThierry Reding 		.name = "afir",
12689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_AFI,
1274f1ac76eSThierry Reding 		.regs = {
12889184651SThierry Reding 			.smmu = {
12989184651SThierry Reding 				.reg = 0x228,
13089184651SThierry Reding 				.bit = 14,
13189184651SThierry Reding 			},
13289184651SThierry Reding 			.la = {
13389184651SThierry Reding 				.reg = 0x2e0,
13489184651SThierry Reding 				.shift = 0,
13589184651SThierry Reding 				.mask = 0xff,
13689184651SThierry Reding 				.def = 0x13,
13789184651SThierry Reding 			},
1384f1ac76eSThierry Reding 		},
13989184651SThierry Reding 	}, {
14089184651SThierry Reding 		.id = 0x0f,
14189184651SThierry Reding 		.name = "avpcarm7r",
14289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_AVPC,
1434f1ac76eSThierry Reding 		.regs = {
14489184651SThierry Reding 			.smmu = {
14589184651SThierry Reding 				.reg = 0x228,
14689184651SThierry Reding 				.bit = 15,
14789184651SThierry Reding 			},
14889184651SThierry Reding 			.la = {
14989184651SThierry Reding 				.reg = 0x2e4,
15089184651SThierry Reding 				.shift = 0,
15189184651SThierry Reding 				.mask = 0xff,
15289184651SThierry Reding 				.def = 0x04,
15389184651SThierry Reding 			},
1544f1ac76eSThierry Reding 		},
15589184651SThierry Reding 	}, {
15689184651SThierry Reding 		.id = 0x10,
15789184651SThierry Reding 		.name = "displayhc",
15889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DC,
1594f1ac76eSThierry Reding 		.regs = {
16089184651SThierry Reding 			.smmu = {
16189184651SThierry Reding 				.reg = 0x228,
16289184651SThierry Reding 				.bit = 16,
16389184651SThierry Reding 			},
16489184651SThierry Reding 			.la = {
16589184651SThierry Reding 				.reg = 0x2f0,
16689184651SThierry Reding 				.shift = 0,
16789184651SThierry Reding 				.mask = 0xff,
16889184651SThierry Reding 				.def = 0x50,
16989184651SThierry Reding 			},
1704f1ac76eSThierry Reding 		},
17189184651SThierry Reding 	}, {
17289184651SThierry Reding 		.id = 0x11,
17389184651SThierry Reding 		.name = "displayhcb",
17489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DCB,
1754f1ac76eSThierry Reding 		.regs = {
17689184651SThierry Reding 			.smmu = {
17789184651SThierry Reding 				.reg = 0x228,
17889184651SThierry Reding 				.bit = 17,
17989184651SThierry Reding 			},
18089184651SThierry Reding 			.la = {
18189184651SThierry Reding 				.reg = 0x2fc,
18289184651SThierry Reding 				.shift = 0,
18389184651SThierry Reding 				.mask = 0xff,
18489184651SThierry Reding 				.def = 0x50,
18589184651SThierry Reding 			},
1864f1ac76eSThierry Reding 		},
18789184651SThierry Reding 	}, {
18889184651SThierry Reding 		.id = 0x15,
18989184651SThierry Reding 		.name = "hdar",
19089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_HDA,
1914f1ac76eSThierry Reding 		.regs = {
19289184651SThierry Reding 			.smmu = {
19389184651SThierry Reding 				.reg = 0x228,
19489184651SThierry Reding 				.bit = 21,
19589184651SThierry Reding 			},
19689184651SThierry Reding 			.la = {
19789184651SThierry Reding 				.reg = 0x318,
19889184651SThierry Reding 				.shift = 0,
19989184651SThierry Reding 				.mask = 0xff,
20089184651SThierry Reding 				.def = 0x24,
20189184651SThierry Reding 			},
2024f1ac76eSThierry Reding 		},
20389184651SThierry Reding 	}, {
20489184651SThierry Reding 		.id = 0x16,
20589184651SThierry Reding 		.name = "host1xdmar",
20689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_HC,
2074f1ac76eSThierry Reding 		.regs = {
20889184651SThierry Reding 			.smmu = {
20989184651SThierry Reding 				.reg = 0x228,
21089184651SThierry Reding 				.bit = 22,
21189184651SThierry Reding 			},
21289184651SThierry Reding 			.la = {
21389184651SThierry Reding 				.reg = 0x310,
21489184651SThierry Reding 				.shift = 0,
21589184651SThierry Reding 				.mask = 0xff,
21689184651SThierry Reding 				.def = 0x1e,
21789184651SThierry Reding 			},
2184f1ac76eSThierry Reding 		},
21989184651SThierry Reding 	}, {
22089184651SThierry Reding 		.id = 0x17,
22189184651SThierry Reding 		.name = "host1xr",
22289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_HC,
2234f1ac76eSThierry Reding 		.regs = {
22489184651SThierry Reding 			.smmu = {
22589184651SThierry Reding 				.reg = 0x228,
22689184651SThierry Reding 				.bit = 23,
22789184651SThierry Reding 			},
22889184651SThierry Reding 			.la = {
22989184651SThierry Reding 				.reg = 0x310,
23089184651SThierry Reding 				.shift = 16,
23189184651SThierry Reding 				.mask = 0xff,
23289184651SThierry Reding 				.def = 0x50,
23389184651SThierry Reding 			},
2344f1ac76eSThierry Reding 		},
23589184651SThierry Reding 	}, {
23689184651SThierry Reding 		.id = 0x1c,
23789184651SThierry Reding 		.name = "msencsrd",
23889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_MSENC,
2394f1ac76eSThierry Reding 		.regs = {
24089184651SThierry Reding 			.smmu = {
24189184651SThierry Reding 				.reg = 0x228,
24289184651SThierry Reding 				.bit = 28,
24389184651SThierry Reding 			},
24489184651SThierry Reding 			.la = {
24589184651SThierry Reding 				.reg = 0x328,
24689184651SThierry Reding 				.shift = 0,
24789184651SThierry Reding 				.mask = 0xff,
24889184651SThierry Reding 				.def = 0x23,
24989184651SThierry Reding 			},
2504f1ac76eSThierry Reding 		},
25189184651SThierry Reding 	}, {
25289184651SThierry Reding 		.id = 0x1d,
25389184651SThierry Reding 		.name = "ppcsahbdmar",
25489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_PPCS,
2554f1ac76eSThierry Reding 		.regs = {
25689184651SThierry Reding 			.smmu = {
25789184651SThierry Reding 				.reg = 0x228,
25889184651SThierry Reding 				.bit = 29,
25989184651SThierry Reding 			},
26089184651SThierry Reding 			.la = {
26189184651SThierry Reding 				.reg = 0x344,
26289184651SThierry Reding 				.shift = 0,
26389184651SThierry Reding 				.mask = 0xff,
26489184651SThierry Reding 				.def = 0x49,
26589184651SThierry Reding 			},
2664f1ac76eSThierry Reding 		},
26789184651SThierry Reding 	}, {
26889184651SThierry Reding 		.id = 0x1e,
26989184651SThierry Reding 		.name = "ppcsahbslvr",
27089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_PPCS,
2714f1ac76eSThierry Reding 		.regs = {
27289184651SThierry Reding 			.smmu = {
27389184651SThierry Reding 				.reg = 0x228,
27489184651SThierry Reding 				.bit = 30,
27589184651SThierry Reding 			},
27689184651SThierry Reding 			.la = {
27789184651SThierry Reding 				.reg = 0x344,
27889184651SThierry Reding 				.shift = 16,
27989184651SThierry Reding 				.mask = 0xff,
28089184651SThierry Reding 				.def = 0x1a,
28189184651SThierry Reding 			},
2824f1ac76eSThierry Reding 		},
28389184651SThierry Reding 	}, {
28489184651SThierry Reding 		.id = 0x1f,
28589184651SThierry Reding 		.name = "satar",
28689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SATA,
2874f1ac76eSThierry Reding 		.regs = {
28889184651SThierry Reding 			.smmu = {
28989184651SThierry Reding 				.reg = 0x228,
29089184651SThierry Reding 				.bit = 31,
29189184651SThierry Reding 			},
29289184651SThierry Reding 			.la = {
29389184651SThierry Reding 				.reg = 0x350,
29489184651SThierry Reding 				.shift = 0,
29589184651SThierry Reding 				.mask = 0xff,
29689184651SThierry Reding 				.def = 0x65,
29789184651SThierry Reding 			},
2984f1ac76eSThierry Reding 		},
29989184651SThierry Reding 	}, {
30089184651SThierry Reding 		.id = 0x22,
30189184651SThierry Reding 		.name = "vdebsevr",
30289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VDE,
3034f1ac76eSThierry Reding 		.regs = {
30489184651SThierry Reding 			.smmu = {
30589184651SThierry Reding 				.reg = 0x22c,
30689184651SThierry Reding 				.bit = 2,
30789184651SThierry Reding 			},
30889184651SThierry Reding 			.la = {
30989184651SThierry Reding 				.reg = 0x354,
31089184651SThierry Reding 				.shift = 0,
31189184651SThierry Reding 				.mask = 0xff,
31289184651SThierry Reding 				.def = 0x4f,
31389184651SThierry Reding 			},
3144f1ac76eSThierry Reding 		},
31589184651SThierry Reding 	}, {
31689184651SThierry Reding 		.id = 0x23,
31789184651SThierry Reding 		.name = "vdember",
31889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VDE,
3194f1ac76eSThierry Reding 		.regs = {
32089184651SThierry Reding 			.smmu = {
32189184651SThierry Reding 				.reg = 0x22c,
32289184651SThierry Reding 				.bit = 3,
32389184651SThierry Reding 			},
32489184651SThierry Reding 			.la = {
32589184651SThierry Reding 				.reg = 0x354,
32689184651SThierry Reding 				.shift = 16,
32789184651SThierry Reding 				.mask = 0xff,
32889184651SThierry Reding 				.def = 0x3d,
32989184651SThierry Reding 			},
3304f1ac76eSThierry Reding 		},
33189184651SThierry Reding 	}, {
33289184651SThierry Reding 		.id = 0x24,
33389184651SThierry Reding 		.name = "vdemcer",
33489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VDE,
3354f1ac76eSThierry Reding 		.regs = {
33689184651SThierry Reding 			.smmu = {
33789184651SThierry Reding 				.reg = 0x22c,
33889184651SThierry Reding 				.bit = 4,
33989184651SThierry Reding 			},
34089184651SThierry Reding 			.la = {
34189184651SThierry Reding 				.reg = 0x358,
34289184651SThierry Reding 				.shift = 0,
34389184651SThierry Reding 				.mask = 0xff,
34489184651SThierry Reding 				.def = 0x66,
34589184651SThierry Reding 			},
3464f1ac76eSThierry Reding 		},
34789184651SThierry Reding 	}, {
34889184651SThierry Reding 		.id = 0x25,
34989184651SThierry Reding 		.name = "vdetper",
35089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VDE,
3514f1ac76eSThierry Reding 		.regs = {
35289184651SThierry Reding 			.smmu = {
35389184651SThierry Reding 				.reg = 0x22c,
35489184651SThierry Reding 				.bit = 5,
35589184651SThierry Reding 			},
35689184651SThierry Reding 			.la = {
35789184651SThierry Reding 				.reg = 0x358,
35889184651SThierry Reding 				.shift = 16,
35989184651SThierry Reding 				.mask = 0xff,
36089184651SThierry Reding 				.def = 0xa5,
36189184651SThierry Reding 			},
3624f1ac76eSThierry Reding 		},
36389184651SThierry Reding 	}, {
36489184651SThierry Reding 		.id = 0x26,
36589184651SThierry Reding 		.name = "mpcorelpr",
36689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_MPCORELP,
3674f1ac76eSThierry Reding 		.regs = {
36889184651SThierry Reding 			.la = {
36989184651SThierry Reding 				.reg = 0x324,
37089184651SThierry Reding 				.shift = 0,
37189184651SThierry Reding 				.mask = 0xff,
37289184651SThierry Reding 				.def = 0x04,
37389184651SThierry Reding 			},
3744f1ac76eSThierry Reding 		},
37589184651SThierry Reding 	}, {
37689184651SThierry Reding 		.id = 0x27,
37789184651SThierry Reding 		.name = "mpcorer",
37889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_MPCORE,
3794f1ac76eSThierry Reding 		.regs = {
38089184651SThierry Reding 			.la = {
38189184651SThierry Reding 				.reg = 0x320,
38289184651SThierry Reding 				.shift = 0,
38389184651SThierry Reding 				.mask = 0xff,
38489184651SThierry Reding 				.def = 0x04,
38589184651SThierry Reding 			},
3864f1ac76eSThierry Reding 		},
38789184651SThierry Reding 	}, {
38889184651SThierry Reding 		.id = 0x2b,
38989184651SThierry Reding 		.name = "msencswr",
39089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_MSENC,
3914f1ac76eSThierry Reding 		.regs = {
39289184651SThierry Reding 			.smmu = {
39389184651SThierry Reding 				.reg = 0x22c,
39489184651SThierry Reding 				.bit = 11,
39589184651SThierry Reding 			},
39689184651SThierry Reding 			.la = {
39789184651SThierry Reding 				.reg = 0x328,
39889184651SThierry Reding 				.shift = 16,
39989184651SThierry Reding 				.mask = 0xff,
40089184651SThierry Reding 				.def = 0x80,
40189184651SThierry Reding 			},
4024f1ac76eSThierry Reding 		},
40389184651SThierry Reding 	}, {
40489184651SThierry Reding 		.id = 0x31,
40589184651SThierry Reding 		.name = "afiw",
40689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_AFI,
4074f1ac76eSThierry Reding 		.regs = {
40889184651SThierry Reding 			.smmu = {
40989184651SThierry Reding 				.reg = 0x22c,
41089184651SThierry Reding 				.bit = 17,
41189184651SThierry Reding 			},
41289184651SThierry Reding 			.la = {
41389184651SThierry Reding 				.reg = 0x2e0,
41489184651SThierry Reding 				.shift = 16,
41589184651SThierry Reding 				.mask = 0xff,
41689184651SThierry Reding 				.def = 0x80,
41789184651SThierry Reding 			},
4184f1ac76eSThierry Reding 		},
41989184651SThierry Reding 	}, {
42089184651SThierry Reding 		.id = 0x32,
42189184651SThierry Reding 		.name = "avpcarm7w",
42289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_AVPC,
4234f1ac76eSThierry Reding 		.regs = {
42489184651SThierry Reding 			.smmu = {
42589184651SThierry Reding 				.reg = 0x22c,
42689184651SThierry Reding 				.bit = 18,
42789184651SThierry Reding 			},
42889184651SThierry Reding 			.la = {
42989184651SThierry Reding 				.reg = 0x2e4,
43089184651SThierry Reding 				.shift = 16,
43189184651SThierry Reding 				.mask = 0xff,
43289184651SThierry Reding 				.def = 0x80,
43389184651SThierry Reding 			},
4344f1ac76eSThierry Reding 		},
43589184651SThierry Reding 	}, {
43689184651SThierry Reding 		.id = 0x35,
43789184651SThierry Reding 		.name = "hdaw",
43889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_HDA,
4394f1ac76eSThierry Reding 		.regs = {
44089184651SThierry Reding 			.smmu = {
44189184651SThierry Reding 				.reg = 0x22c,
44289184651SThierry Reding 				.bit = 21,
44389184651SThierry Reding 			},
44489184651SThierry Reding 			.la = {
44589184651SThierry Reding 				.reg = 0x318,
44689184651SThierry Reding 				.shift = 16,
44789184651SThierry Reding 				.mask = 0xff,
44889184651SThierry Reding 				.def = 0x80,
44989184651SThierry Reding 			},
4504f1ac76eSThierry Reding 		},
45189184651SThierry Reding 	}, {
45289184651SThierry Reding 		.id = 0x36,
45389184651SThierry Reding 		.name = "host1xw",
45489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_HC,
4554f1ac76eSThierry Reding 		.regs = {
45689184651SThierry Reding 			.smmu = {
45789184651SThierry Reding 				.reg = 0x22c,
45889184651SThierry Reding 				.bit = 22,
45989184651SThierry Reding 			},
46089184651SThierry Reding 			.la = {
46189184651SThierry Reding 				.reg = 0x314,
46289184651SThierry Reding 				.shift = 0,
46389184651SThierry Reding 				.mask = 0xff,
46489184651SThierry Reding 				.def = 0x80,
46589184651SThierry Reding 			},
4664f1ac76eSThierry Reding 		},
46789184651SThierry Reding 	}, {
46889184651SThierry Reding 		.id = 0x38,
46989184651SThierry Reding 		.name = "mpcorelpw",
47089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_MPCORELP,
4714f1ac76eSThierry Reding 		.regs = {
47289184651SThierry Reding 			.la = {
47389184651SThierry Reding 				.reg = 0x324,
47489184651SThierry Reding 				.shift = 16,
47589184651SThierry Reding 				.mask = 0xff,
47689184651SThierry Reding 				.def = 0x80,
47789184651SThierry Reding 			},
4784f1ac76eSThierry Reding 		},
47989184651SThierry Reding 	}, {
48089184651SThierry Reding 		.id = 0x39,
48189184651SThierry Reding 		.name = "mpcorew",
48289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_MPCORE,
4834f1ac76eSThierry Reding 		.regs = {
48489184651SThierry Reding 			.la = {
48589184651SThierry Reding 				.reg = 0x320,
48689184651SThierry Reding 				.shift = 16,
48789184651SThierry Reding 				.mask = 0xff,
48889184651SThierry Reding 				.def = 0x80,
48989184651SThierry Reding 			},
4904f1ac76eSThierry Reding 		},
49189184651SThierry Reding 	}, {
49289184651SThierry Reding 		.id = 0x3b,
49389184651SThierry Reding 		.name = "ppcsahbdmaw",
49489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_PPCS,
4954f1ac76eSThierry Reding 		.regs = {
49689184651SThierry Reding 			.smmu = {
49789184651SThierry Reding 				.reg = 0x22c,
49889184651SThierry Reding 				.bit = 27,
49989184651SThierry Reding 			},
50089184651SThierry Reding 			.la = {
50189184651SThierry Reding 				.reg = 0x348,
50289184651SThierry Reding 				.shift = 0,
50389184651SThierry Reding 				.mask = 0xff,
50489184651SThierry Reding 				.def = 0x80,
50589184651SThierry Reding 			},
5064f1ac76eSThierry Reding 		},
50789184651SThierry Reding 	}, {
50889184651SThierry Reding 		.id = 0x3c,
50989184651SThierry Reding 		.name = "ppcsahbslvw",
51089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_PPCS,
5114f1ac76eSThierry Reding 		.regs = {
51289184651SThierry Reding 			.smmu = {
51389184651SThierry Reding 				.reg = 0x22c,
51489184651SThierry Reding 				.bit = 28,
51589184651SThierry Reding 			},
51689184651SThierry Reding 			.la = {
51789184651SThierry Reding 				.reg = 0x348,
51889184651SThierry Reding 				.shift = 16,
51989184651SThierry Reding 				.mask = 0xff,
52089184651SThierry Reding 				.def = 0x80,
52189184651SThierry Reding 			},
5224f1ac76eSThierry Reding 		},
52389184651SThierry Reding 	}, {
52489184651SThierry Reding 		.id = 0x3d,
52589184651SThierry Reding 		.name = "sataw",
52689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SATA,
5274f1ac76eSThierry Reding 		.regs = {
52889184651SThierry Reding 			.smmu = {
52989184651SThierry Reding 				.reg = 0x22c,
53089184651SThierry Reding 				.bit = 29,
53189184651SThierry Reding 			},
53289184651SThierry Reding 			.la = {
53389184651SThierry Reding 				.reg = 0x350,
53489184651SThierry Reding 				.shift = 16,
53589184651SThierry Reding 				.mask = 0xff,
53689184651SThierry Reding 				.def = 0x65,
53789184651SThierry Reding 			},
5384f1ac76eSThierry Reding 		},
53989184651SThierry Reding 	}, {
54089184651SThierry Reding 		.id = 0x3e,
54189184651SThierry Reding 		.name = "vdebsevw",
54289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VDE,
5434f1ac76eSThierry Reding 		.regs = {
54489184651SThierry Reding 			.smmu = {
54589184651SThierry Reding 				.reg = 0x22c,
54689184651SThierry Reding 				.bit = 30,
54789184651SThierry Reding 			},
54889184651SThierry Reding 			.la = {
54989184651SThierry Reding 				.reg = 0x35c,
55089184651SThierry Reding 				.shift = 0,
55189184651SThierry Reding 				.mask = 0xff,
55289184651SThierry Reding 				.def = 0x80,
55389184651SThierry Reding 			},
5544f1ac76eSThierry Reding 		},
55589184651SThierry Reding 	}, {
55689184651SThierry Reding 		.id = 0x3f,
55789184651SThierry Reding 		.name = "vdedbgw",
55889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VDE,
5594f1ac76eSThierry Reding 		.regs = {
56089184651SThierry Reding 			.smmu = {
56189184651SThierry Reding 				.reg = 0x22c,
56289184651SThierry Reding 				.bit = 31,
56389184651SThierry Reding 			},
56489184651SThierry Reding 			.la = {
56589184651SThierry Reding 				.reg = 0x35c,
56689184651SThierry Reding 				.shift = 16,
56789184651SThierry Reding 				.mask = 0xff,
56889184651SThierry Reding 				.def = 0x80,
56989184651SThierry Reding 			},
5704f1ac76eSThierry Reding 		},
57189184651SThierry Reding 	}, {
57289184651SThierry Reding 		.id = 0x40,
57389184651SThierry Reding 		.name = "vdembew",
57489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VDE,
5754f1ac76eSThierry Reding 		.regs = {
57689184651SThierry Reding 			.smmu = {
57789184651SThierry Reding 				.reg = 0x230,
57889184651SThierry Reding 				.bit = 0,
57989184651SThierry Reding 			},
58089184651SThierry Reding 			.la = {
58189184651SThierry Reding 				.reg = 0x360,
58289184651SThierry Reding 				.shift = 0,
58389184651SThierry Reding 				.mask = 0xff,
58489184651SThierry Reding 				.def = 0x80,
58589184651SThierry Reding 			},
5864f1ac76eSThierry Reding 		},
58789184651SThierry Reding 	}, {
58889184651SThierry Reding 		.id = 0x41,
58989184651SThierry Reding 		.name = "vdetpmw",
59089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VDE,
5914f1ac76eSThierry Reding 		.regs = {
59289184651SThierry Reding 			.smmu = {
59389184651SThierry Reding 				.reg = 0x230,
59489184651SThierry Reding 				.bit = 1,
59589184651SThierry Reding 			},
59689184651SThierry Reding 			.la = {
59789184651SThierry Reding 				.reg = 0x360,
59889184651SThierry Reding 				.shift = 16,
59989184651SThierry Reding 				.mask = 0xff,
60089184651SThierry Reding 				.def = 0x80,
60189184651SThierry Reding 			},
6024f1ac76eSThierry Reding 		},
60389184651SThierry Reding 	}, {
60489184651SThierry Reding 		.id = 0x44,
60589184651SThierry Reding 		.name = "ispra",
60689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_ISP2,
6074f1ac76eSThierry Reding 		.regs = {
60889184651SThierry Reding 			.smmu = {
60989184651SThierry Reding 				.reg = 0x230,
61089184651SThierry Reding 				.bit = 4,
61189184651SThierry Reding 			},
61289184651SThierry Reding 			.la = {
61389184651SThierry Reding 				.reg = 0x370,
61489184651SThierry Reding 				.shift = 0,
61589184651SThierry Reding 				.mask = 0xff,
61689184651SThierry Reding 				.def = 0x18,
61789184651SThierry Reding 			},
6184f1ac76eSThierry Reding 		},
61989184651SThierry Reding 	}, {
62089184651SThierry Reding 		.id = 0x46,
62189184651SThierry Reding 		.name = "ispwa",
62289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_ISP2,
6234f1ac76eSThierry Reding 		.regs = {
62489184651SThierry Reding 			.smmu = {
62589184651SThierry Reding 				.reg = 0x230,
62689184651SThierry Reding 				.bit = 6,
62789184651SThierry Reding 			},
62889184651SThierry Reding 			.la = {
62989184651SThierry Reding 				.reg = 0x374,
63089184651SThierry Reding 				.shift = 0,
63189184651SThierry Reding 				.mask = 0xff,
63289184651SThierry Reding 				.def = 0x80,
63389184651SThierry Reding 			},
6344f1ac76eSThierry Reding 		},
63589184651SThierry Reding 	}, {
63689184651SThierry Reding 		.id = 0x47,
63789184651SThierry Reding 		.name = "ispwb",
63889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_ISP2,
6394f1ac76eSThierry Reding 		.regs = {
64089184651SThierry Reding 			.smmu = {
64189184651SThierry Reding 				.reg = 0x230,
64289184651SThierry Reding 				.bit = 7,
64389184651SThierry Reding 			},
64489184651SThierry Reding 			.la = {
64589184651SThierry Reding 				.reg = 0x374,
64689184651SThierry Reding 				.shift = 16,
64789184651SThierry Reding 				.mask = 0xff,
64889184651SThierry Reding 				.def = 0x80,
64989184651SThierry Reding 			},
6504f1ac76eSThierry Reding 		},
65189184651SThierry Reding 	}, {
65289184651SThierry Reding 		.id = 0x4a,
65389184651SThierry Reding 		.name = "xusb_hostr",
65489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_XUSB_HOST,
6554f1ac76eSThierry Reding 		.regs = {
65689184651SThierry Reding 			.smmu = {
65789184651SThierry Reding 				.reg = 0x230,
65889184651SThierry Reding 				.bit = 10,
65989184651SThierry Reding 			},
66089184651SThierry Reding 			.la = {
66189184651SThierry Reding 				.reg = 0x37c,
66289184651SThierry Reding 				.shift = 0,
66389184651SThierry Reding 				.mask = 0xff,
66489184651SThierry Reding 				.def = 0x39,
66589184651SThierry Reding 			},
6664f1ac76eSThierry Reding 		},
66789184651SThierry Reding 	}, {
66889184651SThierry Reding 		.id = 0x4b,
66989184651SThierry Reding 		.name = "xusb_hostw",
67089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_XUSB_HOST,
6714f1ac76eSThierry Reding 		.regs = {
67289184651SThierry Reding 			.smmu = {
67389184651SThierry Reding 				.reg = 0x230,
67489184651SThierry Reding 				.bit = 11,
67589184651SThierry Reding 			},
67689184651SThierry Reding 			.la = {
67789184651SThierry Reding 				.reg = 0x37c,
67889184651SThierry Reding 				.shift = 16,
67989184651SThierry Reding 				.mask = 0xff,
68089184651SThierry Reding 				.def = 0x80,
68189184651SThierry Reding 			},
6824f1ac76eSThierry Reding 		},
68389184651SThierry Reding 	}, {
68489184651SThierry Reding 		.id = 0x4c,
68589184651SThierry Reding 		.name = "xusb_devr",
68689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_XUSB_DEV,
6874f1ac76eSThierry Reding 		.regs = {
68889184651SThierry Reding 			.smmu = {
68989184651SThierry Reding 				.reg = 0x230,
69089184651SThierry Reding 				.bit = 12,
69189184651SThierry Reding 			},
69289184651SThierry Reding 			.la = {
69389184651SThierry Reding 				.reg = 0x380,
69489184651SThierry Reding 				.shift = 0,
69589184651SThierry Reding 				.mask = 0xff,
69689184651SThierry Reding 				.def = 0x39,
69789184651SThierry Reding 			},
6984f1ac76eSThierry Reding 		},
69989184651SThierry Reding 	}, {
70089184651SThierry Reding 		.id = 0x4d,
70189184651SThierry Reding 		.name = "xusb_devw",
70289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_XUSB_DEV,
7034f1ac76eSThierry Reding 		.regs = {
70489184651SThierry Reding 			.smmu = {
70589184651SThierry Reding 				.reg = 0x230,
70689184651SThierry Reding 				.bit = 13,
70789184651SThierry Reding 			},
70889184651SThierry Reding 			.la = {
70989184651SThierry Reding 				.reg = 0x380,
71089184651SThierry Reding 				.shift = 16,
71189184651SThierry Reding 				.mask = 0xff,
71289184651SThierry Reding 				.def = 0x80,
71389184651SThierry Reding 			},
7144f1ac76eSThierry Reding 		},
71589184651SThierry Reding 	}, {
71689184651SThierry Reding 		.id = 0x4e,
71789184651SThierry Reding 		.name = "isprab",
71889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_ISP2B,
7194f1ac76eSThierry Reding 		.regs = {
72089184651SThierry Reding 			.smmu = {
72189184651SThierry Reding 				.reg = 0x230,
72289184651SThierry Reding 				.bit = 14,
72389184651SThierry Reding 			},
72489184651SThierry Reding 			.la = {
72589184651SThierry Reding 				.reg = 0x384,
72689184651SThierry Reding 				.shift = 0,
72789184651SThierry Reding 				.mask = 0xff,
72889184651SThierry Reding 				.def = 0x18,
72989184651SThierry Reding 			},
7304f1ac76eSThierry Reding 		},
73189184651SThierry Reding 	}, {
73289184651SThierry Reding 		.id = 0x50,
73389184651SThierry Reding 		.name = "ispwab",
73489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_ISP2B,
7354f1ac76eSThierry Reding 		.regs = {
73689184651SThierry Reding 			.smmu = {
73789184651SThierry Reding 				.reg = 0x230,
73889184651SThierry Reding 				.bit = 16,
73989184651SThierry Reding 			},
74089184651SThierry Reding 			.la = {
74189184651SThierry Reding 				.reg = 0x388,
74289184651SThierry Reding 				.shift = 0,
74389184651SThierry Reding 				.mask = 0xff,
74489184651SThierry Reding 				.def = 0x80,
74589184651SThierry Reding 			},
7464f1ac76eSThierry Reding 		},
74789184651SThierry Reding 	}, {
74889184651SThierry Reding 		.id = 0x51,
74989184651SThierry Reding 		.name = "ispwbb",
75089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_ISP2B,
7514f1ac76eSThierry Reding 		.regs = {
75289184651SThierry Reding 			.smmu = {
75389184651SThierry Reding 				.reg = 0x230,
75489184651SThierry Reding 				.bit = 17,
75589184651SThierry Reding 			},
75689184651SThierry Reding 			.la = {
75789184651SThierry Reding 				.reg = 0x388,
75889184651SThierry Reding 				.shift = 16,
75989184651SThierry Reding 				.mask = 0xff,
76089184651SThierry Reding 				.def = 0x80,
76189184651SThierry Reding 			},
7624f1ac76eSThierry Reding 		},
76389184651SThierry Reding 	}, {
76489184651SThierry Reding 		.id = 0x54,
76589184651SThierry Reding 		.name = "tsecsrd",
76689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_TSEC,
7674f1ac76eSThierry Reding 		.regs = {
76889184651SThierry Reding 			.smmu = {
76989184651SThierry Reding 				.reg = 0x230,
77089184651SThierry Reding 				.bit = 20,
77189184651SThierry Reding 			},
77289184651SThierry Reding 			.la = {
77389184651SThierry Reding 				.reg = 0x390,
77489184651SThierry Reding 				.shift = 0,
77589184651SThierry Reding 				.mask = 0xff,
77689184651SThierry Reding 				.def = 0x9b,
77789184651SThierry Reding 			},
7784f1ac76eSThierry Reding 		},
77989184651SThierry Reding 	}, {
78089184651SThierry Reding 		.id = 0x55,
78189184651SThierry Reding 		.name = "tsecswr",
78289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_TSEC,
7834f1ac76eSThierry Reding 		.regs = {
78489184651SThierry Reding 			.smmu = {
78589184651SThierry Reding 				.reg = 0x230,
78689184651SThierry Reding 				.bit = 21,
78789184651SThierry Reding 			},
78889184651SThierry Reding 			.la = {
78989184651SThierry Reding 				.reg = 0x390,
79089184651SThierry Reding 				.shift = 16,
79189184651SThierry Reding 				.mask = 0xff,
79289184651SThierry Reding 				.def = 0x80,
79389184651SThierry Reding 			},
7944f1ac76eSThierry Reding 		},
79589184651SThierry Reding 	}, {
79689184651SThierry Reding 		.id = 0x56,
79789184651SThierry Reding 		.name = "a9avpscr",
79889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_A9AVP,
7994f1ac76eSThierry Reding 		.regs = {
80089184651SThierry Reding 			.smmu = {
80189184651SThierry Reding 				.reg = 0x230,
80289184651SThierry Reding 				.bit = 22,
80389184651SThierry Reding 			},
80489184651SThierry Reding 			.la = {
80589184651SThierry Reding 				.reg = 0x3a4,
80689184651SThierry Reding 				.shift = 0,
80789184651SThierry Reding 				.mask = 0xff,
80889184651SThierry Reding 				.def = 0x04,
80989184651SThierry Reding 			},
8104f1ac76eSThierry Reding 		},
81189184651SThierry Reding 	}, {
81289184651SThierry Reding 		.id = 0x57,
81389184651SThierry Reding 		.name = "a9avpscw",
81489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_A9AVP,
8154f1ac76eSThierry Reding 		.regs = {
81689184651SThierry Reding 			.smmu = {
81789184651SThierry Reding 				.reg = 0x230,
81889184651SThierry Reding 				.bit = 23,
81989184651SThierry Reding 			},
82089184651SThierry Reding 			.la = {
82189184651SThierry Reding 				.reg = 0x3a4,
82289184651SThierry Reding 				.shift = 16,
82389184651SThierry Reding 				.mask = 0xff,
82489184651SThierry Reding 				.def = 0x80,
82589184651SThierry Reding 			},
8264f1ac76eSThierry Reding 		},
82789184651SThierry Reding 	}, {
82889184651SThierry Reding 		.id = 0x58,
82989184651SThierry Reding 		.name = "gpusrd",
83089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_GPU,
8314f1ac76eSThierry Reding 		.regs = {
83289184651SThierry Reding 			.smmu = {
83389184651SThierry Reding 				/* read-only */
83489184651SThierry Reding 				.reg = 0x230,
83589184651SThierry Reding 				.bit = 24,
83689184651SThierry Reding 			},
83789184651SThierry Reding 			.la = {
83889184651SThierry Reding 				.reg = 0x3c8,
83989184651SThierry Reding 				.shift = 0,
84089184651SThierry Reding 				.mask = 0xff,
84189184651SThierry Reding 				.def = 0x1a,
84289184651SThierry Reding 			},
8434f1ac76eSThierry Reding 		},
84489184651SThierry Reding 	}, {
84589184651SThierry Reding 		.id = 0x59,
84689184651SThierry Reding 		.name = "gpuswr",
84789184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_GPU,
8484f1ac76eSThierry Reding 		.regs = {
84989184651SThierry Reding 			.smmu = {
85089184651SThierry Reding 				/* read-only */
85189184651SThierry Reding 				.reg = 0x230,
85289184651SThierry Reding 				.bit = 25,
85389184651SThierry Reding 			},
85489184651SThierry Reding 			.la = {
85589184651SThierry Reding 				.reg = 0x3c8,
85689184651SThierry Reding 				.shift = 16,
85789184651SThierry Reding 				.mask = 0xff,
85889184651SThierry Reding 				.def = 0x80,
85989184651SThierry Reding 			},
8604f1ac76eSThierry Reding 		},
86189184651SThierry Reding 	}, {
86289184651SThierry Reding 		.id = 0x5a,
86389184651SThierry Reding 		.name = "displayt",
86489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DC,
8654f1ac76eSThierry Reding 		.regs = {
86689184651SThierry Reding 			.smmu = {
86789184651SThierry Reding 				.reg = 0x230,
86889184651SThierry Reding 				.bit = 26,
86989184651SThierry Reding 			},
87089184651SThierry Reding 			.la = {
87189184651SThierry Reding 				.reg = 0x2f0,
87289184651SThierry Reding 				.shift = 16,
87389184651SThierry Reding 				.mask = 0xff,
87489184651SThierry Reding 				.def = 0x50,
87589184651SThierry Reding 			},
8764f1ac76eSThierry Reding 		},
87789184651SThierry Reding 	}, {
87889184651SThierry Reding 		.id = 0x60,
87989184651SThierry Reding 		.name = "sdmmcra",
88089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SDMMC1A,
8814f1ac76eSThierry Reding 		.regs = {
88289184651SThierry Reding 			.smmu = {
88389184651SThierry Reding 				.reg = 0x234,
88489184651SThierry Reding 				.bit = 0,
88589184651SThierry Reding 			},
88689184651SThierry Reding 			.la = {
88789184651SThierry Reding 				.reg = 0x3b8,
88889184651SThierry Reding 				.shift = 0,
88989184651SThierry Reding 				.mask = 0xff,
89089184651SThierry Reding 				.def = 0x49,
89189184651SThierry Reding 			},
8924f1ac76eSThierry Reding 		},
89389184651SThierry Reding 	}, {
89489184651SThierry Reding 		.id = 0x61,
89589184651SThierry Reding 		.name = "sdmmcraa",
89689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SDMMC2A,
8974f1ac76eSThierry Reding 		.regs = {
89889184651SThierry Reding 			.smmu = {
89989184651SThierry Reding 				.reg = 0x234,
90089184651SThierry Reding 				.bit = 1,
90189184651SThierry Reding 			},
90289184651SThierry Reding 			.la = {
90389184651SThierry Reding 				.reg = 0x3bc,
90489184651SThierry Reding 				.shift = 0,
90589184651SThierry Reding 				.mask = 0xff,
90689184651SThierry Reding 				.def = 0x49,
90789184651SThierry Reding 			},
9084f1ac76eSThierry Reding 		},
90989184651SThierry Reding 	}, {
91089184651SThierry Reding 		.id = 0x62,
91189184651SThierry Reding 		.name = "sdmmcr",
91289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SDMMC3A,
9134f1ac76eSThierry Reding 		.regs = {
91489184651SThierry Reding 			.smmu = {
91589184651SThierry Reding 				.reg = 0x234,
91689184651SThierry Reding 				.bit = 2,
91789184651SThierry Reding 			},
91889184651SThierry Reding 			.la = {
91989184651SThierry Reding 				.reg = 0x3c0,
92089184651SThierry Reding 				.shift = 0,
92189184651SThierry Reding 				.mask = 0xff,
92289184651SThierry Reding 				.def = 0x49,
92389184651SThierry Reding 			},
9244f1ac76eSThierry Reding 		},
92589184651SThierry Reding 	}, {
92689184651SThierry Reding 		.id = 0x63,
92789184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SDMMC4A,
92889184651SThierry Reding 		.name = "sdmmcrab",
9294f1ac76eSThierry Reding 		.regs = {
93089184651SThierry Reding 			.smmu = {
93189184651SThierry Reding 				.reg = 0x234,
93289184651SThierry Reding 				.bit = 3,
93389184651SThierry Reding 			},
93489184651SThierry Reding 			.la = {
93589184651SThierry Reding 				.reg = 0x3c4,
93689184651SThierry Reding 				.shift = 0,
93789184651SThierry Reding 				.mask = 0xff,
93889184651SThierry Reding 				.def = 0x49,
93989184651SThierry Reding 			},
9404f1ac76eSThierry Reding 		},
94189184651SThierry Reding 	}, {
94289184651SThierry Reding 		.id = 0x64,
94389184651SThierry Reding 		.name = "sdmmcwa",
94489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SDMMC1A,
9454f1ac76eSThierry Reding 		.regs = {
94689184651SThierry Reding 			.smmu = {
94789184651SThierry Reding 				.reg = 0x234,
94889184651SThierry Reding 				.bit = 4,
94989184651SThierry Reding 			},
95089184651SThierry Reding 			.la = {
95189184651SThierry Reding 				.reg = 0x3b8,
95289184651SThierry Reding 				.shift = 16,
95389184651SThierry Reding 				.mask = 0xff,
95489184651SThierry Reding 				.def = 0x80,
95589184651SThierry Reding 			},
9564f1ac76eSThierry Reding 		},
95789184651SThierry Reding 	}, {
95889184651SThierry Reding 		.id = 0x65,
95989184651SThierry Reding 		.name = "sdmmcwaa",
96089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SDMMC2A,
9614f1ac76eSThierry Reding 		.regs = {
96289184651SThierry Reding 			.smmu = {
96389184651SThierry Reding 				.reg = 0x234,
96489184651SThierry Reding 				.bit = 5,
96589184651SThierry Reding 			},
96689184651SThierry Reding 			.la = {
96789184651SThierry Reding 				.reg = 0x3bc,
96889184651SThierry Reding 				.shift = 16,
96989184651SThierry Reding 				.mask = 0xff,
97089184651SThierry Reding 				.def = 0x80,
97189184651SThierry Reding 			},
9724f1ac76eSThierry Reding 		},
97389184651SThierry Reding 	}, {
97489184651SThierry Reding 		.id = 0x66,
97589184651SThierry Reding 		.name = "sdmmcw",
97689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SDMMC3A,
9774f1ac76eSThierry Reding 		.regs = {
97889184651SThierry Reding 			.smmu = {
97989184651SThierry Reding 				.reg = 0x234,
98089184651SThierry Reding 				.bit = 6,
98189184651SThierry Reding 			},
98289184651SThierry Reding 			.la = {
98389184651SThierry Reding 				.reg = 0x3c0,
98489184651SThierry Reding 				.shift = 16,
98589184651SThierry Reding 				.mask = 0xff,
98689184651SThierry Reding 				.def = 0x80,
98789184651SThierry Reding 			},
9884f1ac76eSThierry Reding 		},
98989184651SThierry Reding 	}, {
99089184651SThierry Reding 		.id = 0x67,
99189184651SThierry Reding 		.name = "sdmmcwab",
99289184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_SDMMC4A,
9934f1ac76eSThierry Reding 		.regs = {
99489184651SThierry Reding 			.smmu = {
99589184651SThierry Reding 				.reg = 0x234,
99689184651SThierry Reding 				.bit = 7,
99789184651SThierry Reding 			},
99889184651SThierry Reding 			.la = {
99989184651SThierry Reding 				.reg = 0x3c4,
100089184651SThierry Reding 				.shift = 16,
100189184651SThierry Reding 				.mask = 0xff,
100289184651SThierry Reding 				.def = 0x80,
100389184651SThierry Reding 			},
10044f1ac76eSThierry Reding 		},
100589184651SThierry Reding 	}, {
100689184651SThierry Reding 		.id = 0x6c,
100789184651SThierry Reding 		.name = "vicsrd",
100889184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VIC,
10094f1ac76eSThierry Reding 		.regs = {
101089184651SThierry Reding 			.smmu = {
101189184651SThierry Reding 				.reg = 0x234,
101289184651SThierry Reding 				.bit = 12,
101389184651SThierry Reding 			},
101489184651SThierry Reding 			.la = {
101589184651SThierry Reding 				.reg = 0x394,
101689184651SThierry Reding 				.shift = 0,
101789184651SThierry Reding 				.mask = 0xff,
101889184651SThierry Reding 				.def = 0x1a,
101989184651SThierry Reding 			},
10204f1ac76eSThierry Reding 		},
102189184651SThierry Reding 	}, {
102289184651SThierry Reding 		.id = 0x6d,
102389184651SThierry Reding 		.name = "vicswr",
102489184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VIC,
10254f1ac76eSThierry Reding 		.regs = {
102689184651SThierry Reding 			.smmu = {
102789184651SThierry Reding 				.reg = 0x234,
102889184651SThierry Reding 				.bit = 13,
102989184651SThierry Reding 			},
103089184651SThierry Reding 			.la = {
103189184651SThierry Reding 				.reg = 0x394,
103289184651SThierry Reding 				.shift = 16,
103389184651SThierry Reding 				.mask = 0xff,
103489184651SThierry Reding 				.def = 0x80,
103589184651SThierry Reding 			},
10364f1ac76eSThierry Reding 		},
103789184651SThierry Reding 	}, {
103889184651SThierry Reding 		.id = 0x72,
103989184651SThierry Reding 		.name = "viw",
104089184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_VI,
10414f1ac76eSThierry Reding 		.regs = {
104289184651SThierry Reding 			.smmu = {
104389184651SThierry Reding 				.reg = 0x234,
104489184651SThierry Reding 				.bit = 18,
104589184651SThierry Reding 			},
104689184651SThierry Reding 			.la = {
104789184651SThierry Reding 				.reg = 0x398,
104889184651SThierry Reding 				.shift = 0,
104989184651SThierry Reding 				.mask = 0xff,
105089184651SThierry Reding 				.def = 0x80,
105189184651SThierry Reding 			},
10524f1ac76eSThierry Reding 		},
105389184651SThierry Reding 	}, {
105489184651SThierry Reding 		.id = 0x73,
105589184651SThierry Reding 		.name = "displayd",
105689184651SThierry Reding 		.swgroup = TEGRA_SWGROUP_DC,
10574f1ac76eSThierry Reding 		.regs = {
105889184651SThierry Reding 			.smmu = {
105989184651SThierry Reding 				.reg = 0x234,
106089184651SThierry Reding 				.bit = 19,
106189184651SThierry Reding 			},
106289184651SThierry Reding 			.la = {
106389184651SThierry Reding 				.reg = 0x3c8,
106489184651SThierry Reding 				.shift = 0,
106589184651SThierry Reding 				.mask = 0xff,
106689184651SThierry Reding 				.def = 0x50,
106789184651SThierry Reding 			},
106889184651SThierry Reding 		},
10694f1ac76eSThierry Reding 	},
107089184651SThierry Reding };
107189184651SThierry Reding 
107289184651SThierry Reding static const struct tegra_smmu_swgroup tegra124_swgroups[] = {
1073e660df07SThierry Reding 	{ .name = "dc",        .swgroup = TEGRA_SWGROUP_DC,        .reg = 0x240 },
1074e660df07SThierry Reding 	{ .name = "dcb",       .swgroup = TEGRA_SWGROUP_DCB,       .reg = 0x244 },
1075e660df07SThierry Reding 	{ .name = "afi",       .swgroup = TEGRA_SWGROUP_AFI,       .reg = 0x238 },
1076e660df07SThierry Reding 	{ .name = "avpc",      .swgroup = TEGRA_SWGROUP_AVPC,      .reg = 0x23c },
1077e660df07SThierry Reding 	{ .name = "hda",       .swgroup = TEGRA_SWGROUP_HDA,       .reg = 0x254 },
1078e660df07SThierry Reding 	{ .name = "hc",        .swgroup = TEGRA_SWGROUP_HC,        .reg = 0x250 },
1079e660df07SThierry Reding 	{ .name = "msenc",     .swgroup = TEGRA_SWGROUP_MSENC,     .reg = 0x264 },
1080e660df07SThierry Reding 	{ .name = "ppcs",      .swgroup = TEGRA_SWGROUP_PPCS,      .reg = 0x270 },
1081e660df07SThierry Reding 	{ .name = "sata",      .swgroup = TEGRA_SWGROUP_SATA,      .reg = 0x274 },
1082e660df07SThierry Reding 	{ .name = "vde",       .swgroup = TEGRA_SWGROUP_VDE,       .reg = 0x27c },
1083e660df07SThierry Reding 	{ .name = "isp2",      .swgroup = TEGRA_SWGROUP_ISP2,      .reg = 0x258 },
1084e660df07SThierry Reding 	{ .name = "xusb_host", .swgroup = TEGRA_SWGROUP_XUSB_HOST, .reg = 0x288 },
1085e660df07SThierry Reding 	{ .name = "xusb_dev",  .swgroup = TEGRA_SWGROUP_XUSB_DEV,  .reg = 0x28c },
1086e660df07SThierry Reding 	{ .name = "isp2b",     .swgroup = TEGRA_SWGROUP_ISP2B,     .reg = 0xaa4 },
1087e660df07SThierry Reding 	{ .name = "tsec",      .swgroup = TEGRA_SWGROUP_TSEC,      .reg = 0x294 },
1088e660df07SThierry Reding 	{ .name = "a9avp",     .swgroup = TEGRA_SWGROUP_A9AVP,     .reg = 0x290 },
1089e660df07SThierry Reding 	{ .name = "gpu",       .swgroup = TEGRA_SWGROUP_GPU,       .reg = 0xaac },
1090e660df07SThierry Reding 	{ .name = "sdmmc1a",   .swgroup = TEGRA_SWGROUP_SDMMC1A,   .reg = 0xa94 },
1091e660df07SThierry Reding 	{ .name = "sdmmc2a",   .swgroup = TEGRA_SWGROUP_SDMMC2A,   .reg = 0xa98 },
1092e660df07SThierry Reding 	{ .name = "sdmmc3a",   .swgroup = TEGRA_SWGROUP_SDMMC3A,   .reg = 0xa9c },
1093e660df07SThierry Reding 	{ .name = "sdmmc4a",   .swgroup = TEGRA_SWGROUP_SDMMC4A,   .reg = 0xaa0 },
1094e660df07SThierry Reding 	{ .name = "vic",       .swgroup = TEGRA_SWGROUP_VIC,       .reg = 0x284 },
1095e660df07SThierry Reding 	{ .name = "vi",        .swgroup = TEGRA_SWGROUP_VI,        .reg = 0x280 },
109689184651SThierry Reding };
109789184651SThierry Reding 
109863a613fdSThierry Reding static const unsigned int tegra124_group_drm[] = {
10992a8102dfSThierry Reding 	TEGRA_SWGROUP_DC,
11002a8102dfSThierry Reding 	TEGRA_SWGROUP_DCB,
110163a613fdSThierry Reding 	TEGRA_SWGROUP_VIC,
11022a8102dfSThierry Reding };
11032a8102dfSThierry Reding 
11042a8102dfSThierry Reding static const struct tegra_smmu_group_soc tegra124_groups[] = {
11052a8102dfSThierry Reding 	{
110663a613fdSThierry Reding 		.name = "drm",
110763a613fdSThierry Reding 		.swgroups = tegra124_group_drm,
110863a613fdSThierry Reding 		.num_swgroups = ARRAY_SIZE(tegra124_group_drm),
11092a8102dfSThierry Reding 	},
11102a8102dfSThierry Reding };
11112a8102dfSThierry Reding 
11121b19b056SDmitry Osipenko #define TEGRA124_MC_RESET(_name, _control, _status, _bit)	\
11131b19b056SDmitry Osipenko 	{							\
11141b19b056SDmitry Osipenko 		.name = #_name,					\
11151b19b056SDmitry Osipenko 		.id = TEGRA124_MC_RESET_##_name,		\
11161b19b056SDmitry Osipenko 		.control = _control,				\
11171b19b056SDmitry Osipenko 		.status = _status,				\
11181b19b056SDmitry Osipenko 		.bit = _bit,					\
11191b19b056SDmitry Osipenko 	}
11201b19b056SDmitry Osipenko 
11211b19b056SDmitry Osipenko static const struct tegra_mc_reset tegra124_mc_resets[] = {
11221b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(AFI,       0x200, 0x204,  0),
11231b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(AVPC,      0x200, 0x204,  1),
11241b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(DC,        0x200, 0x204,  2),
11251b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(DCB,       0x200, 0x204,  3),
11261b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(HC,        0x200, 0x204,  6),
11271b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(HDA,       0x200, 0x204,  7),
11281b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(ISP2,      0x200, 0x204,  8),
11291b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(MPCORE,    0x200, 0x204,  9),
11301b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(MPCORELP,  0x200, 0x204, 10),
11311b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(MSENC,     0x200, 0x204, 11),
11321b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(PPCS,      0x200, 0x204, 14),
11331b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(SATA,      0x200, 0x204, 15),
11341b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(VDE,       0x200, 0x204, 16),
11351b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(VI,        0x200, 0x204, 17),
11361b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(VIC,       0x200, 0x204, 18),
11371b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(XUSB_HOST, 0x200, 0x204, 19),
11381b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(XUSB_DEV,  0x200, 0x204, 20),
11391b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(TSEC,      0x200, 0x204, 21),
11401b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(SDMMC1,    0x200, 0x204, 22),
11411b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(SDMMC2,    0x200, 0x204, 23),
11421b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(SDMMC3,    0x200, 0x204, 25),
11431b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(SDMMC4,    0x970, 0x974,  0),
11441b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(ISP2B,     0x970, 0x974,  1),
11451b19b056SDmitry Osipenko 	TEGRA124_MC_RESET(GPU,       0x970, 0x974,  2),
11461b19b056SDmitry Osipenko };
11471b19b056SDmitry Osipenko 
tegra124_mc_icc_set(struct icc_node * src,struct icc_node * dst)1148380def2dSDmitry Osipenko static int tegra124_mc_icc_set(struct icc_node *src, struct icc_node *dst)
1149380def2dSDmitry Osipenko {
1150380def2dSDmitry Osipenko 	/* TODO: program PTSA */
1151380def2dSDmitry Osipenko 	return 0;
1152380def2dSDmitry Osipenko }
1153380def2dSDmitry Osipenko 
tegra124_mc_icc_aggreate(struct icc_node * node,u32 tag,u32 avg_bw,u32 peak_bw,u32 * agg_avg,u32 * agg_peak)1154380def2dSDmitry Osipenko static int tegra124_mc_icc_aggreate(struct icc_node *node, u32 tag, u32 avg_bw,
1155380def2dSDmitry Osipenko 				    u32 peak_bw, u32 *agg_avg, u32 *agg_peak)
1156380def2dSDmitry Osipenko {
1157380def2dSDmitry Osipenko 	/*
1158380def2dSDmitry Osipenko 	 * ISO clients need to reserve extra bandwidth up-front because
1159380def2dSDmitry Osipenko 	 * there could be high bandwidth pressure during initial filling
1160380def2dSDmitry Osipenko 	 * of the client's FIFO buffers.  Secondly, we need to take into
1161380def2dSDmitry Osipenko 	 * account impurities of the memory subsystem.
1162380def2dSDmitry Osipenko 	 */
1163380def2dSDmitry Osipenko 	if (tag & TEGRA_MC_ICC_TAG_ISO)
1164380def2dSDmitry Osipenko 		peak_bw = tegra_mc_scale_percents(peak_bw, 400);
1165380def2dSDmitry Osipenko 
1166380def2dSDmitry Osipenko 	*agg_avg += avg_bw;
1167380def2dSDmitry Osipenko 	*agg_peak = max(*agg_peak, peak_bw);
1168380def2dSDmitry Osipenko 
1169380def2dSDmitry Osipenko 	return 0;
1170380def2dSDmitry Osipenko }
1171380def2dSDmitry Osipenko 
1172380def2dSDmitry Osipenko static struct icc_node_data *
tegra124_mc_of_icc_xlate_extended(struct of_phandle_args * spec,void * data)1173380def2dSDmitry Osipenko tegra124_mc_of_icc_xlate_extended(struct of_phandle_args *spec, void *data)
1174380def2dSDmitry Osipenko {
1175380def2dSDmitry Osipenko 	struct tegra_mc *mc = icc_provider_to_tegra_mc(data);
1176380def2dSDmitry Osipenko 	const struct tegra_mc_client *client;
1177380def2dSDmitry Osipenko 	unsigned int i, idx = spec->args[0];
1178380def2dSDmitry Osipenko 	struct icc_node_data *ndata;
1179380def2dSDmitry Osipenko 	struct icc_node *node;
1180380def2dSDmitry Osipenko 
1181380def2dSDmitry Osipenko 	list_for_each_entry(node, &mc->provider.nodes, node_list) {
1182380def2dSDmitry Osipenko 		if (node->id != idx)
1183380def2dSDmitry Osipenko 			continue;
1184380def2dSDmitry Osipenko 
1185380def2dSDmitry Osipenko 		ndata = kzalloc(sizeof(*ndata), GFP_KERNEL);
1186380def2dSDmitry Osipenko 		if (!ndata)
1187380def2dSDmitry Osipenko 			return ERR_PTR(-ENOMEM);
1188380def2dSDmitry Osipenko 
1189380def2dSDmitry Osipenko 		client = &mc->soc->clients[idx];
1190380def2dSDmitry Osipenko 		ndata->node = node;
1191380def2dSDmitry Osipenko 
1192380def2dSDmitry Osipenko 		switch (client->swgroup) {
1193380def2dSDmitry Osipenko 		case TEGRA_SWGROUP_DC:
1194380def2dSDmitry Osipenko 		case TEGRA_SWGROUP_DCB:
1195380def2dSDmitry Osipenko 		case TEGRA_SWGROUP_PTC:
1196380def2dSDmitry Osipenko 		case TEGRA_SWGROUP_VI:
1197380def2dSDmitry Osipenko 			/* these clients are isochronous by default */
1198380def2dSDmitry Osipenko 			ndata->tag = TEGRA_MC_ICC_TAG_ISO;
1199380def2dSDmitry Osipenko 			break;
1200380def2dSDmitry Osipenko 
1201380def2dSDmitry Osipenko 		default:
1202380def2dSDmitry Osipenko 			ndata->tag = TEGRA_MC_ICC_TAG_DEFAULT;
1203380def2dSDmitry Osipenko 			break;
1204380def2dSDmitry Osipenko 		}
1205380def2dSDmitry Osipenko 
1206380def2dSDmitry Osipenko 		return ndata;
1207380def2dSDmitry Osipenko 	}
1208380def2dSDmitry Osipenko 
1209380def2dSDmitry Osipenko 	for (i = 0; i < mc->soc->num_clients; i++) {
1210380def2dSDmitry Osipenko 		if (mc->soc->clients[i].id == idx)
1211380def2dSDmitry Osipenko 			return ERR_PTR(-EPROBE_DEFER);
1212380def2dSDmitry Osipenko 	}
1213380def2dSDmitry Osipenko 
1214380def2dSDmitry Osipenko 	dev_err(mc->dev, "invalid ICC client ID %u\n", idx);
1215380def2dSDmitry Osipenko 
1216380def2dSDmitry Osipenko 	return ERR_PTR(-EINVAL);
1217380def2dSDmitry Osipenko }
1218380def2dSDmitry Osipenko 
1219380def2dSDmitry Osipenko static const struct tegra_mc_icc_ops tegra124_mc_icc_ops = {
1220380def2dSDmitry Osipenko 	.xlate_extended = tegra124_mc_of_icc_xlate_extended,
1221380def2dSDmitry Osipenko 	.aggregate = tegra124_mc_icc_aggreate,
1222380def2dSDmitry Osipenko 	.set = tegra124_mc_icc_set,
1223380def2dSDmitry Osipenko };
1224380def2dSDmitry Osipenko 
122589184651SThierry Reding #ifdef CONFIG_ARCH_TEGRA_124_SOC
122676ce48bdSNathan Huckleberry static const unsigned long tegra124_mc_emem_regs[] = {
122776ce48bdSNathan Huckleberry 	MC_EMEM_ARB_CFG,
122876ce48bdSNathan Huckleberry 	MC_EMEM_ARB_OUTSTANDING_REQ,
122976ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_RCD,
123076ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_RP,
123176ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_RC,
123276ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_RAS,
123376ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_FAW,
123476ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_RRD,
123576ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_RAP2PRE,
123676ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_WAP2PRE,
123776ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_R2R,
123876ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_W2W,
123976ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_R2W,
124076ce48bdSNathan Huckleberry 	MC_EMEM_ARB_TIMING_W2R,
124176ce48bdSNathan Huckleberry 	MC_EMEM_ARB_DA_TURNS,
124276ce48bdSNathan Huckleberry 	MC_EMEM_ARB_DA_COVERS,
124376ce48bdSNathan Huckleberry 	MC_EMEM_ARB_MISC0,
124476ce48bdSNathan Huckleberry 	MC_EMEM_ARB_MISC1,
124576ce48bdSNathan Huckleberry 	MC_EMEM_ARB_RING1_THROTTLE
124676ce48bdSNathan Huckleberry };
124776ce48bdSNathan Huckleberry 
124889184651SThierry Reding static const struct tegra_smmu_soc tegra124_smmu_soc = {
124989184651SThierry Reding 	.clients = tegra124_mc_clients,
125089184651SThierry Reding 	.num_clients = ARRAY_SIZE(tegra124_mc_clients),
125189184651SThierry Reding 	.swgroups = tegra124_swgroups,
125289184651SThierry Reding 	.num_swgroups = ARRAY_SIZE(tegra124_swgroups),
12532a8102dfSThierry Reding 	.groups = tegra124_groups,
12542a8102dfSThierry Reding 	.num_groups = ARRAY_SIZE(tegra124_groups),
125589184651SThierry Reding 	.supports_round_robin_arbitration = true,
125689184651SThierry Reding 	.supports_request_limit = true,
1257e2127ae7SVince Hsu 	.num_tlb_lines = 32,
125889184651SThierry Reding 	.num_asids = 128,
125989184651SThierry Reding };
126089184651SThierry Reding 
126189184651SThierry Reding const struct tegra_mc_soc tegra124_mc_soc = {
126289184651SThierry Reding 	.clients = tegra124_mc_clients,
126389184651SThierry Reding 	.num_clients = ARRAY_SIZE(tegra124_mc_clients),
126489184651SThierry Reding 	.num_address_bits = 34,
126589184651SThierry Reding 	.atom_size = 32,
12663c01cf3bSPaul Walmsley 	.client_id_mask = 0x7f,
126789184651SThierry Reding 	.smmu = &tegra124_smmu_soc,
12683d9dd6fdSMikko Perttunen 	.emem_regs = tegra124_mc_emem_regs,
12693d9dd6fdSMikko Perttunen 	.num_emem_regs = ARRAY_SIZE(tegra124_mc_emem_regs),
12701c74d5c0SDmitry Osipenko 	.intmask = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
12711c74d5c0SDmitry Osipenko 		   MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE |
12721c74d5c0SDmitry Osipenko 		   MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM,
1273cb2b5839SThierry Reding 	.reset_ops = &tegra_mc_reset_ops_common,
12741b19b056SDmitry Osipenko 	.resets = tegra124_mc_resets,
12751b19b056SDmitry Osipenko 	.num_resets = ARRAY_SIZE(tegra124_mc_resets),
1276380def2dSDmitry Osipenko 	.icc_ops = &tegra124_mc_icc_ops,
1277ddeceab0SThierry Reding 	.ops = &tegra30_mc_ops,
127889184651SThierry Reding };
127989184651SThierry Reding #endif /* CONFIG_ARCH_TEGRA_124_SOC */
1280242b1d71SThierry Reding 
1281242b1d71SThierry Reding #ifdef CONFIG_ARCH_TEGRA_132_SOC
1282242b1d71SThierry Reding static const struct tegra_smmu_soc tegra132_smmu_soc = {
1283242b1d71SThierry Reding 	.clients = tegra124_mc_clients,
1284242b1d71SThierry Reding 	.num_clients = ARRAY_SIZE(tegra124_mc_clients),
1285242b1d71SThierry Reding 	.swgroups = tegra124_swgroups,
1286242b1d71SThierry Reding 	.num_swgroups = ARRAY_SIZE(tegra124_swgroups),
12872a8102dfSThierry Reding 	.groups = tegra124_groups,
12882a8102dfSThierry Reding 	.num_groups = ARRAY_SIZE(tegra124_groups),
1289242b1d71SThierry Reding 	.supports_round_robin_arbitration = true,
1290242b1d71SThierry Reding 	.supports_request_limit = true,
129111cec15bSThierry Reding 	.num_tlb_lines = 32,
1292242b1d71SThierry Reding 	.num_asids = 128,
1293242b1d71SThierry Reding };
1294242b1d71SThierry Reding 
1295242b1d71SThierry Reding const struct tegra_mc_soc tegra132_mc_soc = {
1296242b1d71SThierry Reding 	.clients = tegra124_mc_clients,
1297242b1d71SThierry Reding 	.num_clients = ARRAY_SIZE(tegra124_mc_clients),
1298242b1d71SThierry Reding 	.num_address_bits = 34,
1299242b1d71SThierry Reding 	.atom_size = 32,
13003c01cf3bSPaul Walmsley 	.client_id_mask = 0x7f,
1301242b1d71SThierry Reding 	.smmu = &tegra132_smmu_soc,
13021c74d5c0SDmitry Osipenko 	.intmask = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
13031c74d5c0SDmitry Osipenko 		   MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE |
13041c74d5c0SDmitry Osipenko 		   MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM,
1305cb2b5839SThierry Reding 	.reset_ops = &tegra_mc_reset_ops_common,
13061b19b056SDmitry Osipenko 	.resets = tegra124_mc_resets,
13071b19b056SDmitry Osipenko 	.num_resets = ARRAY_SIZE(tegra124_mc_resets),
1308380def2dSDmitry Osipenko 	.icc_ops = &tegra124_mc_icc_ops,
1309ddeceab0SThierry Reding 	.ops = &tegra30_mc_ops,
1310242b1d71SThierry Reding };
1311242b1d71SThierry Reding #endif /* CONFIG_ARCH_TEGRA_132_SOC */
1312