mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
memory: tegra: Add Tegra234 support
The memory controller and external memory controller found on Tegra234 is similar to the version found on earlier SoCs but supports a number of new memory clients. Add initial memory client definitions for the Tegra234 so that the SMMU stream ID override registers can be properly programmed at boot time. Signed-off-by: Thierry Reding <treding@nvidia.com> Link: https://lore.kernel.org/r/20220506132312.3910637-2-thierry.reding@gmail.com Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
This commit is contained in:
parent
3123109284
commit
72c81bb670
5 changed files with 95 additions and 1 deletions
|
@ -9,6 +9,7 @@ tegra-mc-$(CONFIG_ARCH_TEGRA_132_SOC) += tegra124.o
|
||||||
tegra-mc-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210.o
|
tegra-mc-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210.o
|
||||||
tegra-mc-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186.o
|
tegra-mc-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186.o
|
||||||
tegra-mc-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra186.o tegra194.o
|
tegra-mc-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra186.o tegra194.o
|
||||||
|
tegra-mc-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra186.o tegra234.o
|
||||||
|
|
||||||
obj-$(CONFIG_TEGRA_MC) += tegra-mc.o
|
obj-$(CONFIG_TEGRA_MC) += tegra-mc.o
|
||||||
|
|
||||||
|
@ -19,5 +20,6 @@ obj-$(CONFIG_TEGRA210_EMC_TABLE) += tegra210-emc-table.o
|
||||||
obj-$(CONFIG_TEGRA210_EMC) += tegra210-emc.o
|
obj-$(CONFIG_TEGRA210_EMC) += tegra210-emc.o
|
||||||
obj-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186-emc.o
|
obj-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186-emc.o
|
||||||
obj-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra186-emc.o
|
obj-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra186-emc.o
|
||||||
|
obj-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra186-emc.o
|
||||||
|
|
||||||
tegra210-emc-y := tegra210-emc-core.o tegra210-emc-cc-r21021.o
|
tegra210-emc-y := tegra210-emc-core.o tegra210-emc-cc-r21021.o
|
||||||
|
|
|
@ -44,6 +44,9 @@ static const struct of_device_id tegra_mc_of_match[] = {
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_ARCH_TEGRA_194_SOC
|
#ifdef CONFIG_ARCH_TEGRA_194_SOC
|
||||||
{ .compatible = "nvidia,tegra194-mc", .data = &tegra194_mc_soc },
|
{ .compatible = "nvidia,tegra194-mc", .data = &tegra194_mc_soc },
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_ARCH_TEGRA_234_SOC
|
||||||
|
{ .compatible = "nvidia,tegra234-mc", .data = &tegra234_mc_soc },
|
||||||
#endif
|
#endif
|
||||||
{ /* sentinel */ }
|
{ /* sentinel */ }
|
||||||
};
|
};
|
||||||
|
|
|
@ -137,6 +137,10 @@ extern const struct tegra_mc_soc tegra186_mc_soc;
|
||||||
extern const struct tegra_mc_soc tegra194_mc_soc;
|
extern const struct tegra_mc_soc tegra194_mc_soc;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_TEGRA_234_SOC
|
||||||
|
extern const struct tegra_mc_soc tegra234_mc_soc;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_TEGRA_3x_SOC) || \
|
#if defined(CONFIG_ARCH_TEGRA_3x_SOC) || \
|
||||||
defined(CONFIG_ARCH_TEGRA_114_SOC) || \
|
defined(CONFIG_ARCH_TEGRA_114_SOC) || \
|
||||||
defined(CONFIG_ARCH_TEGRA_124_SOC) || \
|
defined(CONFIG_ARCH_TEGRA_124_SOC) || \
|
||||||
|
@ -147,7 +151,8 @@ extern const struct tegra_mc_ops tegra30_mc_ops;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_TEGRA_186_SOC) || \
|
#if defined(CONFIG_ARCH_TEGRA_186_SOC) || \
|
||||||
defined(CONFIG_ARCH_TEGRA_194_SOC)
|
defined(CONFIG_ARCH_TEGRA_194_SOC) || \
|
||||||
|
defined(CONFIG_ARCH_TEGRA_234_SOC)
|
||||||
extern const struct tegra_mc_ops tegra186_mc_ops;
|
extern const struct tegra_mc_ops tegra186_mc_ops;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -272,6 +272,9 @@ static const struct of_device_id tegra186_emc_of_match[] = {
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_ARCH_TEGRA_194_SOC)
|
#if defined(CONFIG_ARCH_TEGRA_194_SOC)
|
||||||
{ .compatible = "nvidia,tegra194-emc" },
|
{ .compatible = "nvidia,tegra194-emc" },
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_TEGRA_234_SOC)
|
||||||
|
{ .compatible = "nvidia,tegra234-emc" },
|
||||||
#endif
|
#endif
|
||||||
{ /* sentinel */ }
|
{ /* sentinel */ }
|
||||||
};
|
};
|
||||||
|
|
81
drivers/memory/tegra/tegra234.c
Normal file
81
drivers/memory/tegra/tegra234.c
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2021 NVIDIA CORPORATION. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <soc/tegra/mc.h>
|
||||||
|
|
||||||
|
#include <dt-bindings/memory/tegra234-mc.h>
|
||||||
|
|
||||||
|
#include "mc.h"
|
||||||
|
|
||||||
|
static const struct tegra_mc_client tegra234_mc_clients[] = {
|
||||||
|
{
|
||||||
|
.id = TEGRA234_MEMORY_CLIENT_SDMMCRAB,
|
||||||
|
.name = "sdmmcrab",
|
||||||
|
.sid = TEGRA234_SID_SDMMC4,
|
||||||
|
.regs = {
|
||||||
|
.sid = {
|
||||||
|
.override = 0x318,
|
||||||
|
.security = 0x31c,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
.id = TEGRA234_MEMORY_CLIENT_SDMMCWAB,
|
||||||
|
.name = "sdmmcwab",
|
||||||
|
.sid = TEGRA234_SID_SDMMC4,
|
||||||
|
.regs = {
|
||||||
|
.sid = {
|
||||||
|
.override = 0x338,
|
||||||
|
.security = 0x33c,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
.id = TEGRA234_MEMORY_CLIENT_BPMPR,
|
||||||
|
.name = "bpmpr",
|
||||||
|
.sid = TEGRA234_SID_BPMP,
|
||||||
|
.regs = {
|
||||||
|
.sid = {
|
||||||
|
.override = 0x498,
|
||||||
|
.security = 0x49c,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
.id = TEGRA234_MEMORY_CLIENT_BPMPW,
|
||||||
|
.name = "bpmpw",
|
||||||
|
.sid = TEGRA234_SID_BPMP,
|
||||||
|
.regs = {
|
||||||
|
.sid = {
|
||||||
|
.override = 0x4a0,
|
||||||
|
.security = 0x4a4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
.id = TEGRA234_MEMORY_CLIENT_BPMPDMAR,
|
||||||
|
.name = "bpmpdmar",
|
||||||
|
.sid = TEGRA234_SID_BPMP,
|
||||||
|
.regs = {
|
||||||
|
.sid = {
|
||||||
|
.override = 0x4a8,
|
||||||
|
.security = 0x4ac,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
.id = TEGRA234_MEMORY_CLIENT_BPMPDMAW,
|
||||||
|
.name = "bpmpdmaw",
|
||||||
|
.sid = TEGRA234_SID_BPMP,
|
||||||
|
.regs = {
|
||||||
|
.sid = {
|
||||||
|
.override = 0x4b0,
|
||||||
|
.security = 0x4b4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct tegra_mc_soc tegra234_mc_soc = {
|
||||||
|
.num_clients = ARRAY_SIZE(tegra234_mc_clients),
|
||||||
|
.clients = tegra234_mc_clients,
|
||||||
|
.num_address_bits = 40,
|
||||||
|
.ops = &tegra186_mc_ops,
|
||||||
|
};
|
Loading…
Add table
Reference in a new issue