Merge tag 'tegra-for-4.2-emc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra...
authorArnd Bergmann <arnd@arndb.de>
Wed, 13 May 2015 15:59:35 +0000 (17:59 +0200)
committerArnd Bergmann <arnd@arndb.de>
Wed, 13 May 2015 15:59:35 +0000 (17:59 +0200)
Merge "ARM: tegra: Add EMC driver for v4.2-rc1" from Thierry Reding:

This introduces the EMC driver that's required to scale the external
memory frequency.

* tag 'tegra-for-4.2-emc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  memory: tegra: Add EMC frequency debugfs entry
  memory: tegra: Add EMC (external memory controller) driver
  memory: tegra: Add API needed by the EMC driver
  of: Add Tegra124 EMC bindings
  of: Document timings subnode of nvidia,tegra-mc

1  2 
drivers/memory/tegra/Makefile
drivers/memory/tegra/mc.c
drivers/memory/tegra/tegra124.c
include/soc/tegra/mc.h

index 9d4f4319b52761b1e21477b19f8f739d1ccba5f8,c0129602ffd4bc8f7cecbba64c5d6038279089a5..6a0b9ac54f0517927456b014b5e940da9b07518c
@@@ -3,6 -3,7 +3,8 @@@ tegra-mc-y := mc.
  tegra-mc-$(CONFIG_ARCH_TEGRA_3x_SOC)  += tegra30.o
  tegra-mc-$(CONFIG_ARCH_TEGRA_114_SOC) += tegra114.o
  tegra-mc-$(CONFIG_ARCH_TEGRA_124_SOC) += tegra124.o
 +tegra-mc-$(CONFIG_ARCH_TEGRA_132_SOC) += tegra124.o
  
  obj-$(CONFIG_TEGRA_MC) += tegra-mc.o
+ obj-$(CONFIG_TEGRA124_EMC) += tegra124-emc.o
Simple merge
index b996dfb9358bcbc06cdb0a3b3f9984aa593bc253,3e9a99a556e1a399a0e9b4d81ee6e2a6022d2a2a..966e1557e6f414598868a8392b5487cb05e09f61
@@@ -991,38 -1033,7 +1033,40 @@@ const struct tegra_mc_soc tegra124_mc_s
        .num_address_bits = 34,
        .atom_size = 32,
        .smmu = &tegra124_smmu_soc,
+       .emem_regs = tegra124_mc_emem_regs,
+       .num_emem_regs = ARRAY_SIZE(tegra124_mc_emem_regs),
  };
  #endif /* CONFIG_ARCH_TEGRA_124_SOC */
 +
 +#ifdef CONFIG_ARCH_TEGRA_132_SOC
 +static void tegra132_flush_dcache(struct page *page, unsigned long offset,
 +                                size_t size)
 +{
 +      void *virt = page_address(page) + offset;
 +
 +      __flush_dcache_area(virt, size);
 +}
 +
 +static const struct tegra_smmu_ops tegra132_smmu_ops = {
 +      .flush_dcache = tegra132_flush_dcache,
 +};
 +
 +static const struct tegra_smmu_soc tegra132_smmu_soc = {
 +      .clients = tegra124_mc_clients,
 +      .num_clients = ARRAY_SIZE(tegra124_mc_clients),
 +      .swgroups = tegra124_swgroups,
 +      .num_swgroups = ARRAY_SIZE(tegra124_swgroups),
 +      .supports_round_robin_arbitration = true,
 +      .supports_request_limit = true,
 +      .num_asids = 128,
 +      .ops = &tegra132_smmu_ops,
 +};
 +
 +const struct tegra_mc_soc tegra132_mc_soc = {
 +      .clients = tegra124_mc_clients,
 +      .num_clients = ARRAY_SIZE(tegra124_mc_clients),
 +      .num_address_bits = 34,
 +      .atom_size = 32,
 +      .smmu = &tegra132_smmu_soc,
 +};
 +#endif /* CONFIG_ARCH_TEGRA_132_SOC */
Simple merge