diff options
author | Olof Johansson <olof@lixom.net> | 2013-06-14 19:48:42 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2013-06-14 19:48:42 -0400 |
commit | c094474d0b619374e4002ef0684eb0fab9e673c6 (patch) | |
tree | 7df069e8d198e7cb6bb041ff1fae178a2d423f8c /arch | |
parent | 3d9f0bd3f70bf9151f1ecc707ced8e1000299302 (diff) | |
parent | 080e0435e54298992dfc03dc04ca53cfe3de36ba (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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-regulators.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-sdi.c | 34 | ||||
-rw-r--r-- | arch/arm/mach-ux500/db8500-regs.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-ux500/devices-db8500.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ux500/id.c | 6 |
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 */ | ||
1000 | struct ab8500_regulator_platform_data ab8505_regulator_plat_data = { | 999 | struct 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 | ||
54 | struct mmci_platform_data mop500_sdi0_data = { | 54 | struct 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 | ||
107 | struct mmci_platform_data mop500_sdi1_data = { | 109 | struct 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 | ||
144 | struct mmci_platform_data mop500_sdi2_data = { | 147 | struct 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 | ||
182 | struct mmci_platform_data mop500_sdi4_data = { | 189 | struct 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 | ||
22 | struct dbx500_asic_id dbx500_id; | 22 | struct dbx500_asic_id dbx500_id; |
23 | 23 | ||
24 | static unsigned int ux500_read_asicid(phys_addr_t addr) | 24 | static 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 | ||
43 | static void ux500_print_soc_info(unsigned int asicid) | 43 | static void ux500_print_soc_info(unsigned int asicid) |