Linux Audio

Check our new training course

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