2 * Copyright (C) 2014 NVIDIA CORPORATION. All rights reserved.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
12 #include <dt-bindings/memory/tegra114-mc.h>
16 static const struct tegra_mc_client tegra114_mc_clients[] = {
20 .swgroup = TEGRA_SWGROUP_PTC,
24 .swgroup = TEGRA_SWGROUP_DC,
38 .swgroup = TEGRA_SWGROUP_DCB,
52 .swgroup = TEGRA_SWGROUP_DC,
66 .swgroup = TEGRA_SWGROUP_DCB,
80 .swgroup = TEGRA_SWGROUP_DC,
94 .swgroup = TEGRA_SWGROUP_DCB,
108 .swgroup = TEGRA_SWGROUP_EPP,
122 .swgroup = TEGRA_SWGROUP_G2,
136 .swgroup = TEGRA_SWGROUP_G2,
150 .swgroup = TEGRA_SWGROUP_AVPC,
164 .swgroup = TEGRA_SWGROUP_DC,
177 .name = "displayhcb",
178 .swgroup = TEGRA_SWGROUP_DCB,
192 .swgroup = TEGRA_SWGROUP_NV,
206 .swgroup = TEGRA_SWGROUP_NV,
220 .swgroup = TEGRA_SWGROUP_G2,
234 .swgroup = TEGRA_SWGROUP_HDA,
247 .name = "host1xdmar",
248 .swgroup = TEGRA_SWGROUP_HC,
262 .swgroup = TEGRA_SWGROUP_HC,
276 .swgroup = TEGRA_SWGROUP_NV,
290 .swgroup = TEGRA_SWGROUP_MSENC,
303 .name = "ppcsahbdmar",
304 .swgroup = TEGRA_SWGROUP_PPCS,
317 .name = "ppcsahbslvr",
318 .swgroup = TEGRA_SWGROUP_PPCS,
332 .swgroup = TEGRA_SWGROUP_NV,
346 .swgroup = TEGRA_SWGROUP_VDE,
360 .swgroup = TEGRA_SWGROUP_VDE,
374 .swgroup = TEGRA_SWGROUP_VDE,
388 .swgroup = TEGRA_SWGROUP_VDE,
402 .swgroup = TEGRA_SWGROUP_MPCORELP,
412 .swgroup = TEGRA_SWGROUP_MPCORE,
422 .swgroup = TEGRA_SWGROUP_EPP,
436 .swgroup = TEGRA_SWGROUP_EPP,
450 .swgroup = TEGRA_SWGROUP_EPP,
464 .swgroup = TEGRA_SWGROUP_MSENC,
478 .swgroup = TEGRA_SWGROUP_VI,
492 .swgroup = TEGRA_SWGROUP_VI,
506 .swgroup = TEGRA_SWGROUP_VI,
520 .swgroup = TEGRA_SWGROUP_VI,
534 .swgroup = TEGRA_SWGROUP_G2,
548 .swgroup = TEGRA_SWGROUP_AVPC,
562 .swgroup = TEGRA_SWGROUP_NV,
576 .swgroup = TEGRA_SWGROUP_NV,
590 .swgroup = TEGRA_SWGROUP_HDA,
604 .swgroup = TEGRA_SWGROUP_HC,
618 .swgroup = TEGRA_SWGROUP_ISP,
632 .swgroup = TEGRA_SWGROUP_MPCORELP,
642 .swgroup = TEGRA_SWGROUP_MPCORE,
651 .name = "ppcsahbdmaw",
652 .swgroup = TEGRA_SWGROUP_PPCS,
665 .name = "ppcsahbslvw",
666 .swgroup = TEGRA_SWGROUP_PPCS,
680 .swgroup = TEGRA_SWGROUP_VDE,
694 .swgroup = TEGRA_SWGROUP_VDE,
708 .swgroup = TEGRA_SWGROUP_VDE,
722 .swgroup = TEGRA_SWGROUP_VDE,
735 .name = "xusb_hostr",
736 .swgroup = TEGRA_SWGROUP_XUSB_HOST,
749 .name = "xusb_hostw",
750 .swgroup = TEGRA_SWGROUP_XUSB_HOST,
764 .swgroup = TEGRA_SWGROUP_XUSB_DEV,
778 .swgroup = TEGRA_SWGROUP_XUSB_DEV,
792 .swgroup = TEGRA_SWGROUP_NV,
806 .swgroup = TEGRA_SWGROUP_NV,
820 .swgroup = TEGRA_SWGROUP_NV,
834 .swgroup = TEGRA_SWGROUP_NV,
848 .swgroup = TEGRA_SWGROUP_EMUCIF,
858 .swgroup = TEGRA_SWGROUP_EMUCIF,
868 .swgroup = TEGRA_SWGROUP_TSEC,
882 .swgroup = TEGRA_SWGROUP_TSEC,
896 static const struct tegra_smmu_swgroup tegra114_swgroups[] = {
897 { .name = "dc", .swgroup = TEGRA_SWGROUP_DC, .reg = 0x240 },
898 { .name = "dcb", .swgroup = TEGRA_SWGROUP_DCB, .reg = 0x244 },
899 { .name = "epp", .swgroup = TEGRA_SWGROUP_EPP, .reg = 0x248 },
900 { .name = "g2", .swgroup = TEGRA_SWGROUP_G2, .reg = 0x24c },
901 { .name = "avpc", .swgroup = TEGRA_SWGROUP_AVPC, .reg = 0x23c },
902 { .name = "nv", .swgroup = TEGRA_SWGROUP_NV, .reg = 0x268 },
903 { .name = "hda", .swgroup = TEGRA_SWGROUP_HDA, .reg = 0x254 },
904 { .name = "hc", .swgroup = TEGRA_SWGROUP_HC, .reg = 0x250 },
905 { .name = "msenc", .swgroup = TEGRA_SWGROUP_MSENC, .reg = 0x264 },
906 { .name = "ppcs", .swgroup = TEGRA_SWGROUP_PPCS, .reg = 0x270 },
907 { .name = "vde", .swgroup = TEGRA_SWGROUP_VDE, .reg = 0x27c },
908 { .name = "vi", .swgroup = TEGRA_SWGROUP_VI, .reg = 0x280 },
909 { .name = "isp", .swgroup = TEGRA_SWGROUP_ISP, .reg = 0x258 },
910 { .name = "xusb_host", .swgroup = TEGRA_SWGROUP_XUSB_HOST, .reg = 0x288 },
911 { .name = "xusb_dev", .swgroup = TEGRA_SWGROUP_XUSB_DEV, .reg = 0x28c },
912 { .name = "tsec", .swgroup = TEGRA_SWGROUP_TSEC, .reg = 0x294 },
915 static const struct tegra_smmu_soc tegra114_smmu_soc = {
916 .clients = tegra114_mc_clients,
917 .num_clients = ARRAY_SIZE(tegra114_mc_clients),
918 .swgroups = tegra114_swgroups,
919 .num_swgroups = ARRAY_SIZE(tegra114_swgroups),
920 .supports_round_robin_arbitration = false,
921 .supports_request_limit = false,
926 const struct tegra_mc_soc tegra114_mc_soc = {
927 .clients = tegra114_mc_clients,
928 .num_clients = ARRAY_SIZE(tegra114_mc_clients),
929 .num_address_bits = 32,
931 .client_id_mask = 0x7f,
932 .smmu = &tegra114_smmu_soc,