brintos

brintos / linux-shallow public Read only

0
0
Text · 17.9 KiB · 4135057 Raw
1118 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (C) 2014 NVIDIA CORPORATION.  All rights reserved.4 */5 6#include <linux/of.h>7#include <linux/mm.h>8 9#include <dt-bindings/memory/tegra114-mc.h>10 11#include "mc.h"12 13static const struct tegra_mc_client tegra114_mc_clients[] = {14	{15		.id = 0x00,16		.name = "ptcr",17		.swgroup = TEGRA_SWGROUP_PTC,18		.regs = {19			.la = {20				.reg = 0x34c,21				.shift = 0,22				.mask = 0xff,23				.def = 0x0,24			},25		},26	}, {27		.id = 0x01,28		.name = "display0a",29		.swgroup = TEGRA_SWGROUP_DC,30		.regs = {31			.smmu = {32				.reg = 0x228,33				.bit = 1,34			},35			.la = {36				.reg = 0x2e8,37				.shift = 0,38				.mask = 0xff,39				.def = 0x4e,40			},41		},42	}, {43		.id = 0x02,44		.name = "display0ab",45		.swgroup = TEGRA_SWGROUP_DCB,46		.regs = {47			.smmu = {48				.reg = 0x228,49				.bit = 2,50			},51			.la = {52				.reg = 0x2f4,53				.shift = 0,54				.mask = 0xff,55				.def = 0x4e,56			},57		},58	}, {59		.id = 0x03,60		.name = "display0b",61		.swgroup = TEGRA_SWGROUP_DC,62		.regs = {63			.smmu = {64				.reg = 0x228,65				.bit = 3,66			},67			.la = {68				.reg = 0x2e8,69				.shift = 16,70				.mask = 0xff,71				.def = 0x4e,72			},73		},74	}, {75		.id = 0x04,76		.name = "display0bb",77		.swgroup = TEGRA_SWGROUP_DCB,78		.regs = {79			.smmu = {80				.reg = 0x228,81				.bit = 4,82			},83			.la = {84				.reg = 0x2f4,85				.shift = 16,86				.mask = 0xff,87				.def = 0x4e,88			},89		},90	}, {91		.id = 0x05,92		.name = "display0c",93		.swgroup = TEGRA_SWGROUP_DC,94		.regs = {95			.smmu = {96				.reg = 0x228,97				.bit = 5,98			},99			.la = {100				.reg = 0x2ec,101				.shift = 0,102				.mask = 0xff,103				.def = 0x4e,104			},105		},106	}, {107		.id = 0x06,108		.name = "display0cb",109		.swgroup = TEGRA_SWGROUP_DCB,110		.regs = {111			.smmu = {112				.reg = 0x228,113				.bit = 6,114			},115			.la = {116				.reg = 0x2f8,117				.shift = 0,118				.mask = 0xff,119				.def = 0x4e,120			},121		},122	}, {123		.id = 0x09,124		.name = "eppup",125		.swgroup = TEGRA_SWGROUP_EPP,126		.regs = {127			.smmu = {128				.reg = 0x228,129				.bit = 9,130			},131			.la = {132				.reg = 0x300,133				.shift = 0,134				.mask = 0xff,135				.def = 0x33,136			},137		},138	}, {139		.id = 0x0a,140		.name = "g2pr",141		.swgroup = TEGRA_SWGROUP_G2,142		.regs = {143			.smmu = {144				.reg = 0x228,145				.bit = 10,146			},147			.la = {148				.reg = 0x308,149				.shift = 0,150				.mask = 0xff,151				.def = 0x09,152			},153		},154	}, {155		.id = 0x0b,156		.name = "g2sr",157		.swgroup = TEGRA_SWGROUP_G2,158		.regs = {159			.smmu = {160				.reg = 0x228,161				.bit = 11,162			},163			.la = {164				.reg = 0x308,165				.shift = 16,166				.mask = 0xff,167				.def = 0x09,168			},169		},170	}, {171		.id = 0x0f,172		.name = "avpcarm7r",173		.swgroup = TEGRA_SWGROUP_AVPC,174		.regs = {175			.smmu = {176				.reg = 0x228,177				.bit = 15,178			},179			.la = {180				.reg = 0x2e4,181				.shift = 0,182				.mask = 0xff,183				.def = 0x04,184			},185		},186	}, {187		.id = 0x10,188		.name = "displayhc",189		.swgroup = TEGRA_SWGROUP_DC,190		.regs = {191			.smmu = {192				.reg = 0x228,193				.bit = 16,194			},195			.la = {196				.reg = 0x2f0,197				.shift = 0,198				.mask = 0xff,199				.def = 0x68,200			},201		},202	}, {203		.id = 0x11,204		.name = "displayhcb",205		.swgroup = TEGRA_SWGROUP_DCB,206		.regs = {207			.smmu = {208				.reg = 0x228,209				.bit = 17,210			},211			.la = {212				.reg = 0x2fc,213				.shift = 0,214				.mask = 0xff,215				.def = 0x68,216			},217		},218	}, {219		.id = 0x12,220		.name = "fdcdrd",221		.swgroup = TEGRA_SWGROUP_NV,222		.regs = {223			.smmu = {224				.reg = 0x228,225				.bit = 18,226			},227			.la = {228				.reg = 0x334,229				.shift = 0,230				.mask = 0xff,231				.def = 0x0c,232			},233		},234	}, {235		.id = 0x13,236		.name = "fdcdrd2",237		.swgroup = TEGRA_SWGROUP_NV,238		.regs = {239			.smmu = {240				.reg = 0x228,241				.bit = 19,242			},243			.la = {244				.reg = 0x33c,245				.shift = 0,246				.mask = 0xff,247				.def = 0x0c,248			},249		},250	}, {251		.id = 0x14,252		.name = "g2dr",253		.swgroup = TEGRA_SWGROUP_G2,254		.regs = {255			.smmu = {256				.reg = 0x228,257				.bit = 20,258			},259			.la = {260				.reg = 0x30c,261				.shift = 0,262				.mask = 0xff,263				.def = 0x0a,264			},265		},266	}, {267		.id = 0x15,268		.name = "hdar",269		.swgroup = TEGRA_SWGROUP_HDA,270		.regs = {271			.smmu = {272				.reg = 0x228,273				.bit = 21,274			},275			.la = {276				.reg = 0x318,277				.shift = 0,278				.mask = 0xff,279				.def = 0xff,280			},281		},282	}, {283		.id = 0x16,284		.name = "host1xdmar",285		.swgroup = TEGRA_SWGROUP_HC,286		.regs = {287			.smmu = {288				.reg = 0x228,289				.bit = 22,290			},291			.la = {292				.reg = 0x310,293				.shift = 0,294				.mask = 0xff,295				.def = 0x10,296			},297		},298	}, {299		.id = 0x17,300		.name = "host1xr",301		.swgroup = TEGRA_SWGROUP_HC,302		.regs = {303			.smmu = {304				.reg = 0x228,305				.bit = 23,306			},307			.la = {308				.reg = 0x310,309				.shift = 16,310				.mask = 0xff,311				.def = 0xa5,312			},313		},314	}, {315		.id = 0x18,316		.name = "idxsrd",317		.swgroup = TEGRA_SWGROUP_NV,318		.regs = {319			.smmu = {320				.reg = 0x228,321				.bit = 24,322			},323			.la = {324				.reg = 0x334,325				.shift = 16,326				.mask = 0xff,327				.def = 0x0b,328			},329		},330	}, {331		.id = 0x1c,332		.name = "msencsrd",333		.swgroup = TEGRA_SWGROUP_MSENC,334		.regs = {335			.smmu = {336				.reg = 0x228,337				.bit = 28,338			},339			.la = {340				.reg = 0x328,341				.shift = 0,342				.mask = 0xff,343				.def = 0x80,344			},345		},346	}, {347		.id = 0x1d,348		.name = "ppcsahbdmar",349		.swgroup = TEGRA_SWGROUP_PPCS,350		.regs = {351			.smmu = {352				.reg = 0x228,353				.bit = 29,354			},355			.la = {356				.reg = 0x344,357				.shift = 0,358				.mask = 0xff,359				.def = 0x50,360			},361		},362	}, {363		.id = 0x1e,364		.name = "ppcsahbslvr",365		.swgroup = TEGRA_SWGROUP_PPCS,366		.regs = {367			.smmu = {368				.reg = 0x228,369				.bit = 30,370			},371			.la = {372				.reg = 0x344,373				.shift = 16,374				.mask = 0xff,375				.def = 0xe8,376			},377		},378	}, {379		.id = 0x20,380		.name = "texl2srd",381		.swgroup = TEGRA_SWGROUP_NV,382		.regs = {383			.smmu = {384				.reg = 0x22c,385				.bit = 0,386			},387			.la = {388				.reg = 0x338,389				.shift = 0,390				.mask = 0xff,391				.def = 0x0c,392			},393		},394	}, {395		.id = 0x22,396		.name = "vdebsevr",397		.swgroup = TEGRA_SWGROUP_VDE,398		.regs = {399			.smmu = {400				.reg = 0x22c,401				.bit = 2,402			},403			.la = {404				.reg = 0x354,405				.shift = 0,406				.mask = 0xff,407				.def = 0xff,408			},409		},410	}, {411		.id = 0x23,412		.name = "vdember",413		.swgroup = TEGRA_SWGROUP_VDE,414		.regs = {415			.smmu = {416				.reg = 0x22c,417				.bit = 3,418			},419			.la = {420				.reg = 0x354,421				.shift = 16,422				.mask = 0xff,423				.def = 0xff,424			},425		},426	}, {427		.id = 0x24,428		.name = "vdemcer",429		.swgroup = TEGRA_SWGROUP_VDE,430		.regs = {431			.smmu = {432				.reg = 0x22c,433				.bit = 4,434			},435			.la = {436				.reg = 0x358,437				.shift = 0,438				.mask = 0xff,439				.def = 0xb8,440			},441		},442	}, {443		.id = 0x25,444		.name = "vdetper",445		.swgroup = TEGRA_SWGROUP_VDE,446		.regs = {447			.smmu = {448				.reg = 0x22c,449				.bit = 5,450			},451			.la = {452				.reg = 0x358,453				.shift = 16,454				.mask = 0xff,455				.def = 0xee,456			},457		},458	}, {459		.id = 0x26,460		.name = "mpcorelpr",461		.swgroup = TEGRA_SWGROUP_MPCORELP,462		.regs = {463			.la = {464				.reg = 0x324,465				.shift = 0,466				.mask = 0xff,467				.def = 0x04,468			},469		},470	}, {471		.id = 0x27,472		.name = "mpcorer",473		.swgroup = TEGRA_SWGROUP_MPCORE,474		.regs = {475			.la = {476				.reg = 0x320,477				.shift = 0,478				.mask = 0xff,479				.def = 0x04,480			},481		},482	}, {483		.id = 0x28,484		.name = "eppu",485		.swgroup = TEGRA_SWGROUP_EPP,486		.regs = {487			.smmu = {488				.reg = 0x22c,489				.bit = 8,490			},491			.la = {492				.reg = 0x300,493				.shift = 16,494				.mask = 0xff,495				.def = 0x33,496			},497		},498	}, {499		.id = 0x29,500		.name = "eppv",501		.swgroup = TEGRA_SWGROUP_EPP,502		.regs = {503			.smmu = {504				.reg = 0x22c,505				.bit = 9,506			},507			.la = {508				.reg = 0x304,509				.shift = 0,510				.mask = 0xff,511				.def = 0x6c,512			},513		},514	}, {515		.id = 0x2a,516		.name = "eppy",517		.swgroup = TEGRA_SWGROUP_EPP,518		.regs = {519			.smmu = {520				.reg = 0x22c,521				.bit = 10,522			},523			.la = {524				.reg = 0x304,525				.shift = 16,526				.mask = 0xff,527				.def = 0x6c,528			},529		},530	}, {531		.id = 0x2b,532		.name = "msencswr",533		.swgroup = TEGRA_SWGROUP_MSENC,534		.regs = {535			.smmu = {536				.reg = 0x22c,537				.bit = 11,538			},539			.la = {540				.reg = 0x328,541				.shift = 16,542				.mask = 0xff,543				.def = 0x80,544			},545		},546	}, {547		.id = 0x2c,548		.name = "viwsb",549		.swgroup = TEGRA_SWGROUP_VI,550		.regs = {551			.smmu = {552				.reg = 0x22c,553				.bit = 12,554			},555			.la = {556				.reg = 0x364,557				.shift = 0,558				.mask = 0xff,559				.def = 0x47,560			},561		},562	}, {563		.id = 0x2d,564		.name = "viwu",565		.swgroup = TEGRA_SWGROUP_VI,566		.regs = {567			.smmu = {568				.reg = 0x22c,569				.bit = 13,570			},571			.la = {572				.reg = 0x368,573				.shift = 0,574				.mask = 0xff,575				.def = 0xff,576			},577		},578	}, {579		.id = 0x2e,580		.name = "viwv",581		.swgroup = TEGRA_SWGROUP_VI,582		.regs = {583			.smmu = {584				.reg = 0x22c,585				.bit = 14,586			},587			.la = {588				.reg = 0x368,589				.shift = 16,590				.mask = 0xff,591				.def = 0xff,592			},593		},594	}, {595		.id = 0x2f,596		.name = "viwy",597		.swgroup = TEGRA_SWGROUP_VI,598		.regs = {599			.smmu = {600				.reg = 0x22c,601				.bit = 15,602			},603			.la = {604				.reg = 0x36c,605				.shift = 0,606				.mask = 0xff,607				.def = 0x47,608			},609		},610	}, {611		.id = 0x30,612		.name = "g2dw",613		.swgroup = TEGRA_SWGROUP_G2,614		.regs = {615			.smmu = {616				.reg = 0x22c,617				.bit = 16,618			},619			.la = {620				.reg = 0x30c,621				.shift = 16,622				.mask = 0xff,623				.def = 0x9,624			},625		},626	}, {627		.id = 0x32,628		.name = "avpcarm7w",629		.swgroup = TEGRA_SWGROUP_AVPC,630		.regs = {631			.smmu = {632				.reg = 0x22c,633				.bit = 18,634			},635			.la = {636				.reg = 0x2e4,637				.shift = 16,638				.mask = 0xff,639				.def = 0x0e,640			},641		},642	}, {643		.id = 0x33,644		.name = "fdcdwr",645		.swgroup = TEGRA_SWGROUP_NV,646		.regs = {647			.smmu = {648				.reg = 0x22c,649				.bit = 19,650			},651			.la = {652				.reg = 0x338,653				.shift = 16,654				.mask = 0xff,655				.def = 0x10,656			},657		},658	}, {659		.id = 0x34,660		.name = "fdcdwr2",661		.swgroup = TEGRA_SWGROUP_NV,662		.regs = {663			.smmu = {664				.reg = 0x22c,665				.bit = 20,666			},667			.la = {668				.reg = 0x340,669				.shift = 0,670				.mask = 0xff,671				.def = 0x10,672			},673		},674	}, {675		.id = 0x35,676		.name = "hdaw",677		.swgroup = TEGRA_SWGROUP_HDA,678		.regs = {679			.smmu = {680				.reg = 0x22c,681				.bit = 21,682			},683			.la = {684				.reg = 0x318,685				.shift = 16,686				.mask = 0xff,687				.def = 0xff,688			},689		},690	}, {691		.id = 0x36,692		.name = "host1xw",693		.swgroup = TEGRA_SWGROUP_HC,694		.regs = {695			.smmu = {696				.reg = 0x22c,697				.bit = 22,698			},699			.la = {700				.reg = 0x314,701				.shift = 0,702				.mask = 0xff,703				.def = 0x25,704			},705		},706	}, {707		.id = 0x37,708		.name = "ispw",709		.swgroup = TEGRA_SWGROUP_ISP,710		.regs = {711			.smmu = {712				.reg = 0x22c,713				.bit = 23,714			},715			.la = {716				.reg = 0x31c,717				.shift = 0,718				.mask = 0xff,719				.def = 0xff,720			},721		},722	}, {723		.id = 0x38,724		.name = "mpcorelpw",725		.swgroup = TEGRA_SWGROUP_MPCORELP,726		.regs = {727			.la = {728				.reg = 0x324,729				.shift = 16,730				.mask = 0xff,731				.def = 0x80,732			},733		},734	}, {735		.id = 0x39,736		.name = "mpcorew",737		.swgroup = TEGRA_SWGROUP_MPCORE,738		.regs = {739			.la = {740				.reg = 0x320,741				.shift = 16,742				.mask = 0xff,743				.def = 0x0e,744			},745		},746	}, {747		.id = 0x3b,748		.name = "ppcsahbdmaw",749		.swgroup = TEGRA_SWGROUP_PPCS,750		.regs = {751			.smmu = {752				.reg = 0x22c,753				.bit = 27,754			},755			.la = {756				.reg = 0x348,757				.shift = 0,758				.mask = 0xff,759				.def = 0xa5,760			},761		},762	}, {763		.id = 0x3c,764		.name = "ppcsahbslvw",765		.swgroup = TEGRA_SWGROUP_PPCS,766		.regs = {767			.smmu = {768				.reg = 0x22c,769				.bit = 28,770			},771			.la = {772				.reg = 0x348,773				.shift = 16,774				.mask = 0xff,775				.def = 0xe8,776			},777		},778	}, {779		.id = 0x3e,780		.name = "vdebsevw",781		.swgroup = TEGRA_SWGROUP_VDE,782		.regs = {783			.smmu = {784				.reg = 0x22c,785				.bit = 30,786			},787			.la = {788				.reg = 0x35c,789				.shift = 0,790				.mask = 0xff,791				.def = 0xff,792			},793		},794	}, {795		.id = 0x3f,796		.name = "vdedbgw",797		.swgroup = TEGRA_SWGROUP_VDE,798		.regs = {799			.smmu = {800				.reg = 0x22c,801				.bit = 31,802			},803			.la = {804				.reg = 0x35c,805				.shift = 16,806				.mask = 0xff,807				.def = 0xff,808			},809		},810	}, {811		.id = 0x40,812		.name = "vdembew",813		.swgroup = TEGRA_SWGROUP_VDE,814		.regs = {815			.smmu = {816				.reg = 0x230,817				.bit = 0,818			},819			.la = {820				.reg = 0x360,821				.shift = 0,822				.mask = 0xff,823				.def = 0x89,824			},825		},826	}, {827		.id = 0x41,828		.name = "vdetpmw",829		.swgroup = TEGRA_SWGROUP_VDE,830		.regs = {831			.smmu = {832				.reg = 0x230,833				.bit = 1,834			},835			.la = {836				.reg = 0x360,837				.shift = 16,838				.mask = 0xff,839				.def = 0x59,840			},841		},842	}, {843		.id = 0x4a,844		.name = "xusb_hostr",845		.swgroup = TEGRA_SWGROUP_XUSB_HOST,846		.regs = {847			.smmu = {848				.reg = 0x230,849				.bit = 10,850			},851			.la = {852				.reg = 0x37c,853				.shift = 0,854				.mask = 0xff,855				.def = 0xa5,856			},857		},858	}, {859		.id = 0x4b,860		.name = "xusb_hostw",861		.swgroup = TEGRA_SWGROUP_XUSB_HOST,862		.regs = {863			.smmu = {864				.reg = 0x230,865				.bit = 11,866			},867			.la = {868				.reg = 0x37c,869				.shift = 16,870				.mask = 0xff,871				.def = 0xa5,872			},873		},874	}, {875		.id = 0x4c,876		.name = "xusb_devr",877		.swgroup = TEGRA_SWGROUP_XUSB_DEV,878		.regs = {879			.smmu = {880				.reg = 0x230,881				.bit = 12,882			},883			.la = {884				.reg = 0x380,885				.shift = 0,886				.mask = 0xff,887				.def = 0xa5,888			},889		},890	}, {891		.id = 0x4d,892		.name = "xusb_devw",893		.swgroup = TEGRA_SWGROUP_XUSB_DEV,894		.regs = {895			.smmu = {896				.reg = 0x230,897				.bit = 13,898			},899			.la = {900				.reg = 0x380,901				.shift = 16,902				.mask = 0xff,903				.def = 0xa5,904			},905		},906	}, {907		.id = 0x4e,908		.name = "fdcdwr3",909		.swgroup = TEGRA_SWGROUP_NV,910		.regs = {911			.smmu = {912				.reg = 0x230,913				.bit = 14,914			},915			.la = {916				.reg = 0x388,917				.shift = 0,918				.mask = 0xff,919				.def = 0x10,920			},921		},922	}, {923		.id = 0x4f,924		.name = "fdcdrd3",925		.swgroup = TEGRA_SWGROUP_NV,926		.regs = {927			.smmu = {928				.reg = 0x230,929				.bit = 15,930			},931			.la = {932				.reg = 0x384,933				.shift = 0,934				.mask = 0xff,935				.def = 0x0c,936			},937		},938	}, {939		.id = 0x50,940		.name = "fdcwr4",941		.swgroup = TEGRA_SWGROUP_NV,942		.regs = {943			.smmu = {944				.reg = 0x230,945				.bit = 16,946			},947			.la = {948				.reg = 0x388,949				.shift = 16,950				.mask = 0xff,951				.def = 0x10,952			},953		},954	}, {955		.id = 0x51,956		.name = "fdcrd4",957		.swgroup = TEGRA_SWGROUP_NV,958		.regs = {959			.smmu = {960				.reg = 0x230,961				.bit = 17,962			},963			.la = {964				.reg = 0x384,965				.shift = 16,966				.mask = 0xff,967				.def = 0x0c,968			},969		},970	}, {971		.id = 0x52,972		.name = "emucifr",973		.swgroup = TEGRA_SWGROUP_EMUCIF,974		.regs = {975			.la = {976				.reg = 0x38c,977				.shift = 0,978				.mask = 0xff,979				.def = 0x04,980			},981		},982	}, {983		.id = 0x53,984		.name = "emucifw",985		.swgroup = TEGRA_SWGROUP_EMUCIF,986		.regs = {987			.la = {988				.reg = 0x38c,989				.shift = 16,990				.mask = 0xff,991				.def = 0x0e,992			},993		},994	}, {995		.id = 0x54,996		.name = "tsecsrd",997		.swgroup = TEGRA_SWGROUP_TSEC,998		.regs = {999			.smmu = {1000				.reg = 0x230,1001				.bit = 20,1002			},1003			.la = {1004				.reg = 0x390,1005				.shift = 0,1006				.mask = 0xff,1007				.def = 0x50,1008			},1009		},1010	}, {1011		.id = 0x55,1012		.name = "tsecswr",1013		.swgroup = TEGRA_SWGROUP_TSEC,1014		.regs = {1015			.smmu = {1016				.reg = 0x230,1017				.bit = 21,1018			},1019			.la = {1020				.reg = 0x390,1021				.shift = 16,1022				.mask = 0xff,1023				.def = 0x50,1024			},1025		},1026	},1027};1028 1029static const struct tegra_smmu_swgroup tegra114_swgroups[] = {1030	{ .name = "dc",        .swgroup = TEGRA_SWGROUP_DC,        .reg = 0x240 },1031	{ .name = "dcb",       .swgroup = TEGRA_SWGROUP_DCB,       .reg = 0x244 },1032	{ .name = "epp",       .swgroup = TEGRA_SWGROUP_EPP,       .reg = 0x248 },1033	{ .name = "g2",        .swgroup = TEGRA_SWGROUP_G2,        .reg = 0x24c },1034	{ .name = "avpc",      .swgroup = TEGRA_SWGROUP_AVPC,      .reg = 0x23c },1035	{ .name = "nv",        .swgroup = TEGRA_SWGROUP_NV,        .reg = 0x268 },1036	{ .name = "hda",       .swgroup = TEGRA_SWGROUP_HDA,       .reg = 0x254 },1037	{ .name = "hc",        .swgroup = TEGRA_SWGROUP_HC,        .reg = 0x250 },1038	{ .name = "msenc",     .swgroup = TEGRA_SWGROUP_MSENC,     .reg = 0x264 },1039	{ .name = "ppcs",      .swgroup = TEGRA_SWGROUP_PPCS,      .reg = 0x270 },1040	{ .name = "vde",       .swgroup = TEGRA_SWGROUP_VDE,       .reg = 0x27c },1041	{ .name = "vi",        .swgroup = TEGRA_SWGROUP_VI,        .reg = 0x280 },1042	{ .name = "isp",       .swgroup = TEGRA_SWGROUP_ISP,       .reg = 0x258 },1043	{ .name = "xusb_host", .swgroup = TEGRA_SWGROUP_XUSB_HOST, .reg = 0x288 },1044	{ .name = "xusb_dev",  .swgroup = TEGRA_SWGROUP_XUSB_DEV,  .reg = 0x28c },1045	{ .name = "tsec",      .swgroup = TEGRA_SWGROUP_TSEC,      .reg = 0x294 },1046};1047 1048static const unsigned int tegra114_group_drm[] = {1049	TEGRA_SWGROUP_DC,1050	TEGRA_SWGROUP_DCB,1051	TEGRA_SWGROUP_G2,1052	TEGRA_SWGROUP_NV,1053};1054 1055static const struct tegra_smmu_group_soc tegra114_groups[] = {1056	{1057		.name = "drm",1058		.swgroups = tegra114_group_drm,1059		.num_swgroups = ARRAY_SIZE(tegra114_group_drm),1060	},1061};1062 1063static const struct tegra_smmu_soc tegra114_smmu_soc = {1064	.clients = tegra114_mc_clients,1065	.num_clients = ARRAY_SIZE(tegra114_mc_clients),1066	.swgroups = tegra114_swgroups,1067	.num_swgroups = ARRAY_SIZE(tegra114_swgroups),1068	.groups = tegra114_groups,1069	.num_groups = ARRAY_SIZE(tegra114_groups),1070	.supports_round_robin_arbitration = false,1071	.supports_request_limit = false,1072	.num_tlb_lines = 32,1073	.num_asids = 4,1074};1075 1076#define TEGRA114_MC_RESET(_name, _control, _status, _bit)	\1077	{							\1078		.name = #_name,					\1079		.id = TEGRA114_MC_RESET_##_name,		\1080		.control = _control,				\1081		.status = _status,				\1082		.bit = _bit,					\1083	}1084 1085static const struct tegra_mc_reset tegra114_mc_resets[] = {1086	TEGRA114_MC_RESET(AVPC,     0x200, 0x204,  1),1087	TEGRA114_MC_RESET(DC,       0x200, 0x204,  2),1088	TEGRA114_MC_RESET(DCB,      0x200, 0x204,  3),1089	TEGRA114_MC_RESET(EPP,      0x200, 0x204,  4),1090	TEGRA114_MC_RESET(2D,       0x200, 0x204,  5),1091	TEGRA114_MC_RESET(HC,       0x200, 0x204,  6),1092	TEGRA114_MC_RESET(HDA,      0x200, 0x204,  7),1093	TEGRA114_MC_RESET(ISP,      0x200, 0x204,  8),1094	TEGRA114_MC_RESET(MPCORE,   0x200, 0x204,  9),1095	TEGRA114_MC_RESET(MPCORELP, 0x200, 0x204, 10),1096	TEGRA114_MC_RESET(MPE,      0x200, 0x204, 11),1097	TEGRA114_MC_RESET(3D,       0x200, 0x204, 12),1098	TEGRA114_MC_RESET(3D2,      0x200, 0x204, 13),1099	TEGRA114_MC_RESET(PPCS,     0x200, 0x204, 14),1100	TEGRA114_MC_RESET(VDE,      0x200, 0x204, 16),1101	TEGRA114_MC_RESET(VI,       0x200, 0x204, 17),1102};1103 1104const struct tegra_mc_soc tegra114_mc_soc = {1105	.clients = tegra114_mc_clients,1106	.num_clients = ARRAY_SIZE(tegra114_mc_clients),1107	.num_address_bits = 32,1108	.atom_size = 32,1109	.client_id_mask = 0x7f,1110	.smmu = &tegra114_smmu_soc,1111	.intmask = MC_INT_INVALID_SMMU_PAGE | MC_INT_SECURITY_VIOLATION |1112		   MC_INT_DECERR_EMEM,1113	.reset_ops = &tegra_mc_reset_ops_common,1114	.resets = tegra114_mc_resets,1115	.num_resets = ARRAY_SIZE(tegra114_mc_resets),1116	.ops = &tegra30_mc_ops,1117};1118