aboutsummaryrefslogtreecommitdiffstats
path: root/include/soc
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-06-26 14:54:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-06-26 14:54:29 -0400
commitf5dcb68086ba2e033b2af32b0da0c7a7c7872a09 (patch)
tree89c41089b492f8d8d411185bd7cb07538802e837 /include/soc
parent3d9f96d850e4bbfae24dc9aee03033dd77c81596 (diff)
parent4af34b572a85c44c55491a10693535a79627c478 (diff)
Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC driver updates from Kevin Hilman: "Some of these are for drivers/soc, where we're now putting SoC-specific drivers these days. Some are for other driver subsystems where we have received acks from the appropriate maintainers. Some highlights: - simple-mfd: document DT bindings and misc updates - migrate mach-berlin to simple-mfd for clock, pinctrl and reset - memory: support for Tegra132 SoC - memory: introduce tegra EMC driver for scaling memory frequency - misc. updates for ARM CCI and CCN busses" * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (48 commits) drivers: soc: sunxi: Introduce SoC driver to map SRAMs arm-cci: Add aliases for PMU events arm-cci: Add CCI-500 PMU support arm-cci: Sanitise CCI400 PMU driver specific code arm-cci: Abstract handling for CCI events arm-cci: Abstract out the PMU counter details arm-cci: Cleanup PMU driver code arm-cci: Do not enable CCI-400 PMU by default firmware: qcom: scm: Add HDCP Support ARM: berlin: add an ADC node for the BG2Q ARM: berlin: remove useless chip and system ctrl compatibles clk: berlin: drop direct of_iomap of nodes reg property ARM: berlin: move BG2Q clock node ARM: berlin: move BG2CD clock node ARM: berlin: move BG2 clock node clk: berlin: prepare simple-mfd conversion pinctrl: berlin: drop SoC stub provided regmap ARM: berlin: move pinctrl to simple-mfd nodes pinctrl: berlin: prepare to use regmap provided by syscon reset: berlin: drop arch_initcall initialization ...
Diffstat (limited to 'include/soc')
-rw-r--r--include/soc/tegra/emc.h19
-rw-r--r--include/soc/tegra/fuse.h1
-rw-r--r--include/soc/tegra/mc.h20
3 files changed, 39 insertions, 1 deletions
diff --git a/include/soc/tegra/emc.h b/include/soc/tegra/emc.h
new file mode 100644
index 000000000000..f6db33b579ec
--- /dev/null
+++ b/include/soc/tegra/emc.h
@@ -0,0 +1,19 @@
1/*
2 * 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 */
8
9#ifndef __SOC_TEGRA_EMC_H__
10#define __SOC_TEGRA_EMC_H__
11
12struct tegra_emc;
13
14int tegra_emc_prepare_timing_change(struct tegra_emc *emc,
15 unsigned long rate);
16void tegra_emc_complete_timing_change(struct tegra_emc *emc,
17 unsigned long rate);
18
19#endif /* __SOC_TEGRA_EMC_H__ */
diff --git a/include/soc/tegra/fuse.h b/include/soc/tegra/fuse.h
index b5f7b5f8d008..b019e3465f11 100644
--- a/include/soc/tegra/fuse.h
+++ b/include/soc/tegra/fuse.h
@@ -56,6 +56,7 @@ struct tegra_sku_info {
56}; 56};
57 57
58u32 tegra_read_straps(void); 58u32 tegra_read_straps(void);
59u32 tegra_read_ram_code(void);
59u32 tegra_read_chipid(void); 60u32 tegra_read_chipid(void);
60int tegra_fuse_readl(unsigned long offset, u32 *value); 61int tegra_fuse_readl(unsigned long offset, u32 *value);
61 62
diff --git a/include/soc/tegra/mc.h b/include/soc/tegra/mc.h
index 63deb8d9f82a..1ab2813273cd 100644
--- a/include/soc/tegra/mc.h
+++ b/include/soc/tegra/mc.h
@@ -20,6 +20,12 @@ struct tegra_smmu_enable {
20 unsigned int bit; 20 unsigned int bit;
21}; 21};
22 22
23struct tegra_mc_timing {
24 unsigned long rate;
25
26 u32 *emem_data;
27};
28
23/* latency allowance */ 29/* latency allowance */
24struct tegra_mc_la { 30struct tegra_mc_la {
25 unsigned int reg; 31 unsigned int reg;
@@ -40,6 +46,7 @@ struct tegra_mc_client {
40}; 46};
41 47
42struct tegra_smmu_swgroup { 48struct tegra_smmu_swgroup {
49 const char *name;
43 unsigned int swgroup; 50 unsigned int swgroup;
44 unsigned int reg; 51 unsigned int reg;
45}; 52};
@@ -71,6 +78,7 @@ struct tegra_smmu;
71struct tegra_smmu *tegra_smmu_probe(struct device *dev, 78struct tegra_smmu *tegra_smmu_probe(struct device *dev,
72 const struct tegra_smmu_soc *soc, 79 const struct tegra_smmu_soc *soc,
73 struct tegra_mc *mc); 80 struct tegra_mc *mc);
81void tegra_smmu_remove(struct tegra_smmu *smmu);
74#else 82#else
75static inline struct tegra_smmu * 83static inline struct tegra_smmu *
76tegra_smmu_probe(struct device *dev, const struct tegra_smmu_soc *soc, 84tegra_smmu_probe(struct device *dev, const struct tegra_smmu_soc *soc,
@@ -78,13 +86,17 @@ tegra_smmu_probe(struct device *dev, const struct tegra_smmu_soc *soc,
78{ 86{
79 return NULL; 87 return NULL;
80} 88}
89
90static inline void tegra_smmu_remove(struct tegra_smmu *smmu)
91{
92}
81#endif 93#endif
82 94
83struct tegra_mc_soc { 95struct tegra_mc_soc {
84 const struct tegra_mc_client *clients; 96 const struct tegra_mc_client *clients;
85 unsigned int num_clients; 97 unsigned int num_clients;
86 98
87 const unsigned int *emem_regs; 99 const unsigned long *emem_regs;
88 unsigned int num_emem_regs; 100 unsigned int num_emem_regs;
89 101
90 unsigned int num_address_bits; 102 unsigned int num_address_bits;
@@ -102,6 +114,12 @@ struct tegra_mc {
102 114
103 const struct tegra_mc_soc *soc; 115 const struct tegra_mc_soc *soc;
104 unsigned long tick; 116 unsigned long tick;
117
118 struct tegra_mc_timing *timings;
119 unsigned int num_timings;
105}; 120};
106 121
122void tegra_mc_write_emem_configuration(struct tegra_mc *mc, unsigned long rate);
123unsigned int tegra_mc_get_emem_device_count(struct tegra_mc *mc);
124
107#endif /* __SOC_TEGRA_MC_H__ */ 125#endif /* __SOC_TEGRA_MC_H__ */