| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Copyright (C) 2014 NVIDIA CORPORATION. All rights reserved. |
|---|
| 3 | | - * |
|---|
| 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. |
|---|
| 7 | 4 | */ |
|---|
| 8 | 5 | |
|---|
| 9 | 6 | #include <linux/of.h> |
|---|
| .. | .. |
|---|
| 12 | 9 | #include <dt-bindings/memory/tegra124-mc.h> |
|---|
| 13 | 10 | |
|---|
| 14 | 11 | #include "mc.h" |
|---|
| 15 | | - |
|---|
| 16 | | -#define MC_EMEM_ARB_CFG 0x90 |
|---|
| 17 | | -#define MC_EMEM_ARB_OUTSTANDING_REQ 0x94 |
|---|
| 18 | | -#define MC_EMEM_ARB_TIMING_RCD 0x98 |
|---|
| 19 | | -#define MC_EMEM_ARB_TIMING_RP 0x9c |
|---|
| 20 | | -#define MC_EMEM_ARB_TIMING_RC 0xa0 |
|---|
| 21 | | -#define MC_EMEM_ARB_TIMING_RAS 0xa4 |
|---|
| 22 | | -#define MC_EMEM_ARB_TIMING_FAW 0xa8 |
|---|
| 23 | | -#define MC_EMEM_ARB_TIMING_RRD 0xac |
|---|
| 24 | | -#define MC_EMEM_ARB_TIMING_RAP2PRE 0xb0 |
|---|
| 25 | | -#define MC_EMEM_ARB_TIMING_WAP2PRE 0xb4 |
|---|
| 26 | | -#define MC_EMEM_ARB_TIMING_R2R 0xb8 |
|---|
| 27 | | -#define MC_EMEM_ARB_TIMING_W2W 0xbc |
|---|
| 28 | | -#define MC_EMEM_ARB_TIMING_R2W 0xc0 |
|---|
| 29 | | -#define MC_EMEM_ARB_TIMING_W2R 0xc4 |
|---|
| 30 | | -#define MC_EMEM_ARB_DA_TURNS 0xd0 |
|---|
| 31 | | -#define MC_EMEM_ARB_DA_COVERS 0xd4 |
|---|
| 32 | | -#define MC_EMEM_ARB_MISC0 0xd8 |
|---|
| 33 | | -#define MC_EMEM_ARB_MISC1 0xdc |
|---|
| 34 | | -#define MC_EMEM_ARB_RING1_THROTTLE 0xe0 |
|---|
| 35 | | - |
|---|
| 36 | | -static const unsigned long tegra124_mc_emem_regs[] = { |
|---|
| 37 | | - MC_EMEM_ARB_CFG, |
|---|
| 38 | | - MC_EMEM_ARB_OUTSTANDING_REQ, |
|---|
| 39 | | - MC_EMEM_ARB_TIMING_RCD, |
|---|
| 40 | | - MC_EMEM_ARB_TIMING_RP, |
|---|
| 41 | | - MC_EMEM_ARB_TIMING_RC, |
|---|
| 42 | | - MC_EMEM_ARB_TIMING_RAS, |
|---|
| 43 | | - MC_EMEM_ARB_TIMING_FAW, |
|---|
| 44 | | - MC_EMEM_ARB_TIMING_RRD, |
|---|
| 45 | | - MC_EMEM_ARB_TIMING_RAP2PRE, |
|---|
| 46 | | - MC_EMEM_ARB_TIMING_WAP2PRE, |
|---|
| 47 | | - MC_EMEM_ARB_TIMING_R2R, |
|---|
| 48 | | - MC_EMEM_ARB_TIMING_W2W, |
|---|
| 49 | | - MC_EMEM_ARB_TIMING_R2W, |
|---|
| 50 | | - MC_EMEM_ARB_TIMING_W2R, |
|---|
| 51 | | - MC_EMEM_ARB_DA_TURNS, |
|---|
| 52 | | - MC_EMEM_ARB_DA_COVERS, |
|---|
| 53 | | - MC_EMEM_ARB_MISC0, |
|---|
| 54 | | - MC_EMEM_ARB_MISC1, |
|---|
| 55 | | - MC_EMEM_ARB_RING1_THROTTLE |
|---|
| 56 | | -}; |
|---|
| 57 | 12 | |
|---|
| 58 | 13 | static const struct tegra_mc_client tegra124_mc_clients[] = { |
|---|
| 59 | 14 | { |
|---|
| .. | .. |
|---|
| 999 | 954 | { .name = "vi", .swgroup = TEGRA_SWGROUP_VI, .reg = 0x280 }, |
|---|
| 1000 | 955 | }; |
|---|
| 1001 | 956 | |
|---|
| 1002 | | -static const unsigned int tegra124_group_display[] = { |
|---|
| 957 | +static const unsigned int tegra124_group_drm[] = { |
|---|
| 1003 | 958 | TEGRA_SWGROUP_DC, |
|---|
| 1004 | 959 | TEGRA_SWGROUP_DCB, |
|---|
| 960 | + TEGRA_SWGROUP_VIC, |
|---|
| 1005 | 961 | }; |
|---|
| 1006 | 962 | |
|---|
| 1007 | 963 | static const struct tegra_smmu_group_soc tegra124_groups[] = { |
|---|
| 1008 | 964 | { |
|---|
| 1009 | | - .name = "display", |
|---|
| 1010 | | - .swgroups = tegra124_group_display, |
|---|
| 1011 | | - .num_swgroups = ARRAY_SIZE(tegra124_group_display), |
|---|
| 965 | + .name = "drm", |
|---|
| 966 | + .swgroups = tegra124_group_drm, |
|---|
| 967 | + .num_swgroups = ARRAY_SIZE(tegra124_group_drm), |
|---|
| 1012 | 968 | }, |
|---|
| 1013 | 969 | }; |
|---|
| 1014 | 970 | |
|---|
| .. | .. |
|---|
| 1049 | 1005 | }; |
|---|
| 1050 | 1006 | |
|---|
| 1051 | 1007 | #ifdef CONFIG_ARCH_TEGRA_124_SOC |
|---|
| 1008 | +static const unsigned long tegra124_mc_emem_regs[] = { |
|---|
| 1009 | + MC_EMEM_ARB_CFG, |
|---|
| 1010 | + MC_EMEM_ARB_OUTSTANDING_REQ, |
|---|
| 1011 | + MC_EMEM_ARB_TIMING_RCD, |
|---|
| 1012 | + MC_EMEM_ARB_TIMING_RP, |
|---|
| 1013 | + MC_EMEM_ARB_TIMING_RC, |
|---|
| 1014 | + MC_EMEM_ARB_TIMING_RAS, |
|---|
| 1015 | + MC_EMEM_ARB_TIMING_FAW, |
|---|
| 1016 | + MC_EMEM_ARB_TIMING_RRD, |
|---|
| 1017 | + MC_EMEM_ARB_TIMING_RAP2PRE, |
|---|
| 1018 | + MC_EMEM_ARB_TIMING_WAP2PRE, |
|---|
| 1019 | + MC_EMEM_ARB_TIMING_R2R, |
|---|
| 1020 | + MC_EMEM_ARB_TIMING_W2W, |
|---|
| 1021 | + MC_EMEM_ARB_TIMING_R2W, |
|---|
| 1022 | + MC_EMEM_ARB_TIMING_W2R, |
|---|
| 1023 | + MC_EMEM_ARB_DA_TURNS, |
|---|
| 1024 | + MC_EMEM_ARB_DA_COVERS, |
|---|
| 1025 | + MC_EMEM_ARB_MISC0, |
|---|
| 1026 | + MC_EMEM_ARB_MISC1, |
|---|
| 1027 | + MC_EMEM_ARB_RING1_THROTTLE |
|---|
| 1028 | +}; |
|---|
| 1029 | + |
|---|
| 1052 | 1030 | static const struct tegra_smmu_soc tegra124_smmu_soc = { |
|---|
| 1053 | 1031 | .clients = tegra124_mc_clients, |
|---|
| 1054 | 1032 | .num_clients = ARRAY_SIZE(tegra124_mc_clients), |
|---|
| .. | .. |
|---|
| 1074 | 1052 | .intmask = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR | |
|---|
| 1075 | 1053 | MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE | |
|---|
| 1076 | 1054 | MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM, |
|---|
| 1077 | | - .reset_ops = &terga_mc_reset_ops_common, |
|---|
| 1055 | + .reset_ops = &tegra_mc_reset_ops_common, |
|---|
| 1078 | 1056 | .resets = tegra124_mc_resets, |
|---|
| 1079 | 1057 | .num_resets = ARRAY_SIZE(tegra124_mc_resets), |
|---|
| 1080 | 1058 | }; |
|---|
| .. | .. |
|---|
| 1104 | 1082 | .intmask = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR | |
|---|
| 1105 | 1083 | MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE | |
|---|
| 1106 | 1084 | MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM, |
|---|
| 1107 | | - .reset_ops = &terga_mc_reset_ops_common, |
|---|
| 1085 | + .reset_ops = &tegra_mc_reset_ops_common, |
|---|
| 1108 | 1086 | .resets = tegra124_mc_resets, |
|---|
| 1109 | 1087 | .num_resets = ARRAY_SIZE(tegra124_mc_resets), |
|---|
| 1110 | 1088 | }; |
|---|