aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2013-06-14 19:48:42 -0400
committerOlof Johansson <olof@lixom.net>2013-06-14 19:48:42 -0400
commitc094474d0b619374e4002ef0684eb0fab9e673c6 (patch)
tree7df069e8d198e7cb6bb041ff1fae178a2d423f8c
parent3d9f0bd3f70bf9151f1ecc707ced8e1000299302 (diff)
parent080e0435e54298992dfc03dc04ca53cfe3de36ba (diff)
Merge tag 'ux500-core-for-arm-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into next/boards
From Linus Walleij, a set of core patches for ux500. Most of them are actually board changes, so I sort them into here. Ux500 core changes: - Fixes for size and location of PRCMU TCDM - SD/MMC/SDIO caps updates to boardfiles - Misc fixes * tag 'ux500-core-for-arm-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson: ARM: ux500: avoid warning in ux500_read_asicid ARM: ux500: regulators: Remove misleading comment ARM: ux500: Enable support for UHS-I SD-cards ARM: ux500: Set eMMC and WLAN card slot as non-removable ARM: ux500: Enable support for discard for MMC/SD ARM: ux500: Enable support for RPMB and Reliable Write for eMMC ARM: ux500: Don't set plf ocr mask for SD/MMC device ARM: ux500: Enable 100MHz for SD/SDIO/MMC devices ARM: ux500: Remove incorrect DB9540 PRCMU TCDM base location ARM: ux500: Increase the size of the PRCMU's TCPM size Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r--arch/arm/mach-ux500/board-mop500-regulators.c1
-rw-r--r--arch/arm/mach-ux500/board-mop500-sdi.c34
-rw-r--r--arch/arm/mach-ux500/db8500-regs.h3
-rw-r--r--arch/arm/mach-ux500/devices-db8500.c2
-rw-r--r--arch/arm/mach-ux500/id.c6
5 files changed, 27 insertions, 19 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c
index 33c353bc1c4a..b34441bf8929 100644
--- a/arch/arm/mach-ux500/board-mop500-regulators.c
+++ b/arch/arm/mach-ux500/board-mop500-regulators.c
@@ -996,7 +996,6 @@ struct ab8500_regulator_platform_data ab8500_regulator_plat_data = {
996 .num_ext_regulator = ARRAY_SIZE(ab8500_ext_regulators), 996 .num_ext_regulator = ARRAY_SIZE(ab8500_ext_regulators),
997}; 997};
998 998
999/* Use the AB8500 init settings for AB8505 as they are the same right now */
1000struct ab8500_regulator_platform_data ab8505_regulator_plat_data = { 999struct ab8500_regulator_platform_data ab8505_regulator_plat_data = {
1001 .reg_init = ab8505_reg_init, 1000 .reg_init = ab8505_reg_init,
1002 .num_reg_init = ARRAY_SIZE(ab8505_reg_init), 1001 .num_reg_init = ARRAY_SIZE(ab8505_reg_init),
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c
index 0ef38775a0c1..43be3e0d4e30 100644
--- a/arch/arm/mach-ux500/board-mop500-sdi.c
+++ b/arch/arm/mach-ux500/board-mop500-sdi.c
@@ -52,11 +52,13 @@ static struct stedma40_chan_cfg mop500_sdi0_dma_cfg_tx = {
52#endif 52#endif
53 53
54struct mmci_platform_data mop500_sdi0_data = { 54struct mmci_platform_data mop500_sdi0_data = {
55 .ocr_mask = MMC_VDD_29_30, 55 .f_max = 100000000,
56 .f_max = 50000000,
57 .capabilities = MMC_CAP_4_BIT_DATA | 56 .capabilities = MMC_CAP_4_BIT_DATA |
58 MMC_CAP_SD_HIGHSPEED | 57 MMC_CAP_SD_HIGHSPEED |
59 MMC_CAP_MMC_HIGHSPEED, 58 MMC_CAP_MMC_HIGHSPEED |
59 MMC_CAP_ERASE |
60 MMC_CAP_UHS_SDR12 |
61 MMC_CAP_UHS_SDR25,
60 .gpio_wp = -1, 62 .gpio_wp = -1,
61 .sigdir = MCI_ST_FBCLKEN | 63 .sigdir = MCI_ST_FBCLKEN |
62 MCI_ST_CMDDIREN | 64 MCI_ST_CMDDIREN |
@@ -106,8 +108,9 @@ static struct stedma40_chan_cfg sdi1_dma_cfg_tx = {
106 108
107struct mmci_platform_data mop500_sdi1_data = { 109struct mmci_platform_data mop500_sdi1_data = {
108 .ocr_mask = MMC_VDD_29_30, 110 .ocr_mask = MMC_VDD_29_30,
109 .f_max = 50000000, 111 .f_max = 100000000,
110 .capabilities = MMC_CAP_4_BIT_DATA, 112 .capabilities = MMC_CAP_4_BIT_DATA |
113 MMC_CAP_NONREMOVABLE,
111 .gpio_cd = -1, 114 .gpio_cd = -1,
112 .gpio_wp = -1, 115 .gpio_wp = -1,
113#ifdef CONFIG_STE_DMA40 116#ifdef CONFIG_STE_DMA40
@@ -143,9 +146,13 @@ static struct stedma40_chan_cfg mop500_sdi2_dma_cfg_tx = {
143 146
144struct mmci_platform_data mop500_sdi2_data = { 147struct mmci_platform_data mop500_sdi2_data = {
145 .ocr_mask = MMC_VDD_165_195, 148 .ocr_mask = MMC_VDD_165_195,
146 .f_max = 50000000, 149 .f_max = 100000000,
147 .capabilities = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA | 150 .capabilities = MMC_CAP_4_BIT_DATA |
148 MMC_CAP_MMC_HIGHSPEED, 151 MMC_CAP_8_BIT_DATA |
152 MMC_CAP_NONREMOVABLE |
153 MMC_CAP_MMC_HIGHSPEED |
154 MMC_CAP_ERASE |
155 MMC_CAP_CMD23,
149 .gpio_cd = -1, 156 .gpio_cd = -1,
150 .gpio_wp = -1, 157 .gpio_wp = -1,
151#ifdef CONFIG_STE_DMA40 158#ifdef CONFIG_STE_DMA40
@@ -180,10 +187,13 @@ static struct stedma40_chan_cfg mop500_sdi4_dma_cfg_tx = {
180#endif 187#endif
181 188
182struct mmci_platform_data mop500_sdi4_data = { 189struct mmci_platform_data mop500_sdi4_data = {
183 .ocr_mask = MMC_VDD_29_30, 190 .f_max = 100000000,
184 .f_max = 50000000, 191 .capabilities = MMC_CAP_4_BIT_DATA |
185 .capabilities = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA | 192 MMC_CAP_8_BIT_DATA |
186 MMC_CAP_MMC_HIGHSPEED, 193 MMC_CAP_NONREMOVABLE |
194 MMC_CAP_MMC_HIGHSPEED |
195 MMC_CAP_ERASE |
196 MMC_CAP_CMD23,
187 .gpio_cd = -1, 197 .gpio_cd = -1,
188 .gpio_wp = -1, 198 .gpio_wp = -1,
189#ifdef CONFIG_STE_DMA40 199#ifdef CONFIG_STE_DMA40
diff --git a/arch/arm/mach-ux500/db8500-regs.h b/arch/arm/mach-ux500/db8500-regs.h
index b2d7a0b98629..27399553c841 100644
--- a/arch/arm/mach-ux500/db8500-regs.h
+++ b/arch/arm/mach-ux500/db8500-regs.h
@@ -102,7 +102,6 @@
102#define U8500_PRCMU_BASE (U8500_PER4_BASE + 0x07000) 102#define U8500_PRCMU_BASE (U8500_PER4_BASE + 0x07000)
103#define U9540_DMC1_BASE (U8500_PER4_BASE + 0x0A000) 103#define U9540_DMC1_BASE (U8500_PER4_BASE + 0x0A000)
104#define U8500_PRCMU_TCDM_BASE (U8500_PER4_BASE + 0x68000) 104#define U8500_PRCMU_TCDM_BASE (U8500_PER4_BASE + 0x68000)
105#define U9540_PRCMU_TCDM_BASE (U8500_PER4_BASE + 0x6A000)
106#define U8500_PRCMU_TCPM_BASE (U8500_PER4_BASE + 0x60000) 105#define U8500_PRCMU_TCPM_BASE (U8500_PER4_BASE + 0x60000)
107#define U8500_PRCMU_TIMER_3_BASE (U8500_PER4_BASE + 0x07338) 106#define U8500_PRCMU_TIMER_3_BASE (U8500_PER4_BASE + 0x07338)
108#define U8500_PRCMU_TIMER_4_BASE (U8500_PER4_BASE + 0x07450) 107#define U8500_PRCMU_TIMER_4_BASE (U8500_PER4_BASE + 0x07450)
@@ -184,7 +183,7 @@
184#define U8500_IO_VIRTUAL 0xf0000000 183#define U8500_IO_VIRTUAL 0xf0000000
185#define U8500_IO_PHYSICAL 0xa0000000 184#define U8500_IO_PHYSICAL 0xa0000000
186/* This is where we map in the ROM to check ASIC IDs */ 185/* This is where we map in the ROM to check ASIC IDs */
187#define UX500_VIRT_ROM 0xf0000000 186#define UX500_VIRT_ROM IOMEM(0xf0000000)
188 187
189/* This macro is used in assembly, so no cast */ 188/* This macro is used in assembly, so no cast */
190#define IO_ADDRESS(x) \ 189#define IO_ADDRESS(x) \
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c
index 1cf94ce0feec..ddbdcda8306a 100644
--- a/arch/arm/mach-ux500/devices-db8500.c
+++ b/arch/arm/mach-ux500/devices-db8500.c
@@ -227,7 +227,7 @@ static struct resource db8500_prcmu_res[] = {
227 { 227 {
228 .name = "prcmu-tcpm", 228 .name = "prcmu-tcpm",
229 .start = U8500_PRCMU_TCPM_BASE, 229 .start = U8500_PRCMU_TCPM_BASE,
230 .end = U8500_PRCMU_TCPM_BASE + SZ_4K - 1, 230 .end = U8500_PRCMU_TCPM_BASE + SZ_32K - 1,
231 .flags = IORESOURCE_MEM, 231 .flags = IORESOURCE_MEM,
232 }, 232 },
233}; 233};
diff --git a/arch/arm/mach-ux500/id.c b/arch/arm/mach-ux500/id.c
index 0d33d1a06955..392f2fdb37d0 100644
--- a/arch/arm/mach-ux500/id.c
+++ b/arch/arm/mach-ux500/id.c
@@ -21,11 +21,11 @@
21 21
22struct dbx500_asic_id dbx500_id; 22struct dbx500_asic_id dbx500_id;
23 23
24static unsigned int ux500_read_asicid(phys_addr_t addr) 24static unsigned int __init ux500_read_asicid(phys_addr_t addr)
25{ 25{
26 phys_addr_t base = addr & ~0xfff; 26 phys_addr_t base = addr & ~0xfff;
27 struct map_desc desc = { 27 struct map_desc desc = {
28 .virtual = UX500_VIRT_ROM, 28 .virtual = (unsigned long)UX500_VIRT_ROM,
29 .pfn = __phys_to_pfn(base), 29 .pfn = __phys_to_pfn(base),
30 .length = SZ_16K, 30 .length = SZ_16K,
31 .type = MT_DEVICE, 31 .type = MT_DEVICE,
@@ -37,7 +37,7 @@ static unsigned int ux500_read_asicid(phys_addr_t addr)
37 local_flush_tlb_all(); 37 local_flush_tlb_all();
38 flush_cache_all(); 38 flush_cache_all();
39 39
40 return readl(IOMEM(UX500_VIRT_ROM + (addr & 0xfff))); 40 return readl(UX500_VIRT_ROM + (addr & 0xfff));
41} 41}
42 42
43static void ux500_print_soc_info(unsigned int asicid) 43static void ux500_print_soc_info(unsigned int asicid)