Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21815b9a authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'tegra-for-4.3-memory' of...

Merge tag 'tegra-for-4.3-memory' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into next/drivers

ARM: tegra: Memory controller updates for v4.3-rc1

Adds support for Tegra210, which allows the SMMU to be used on this new
SoC generation.

* tag 'tegra-for-4.3-memory' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux

:
  memory: tegra: Add Tegra210 support
  memory: tegra: Add support for a variable-size client ID bitfield
  memory: tegra: Expose supported rates via debugfs

Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 420f2629 588c43a7
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -222,7 +222,7 @@ config TEGRA_IOMMU_SMMU
	select IOMMU_API
	select IOMMU_API
	help
	help
	  This driver supports the IOMMU hardware (SMMU) found on NVIDIA Tegra
	  This driver supports the IOMMU hardware (SMMU) found on NVIDIA Tegra
	  SoCs (Tegra30 up to Tegra132).
	  SoCs (Tegra30 up to Tegra210).


config EXYNOS_IOMMU
config EXYNOS_IOMMU
	bool "Exynos IOMMU Support"
	bool "Exynos IOMMU Support"
+1 −0
Original line number Original line Diff line number Diff line
@@ -4,6 +4,7 @@ tegra-mc-$(CONFIG_ARCH_TEGRA_3x_SOC) += tegra30.o
tegra-mc-$(CONFIG_ARCH_TEGRA_114_SOC) += tegra114.o
tegra-mc-$(CONFIG_ARCH_TEGRA_114_SOC) += tegra114.o
tegra-mc-$(CONFIG_ARCH_TEGRA_124_SOC) += tegra124.o
tegra-mc-$(CONFIG_ARCH_TEGRA_124_SOC) += tegra124.o
tegra-mc-$(CONFIG_ARCH_TEGRA_132_SOC) += tegra124.o
tegra-mc-$(CONFIG_ARCH_TEGRA_132_SOC) += tegra124.o
tegra-mc-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210.o


obj-$(CONFIG_TEGRA_MC) += tegra-mc.o
obj-$(CONFIG_TEGRA_MC) += tegra-mc.o


+6 −2
Original line number Original line Diff line number Diff line
@@ -42,7 +42,6 @@
#define  MC_ERR_STATUS_ADR_HI_MASK 0x3
#define  MC_ERR_STATUS_ADR_HI_MASK 0x3
#define  MC_ERR_STATUS_SECURITY (1 << 17)
#define  MC_ERR_STATUS_SECURITY (1 << 17)
#define  MC_ERR_STATUS_RW (1 << 16)
#define  MC_ERR_STATUS_RW (1 << 16)
#define  MC_ERR_STATUS_CLIENT_MASK 0x7f


#define MC_ERR_ADR 0x0c
#define MC_ERR_ADR 0x0c


@@ -66,6 +65,9 @@ static const struct of_device_id tegra_mc_of_match[] = {
#endif
#endif
#ifdef CONFIG_ARCH_TEGRA_132_SOC
#ifdef CONFIG_ARCH_TEGRA_132_SOC
	{ .compatible = "nvidia,tegra132-mc", .data = &tegra132_mc_soc },
	{ .compatible = "nvidia,tegra132-mc", .data = &tegra132_mc_soc },
#endif
#ifdef CONFIG_ARCH_TEGRA_210_SOC
	{ .compatible = "nvidia,tegra210-mc", .data = &tegra210_mc_soc },
#endif
#endif
	{ }
	{ }
};
};
@@ -283,7 +285,7 @@ static irqreturn_t tegra_mc_irq(int irq, void *data)
		else
		else
			secure = "";
			secure = "";


		id = value & MC_ERR_STATUS_CLIENT_MASK;
		id = value & mc->soc->client_id_mask;


		for (i = 0; i < mc->soc->num_clients; i++) {
		for (i = 0; i < mc->soc->num_clients; i++) {
			if (mc->soc->clients[i].id == id) {
			if (mc->soc->clients[i].id == id) {
@@ -410,6 +412,8 @@ static int tegra_mc_probe(struct platform_device *pdev)
		return err;
		return err;
	}
	}


	WARN(!mc->soc->client_id_mask, "Missing client ID mask for this SoC\n");

	value = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
	value = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
		MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE |
		MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE |
		MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM;
		MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM;
+4 −0
Original line number Original line Diff line number Diff line
@@ -41,4 +41,8 @@ extern const struct tegra_mc_soc tegra124_mc_soc;
extern const struct tegra_mc_soc tegra132_mc_soc;
extern const struct tegra_mc_soc tegra132_mc_soc;
#endif
#endif


#ifdef CONFIG_ARCH_TEGRA_210_SOC
extern const struct tegra_mc_soc tegra210_mc_soc;
#endif

#endif /* MEMORY_TEGRA_MC_H */
#endif /* MEMORY_TEGRA_MC_H */
+1 −0
Original line number Original line Diff line number Diff line
@@ -944,5 +944,6 @@ const struct tegra_mc_soc tegra114_mc_soc = {
	.num_clients = ARRAY_SIZE(tegra114_mc_clients),
	.num_clients = ARRAY_SIZE(tegra114_mc_clients),
	.num_address_bits = 32,
	.num_address_bits = 32,
	.atom_size = 32,
	.atom_size = 32,
	.client_id_mask = 0x7f,
	.smmu = &tegra114_smmu_soc,
	.smmu = &tegra114_smmu_soc,
};
};
Loading