aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/memory
diff options
context:
space:
mode:
authorDmitry Osipenko <digetx@gmail.com>2018-12-12 15:38:52 -0500
committerJoerg Roedel <jroedel@suse.de>2019-01-16 07:54:11 -0500
commit96efa118c03648fdc76acad9ca8fe018a6be7145 (patch)
treef4efbd5dc8ab97aa842ef37a81290016c100ece9 /drivers/memory
parentbe4dbdec2bab8635c7a41573668624ee13d83022 (diff)
memory: tegra: Adapt to Tegra20 device-tree binding changes
The tegra20-mc device-tree binding has been changed, GART has been squashed into Memory Controller and now the clock property is mandatory for Tegra20, the DT compatible has been changed as well. Adapt driver to the DT changes. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/memory')
-rw-r--r--drivers/memory/tegra/mc.c21
-rw-r--r--drivers/memory/tegra/mc.h6
2 files changed, 8 insertions, 19 deletions
diff --git a/drivers/memory/tegra/mc.c b/drivers/memory/tegra/mc.c
index b99f3c620f6c..59db13287b47 100644
--- a/drivers/memory/tegra/mc.c
+++ b/drivers/memory/tegra/mc.c
@@ -51,7 +51,7 @@
51 51
52static const struct of_device_id tegra_mc_of_match[] = { 52static const struct of_device_id tegra_mc_of_match[] = {
53#ifdef CONFIG_ARCH_TEGRA_2x_SOC 53#ifdef CONFIG_ARCH_TEGRA_2x_SOC
54 { .compatible = "nvidia,tegra20-mc", .data = &tegra20_mc_soc }, 54 { .compatible = "nvidia,tegra20-mc-gart", .data = &tegra20_mc_soc },
55#endif 55#endif
56#ifdef CONFIG_ARCH_TEGRA_3x_SOC 56#ifdef CONFIG_ARCH_TEGRA_3x_SOC
57 { .compatible = "nvidia,tegra30-mc", .data = &tegra30_mc_soc }, 57 { .compatible = "nvidia,tegra30-mc", .data = &tegra30_mc_soc },
@@ -638,24 +638,19 @@ static int tegra_mc_probe(struct platform_device *pdev)
638 if (IS_ERR(mc->regs)) 638 if (IS_ERR(mc->regs))
639 return PTR_ERR(mc->regs); 639 return PTR_ERR(mc->regs);
640 640
641 mc->clk = devm_clk_get(&pdev->dev, "mc");
642 if (IS_ERR(mc->clk)) {
643 dev_err(&pdev->dev, "failed to get MC clock: %ld\n",
644 PTR_ERR(mc->clk));
645 return PTR_ERR(mc->clk);
646 }
647
641#ifdef CONFIG_ARCH_TEGRA_2x_SOC 648#ifdef CONFIG_ARCH_TEGRA_2x_SOC
642 if (mc->soc == &tegra20_mc_soc) { 649 if (mc->soc == &tegra20_mc_soc) {
643 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
644 mc->regs2 = devm_ioremap_resource(&pdev->dev, res);
645 if (IS_ERR(mc->regs2))
646 return PTR_ERR(mc->regs2);
647
648 isr = tegra20_mc_irq; 650 isr = tegra20_mc_irq;
649 } else 651 } else
650#endif 652#endif
651 { 653 {
652 mc->clk = devm_clk_get(&pdev->dev, "mc");
653 if (IS_ERR(mc->clk)) {
654 dev_err(&pdev->dev, "failed to get MC clock: %ld\n",
655 PTR_ERR(mc->clk));
656 return PTR_ERR(mc->clk);
657 }
658
659 err = tegra_mc_setup_latency_allowance(mc); 654 err = tegra_mc_setup_latency_allowance(mc);
660 if (err < 0) { 655 if (err < 0) {
661 dev_err(&pdev->dev, "failed to setup latency allowance: %d\n", 656 dev_err(&pdev->dev, "failed to setup latency allowance: %d\n",
diff --git a/drivers/memory/tegra/mc.h b/drivers/memory/tegra/mc.h
index 01065f12ebeb..9856f085e487 100644
--- a/drivers/memory/tegra/mc.h
+++ b/drivers/memory/tegra/mc.h
@@ -26,18 +26,12 @@
26 26
27static inline u32 mc_readl(struct tegra_mc *mc, unsigned long offset) 27static inline u32 mc_readl(struct tegra_mc *mc, unsigned long offset)
28{ 28{
29 if (mc->regs2 && offset >= 0x24)
30 return readl(mc->regs2 + offset - 0x3c);
31
32 return readl(mc->regs + offset); 29 return readl(mc->regs + offset);
33} 30}
34 31
35static inline void mc_writel(struct tegra_mc *mc, u32 value, 32static inline void mc_writel(struct tegra_mc *mc, u32 value,
36 unsigned long offset) 33 unsigned long offset)
37{ 34{
38 if (mc->regs2 && offset >= 0x24)
39 return writel(value, mc->regs2 + offset - 0x3c);
40
41 writel(value, mc->regs + offset); 35 writel(value, mc->regs + offset);
42} 36}
43 37