aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2012-05-11 02:25:06 -0400
committerOlof Johansson <olof@lixom.net>2012-05-11 02:25:06 -0400
commit1b6c352149f13744b4fe4e5e5d04de0f939d1d42 (patch)
tree039e9cb77bacf5f090e2f73c85a8aaeef8f11005
parentb6d3597994786e3c254a012d8f76d77df789b0ae (diff)
parentb2f44dc29bfab77b10f3a709f14677f51ce3a4cd (diff)
Merge tag 'omap-fixes-non-critical-for-v3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/fixes
Omap fixes that were considered too intrusive or not critical for the -rc cycle By Artem Bityutskiy (1) and others via Tony Lindgren * tag 'omap-fixes-non-critical-for-v3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: ARM: OMAP: igep0020: Specify the VPLL2 regulator unconditionally ARM: OMAP2+: INTC: fix Kconfig option for TI81XX ARM: OMAP2+: remove incorrect irq_chip ack field ARM: OMAP4: Adding ID for OMAP4460 ES1.1 ARM: OMAP4: panda: add statics to remove warnings ARM: OMAP2+: Incorrect Register Offsets in OMAP Mailbox ARM: OMAP: fix trivial warnings for dspbridge ARM: OMAP4: hsmmc: check for null pointer ARM: OMAP1: fix compilation issue in board-sx1.c
-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.c57
-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/plat-omap/devices.c4
-rw-r--r--arch/arm/plat-omap/include/plat/cpu.h1
12 files changed, 85 insertions, 112 deletions
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 130ab00c09a2..6dc184841892 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 930c0d380435..8f67861405bc 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -540,7 +540,10 @@ static void __init igep_i2c_init(void)
540{ 540{
541 int ret; 541 int ret;
542 542
543 omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_USB, 0); 543 omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_USB,
544 TWL_COMMON_REGULATOR_VPLL2);
545 igep_twldata.vpll2->constraints.apply_uV = true;
546 igep_twldata.vpll2->constraints.name = "VDVI";
544 547
545 if (machine_is_igep0020()) { 548 if (machine_is_igep0020()) {
546 /* 549 /*
@@ -554,10 +557,7 @@ static void __init igep_i2c_init(void)
554 557
555 igep_twldata.keypad = &igep2_keypad_pdata; 558 igep_twldata.keypad = &igep2_keypad_pdata;
556 /* Get common pmic data */ 559 /* Get common pmic data */
557 omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_AUDIO, 560 omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_AUDIO, 0);
558 TWL_COMMON_REGULATOR_VPLL2);
559 igep_twldata.vpll2->constraints.apply_uV = true;
560 igep_twldata.vpll2->constraints.name = "VDVI";
561 } 561 }
562 562
563 omap3_pmic_init("twl4030", &igep_twldata); 563 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 1b782ba53433..d53b07345f0b 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -231,60 +231,11 @@ static struct platform_device omap_vwlan_device = {
231 }, 231 },
232}; 232};
233 233
234struct wl12xx_platform_data omap_panda_wlan_data __initdata = { 234static struct wl12xx_platform_data omap_panda_wlan_data __initdata = {
235 /* PANDA ref clock is 38.4 MHz */ 235 /* PANDA ref clock is 38.4 MHz */
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,
@@ -438,7 +389,7 @@ static struct panel_dvi_platform_data omap4_dvi_panel = {
438 .i2c_bus_num = 3, 389 .i2c_bus_num = 3,
439}; 390};
440 391
441struct omap_dss_device omap4_panda_dvi_device = { 392static struct omap_dss_device omap4_panda_dvi_device = {
442 .type = OMAP_DISPLAY_TYPE_DPI, 393 .type = OMAP_DISPLAY_TYPE_DPI,
443 .name = "dvi", 394 .name = "dvi",
444 .driver_name = "dvi", 395 .driver_name = "dvi",
@@ -448,7 +399,7 @@ struct omap_dss_device omap4_panda_dvi_device = {
448 .channel = OMAP_DSS_CHANNEL_LCD2, 399 .channel = OMAP_DSS_CHANNEL_LCD2,
449}; 400};
450 401
451int __init omap4_panda_dvi_init(void) 402static int __init omap4_panda_dvi_init(void)
452{ 403{
453 int r; 404 int r;
454 405
@@ -509,7 +460,7 @@ static struct omap_dss_board_info omap4_panda_dss_data = {
509 .default_device = &omap4_panda_dvi_device, 460 .default_device = &omap4_panda_dvi_device,
510}; 461};
511 462
512void __init omap4_panda_display_init(void) 463static void __init omap4_panda_display_init(void)
513{ 464{
514 int r; 465 int r;
515 466
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 57da7f406e28..c09ca63b8ac8 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
@@ -254,6 +255,8 @@ static inline u32 omap4_mpuss_read_prev_context_state(void)
254struct omap_sdrc_params; 255struct omap_sdrc_params;
255extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, 256extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
256 struct omap_sdrc_params *sdrc_cs1); 257 struct omap_sdrc_params *sdrc_cs1);
258struct omap2_hsmmc_info;
259extern int omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers);
257 260
258#endif /* __ASSEMBLER__ */ 261#endif /* __ASSEMBLER__ */
259#endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ 262#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 65f0d2571c9a..7f47e3f65150 100644
--- a/arch/arm/mach-omap2/irq.c
+++ b/arch/arm/mach-omap2/irq.c
@@ -149,7 +149,6 @@ omap_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num)
149 ct->chip.irq_mask = irq_gc_mask_disable_reg; 149 ct->chip.irq_mask = irq_gc_mask_disable_reg;
150 ct->chip.irq_unmask = irq_gc_unmask_enable_reg; 150 ct->chip.irq_unmask = irq_gc_unmask_enable_reg;
151 151
152 ct->regs.ack = INTC_CONTROL;
153 ct->regs.enable = INTC_MIR_CLEAR0; 152 ct->regs.enable = INTC_MIR_CLEAR0;
154 ct->regs.disable = INTC_MIR_SET0; 153 ct->regs.disable = INTC_MIR_SET0;
155 irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE, 154 irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE,
@@ -231,7 +230,7 @@ static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs
231 goto out; 230 goto out;
232 231
233 irqnr = readl_relaxed(base_addr + 0xd8); 232 irqnr = readl_relaxed(base_addr + 0xd8);
234#ifdef CONFIG_SOC_OMAPTI816X 233#ifdef CONFIG_SOC_OMAPTI81XX
235 if (irqnr) 234 if (irqnr)
236 goto out; 235 goto out;
237 irqnr = readl_relaxed(base_addr + 0xf8); 236 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/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))