diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-06-26 14:54:29 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-06-26 14:54:29 -0400 |
| commit | f5dcb68086ba2e033b2af32b0da0c7a7c7872a09 (patch) | |
| tree | 89c41089b492f8d8d411185bd7cb07538802e837 /include/soc | |
| parent | 3d9f96d850e4bbfae24dc9aee03033dd77c81596 (diff) | |
| parent | 4af34b572a85c44c55491a10693535a79627c478 (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.h | 19 | ||||
| -rw-r--r-- | include/soc/tegra/fuse.h | 1 | ||||
| -rw-r--r-- | include/soc/tegra/mc.h | 20 |
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 | |||
| 12 | struct tegra_emc; | ||
| 13 | |||
| 14 | int tegra_emc_prepare_timing_change(struct tegra_emc *emc, | ||
| 15 | unsigned long rate); | ||
| 16 | void 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 | ||
| 58 | u32 tegra_read_straps(void); | 58 | u32 tegra_read_straps(void); |
| 59 | u32 tegra_read_ram_code(void); | ||
| 59 | u32 tegra_read_chipid(void); | 60 | u32 tegra_read_chipid(void); |
| 60 | int tegra_fuse_readl(unsigned long offset, u32 *value); | 61 | int 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 | ||
| 23 | struct tegra_mc_timing { | ||
| 24 | unsigned long rate; | ||
| 25 | |||
| 26 | u32 *emem_data; | ||
| 27 | }; | ||
| 28 | |||
| 23 | /* latency allowance */ | 29 | /* latency allowance */ |
| 24 | struct tegra_mc_la { | 30 | struct tegra_mc_la { |
| 25 | unsigned int reg; | 31 | unsigned int reg; |
| @@ -40,6 +46,7 @@ struct tegra_mc_client { | |||
| 40 | }; | 46 | }; |
| 41 | 47 | ||
| 42 | struct tegra_smmu_swgroup { | 48 | struct 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; | |||
| 71 | struct tegra_smmu *tegra_smmu_probe(struct device *dev, | 78 | struct 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); |
| 81 | void tegra_smmu_remove(struct tegra_smmu *smmu); | ||
| 74 | #else | 82 | #else |
| 75 | static inline struct tegra_smmu * | 83 | static inline struct tegra_smmu * |
| 76 | tegra_smmu_probe(struct device *dev, const struct tegra_smmu_soc *soc, | 84 | tegra_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 | |||
| 90 | static inline void tegra_smmu_remove(struct tegra_smmu *smmu) | ||
| 91 | { | ||
| 92 | } | ||
| 81 | #endif | 93 | #endif |
| 82 | 94 | ||
| 83 | struct tegra_mc_soc { | 95 | struct 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 | ||
| 122 | void tegra_mc_write_emem_configuration(struct tegra_mc *mc, unsigned long rate); | ||
| 123 | unsigned int tegra_mc_get_emem_device_count(struct tegra_mc *mc); | ||
| 124 | |||
| 107 | #endif /* __SOC_TEGRA_MC_H__ */ | 125 | #endif /* __SOC_TEGRA_MC_H__ */ |
