aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/mach-davinci/board-da850-evm.c2
-rw-r--r--arch/arm/mach-davinci/davinci.h4
-rw-r--r--arch/arm/mach-davinci/devices-da8xx.c2
-rw-r--r--arch/arm/mach-davinci/dm355.c2
-rw-r--r--arch/arm/mach-davinci/dm365.c2
-rw-r--r--arch/arm/mach-davinci/dma.c6
-rw-r--r--arch/arm/mach-davinci/include/mach/da8xx.h3
-rw-r--r--arch/arm/mach-davinci/include/mach/psc.h2
-rw-r--r--arch/arm/mach-omap1/Kconfig1
-rw-r--r--arch/arm/mach-omap2/board-4430sdp.c44
-rw-r--r--arch/arm/mach-omap2/board-igep0020.c10
-rw-r--r--arch/arm/mach-omap2/board-omap4panda.c49
-rw-r--r--arch/arm/mach-omap2/common.h3
-rw-r--r--arch/arm/mach-omap2/dsp.c5
-rw-r--r--arch/arm/mach-omap2/id.c5
-rw-r--r--arch/arm/mach-omap2/irq.c3
-rw-r--r--arch/arm/mach-omap2/mailbox.c6
-rw-r--r--arch/arm/mach-omap2/omap4-common.c58
-rw-r--r--arch/arm/mach-spear6xx/Kconfig18
-rw-r--r--arch/arm/mach-tegra/tegra2_clocks.c6
-rw-r--r--arch/arm/plat-omap/devices.c4
-rw-r--r--arch/arm/plat-omap/include/plat/cpu.h1
23 files changed, 103 insertions, 135 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 11d9bb1bbbc5..64ae22c4fce7 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -2253,7 +2253,7 @@ menu "Power management options"
2253source "kernel/power/Kconfig" 2253source "kernel/power/Kconfig"
2254 2254
2255config ARCH_SUSPEND_POSSIBLE 2255config ARCH_SUSPEND_POSSIBLE
2256 depends on !ARCH_S5PC100 2256 depends on !ARCH_S5PC100 && !ARCH_TEGRA
2257 depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \ 2257 depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
2258 CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE 2258 CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE
2259 def_bool y 2259 def_bool y
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index a70de24d1cbc..09f61073c8d9 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -284,7 +284,7 @@ static struct platform_device da850_evm_nandflash_device = {
284 .resource = da850_evm_nandflash_resource, 284 .resource = da850_evm_nandflash_resource,
285}; 285};
286 286
287static struct platform_device *da850_evm_devices[] __initdata = { 287static struct platform_device *da850_evm_devices[] = {
288 &da850_evm_nandflash_device, 288 &da850_evm_nandflash_device,
289 &da850_evm_norflash_device, 289 &da850_evm_norflash_device,
290}; 290};
diff --git a/arch/arm/mach-davinci/davinci.h b/arch/arm/mach-davinci/davinci.h
index 3e519dad5bb9..8db0fc6809dd 100644
--- a/arch/arm/mach-davinci/davinci.h
+++ b/arch/arm/mach-davinci/davinci.h
@@ -72,7 +72,7 @@ void davinci_map_sysmod(void);
72/* DM355 function declarations */ 72/* DM355 function declarations */
73void __init dm355_init(void); 73void __init dm355_init(void);
74void dm355_init_spi0(unsigned chipselect_mask, 74void dm355_init_spi0(unsigned chipselect_mask,
75 struct spi_board_info *info, unsigned len); 75 const struct spi_board_info *info, unsigned len);
76void __init dm355_init_asp1(u32 evt_enable, struct snd_platform_data *pdata); 76void __init dm355_init_asp1(u32 evt_enable, struct snd_platform_data *pdata);
77void dm355_set_vpfe_config(struct vpfe_config *cfg); 77void dm355_set_vpfe_config(struct vpfe_config *cfg);
78 78
@@ -83,7 +83,7 @@ void __init dm365_init_vc(struct snd_platform_data *pdata);
83void __init dm365_init_ks(struct davinci_ks_platform_data *pdata); 83void __init dm365_init_ks(struct davinci_ks_platform_data *pdata);
84void __init dm365_init_rtc(void); 84void __init dm365_init_rtc(void);
85void dm365_init_spi0(unsigned chipselect_mask, 85void dm365_init_spi0(unsigned chipselect_mask,
86 struct spi_board_info *info, unsigned len); 86 const struct spi_board_info *info, unsigned len);
87void dm365_set_vpfe_config(struct vpfe_config *cfg); 87void dm365_set_vpfe_config(struct vpfe_config *cfg);
88 88
89/* DM644x function declarations */ 89/* DM644x function declarations */
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c
index 42dbf3dc11ab..d1624a315c9a 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -831,7 +831,7 @@ static struct platform_device da8xx_spi_device[] = {
831 }, 831 },
832}; 832};
833 833
834int __init da8xx_register_spi(int instance, struct spi_board_info *info, 834int __init da8xx_register_spi(int instance, const struct spi_board_info *info,
835 unsigned len) 835 unsigned len)
836{ 836{
837 int ret; 837 int ret;
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index fd3d09aa6cde..678cd99b7336 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -424,7 +424,7 @@ static struct platform_device dm355_spi0_device = {
424}; 424};
425 425
426void __init dm355_init_spi0(unsigned chipselect_mask, 426void __init dm355_init_spi0(unsigned chipselect_mask,
427 struct spi_board_info *info, unsigned len) 427 const struct spi_board_info *info, unsigned len)
428{ 428{
429 /* for now, assume we need MISO */ 429 /* for now, assume we need MISO */
430 davinci_cfg_reg(DM355_SPI0_SDI); 430 davinci_cfg_reg(DM355_SPI0_SDI);
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 1a2e953082b3..a50d49de1883 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -676,7 +676,7 @@ static struct platform_device dm365_spi0_device = {
676}; 676};
677 677
678void __init dm365_init_spi0(unsigned chipselect_mask, 678void __init dm365_init_spi0(unsigned chipselect_mask,
679 struct spi_board_info *info, unsigned len) 679 const struct spi_board_info *info, unsigned len)
680{ 680{
681 davinci_cfg_reg(DM365_SPI0_SCLK); 681 davinci_cfg_reg(DM365_SPI0_SCLK);
682 davinci_cfg_reg(DM365_SPI0_SDI); 682 davinci_cfg_reg(DM365_SPI0_SDI);
diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c
index fd33919c95d4..95ce019c9b98 100644
--- a/arch/arm/mach-davinci/dma.c
+++ b/arch/arm/mach-davinci/dma.c
@@ -557,9 +557,9 @@ static int reserve_contiguous_slots(int ctlr, unsigned int id,
557 if (i == edma_cc[ctlr]->num_slots) 557 if (i == edma_cc[ctlr]->num_slots)
558 stop_slot = i; 558 stop_slot = i;
559 559
560 for (j = start_slot; j < stop_slot; j++) 560 j = start_slot;
561 if (test_bit(j, tmp_inuse)) 561 for_each_set_bit_from(j, tmp_inuse, stop_slot)
562 clear_bit(j, edma_cc[ctlr]->edma_inuse); 562 clear_bit(j, edma_cc[ctlr]->edma_inuse);
563 563
564 if (count) 564 if (count)
565 return -EBUSY; 565 return -EBUSY;
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h
index ee3461d7ec1b..a2f1f274f189 100644
--- a/arch/arm/mach-davinci/include/mach/da8xx.h
+++ b/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -76,7 +76,8 @@ void __init da850_init(void);
76int da830_register_edma(struct edma_rsv_info *rsv); 76int da830_register_edma(struct edma_rsv_info *rsv);
77int da850_register_edma(struct edma_rsv_info *rsv[2]); 77int da850_register_edma(struct edma_rsv_info *rsv[2]);
78int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata); 78int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata);
79int da8xx_register_spi(int instance, struct spi_board_info *info, unsigned len); 79int da8xx_register_spi(int instance,
80 const struct spi_board_info *info, unsigned len);
80int da8xx_register_watchdog(void); 81int da8xx_register_watchdog(void);
81int da8xx_register_usb20(unsigned mA, unsigned potpgt); 82int da8xx_register_usb20(unsigned mA, unsigned potpgt);
82int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata); 83int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata);
diff --git a/arch/arm/mach-davinci/include/mach/psc.h b/arch/arm/mach-davinci/include/mach/psc.h
index 8bc3fc256171..405318e35bf6 100644
--- a/arch/arm/mach-davinci/include/mach/psc.h
+++ b/arch/arm/mach-davinci/include/mach/psc.h
@@ -246,7 +246,7 @@
246#define MDSTAT_STATE_MASK 0x3f 246#define MDSTAT_STATE_MASK 0x3f
247#define PDSTAT_STATE_MASK 0x1f 247#define PDSTAT_STATE_MASK 0x1f
248#define MDCTL_FORCE BIT(31) 248#define MDCTL_FORCE BIT(31)
249#define PDCTL_NEXT BIT(1) 249#define PDCTL_NEXT BIT(0)
250#define PDCTL_EPCGOOD BIT(8) 250#define PDCTL_EPCGOOD BIT(8)
251 251
252#ifndef __ASSEMBLER__ 252#ifndef __ASSEMBLER__
diff --git a/arch/arm/mach-omap1/Kconfig b/arch/arm/mach-omap1/Kconfig
index dfab466ebd1d..cba3f7191cfc 100644
--- a/arch/arm/mach-omap1/Kconfig
+++ b/arch/arm/mach-omap1/Kconfig
@@ -132,6 +132,7 @@ config MACH_OMAP_PALMTT
132 132
133config MACH_SX1 133config MACH_SX1
134 bool "Siemens SX1" 134 bool "Siemens SX1"
135 select I2C
135 depends on ARCH_OMAP1 && ARCH_OMAP15XX 136 depends on ARCH_OMAP1 && ARCH_OMAP15XX
136 help 137 help
137 Support for the Siemens SX1 phone. To boot the kernel, 138 Support for the Siemens SX1 phone. To boot the kernel,
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index b4ad706c145a..4a9bc00a7d98 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -489,50 +489,6 @@ static struct platform_device omap_vwlan_device = {
489 }, 489 },
490}; 490};
491 491
492static int omap4_twl6030_hsmmc_late_init(struct device *dev)
493{
494 int irq = 0;
495 struct platform_device *pdev = container_of(dev,
496 struct platform_device, dev);
497 struct omap_mmc_platform_data *pdata = dev->platform_data;
498
499 /* Setting MMC1 Card detect Irq */
500 if (pdev->id == 0) {
501 irq = twl6030_mmc_card_detect_config();
502 if (irq < 0) {
503 pr_err("Failed configuring MMC1 card detect\n");
504 return irq;
505 }
506 pdata->slots[0].card_detect_irq = irq;
507 pdata->slots[0].card_detect = twl6030_mmc_card_detect;
508 }
509 return 0;
510}
511
512static __init void omap4_twl6030_hsmmc_set_late_init(struct device *dev)
513{
514 struct omap_mmc_platform_data *pdata;
515
516 /* dev can be null if CONFIG_MMC_OMAP_HS is not set */
517 if (!dev) {
518 pr_err("Failed %s\n", __func__);
519 return;
520 }
521 pdata = dev->platform_data;
522 pdata->init = omap4_twl6030_hsmmc_late_init;
523}
524
525static int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
526{
527 struct omap2_hsmmc_info *c;
528
529 omap_hsmmc_init(controllers);
530 for (c = controllers; c->mmc; c++)
531 omap4_twl6030_hsmmc_set_late_init(&c->pdev->dev);
532
533 return 0;
534}
535
536static struct regulator_init_data sdp4430_vaux1 = { 492static struct regulator_init_data sdp4430_vaux1 = {
537 .constraints = { 493 .constraints = {
538 .min_uV = 1000000, 494 .min_uV = 1000000,
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index accbbb173198..4c1acecce93f 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -519,7 +519,10 @@ static void __init igep_i2c_init(void)
519{ 519{
520 int ret; 520 int ret;
521 521
522 omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_USB, 0); 522 omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_USB,
523 TWL_COMMON_REGULATOR_VPLL2);
524 igep_twldata.vpll2->constraints.apply_uV = true;
525 igep_twldata.vpll2->constraints.name = "VDVI";
523 526
524 if (machine_is_igep0020()) { 527 if (machine_is_igep0020()) {
525 /* 528 /*
@@ -533,10 +536,7 @@ static void __init igep_i2c_init(void)
533 536
534 igep_twldata.keypad = &igep2_keypad_pdata; 537 igep_twldata.keypad = &igep2_keypad_pdata;
535 /* Get common pmic data */ 538 /* Get common pmic data */
536 omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_AUDIO, 539 omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_AUDIO, 0);
537 TWL_COMMON_REGULATOR_VPLL2);
538 igep_twldata.vpll2->constraints.apply_uV = true;
539 igep_twldata.vpll2->constraints.name = "VDVI";
540 } 540 }
541 541
542 omap3_pmic_init("twl4030", &igep_twldata); 542 omap3_pmic_init("twl4030", &igep_twldata);
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index 59dd8b7f5b4f..bb75eb091a88 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -236,55 +236,6 @@ static struct wl12xx_platform_data omap_panda_wlan_data __initdata = {
236 .board_ref_clock = 2, 236 .board_ref_clock = 2,
237}; 237};
238 238
239static int omap4_twl6030_hsmmc_late_init(struct device *dev)
240{
241 int irq = 0;
242 struct platform_device *pdev = container_of(dev,
243 struct platform_device, dev);
244 struct omap_mmc_platform_data *pdata = dev->platform_data;
245
246 if (!pdata) {
247 dev_err(dev, "%s: NULL platform data\n", __func__);
248 return -EINVAL;
249 }
250 /* Setting MMC1 Card detect Irq */
251 if (pdev->id == 0) {
252 irq = twl6030_mmc_card_detect_config();
253 if (irq < 0) {
254 dev_err(dev, "%s: Error card detect config(%d)\n",
255 __func__, irq);
256 return irq;
257 }
258 pdata->slots[0].card_detect = twl6030_mmc_card_detect;
259 }
260 return 0;
261}
262
263static __init void omap4_twl6030_hsmmc_set_late_init(struct device *dev)
264{
265 struct omap_mmc_platform_data *pdata;
266
267 /* dev can be null if CONFIG_MMC_OMAP_HS is not set */
268 if (!dev) {
269 pr_err("Failed omap4_twl6030_hsmmc_set_late_init\n");
270 return;
271 }
272 pdata = dev->platform_data;
273
274 pdata->init = omap4_twl6030_hsmmc_late_init;
275}
276
277static int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
278{
279 struct omap2_hsmmc_info *c;
280
281 omap_hsmmc_init(controllers);
282 for (c = controllers; c->mmc; c++)
283 omap4_twl6030_hsmmc_set_late_init(&c->pdev->dev);
284
285 return 0;
286}
287
288static struct twl6040_codec_data twl6040_codec = { 239static struct twl6040_codec_data twl6040_codec = {
289 /* single-step ramp for headset and handsfree */ 240 /* single-step ramp for headset and handsfree */
290 .hs_left_step = 0x0f, 241 .hs_left_step = 0x0f,
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 0e95efccd2d7..f14b3aec58cc 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -27,6 +27,7 @@
27#ifndef __ASSEMBLER__ 27#ifndef __ASSEMBLER__
28 28
29#include <linux/delay.h> 29#include <linux/delay.h>
30#include <linux/i2c/twl.h>
30#include <plat/common.h> 31#include <plat/common.h>
31#include <asm/proc-fns.h> 32#include <asm/proc-fns.h>
32 33
@@ -252,6 +253,8 @@ static inline u32 omap4_mpuss_read_prev_context_state(void)
252struct omap_sdrc_params; 253struct omap_sdrc_params;
253extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, 254extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
254 struct omap_sdrc_params *sdrc_cs1); 255 struct omap_sdrc_params *sdrc_cs1);
256struct omap2_hsmmc_info;
257extern int omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers);
255 258
256#endif /* __ASSEMBLER__ */ 259#endif /* __ASSEMBLER__ */
257#endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ 260#endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */
diff --git a/arch/arm/mach-omap2/dsp.c b/arch/arm/mach-omap2/dsp.c
index 74f18f2952df..3376388b317a 100644
--- a/arch/arm/mach-omap2/dsp.c
+++ b/arch/arm/mach-omap2/dsp.c
@@ -57,8 +57,9 @@ static int __init omap_dsp_init(void)
57 57
58 if (pdata->phys_mempool_base) { 58 if (pdata->phys_mempool_base) {
59 pdata->phys_mempool_size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE; 59 pdata->phys_mempool_size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE;
60 pr_info("%s: %x bytes @ %x\n", __func__, 60 pr_info("%s: %llx bytes @ %llx\n", __func__,
61 pdata->phys_mempool_size, pdata->phys_mempool_base); 61 (unsigned long long)pdata->phys_mempool_size,
62 (unsigned long long)pdata->phys_mempool_base);
62 } 63 }
63 64
64 pdev = platform_device_alloc("omap-dsp", -1); 65 pdev = platform_device_alloc("omap-dsp", -1);
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index 0e79b7bc6aa4..f1398171d8a2 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -478,9 +478,12 @@ void __init omap4xxx_check_revision(void)
478 case 0xb94e: 478 case 0xb94e:
479 switch (rev) { 479 switch (rev) {
480 case 0: 480 case 0:
481 default:
482 omap_revision = OMAP4460_REV_ES1_0; 481 omap_revision = OMAP4460_REV_ES1_0;
483 break; 482 break;
483 case 2:
484 default:
485 omap_revision = OMAP4460_REV_ES1_1;
486 break;
484 } 487 }
485 break; 488 break;
486 case 0xb975: 489 case 0xb975:
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
index 80f3ced0bd1a..1ecf54565fe2 100644
--- a/arch/arm/mach-omap2/irq.c
+++ b/arch/arm/mach-omap2/irq.c
@@ -150,7 +150,6 @@ omap_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num)
150 ct->chip.irq_mask = irq_gc_mask_disable_reg; 150 ct->chip.irq_mask = irq_gc_mask_disable_reg;
151 ct->chip.irq_unmask = irq_gc_unmask_enable_reg; 151 ct->chip.irq_unmask = irq_gc_unmask_enable_reg;
152 152
153 ct->regs.ack = INTC_CONTROL;
154 ct->regs.enable = INTC_MIR_CLEAR0; 153 ct->regs.enable = INTC_MIR_CLEAR0;
155 ct->regs.disable = INTC_MIR_SET0; 154 ct->regs.disable = INTC_MIR_SET0;
156 irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE, 155 irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE,
@@ -232,7 +231,7 @@ static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs
232 goto out; 231 goto out;
233 232
234 irqnr = readl_relaxed(base_addr + 0xd8); 233 irqnr = readl_relaxed(base_addr + 0xd8);
235#ifdef CONFIG_SOC_OMAPTI816X 234#ifdef CONFIG_SOC_OMAPTI81XX
236 if (irqnr) 235 if (irqnr)
237 goto out; 236 goto out;
238 irqnr = readl_relaxed(base_addr + 0xf8); 237 irqnr = readl_relaxed(base_addr + 0xf8);
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
index 415a6f1cf419..19b8b6774862 100644
--- a/arch/arm/mach-omap2/mailbox.c
+++ b/arch/arm/mach-omap2/mailbox.c
@@ -26,9 +26,9 @@
26#define MAILBOX_IRQSTATUS(u) (0x100 + 8 * (u)) 26#define MAILBOX_IRQSTATUS(u) (0x100 + 8 * (u))
27#define MAILBOX_IRQENABLE(u) (0x104 + 8 * (u)) 27#define MAILBOX_IRQENABLE(u) (0x104 + 8 * (u))
28 28
29#define OMAP4_MAILBOX_IRQSTATUS(u) (0x104 + 10 * (u)) 29#define OMAP4_MAILBOX_IRQSTATUS(u) (0x104 + 0x10 * (u))
30#define OMAP4_MAILBOX_IRQENABLE(u) (0x108 + 10 * (u)) 30#define OMAP4_MAILBOX_IRQENABLE(u) (0x108 + 0x10 * (u))
31#define OMAP4_MAILBOX_IRQENABLE_CLR(u) (0x10c + 10 * (u)) 31#define OMAP4_MAILBOX_IRQENABLE_CLR(u) (0x10c + 0x10 * (u))
32 32
33#define MAILBOX_IRQ_NEWMSG(m) (1 << (2 * (m))) 33#define MAILBOX_IRQ_NEWMSG(m) (1 << (2 * (m)))
34#define MAILBOX_IRQ_NOTFULL(m) (1 << (2 * (m) + 1)) 34#define MAILBOX_IRQ_NOTFULL(m) (1 << (2 * (m) + 1))
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c
index 70de277f5c15..a8161e5f3204 100644
--- a/arch/arm/mach-omap2/omap4-common.c
+++ b/arch/arm/mach-omap2/omap4-common.c
@@ -25,11 +25,13 @@
25#include <plat/irqs.h> 25#include <plat/irqs.h>
26#include <plat/sram.h> 26#include <plat/sram.h>
27#include <plat/omap-secure.h> 27#include <plat/omap-secure.h>
28#include <plat/mmc.h>
28 29
29#include <mach/hardware.h> 30#include <mach/hardware.h>
30#include <mach/omap-wakeupgen.h> 31#include <mach/omap-wakeupgen.h>
31 32
32#include "common.h" 33#include "common.h"
34#include "hsmmc.h"
33#include "omap4-sar-layout.h" 35#include "omap4-sar-layout.h"
34#include <linux/export.h> 36#include <linux/export.h>
35 37
@@ -207,3 +209,59 @@ static int __init omap4_sar_ram_init(void)
207 return 0; 209 return 0;
208} 210}
209early_initcall(omap4_sar_ram_init); 211early_initcall(omap4_sar_ram_init);
212
213#if defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
214static int omap4_twl6030_hsmmc_late_init(struct device *dev)
215{
216 int irq = 0;
217 struct platform_device *pdev = container_of(dev,
218 struct platform_device, dev);
219 struct omap_mmc_platform_data *pdata = dev->platform_data;
220
221 /* Setting MMC1 Card detect Irq */
222 if (pdev->id == 0) {
223 irq = twl6030_mmc_card_detect_config();
224 if (irq < 0) {
225 dev_err(dev, "%s: Error card detect config(%d)\n",
226 __func__, irq);
227 return irq;
228 }
229 pdata->slots[0].card_detect_irq = irq;
230 pdata->slots[0].card_detect = twl6030_mmc_card_detect;
231 }
232 return 0;
233}
234
235static __init void omap4_twl6030_hsmmc_set_late_init(struct device *dev)
236{
237 struct omap_mmc_platform_data *pdata;
238
239 /* dev can be null if CONFIG_MMC_OMAP_HS is not set */
240 if (!dev) {
241 pr_err("Failed %s\n", __func__);
242 return;
243 }
244 pdata = dev->platform_data;
245 pdata->init = omap4_twl6030_hsmmc_late_init;
246}
247
248int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
249{
250 struct omap2_hsmmc_info *c;
251
252 omap_hsmmc_init(controllers);
253 for (c = controllers; c->mmc; c++) {
254 /* pdev can be null if CONFIG_MMC_OMAP_HS is not set */
255 if (!c->pdev)
256 continue;
257 omap4_twl6030_hsmmc_set_late_init(&c->pdev->dev);
258 }
259
260 return 0;
261}
262#else
263int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
264{
265 return 0;
266}
267#endif
diff --git a/arch/arm/mach-spear6xx/Kconfig b/arch/arm/mach-spear6xx/Kconfig
index fbe298bd1d92..339f397dea70 100644
--- a/arch/arm/mach-spear6xx/Kconfig
+++ b/arch/arm/mach-spear6xx/Kconfig
@@ -2,21 +2,9 @@
2# SPEAr6XX Machine configuration file 2# SPEAr6XX Machine configuration file
3# 3#
4 4
5if ARCH_SPEAR6XX 5config MACH_SPEAR600
6 6 def_bool y
7menu "SPEAr6xx Implementations" 7 depends on ARCH_SPEAR6XX
8config BOARD_SPEAR600_DT
9 bool "SPEAr600 generic board configured via device-tree"
10 select MACH_SPEAR600
11 select USE_OF 8 select USE_OF
12 help 9 help
13 Supports ST SPEAr600 boards configured via the device-tree 10 Supports ST SPEAr600 boards configured via the device-tree
14
15endmenu
16
17config MACH_SPEAR600
18 bool "SPEAr600"
19 help
20 Supports ST SPEAr600 Machine
21
22endif #ARCH_SPEAR6XX
diff --git a/arch/arm/mach-tegra/tegra2_clocks.c b/arch/arm/mach-tegra/tegra2_clocks.c
index 592a4eeb5328..2cae5cbc20ba 100644
--- a/arch/arm/mach-tegra/tegra2_clocks.c
+++ b/arch/arm/mach-tegra/tegra2_clocks.c
@@ -1764,6 +1764,12 @@ static struct clk_pll_freq_table tegra_pll_x_freq_table[] = {
1764 { 19200000, 760000000, 950, 24, 1, 8}, 1764 { 19200000, 760000000, 950, 24, 1, 8},
1765 { 26000000, 760000000, 760, 26, 1, 12}, 1765 { 26000000, 760000000, 760, 26, 1, 12},
1766 1766
1767 /* 750 MHz */
1768 { 12000000, 750000000, 750, 12, 1, 12},
1769 { 13000000, 750000000, 750, 13, 1, 12},
1770 { 19200000, 750000000, 625, 16, 1, 8},
1771 { 26000000, 750000000, 750, 26, 1, 12},
1772
1767 /* 608 MHz */ 1773 /* 608 MHz */
1768 { 12000000, 608000000, 608, 12, 1, 12}, 1774 { 12000000, 608000000, 608, 12, 1, 12},
1769 { 13000000, 608000000, 608, 13, 1, 12}, 1775 { 13000000, 608000000, 608, 13, 1, 12},
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
index 60278f47c0bd..09b07d252892 100644
--- a/arch/arm/plat-omap/devices.c
+++ b/arch/arm/plat-omap/devices.c
@@ -167,8 +167,8 @@ void __init omap_dsp_reserve_sdram_memblock(void)
167 167
168 paddr = arm_memblock_steal(size, SZ_1M); 168 paddr = arm_memblock_steal(size, SZ_1M);
169 if (!paddr) { 169 if (!paddr) {
170 pr_err("%s: failed to reserve %x bytes\n", 170 pr_err("%s: failed to reserve %llx bytes\n",
171 __func__, size); 171 __func__, (unsigned long long)size);
172 return; 172 return;
173 } 173 }
174 174
diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h
index dc6a86bf2172..4bdf14ec6747 100644
--- a/arch/arm/plat-omap/include/plat/cpu.h
+++ b/arch/arm/plat-omap/include/plat/cpu.h
@@ -445,6 +445,7 @@ IS_OMAP_TYPE(3517, 0x3517)
445 445
446#define OMAP446X_CLASS 0x44600044 446#define OMAP446X_CLASS 0x44600044
447#define OMAP4460_REV_ES1_0 (OMAP446X_CLASS | (0x10 << 8)) 447#define OMAP4460_REV_ES1_0 (OMAP446X_CLASS | (0x10 << 8))
448#define OMAP4460_REV_ES1_1 (OMAP446X_CLASS | (0x11 << 8))
448 449
449#define OMAP447X_CLASS 0x44700044 450#define OMAP447X_CLASS 0x44700044
450#define OMAP4470_REV_ES1_0 (OMAP447X_CLASS | (0x10 << 8)) 451#define OMAP4470_REV_ES1_0 (OMAP447X_CLASS | (0x10 << 8))