diff options
Diffstat (limited to 'arch')
30 files changed, 187 insertions, 113 deletions
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index 8538e4131d27..fc178a022dd2 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/mtd/mtd.h> | 19 | #include <linux/mtd/mtd.h> |
20 | #include <linux/mtd/partitions.h> | 20 | #include <linux/mtd/partitions.h> |
21 | #include <linux/mtd/physmap.h> | 21 | #include <linux/mtd/physmap.h> |
22 | #include <linux/mmc/host.h> | ||
22 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
23 | #include <linux/i2c/twl.h> | 24 | #include <linux/i2c/twl.h> |
24 | #include <linux/err.h> | 25 | #include <linux/err.h> |
@@ -190,7 +191,7 @@ static int __init omap2430_i2c_init(void) | |||
190 | static struct omap2_hsmmc_info mmc[] __initdata = { | 191 | static struct omap2_hsmmc_info mmc[] __initdata = { |
191 | { | 192 | { |
192 | .mmc = 1, | 193 | .mmc = 1, |
193 | .wires = 4, | 194 | .caps = MMC_CAP_4_BIT_DATA, |
194 | .gpio_cd = -EINVAL, | 195 | .gpio_cd = -EINVAL, |
195 | .gpio_wp = -EINVAL, | 196 | .gpio_wp = -EINVAL, |
196 | .ext_clock = 1, | 197 | .ext_clock = 1, |
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index 67b95b5f1a2f..3eb9839e33ed 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/regulator/machine.h> | 24 | #include <linux/regulator/machine.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | #include <linux/gpio.h> | 26 | #include <linux/gpio.h> |
27 | #include <linux/mmc/host.h> | ||
27 | 28 | ||
28 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
29 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
@@ -353,12 +354,12 @@ static struct omap2_hsmmc_info mmc[] = { | |||
353 | /* 8 bits (default) requires S6.3 == ON, | 354 | /* 8 bits (default) requires S6.3 == ON, |
354 | * so the SIM card isn't used; else 4 bits. | 355 | * so the SIM card isn't used; else 4 bits. |
355 | */ | 356 | */ |
356 | .wires = 8, | 357 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
357 | .gpio_wp = 4, | 358 | .gpio_wp = 4, |
358 | }, | 359 | }, |
359 | { | 360 | { |
360 | .mmc = 2, | 361 | .mmc = 2, |
361 | .wires = 8, | 362 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
362 | .gpio_wp = 7, | 363 | .gpio_wp = 7, |
363 | }, | 364 | }, |
364 | {} /* Terminator */ | 365 | {} /* Terminator */ |
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 9447644774c2..e379bef1ef40 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -193,12 +193,12 @@ static struct omap_musb_board_data musb_board_data = { | |||
193 | static struct omap2_hsmmc_info mmc[] = { | 193 | static struct omap2_hsmmc_info mmc[] = { |
194 | { | 194 | { |
195 | .mmc = 1, | 195 | .mmc = 1, |
196 | .wires = 8, | 196 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
197 | .gpio_wp = -EINVAL, | 197 | .gpio_wp = -EINVAL, |
198 | }, | 198 | }, |
199 | { | 199 | { |
200 | .mmc = 2, | 200 | .mmc = 2, |
201 | .wires = 8, | 201 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
202 | .gpio_cd = -EINVAL, | 202 | .gpio_cd = -EINVAL, |
203 | .gpio_wp = -EINVAL, | 203 | .gpio_wp = -EINVAL, |
204 | .nonremovable = true, | 204 | .nonremovable = true, |
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index e10bc109415c..b72009a50f01 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/i2c/at24.h> | 31 | #include <linux/i2c/at24.h> |
32 | #include <linux/i2c/twl.h> | 32 | #include <linux/i2c/twl.h> |
33 | #include <linux/regulator/machine.h> | 33 | #include <linux/regulator/machine.h> |
34 | #include <linux/mmc/host.h> | ||
34 | 35 | ||
35 | #include <linux/spi/spi.h> | 36 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/tdo24m.h> | 37 | #include <linux/spi/tdo24m.h> |
@@ -579,14 +580,14 @@ static struct twl4030_keypad_data cm_t35_kp_data = { | |||
579 | static struct omap2_hsmmc_info mmc[] = { | 580 | static struct omap2_hsmmc_info mmc[] = { |
580 | { | 581 | { |
581 | .mmc = 1, | 582 | .mmc = 1, |
582 | .wires = 4, | 583 | .caps = MMC_CAP_4_BIT_DATA, |
583 | .gpio_cd = -EINVAL, | 584 | .gpio_cd = -EINVAL, |
584 | .gpio_wp = -EINVAL, | 585 | .gpio_wp = -EINVAL, |
585 | 586 | ||
586 | }, | 587 | }, |
587 | { | 588 | { |
588 | .mmc = 2, | 589 | .mmc = 2, |
589 | .wires = 4, | 590 | .caps = MMC_CAP_4_BIT_DATA, |
590 | .transceiver = 1, | 591 | .transceiver = 1, |
591 | .gpio_cd = -EINVAL, | 592 | .gpio_cd = -EINVAL, |
592 | .gpio_wp = -EINVAL, | 593 | .gpio_wp = -EINVAL, |
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index a07086d6a0b2..de5e2c2f4e80 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/mtd/mtd.h> | 28 | #include <linux/mtd/mtd.h> |
29 | #include <linux/mtd/partitions.h> | 29 | #include <linux/mtd/partitions.h> |
30 | #include <linux/mtd/nand.h> | 30 | #include <linux/mtd/nand.h> |
31 | #include <linux/mmc/host.h> | ||
31 | 32 | ||
32 | #include <linux/regulator/machine.h> | 33 | #include <linux/regulator/machine.h> |
33 | #include <linux/i2c/twl.h> | 34 | #include <linux/i2c/twl.h> |
@@ -105,7 +106,7 @@ static struct omap_nand_platform_data devkit8000_nand_data = { | |||
105 | static struct omap2_hsmmc_info mmc[] = { | 106 | static struct omap2_hsmmc_info mmc[] = { |
106 | { | 107 | { |
107 | .mmc = 1, | 108 | .mmc = 1, |
108 | .wires = 8, | 109 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
109 | .gpio_wp = 29, | 110 | .gpio_wp = 29, |
110 | }, | 111 | }, |
111 | {} /* Terminator */ | 112 | {} /* Terminator */ |
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 175f04339761..f3f028056916 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include <linux/regulator/machine.h> | 21 | #include <linux/regulator/machine.h> |
22 | #include <linux/i2c/twl.h> | 22 | #include <linux/i2c/twl.h> |
23 | #include <linux/mmc/host.h> | ||
23 | 24 | ||
24 | #include <asm/mach-types.h> | 25 | #include <asm/mach-types.h> |
25 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
@@ -248,13 +249,13 @@ static struct regulator_init_data igep2_vmmc2 = { | |||
248 | static struct omap2_hsmmc_info mmc[] = { | 249 | static struct omap2_hsmmc_info mmc[] = { |
249 | { | 250 | { |
250 | .mmc = 1, | 251 | .mmc = 1, |
251 | .wires = 4, | 252 | .caps = MMC_CAP_4_BIT_DATA, |
252 | .gpio_cd = -EINVAL, | 253 | .gpio_cd = -EINVAL, |
253 | .gpio_wp = -EINVAL, | 254 | .gpio_wp = -EINVAL, |
254 | }, | 255 | }, |
255 | { | 256 | { |
256 | .mmc = 2, | 257 | .mmc = 2, |
257 | .wires = 4, | 258 | .caps = MMC_CAP_4_BIT_DATA, |
258 | .gpio_cd = -EINVAL, | 259 | .gpio_cd = -EINVAL, |
259 | .gpio_wp = -EINVAL, | 260 | .gpio_wp = -EINVAL, |
260 | }, | 261 | }, |
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index 00d9b13b01c5..58698e359ccf 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/i2c/twl.h> | 27 | #include <linux/i2c/twl.h> |
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | #include <linux/smsc911x.h> | 29 | #include <linux/smsc911x.h> |
30 | #include <linux/mmc/host.h> | ||
30 | 31 | ||
31 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
32 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
@@ -362,7 +363,7 @@ static int __init omap_i2c_init(void) | |||
362 | static struct omap2_hsmmc_info mmc[] __initdata = { | 363 | static struct omap2_hsmmc_info mmc[] __initdata = { |
363 | { | 364 | { |
364 | .mmc = 1, | 365 | .mmc = 1, |
365 | .wires = 4, | 366 | .caps = MMC_CAP_4_BIT_DATA, |
366 | .gpio_cd = -EINVAL, | 367 | .gpio_cd = -EINVAL, |
367 | .gpio_wp = -EINVAL, | 368 | .gpio_wp = -EINVAL, |
368 | }, | 369 | }, |
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index a3e2b49aa39f..7a93bd5b24c5 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/i2c.h> | 20 | #include <linux/i2c.h> |
21 | #include <linux/spi/spi.h> | 21 | #include <linux/spi/spi.h> |
22 | #include <linux/usb/musb.h> | 22 | #include <linux/usb/musb.h> |
23 | #include <sound/tlv320aic3x.h> | ||
23 | 24 | ||
24 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
25 | #include <asm/mach-types.h> | 26 | #include <asm/mach-types.h> |
@@ -487,7 +488,7 @@ static struct omap_mmc_platform_data mmc1_data = { | |||
487 | .max_freq = 24000000, | 488 | .max_freq = 24000000, |
488 | .dma_mask = 0xffffffff, | 489 | .dma_mask = 0xffffffff, |
489 | .slots[0] = { | 490 | .slots[0] = { |
490 | .wires = 4, | 491 | .caps = MMC_CAP_4_BIT_DATA, |
491 | .set_power = n8x0_mmc_set_power, | 492 | .set_power = n8x0_mmc_set_power, |
492 | .set_bus_mode = n8x0_mmc_set_bus_mode, | 493 | .set_bus_mode = n8x0_mmc_set_bus_mode, |
493 | .get_cover_state = n8x0_mmc_get_cover_state, | 494 | .get_cover_state = n8x0_mmc_get_cover_state, |
@@ -614,29 +615,35 @@ static int n8x0_menelaus_late_init(struct device *dev) | |||
614 | return 0; | 615 | return 0; |
615 | } | 616 | } |
616 | 617 | ||
617 | static struct i2c_board_info __initdata n8x0_i2c_board_info_1[] = { | 618 | #else |
619 | static int n8x0_menelaus_late_init(struct device *dev) | ||
620 | { | ||
621 | return 0; | ||
622 | } | ||
623 | #endif | ||
624 | |||
625 | static struct menelaus_platform_data n8x0_menelaus_platform_data __initdata = { | ||
626 | .late_init = n8x0_menelaus_late_init, | ||
627 | }; | ||
628 | |||
629 | static struct i2c_board_info __initdata n8x0_i2c_board_info_1[] __initdata = { | ||
618 | { | 630 | { |
619 | I2C_BOARD_INFO("menelaus", 0x72), | 631 | I2C_BOARD_INFO("menelaus", 0x72), |
620 | .irq = INT_24XX_SYS_NIRQ, | 632 | .irq = INT_24XX_SYS_NIRQ, |
633 | .platform_data = &n8x0_menelaus_platform_data, | ||
621 | }, | 634 | }, |
622 | }; | 635 | }; |
623 | 636 | ||
624 | static struct menelaus_platform_data n8x0_menelaus_platform_data = { | 637 | static struct aic3x_pdata n810_aic33_data __initdata = { |
625 | .late_init = n8x0_menelaus_late_init, | 638 | .gpio_reset = 118, |
626 | }; | 639 | }; |
627 | 640 | ||
628 | static void __init n8x0_menelaus_init(void) | 641 | static struct i2c_board_info n810_i2c_board_info_2[] __initdata = { |
629 | { | 642 | { |
630 | n8x0_i2c_board_info_1[0].platform_data = &n8x0_menelaus_platform_data; | 643 | I2C_BOARD_INFO("tlv320aic3x", 0x18), |
631 | omap_register_i2c_bus(1, 400, n8x0_i2c_board_info_1, | 644 | .platform_data = &n810_aic33_data, |
632 | ARRAY_SIZE(n8x0_i2c_board_info_1)); | 645 | }, |
633 | } | 646 | }; |
634 | |||
635 | #else | ||
636 | static inline void __init n8x0_menelaus_init(void) | ||
637 | { | ||
638 | } | ||
639 | #endif | ||
640 | 647 | ||
641 | static void __init n8x0_map_io(void) | 648 | static void __init n8x0_map_io(void) |
642 | { | 649 | { |
@@ -653,6 +660,11 @@ static void __init n8x0_init_irq(void) | |||
653 | 660 | ||
654 | #ifdef CONFIG_OMAP_MUX | 661 | #ifdef CONFIG_OMAP_MUX |
655 | static struct omap_board_mux board_mux[] __initdata = { | 662 | static struct omap_board_mux board_mux[] __initdata = { |
663 | /* I2S codec port pins for McBSP block */ | ||
664 | OMAP2420_MUX(EAC_AC_SCLK, OMAP_MUX_MODE1 | OMAP_PIN_INPUT), | ||
665 | OMAP2420_MUX(EAC_AC_FS, OMAP_MUX_MODE1 | OMAP_PIN_INPUT), | ||
666 | OMAP2420_MUX(EAC_AC_DIN, OMAP_MUX_MODE1 | OMAP_PIN_INPUT), | ||
667 | OMAP2420_MUX(EAC_AC_DOUT, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT), | ||
656 | { .reg_offset = OMAP_MUX_TERMINATOR }, | 668 | { .reg_offset = OMAP_MUX_TERMINATOR }, |
657 | }; | 669 | }; |
658 | #else | 670 | #else |
@@ -665,9 +677,14 @@ static void __init n8x0_init_machine(void) | |||
665 | /* FIXME: add n810 spi devices */ | 677 | /* FIXME: add n810 spi devices */ |
666 | spi_register_board_info(n800_spi_board_info, | 678 | spi_register_board_info(n800_spi_board_info, |
667 | ARRAY_SIZE(n800_spi_board_info)); | 679 | ARRAY_SIZE(n800_spi_board_info)); |
680 | omap_register_i2c_bus(1, 400, n8x0_i2c_board_info_1, | ||
681 | ARRAY_SIZE(n8x0_i2c_board_info_1)); | ||
682 | omap_register_i2c_bus(2, 400, NULL, 0); | ||
683 | if (machine_is_nokia_n810()) | ||
684 | i2c_register_board_info(2, n810_i2c_board_info_2, | ||
685 | ARRAY_SIZE(n810_i2c_board_info_2)); | ||
668 | 686 | ||
669 | omap_serial_init(); | 687 | omap_serial_init(); |
670 | n8x0_menelaus_init(); | ||
671 | n8x0_onenand_init(); | 688 | n8x0_onenand_init(); |
672 | n8x0_mmc_init(); | 689 | n8x0_mmc_init(); |
673 | n8x0_usb_init(); | 690 | n8x0_usb_init(); |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 87969c7df652..51493f59325d 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/mtd/mtd.h> | 27 | #include <linux/mtd/mtd.h> |
28 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
29 | #include <linux/mtd/nand.h> | 29 | #include <linux/mtd/nand.h> |
30 | #include <linux/mmc/host.h> | ||
30 | 31 | ||
31 | #include <linux/regulator/machine.h> | 32 | #include <linux/regulator/machine.h> |
32 | #include <linux/i2c/twl.h> | 33 | #include <linux/i2c/twl.h> |
@@ -166,7 +167,7 @@ static void __init beagle_display_init(void) | |||
166 | static struct omap2_hsmmc_info mmc[] = { | 167 | static struct omap2_hsmmc_info mmc[] = { |
167 | { | 168 | { |
168 | .mmc = 1, | 169 | .mmc = 1, |
169 | .wires = 8, | 170 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
170 | .gpio_wp = 29, | 171 | .gpio_wp = 29, |
171 | }, | 172 | }, |
172 | {} /* Terminator */ | 173 | {} /* Terminator */ |
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index f76d9c0a47a1..523ba551ee7b 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/smsc911x.h> | 31 | #include <linux/smsc911x.h> |
32 | 32 | ||
33 | #include <linux/regulator/machine.h> | 33 | #include <linux/regulator/machine.h> |
34 | #include <linux/mmc/host.h> | ||
34 | 35 | ||
35 | #include <mach/hardware.h> | 36 | #include <mach/hardware.h> |
36 | #include <asm/mach-types.h> | 37 | #include <asm/mach-types.h> |
@@ -370,7 +371,7 @@ static struct regulator_init_data omap3evm_vsim = { | |||
370 | static struct omap2_hsmmc_info mmc[] = { | 371 | static struct omap2_hsmmc_info mmc[] = { |
371 | { | 372 | { |
372 | .mmc = 1, | 373 | .mmc = 1, |
373 | .wires = 4, | 374 | .caps = MMC_CAP_4_BIT_DATA, |
374 | .gpio_cd = -EINVAL, | 375 | .gpio_cd = -EINVAL, |
375 | .gpio_wp = 63, | 376 | .gpio_wp = 63, |
376 | }, | 377 | }, |
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index dd3af2be13be..2d2e6fc127ac 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/input.h> | 32 | #include <linux/input.h> |
33 | #include <linux/input/matrix_keypad.h> | 33 | #include <linux/input/matrix_keypad.h> |
34 | #include <linux/gpio_keys.h> | 34 | #include <linux/gpio_keys.h> |
35 | #include <linux/mmc/host.h> | ||
35 | #include <linux/mmc/card.h> | 36 | #include <linux/mmc/card.h> |
36 | 37 | ||
37 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
@@ -276,14 +277,14 @@ static void pandora_wl1251_init_card(struct mmc_card *card) | |||
276 | static struct omap2_hsmmc_info omap3pandora_mmc[] = { | 277 | static struct omap2_hsmmc_info omap3pandora_mmc[] = { |
277 | { | 278 | { |
278 | .mmc = 1, | 279 | .mmc = 1, |
279 | .wires = 4, | 280 | .caps = MMC_CAP_4_BIT_DATA, |
280 | .gpio_cd = -EINVAL, | 281 | .gpio_cd = -EINVAL, |
281 | .gpio_wp = 126, | 282 | .gpio_wp = 126, |
282 | .ext_clock = 0, | 283 | .ext_clock = 0, |
283 | }, | 284 | }, |
284 | { | 285 | { |
285 | .mmc = 2, | 286 | .mmc = 2, |
286 | .wires = 4, | 287 | .caps = MMC_CAP_4_BIT_DATA, |
287 | .gpio_cd = -EINVAL, | 288 | .gpio_cd = -EINVAL, |
288 | .gpio_wp = 127, | 289 | .gpio_wp = 127, |
289 | .ext_clock = 1, | 290 | .ext_clock = 1, |
@@ -291,7 +292,7 @@ static struct omap2_hsmmc_info omap3pandora_mmc[] = { | |||
291 | }, | 292 | }, |
292 | { | 293 | { |
293 | .mmc = 3, | 294 | .mmc = 3, |
294 | .wires = 4, | 295 | .caps = MMC_CAP_4_BIT_DATA, |
295 | .gpio_cd = -EINVAL, | 296 | .gpio_cd = -EINVAL, |
296 | .gpio_wp = -EINVAL, | 297 | .gpio_wp = -EINVAL, |
297 | .init_card = pandora_wl1251_init_card, | 298 | .init_card = pandora_wl1251_init_card, |
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c index bcd01d278c65..c1b881d3d8ae 100644 --- a/arch/arm/mach-omap2/board-omap3stalker.c +++ b/arch/arm/mach-omap2/board-omap3stalker.c | |||
@@ -26,6 +26,7 @@ | |||
26 | 26 | ||
27 | #include <linux/regulator/machine.h> | 27 | #include <linux/regulator/machine.h> |
28 | #include <linux/i2c/twl.h> | 28 | #include <linux/i2c/twl.h> |
29 | #include <linux/mmc/host.h> | ||
29 | 30 | ||
30 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
31 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
@@ -275,7 +276,7 @@ static struct regulator_init_data omap3stalker_vsim = { | |||
275 | static struct omap2_hsmmc_info mmc[] = { | 276 | static struct omap2_hsmmc_info mmc[] = { |
276 | { | 277 | { |
277 | .mmc = 1, | 278 | .mmc = 1, |
278 | .wires = 4, | 279 | .caps = MMC_CAP_4_BIT_DATA, |
279 | .gpio_cd = -EINVAL, | 280 | .gpio_cd = -EINVAL, |
280 | .gpio_wp = 23, | 281 | .gpio_wp = 23, |
281 | }, | 282 | }, |
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c index 663c62d271e8..9ab18fdd974c 100644 --- a/arch/arm/mach-omap2/board-omap3touchbook.c +++ b/arch/arm/mach-omap2/board-omap3touchbook.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/mtd/mtd.h> | 27 | #include <linux/mtd/mtd.h> |
28 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
29 | #include <linux/mtd/nand.h> | 29 | #include <linux/mtd/nand.h> |
30 | #include <linux/mmc/host.h> | ||
30 | 31 | ||
31 | #include <plat/mcspi.h> | 32 | #include <plat/mcspi.h> |
32 | #include <linux/spi/spi.h> | 33 | #include <linux/spi/spi.h> |
@@ -108,7 +109,7 @@ static struct omap_nand_platform_data omap3touchbook_nand_data = { | |||
108 | static struct omap2_hsmmc_info mmc[] = { | 109 | static struct omap2_hsmmc_info mmc[] = { |
109 | { | 110 | { |
110 | .mmc = 1, | 111 | .mmc = 1, |
111 | .wires = 8, | 112 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
112 | .gpio_wp = 29, | 113 | .gpio_wp = 29, |
113 | }, | 114 | }, |
114 | {} /* Terminator */ | 115 | {} /* Terminator */ |
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index c03d1d56db56..0bb2353b64a4 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c | |||
@@ -56,7 +56,7 @@ static struct omap_musb_board_data musb_board_data = { | |||
56 | static struct omap2_hsmmc_info mmc[] = { | 56 | static struct omap2_hsmmc_info mmc[] = { |
57 | { | 57 | { |
58 | .mmc = 1, | 58 | .mmc = 1, |
59 | .wires = 8, | 59 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
60 | .gpio_wp = -EINVAL, | 60 | .gpio_wp = -EINVAL, |
61 | }, | 61 | }, |
62 | {} /* Terminator */ | 62 | {} /* Terminator */ |
@@ -274,8 +274,6 @@ static int __init omap4_panda_i2c_init(void) | |||
274 | } | 274 | } |
275 | static void __init omap4_panda_init(void) | 275 | static void __init omap4_panda_init(void) |
276 | { | 276 | { |
277 | int status; | ||
278 | |||
279 | omap4_panda_i2c_init(); | 277 | omap4_panda_i2c_init(); |
280 | omap_serial_init(); | 278 | omap_serial_init(); |
281 | omap4_twl6030_hsmmc_init(mmc); | 279 | omap4_twl6030_hsmmc_init(mmc); |
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index 4c4843618350..93441e5b36ef 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/mtd/mtd.h> | 32 | #include <linux/mtd/mtd.h> |
33 | #include <linux/mtd/nand.h> | 33 | #include <linux/mtd/nand.h> |
34 | #include <linux/mtd/partitions.h> | 34 | #include <linux/mtd/partitions.h> |
35 | #include <linux/mmc/host.h> | ||
35 | 36 | ||
36 | #include <asm/mach-types.h> | 37 | #include <asm/mach-types.h> |
37 | #include <asm/mach/arch.h> | 38 | #include <asm/mach/arch.h> |
@@ -303,13 +304,13 @@ static void __init overo_flash_init(void) | |||
303 | static struct omap2_hsmmc_info mmc[] = { | 304 | static struct omap2_hsmmc_info mmc[] = { |
304 | { | 305 | { |
305 | .mmc = 1, | 306 | .mmc = 1, |
306 | .wires = 4, | 307 | .caps = MMC_CAP_4_BIT_DATA, |
307 | .gpio_cd = -EINVAL, | 308 | .gpio_cd = -EINVAL, |
308 | .gpio_wp = -EINVAL, | 309 | .gpio_wp = -EINVAL, |
309 | }, | 310 | }, |
310 | { | 311 | { |
311 | .mmc = 2, | 312 | .mmc = 2, |
312 | .wires = 4, | 313 | .caps = MMC_CAP_4_BIT_DATA, |
313 | .gpio_cd = -EINVAL, | 314 | .gpio_cd = -EINVAL, |
314 | .gpio_wp = -EINVAL, | 315 | .gpio_wp = -EINVAL, |
315 | .transceiver = true, | 316 | .transceiver = true, |
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index 9a5eb87425fc..a3dbaa7b8632 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -302,7 +302,7 @@ static struct omap2_hsmmc_info mmc[] __initdata = { | |||
302 | { | 302 | { |
303 | .name = "external", | 303 | .name = "external", |
304 | .mmc = 1, | 304 | .mmc = 1, |
305 | .wires = 4, | 305 | .caps = MMC_CAP_4_BIT_DATA, |
306 | .cover_only = true, | 306 | .cover_only = true, |
307 | .gpio_cd = 160, | 307 | .gpio_cd = 160, |
308 | .gpio_wp = -EINVAL, | 308 | .gpio_wp = -EINVAL, |
@@ -311,7 +311,8 @@ static struct omap2_hsmmc_info mmc[] __initdata = { | |||
311 | { | 311 | { |
312 | .name = "internal", | 312 | .name = "internal", |
313 | .mmc = 2, | 313 | .mmc = 2, |
314 | .wires = 8, /* See also rx51_mmc2_remux */ | 314 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
315 | /* See also rx51_mmc2_remux */ | ||
315 | .gpio_cd = -EINVAL, | 316 | .gpio_cd = -EINVAL, |
316 | .gpio_wp = -EINVAL, | 317 | .gpio_wp = -EINVAL, |
317 | .nonremovable = true, | 318 | .nonremovable = true, |
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c index 6b3984964cc5..e5eac46bbac9 100644 --- a/arch/arm/mach-omap2/board-zoom-peripherals.c +++ b/arch/arm/mach-omap2/board-zoom-peripherals.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/gpio.h> | 16 | #include <linux/gpio.h> |
17 | #include <linux/i2c/twl.h> | 17 | #include <linux/i2c/twl.h> |
18 | #include <linux/regulator/machine.h> | 18 | #include <linux/regulator/machine.h> |
19 | #include <linux/mmc/host.h> | ||
19 | 20 | ||
20 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
21 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
@@ -155,14 +156,14 @@ static struct omap2_hsmmc_info mmc[] __initdata = { | |||
155 | { | 156 | { |
156 | .name = "external", | 157 | .name = "external", |
157 | .mmc = 1, | 158 | .mmc = 1, |
158 | .wires = 4, | 159 | .caps = MMC_CAP_4_BIT_DATA, |
159 | .gpio_wp = -EINVAL, | 160 | .gpio_wp = -EINVAL, |
160 | .power_saving = true, | 161 | .power_saving = true, |
161 | }, | 162 | }, |
162 | { | 163 | { |
163 | .name = "internal", | 164 | .name = "internal", |
164 | .mmc = 2, | 165 | .mmc = 2, |
165 | .wires = 8, | 166 | .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
166 | .gpio_cd = -EINVAL, | 167 | .gpio_cd = -EINVAL, |
167 | .gpio_wp = -EINVAL, | 168 | .gpio_wp = -EINVAL, |
168 | .nonremovable = true, | 169 | .nonremovable = true, |
diff --git a/arch/arm/mach-omap2/clock2420_data.c b/arch/arm/mach-omap2/clock2420_data.c index 37d65d62ed8f..5f2066a6ba74 100644 --- a/arch/arm/mach-omap2/clock2420_data.c +++ b/arch/arm/mach-omap2/clock2420_data.c | |||
@@ -1838,7 +1838,7 @@ static struct omap_clk omap2420_clks[] = { | |||
1838 | CLK(NULL, "des_ick", &des_ick, CK_242X), | 1838 | CLK(NULL, "des_ick", &des_ick, CK_242X), |
1839 | CLK("omap-sham", "ick", &sha_ick, CK_242X), | 1839 | CLK("omap-sham", "ick", &sha_ick, CK_242X), |
1840 | CLK("omap_rng", "ick", &rng_ick, CK_242X), | 1840 | CLK("omap_rng", "ick", &rng_ick, CK_242X), |
1841 | CLK(NULL, "aes_ick", &aes_ick, CK_242X), | 1841 | CLK("omap-aes", "ick", &aes_ick, CK_242X), |
1842 | CLK(NULL, "pka_ick", &pka_ick, CK_242X), | 1842 | CLK(NULL, "pka_ick", &pka_ick, CK_242X), |
1843 | CLK(NULL, "usb_fck", &usb_fck, CK_242X), | 1843 | CLK(NULL, "usb_fck", &usb_fck, CK_242X), |
1844 | CLK("musb_hdrc", "fck", &osc_ck, CK_242X), | 1844 | CLK("musb_hdrc", "fck", &osc_ck, CK_242X), |
diff --git a/arch/arm/mach-omap2/clock2430_data.c b/arch/arm/mach-omap2/clock2430_data.c index b33118fb6a87..701a1716019e 100644 --- a/arch/arm/mach-omap2/clock2430_data.c +++ b/arch/arm/mach-omap2/clock2430_data.c | |||
@@ -1926,7 +1926,7 @@ static struct omap_clk omap2430_clks[] = { | |||
1926 | CLK(NULL, "des_ick", &des_ick, CK_243X), | 1926 | CLK(NULL, "des_ick", &des_ick, CK_243X), |
1927 | CLK("omap-sham", "ick", &sha_ick, CK_243X), | 1927 | CLK("omap-sham", "ick", &sha_ick, CK_243X), |
1928 | CLK("omap_rng", "ick", &rng_ick, CK_243X), | 1928 | CLK("omap_rng", "ick", &rng_ick, CK_243X), |
1929 | CLK(NULL, "aes_ick", &aes_ick, CK_243X), | 1929 | CLK("omap-aes", "ick", &aes_ick, CK_243X), |
1930 | CLK(NULL, "pka_ick", &pka_ick, CK_243X), | 1930 | CLK(NULL, "pka_ick", &pka_ick, CK_243X), |
1931 | CLK(NULL, "usb_fck", &usb_fck, CK_243X), | 1931 | CLK(NULL, "usb_fck", &usb_fck, CK_243X), |
1932 | CLK("musb_hdrc", "ick", &usbhs_ick, CK_243X), | 1932 | CLK("musb_hdrc", "ick", &usbhs_ick, CK_243X), |
diff --git a/arch/arm/mach-omap2/clock3xxx_data.c b/arch/arm/mach-omap2/clock3xxx_data.c index dfdce2d82779..c73906d17458 100644 --- a/arch/arm/mach-omap2/clock3xxx_data.c +++ b/arch/arm/mach-omap2/clock3xxx_data.c | |||
@@ -3288,7 +3288,7 @@ static struct omap_clk omap3xxx_clks[] = { | |||
3288 | CLK(NULL, "usbtll_ick", &usbtll_ick, CK_3430ES2 | CK_AM35XX), | 3288 | CLK(NULL, "usbtll_ick", &usbtll_ick, CK_3430ES2 | CK_AM35XX), |
3289 | CLK("mmci-omap-hs.2", "ick", &mmchs3_ick, CK_3430ES2 | CK_AM35XX), | 3289 | CLK("mmci-omap-hs.2", "ick", &mmchs3_ick, CK_3430ES2 | CK_AM35XX), |
3290 | CLK(NULL, "icr_ick", &icr_ick, CK_343X), | 3290 | CLK(NULL, "icr_ick", &icr_ick, CK_343X), |
3291 | CLK(NULL, "aes2_ick", &aes2_ick, CK_343X), | 3291 | CLK("omap-aes", "ick", &aes2_ick, CK_343X), |
3292 | CLK("omap-sham", "ick", &sha12_ick, CK_343X), | 3292 | CLK("omap-sham", "ick", &sha12_ick, CK_343X), |
3293 | CLK(NULL, "des2_ick", &des2_ick, CK_343X), | 3293 | CLK(NULL, "des2_ick", &des2_ick, CK_343X), |
3294 | CLK("mmci-omap-hs.1", "ick", &mmchs2_ick, CK_3XXX), | 3294 | CLK("mmci-omap-hs.1", "ick", &mmchs2_ick, CK_3XXX), |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 2dbb265bedd4..9e5d51bee94a 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -498,6 +498,76 @@ static void omap_init_sham(void) | |||
498 | static inline void omap_init_sham(void) { } | 498 | static inline void omap_init_sham(void) { } |
499 | #endif | 499 | #endif |
500 | 500 | ||
501 | #if defined(CONFIG_CRYPTO_DEV_OMAP_AES) || defined(CONFIG_CRYPTO_DEV_OMAP_AES_MODULE) | ||
502 | |||
503 | #ifdef CONFIG_ARCH_OMAP2 | ||
504 | static struct resource omap2_aes_resources[] = { | ||
505 | { | ||
506 | .start = OMAP24XX_SEC_AES_BASE, | ||
507 | .end = OMAP24XX_SEC_AES_BASE + 0x4C, | ||
508 | .flags = IORESOURCE_MEM, | ||
509 | }, | ||
510 | { | ||
511 | .start = OMAP24XX_DMA_AES_TX, | ||
512 | .flags = IORESOURCE_DMA, | ||
513 | }, | ||
514 | { | ||
515 | .start = OMAP24XX_DMA_AES_RX, | ||
516 | .flags = IORESOURCE_DMA, | ||
517 | } | ||
518 | }; | ||
519 | static int omap2_aes_resources_sz = ARRAY_SIZE(omap2_aes_resources); | ||
520 | #else | ||
521 | #define omap2_aes_resources NULL | ||
522 | #define omap2_aes_resources_sz 0 | ||
523 | #endif | ||
524 | |||
525 | #ifdef CONFIG_ARCH_OMAP3 | ||
526 | static struct resource omap3_aes_resources[] = { | ||
527 | { | ||
528 | .start = OMAP34XX_SEC_AES_BASE, | ||
529 | .end = OMAP34XX_SEC_AES_BASE + 0x4C, | ||
530 | .flags = IORESOURCE_MEM, | ||
531 | }, | ||
532 | { | ||
533 | .start = OMAP34XX_DMA_AES2_TX, | ||
534 | .flags = IORESOURCE_DMA, | ||
535 | }, | ||
536 | { | ||
537 | .start = OMAP34XX_DMA_AES2_RX, | ||
538 | .flags = IORESOURCE_DMA, | ||
539 | } | ||
540 | }; | ||
541 | static int omap3_aes_resources_sz = ARRAY_SIZE(omap3_aes_resources); | ||
542 | #else | ||
543 | #define omap3_aes_resources NULL | ||
544 | #define omap3_aes_resources_sz 0 | ||
545 | #endif | ||
546 | |||
547 | static struct platform_device aes_device = { | ||
548 | .name = "omap-aes", | ||
549 | .id = -1, | ||
550 | }; | ||
551 | |||
552 | static void omap_init_aes(void) | ||
553 | { | ||
554 | if (cpu_is_omap24xx()) { | ||
555 | aes_device.resource = omap2_aes_resources; | ||
556 | aes_device.num_resources = omap2_aes_resources_sz; | ||
557 | } else if (cpu_is_omap34xx()) { | ||
558 | aes_device.resource = omap3_aes_resources; | ||
559 | aes_device.num_resources = omap3_aes_resources_sz; | ||
560 | } else { | ||
561 | pr_err("%s: platform not supported\n", __func__); | ||
562 | return; | ||
563 | } | ||
564 | platform_device_register(&aes_device); | ||
565 | } | ||
566 | |||
567 | #else | ||
568 | static inline void omap_init_aes(void) { } | ||
569 | #endif | ||
570 | |||
501 | /*-------------------------------------------------------------------------*/ | 571 | /*-------------------------------------------------------------------------*/ |
502 | 572 | ||
503 | #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4) | 573 | #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4) |
@@ -624,7 +694,7 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
624 | omap_mux_init_signal("sdmmc_dat0", 0); | 694 | omap_mux_init_signal("sdmmc_dat0", 0); |
625 | omap_mux_init_signal("sdmmc_dat_dir0", 0); | 695 | omap_mux_init_signal("sdmmc_dat_dir0", 0); |
626 | omap_mux_init_signal("sdmmc_cmd_dir", 0); | 696 | omap_mux_init_signal("sdmmc_cmd_dir", 0); |
627 | if (mmc_controller->slots[0].wires == 4) { | 697 | if (mmc_controller->slots[0].caps & MMC_CAP_4_BIT_DATA) { |
628 | omap_mux_init_signal("sdmmc_dat1", 0); | 698 | omap_mux_init_signal("sdmmc_dat1", 0); |
629 | omap_mux_init_signal("sdmmc_dat2", 0); | 699 | omap_mux_init_signal("sdmmc_dat2", 0); |
630 | omap_mux_init_signal("sdmmc_dat3", 0); | 700 | omap_mux_init_signal("sdmmc_dat3", 0); |
@@ -652,8 +722,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
652 | OMAP_PIN_INPUT_PULLUP); | 722 | OMAP_PIN_INPUT_PULLUP); |
653 | omap_mux_init_signal("sdmmc1_dat0", | 723 | omap_mux_init_signal("sdmmc1_dat0", |
654 | OMAP_PIN_INPUT_PULLUP); | 724 | OMAP_PIN_INPUT_PULLUP); |
655 | if (mmc_controller->slots[0].wires == 4 || | 725 | if (mmc_controller->slots[0].caps & |
656 | mmc_controller->slots[0].wires == 8) { | 726 | (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA)) { |
657 | omap_mux_init_signal("sdmmc1_dat1", | 727 | omap_mux_init_signal("sdmmc1_dat1", |
658 | OMAP_PIN_INPUT_PULLUP); | 728 | OMAP_PIN_INPUT_PULLUP); |
659 | omap_mux_init_signal("sdmmc1_dat2", | 729 | omap_mux_init_signal("sdmmc1_dat2", |
@@ -661,7 +731,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
661 | omap_mux_init_signal("sdmmc1_dat3", | 731 | omap_mux_init_signal("sdmmc1_dat3", |
662 | OMAP_PIN_INPUT_PULLUP); | 732 | OMAP_PIN_INPUT_PULLUP); |
663 | } | 733 | } |
664 | if (mmc_controller->slots[0].wires == 8) { | 734 | if (mmc_controller->slots[0].caps & |
735 | MMC_CAP_8_BIT_DATA) { | ||
665 | omap_mux_init_signal("sdmmc1_dat4", | 736 | omap_mux_init_signal("sdmmc1_dat4", |
666 | OMAP_PIN_INPUT_PULLUP); | 737 | OMAP_PIN_INPUT_PULLUP); |
667 | omap_mux_init_signal("sdmmc1_dat5", | 738 | omap_mux_init_signal("sdmmc1_dat5", |
@@ -685,8 +756,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
685 | * For 8 wire configurations, Lines DAT4, 5, 6 and 7 need to be muxed | 756 | * For 8 wire configurations, Lines DAT4, 5, 6 and 7 need to be muxed |
686 | * in the board-*.c files | 757 | * in the board-*.c files |
687 | */ | 758 | */ |
688 | if (mmc_controller->slots[0].wires == 4 || | 759 | if (mmc_controller->slots[0].caps & |
689 | mmc_controller->slots[0].wires == 8) { | 760 | (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA)) { |
690 | omap_mux_init_signal("sdmmc2_dat1", | 761 | omap_mux_init_signal("sdmmc2_dat1", |
691 | OMAP_PIN_INPUT_PULLUP); | 762 | OMAP_PIN_INPUT_PULLUP); |
692 | omap_mux_init_signal("sdmmc2_dat2", | 763 | omap_mux_init_signal("sdmmc2_dat2", |
@@ -694,7 +765,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, | |||
694 | omap_mux_init_signal("sdmmc2_dat3", | 765 | omap_mux_init_signal("sdmmc2_dat3", |
695 | OMAP_PIN_INPUT_PULLUP); | 766 | OMAP_PIN_INPUT_PULLUP); |
696 | } | 767 | } |
697 | if (mmc_controller->slots[0].wires == 8) { | 768 | if (mmc_controller->slots[0].caps & |
769 | MMC_CAP_8_BIT_DATA) { | ||
698 | omap_mux_init_signal("sdmmc2_dat4.sdmmc2_dat4", | 770 | omap_mux_init_signal("sdmmc2_dat4.sdmmc2_dat4", |
699 | OMAP_PIN_INPUT_PULLUP); | 771 | OMAP_PIN_INPUT_PULLUP); |
700 | omap_mux_init_signal("sdmmc2_dat5.sdmmc2_dat5", | 772 | omap_mux_init_signal("sdmmc2_dat5.sdmmc2_dat5", |
@@ -854,6 +926,7 @@ static int __init omap2_init_devices(void) | |||
854 | omap_hdq_init(); | 926 | omap_hdq_init(); |
855 | omap_init_sti(); | 927 | omap_init_sti(); |
856 | omap_init_sham(); | 928 | omap_init_sham(); |
929 | omap_init_aes(); | ||
857 | omap_init_vout(); | 930 | omap_init_vout(); |
858 | 931 | ||
859 | return 0; | 932 | return 0; |
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c index c8f647b6205e..87ce6ffccefc 100644 --- a/arch/arm/mach-omap2/hsmmc.c +++ b/arch/arm/mach-omap2/hsmmc.c | |||
@@ -258,7 +258,7 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers) | |||
258 | "mmc%islot%i", c->mmc, 1); | 258 | "mmc%islot%i", c->mmc, 1); |
259 | mmc->slots[0].name = hc->name; | 259 | mmc->slots[0].name = hc->name; |
260 | mmc->nr_slots = 1; | 260 | mmc->nr_slots = 1; |
261 | mmc->slots[0].wires = c->wires; | 261 | mmc->slots[0].caps = c->caps; |
262 | mmc->slots[0].internal_clock = !c->ext_clock; | 262 | mmc->slots[0].internal_clock = !c->ext_clock; |
263 | mmc->dma_mask = 0xffffffff; | 263 | mmc->dma_mask = 0xffffffff; |
264 | 264 | ||
@@ -316,16 +316,20 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers) | |||
316 | } | 316 | } |
317 | 317 | ||
318 | /* Omap3630 HSMMC1 supports only 4-bit */ | 318 | /* Omap3630 HSMMC1 supports only 4-bit */ |
319 | if (cpu_is_omap3630() && c->wires > 4) { | 319 | if (cpu_is_omap3630() && |
320 | c->wires = 4; | 320 | (c->caps & MMC_CAP_8_BIT_DATA)) { |
321 | mmc->slots[0].wires = c->wires; | 321 | c->caps &= ~MMC_CAP_8_BIT_DATA; |
322 | c->caps |= MMC_CAP_4_BIT_DATA; | ||
323 | mmc->slots[0].caps = c->caps; | ||
322 | } | 324 | } |
323 | break; | 325 | break; |
324 | case 2: | 326 | case 2: |
325 | if (c->ext_clock) | 327 | if (c->ext_clock) |
326 | c->transceiver = 1; | 328 | c->transceiver = 1; |
327 | if (c->transceiver && c->wires > 4) | 329 | if (c->transceiver && (c->caps & MMC_CAP_8_BIT_DATA)) { |
328 | c->wires = 4; | 330 | c->caps &= ~MMC_CAP_8_BIT_DATA; |
331 | c->caps |= MMC_CAP_4_BIT_DATA; | ||
332 | } | ||
329 | /* FALLTHROUGH */ | 333 | /* FALLTHROUGH */ |
330 | case 3: | 334 | case 3: |
331 | if (mmc->slots[0].features & HSMMC_HAS_PBIAS) { | 335 | if (mmc->slots[0].features & HSMMC_HAS_PBIAS) { |
diff --git a/arch/arm/mach-omap2/hsmmc.h b/arch/arm/mach-omap2/hsmmc.h index 1fe6f0187177..281e97287adf 100644 --- a/arch/arm/mach-omap2/hsmmc.h +++ b/arch/arm/mach-omap2/hsmmc.h | |||
@@ -10,7 +10,8 @@ struct mmc_card; | |||
10 | 10 | ||
11 | struct omap2_hsmmc_info { | 11 | struct omap2_hsmmc_info { |
12 | u8 mmc; /* controller 1/2/3 */ | 12 | u8 mmc; /* controller 1/2/3 */ |
13 | u8 wires; /* 1/4/8 wires */ | 13 | u32 caps; /* 4/8 wires and any additional host |
14 | * capabilities OR'd (ref. linux/mmc/host.h) */ | ||
14 | bool transceiver; /* MMC-2 option */ | 15 | bool transceiver; /* MMC-2 option */ |
15 | bool ext_clock; /* use external pin for input clock */ | 16 | bool ext_clock; /* use external pin for input clock */ |
16 | bool cover_only; /* No card detect - just cover switch */ | 17 | bool cover_only; /* No card detect - just cover switch */ |
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c index 467aae245781..88b8790e4fec 100644 --- a/arch/arm/mach-omap2/mcbsp.c +++ b/arch/arm/mach-omap2/mcbsp.c | |||
@@ -23,29 +23,6 @@ | |||
23 | #include <plat/cpu.h> | 23 | #include <plat/cpu.h> |
24 | #include <plat/mcbsp.h> | 24 | #include <plat/mcbsp.h> |
25 | 25 | ||
26 | #include "mux.h" | ||
27 | |||
28 | static void omap2_mcbsp2_mux_setup(void) | ||
29 | { | ||
30 | omap_mux_init_signal("eac_ac_sclk.mcbsp2_clkx", OMAP_PULL_ENA); | ||
31 | omap_mux_init_signal("eac_ac_fs.mcbsp2_fsx", OMAP_PULL_ENA); | ||
32 | omap_mux_init_signal("eac_ac_din.mcbsp2_dr", OMAP_PULL_ENA); | ||
33 | omap_mux_init_signal("eac_ac_dout.mcbsp2_dx", OMAP_PULL_ENA); | ||
34 | omap_mux_init_gpio(117, OMAP_PULL_ENA); | ||
35 | /* | ||
36 | * TODO: Need to add MUX settings for OMAP 2430 SDP | ||
37 | */ | ||
38 | } | ||
39 | |||
40 | static void omap2_mcbsp_request(unsigned int id) | ||
41 | { | ||
42 | if (cpu_is_omap2420() && (id == OMAP_MCBSP2)) | ||
43 | omap2_mcbsp2_mux_setup(); | ||
44 | } | ||
45 | |||
46 | static struct omap_mcbsp_ops omap2_mcbsp_ops = { | ||
47 | .request = omap2_mcbsp_request, | ||
48 | }; | ||
49 | 26 | ||
50 | #ifdef CONFIG_ARCH_OMAP2420 | 27 | #ifdef CONFIG_ARCH_OMAP2420 |
51 | static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { | 28 | static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { |
@@ -55,7 +32,6 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { | |||
55 | .dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX, | 32 | .dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX, |
56 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, | 33 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, |
57 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, | 34 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, |
58 | .ops = &omap2_mcbsp_ops, | ||
59 | }, | 35 | }, |
60 | { | 36 | { |
61 | .phys_base = OMAP24XX_MCBSP2_BASE, | 37 | .phys_base = OMAP24XX_MCBSP2_BASE, |
@@ -63,7 +39,6 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { | |||
63 | .dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX, | 39 | .dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX, |
64 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, | 40 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, |
65 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, | 41 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, |
66 | .ops = &omap2_mcbsp_ops, | ||
67 | }, | 42 | }, |
68 | }; | 43 | }; |
69 | #define OMAP2420_MCBSP_PDATA_SZ ARRAY_SIZE(omap2420_mcbsp_pdata) | 44 | #define OMAP2420_MCBSP_PDATA_SZ ARRAY_SIZE(omap2420_mcbsp_pdata) |
@@ -82,7 +57,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
82 | .dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX, | 57 | .dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX, |
83 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, | 58 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, |
84 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, | 59 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, |
85 | .ops = &omap2_mcbsp_ops, | ||
86 | }, | 60 | }, |
87 | { | 61 | { |
88 | .phys_base = OMAP24XX_MCBSP2_BASE, | 62 | .phys_base = OMAP24XX_MCBSP2_BASE, |
@@ -90,7 +64,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
90 | .dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX, | 64 | .dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX, |
91 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, | 65 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, |
92 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, | 66 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, |
93 | .ops = &omap2_mcbsp_ops, | ||
94 | }, | 67 | }, |
95 | { | 68 | { |
96 | .phys_base = OMAP2430_MCBSP3_BASE, | 69 | .phys_base = OMAP2430_MCBSP3_BASE, |
@@ -98,7 +71,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
98 | .dma_tx_sync = OMAP24XX_DMA_MCBSP3_TX, | 71 | .dma_tx_sync = OMAP24XX_DMA_MCBSP3_TX, |
99 | .rx_irq = INT_24XX_MCBSP3_IRQ_RX, | 72 | .rx_irq = INT_24XX_MCBSP3_IRQ_RX, |
100 | .tx_irq = INT_24XX_MCBSP3_IRQ_TX, | 73 | .tx_irq = INT_24XX_MCBSP3_IRQ_TX, |
101 | .ops = &omap2_mcbsp_ops, | ||
102 | }, | 74 | }, |
103 | { | 75 | { |
104 | .phys_base = OMAP2430_MCBSP4_BASE, | 76 | .phys_base = OMAP2430_MCBSP4_BASE, |
@@ -106,7 +78,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
106 | .dma_tx_sync = OMAP24XX_DMA_MCBSP4_TX, | 78 | .dma_tx_sync = OMAP24XX_DMA_MCBSP4_TX, |
107 | .rx_irq = INT_24XX_MCBSP4_IRQ_RX, | 79 | .rx_irq = INT_24XX_MCBSP4_IRQ_RX, |
108 | .tx_irq = INT_24XX_MCBSP4_IRQ_TX, | 80 | .tx_irq = INT_24XX_MCBSP4_IRQ_TX, |
109 | .ops = &omap2_mcbsp_ops, | ||
110 | }, | 81 | }, |
111 | { | 82 | { |
112 | .phys_base = OMAP2430_MCBSP5_BASE, | 83 | .phys_base = OMAP2430_MCBSP5_BASE, |
@@ -114,7 +85,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { | |||
114 | .dma_tx_sync = OMAP24XX_DMA_MCBSP5_TX, | 85 | .dma_tx_sync = OMAP24XX_DMA_MCBSP5_TX, |
115 | .rx_irq = INT_24XX_MCBSP5_IRQ_RX, | 86 | .rx_irq = INT_24XX_MCBSP5_IRQ_RX, |
116 | .tx_irq = INT_24XX_MCBSP5_IRQ_TX, | 87 | .tx_irq = INT_24XX_MCBSP5_IRQ_TX, |
117 | .ops = &omap2_mcbsp_ops, | ||
118 | }, | 88 | }, |
119 | }; | 89 | }; |
120 | #define OMAP2430_MCBSP_PDATA_SZ ARRAY_SIZE(omap2430_mcbsp_pdata) | 90 | #define OMAP2430_MCBSP_PDATA_SZ ARRAY_SIZE(omap2430_mcbsp_pdata) |
@@ -133,7 +103,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
133 | .dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX, | 103 | .dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX, |
134 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, | 104 | .rx_irq = INT_24XX_MCBSP1_IRQ_RX, |
135 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, | 105 | .tx_irq = INT_24XX_MCBSP1_IRQ_TX, |
136 | .ops = &omap2_mcbsp_ops, | ||
137 | .buffer_size = 0x80, /* The FIFO has 128 locations */ | 106 | .buffer_size = 0x80, /* The FIFO has 128 locations */ |
138 | }, | 107 | }, |
139 | { | 108 | { |
@@ -143,7 +112,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
143 | .dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX, | 112 | .dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX, |
144 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, | 113 | .rx_irq = INT_24XX_MCBSP2_IRQ_RX, |
145 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, | 114 | .tx_irq = INT_24XX_MCBSP2_IRQ_TX, |
146 | .ops = &omap2_mcbsp_ops, | ||
147 | .buffer_size = 0x500, /* The FIFO has 1024 + 256 locations */ | 115 | .buffer_size = 0x500, /* The FIFO has 1024 + 256 locations */ |
148 | }, | 116 | }, |
149 | { | 117 | { |
@@ -153,7 +121,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
153 | .dma_tx_sync = OMAP24XX_DMA_MCBSP3_TX, | 121 | .dma_tx_sync = OMAP24XX_DMA_MCBSP3_TX, |
154 | .rx_irq = INT_24XX_MCBSP3_IRQ_RX, | 122 | .rx_irq = INT_24XX_MCBSP3_IRQ_RX, |
155 | .tx_irq = INT_24XX_MCBSP3_IRQ_TX, | 123 | .tx_irq = INT_24XX_MCBSP3_IRQ_TX, |
156 | .ops = &omap2_mcbsp_ops, | ||
157 | .buffer_size = 0x80, /* The FIFO has 128 locations */ | 124 | .buffer_size = 0x80, /* The FIFO has 128 locations */ |
158 | }, | 125 | }, |
159 | { | 126 | { |
@@ -162,7 +129,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
162 | .dma_tx_sync = OMAP24XX_DMA_MCBSP4_TX, | 129 | .dma_tx_sync = OMAP24XX_DMA_MCBSP4_TX, |
163 | .rx_irq = INT_24XX_MCBSP4_IRQ_RX, | 130 | .rx_irq = INT_24XX_MCBSP4_IRQ_RX, |
164 | .tx_irq = INT_24XX_MCBSP4_IRQ_TX, | 131 | .tx_irq = INT_24XX_MCBSP4_IRQ_TX, |
165 | .ops = &omap2_mcbsp_ops, | ||
166 | .buffer_size = 0x80, /* The FIFO has 128 locations */ | 132 | .buffer_size = 0x80, /* The FIFO has 128 locations */ |
167 | }, | 133 | }, |
168 | { | 134 | { |
@@ -171,7 +137,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { | |||
171 | .dma_tx_sync = OMAP24XX_DMA_MCBSP5_TX, | 137 | .dma_tx_sync = OMAP24XX_DMA_MCBSP5_TX, |
172 | .rx_irq = INT_24XX_MCBSP5_IRQ_RX, | 138 | .rx_irq = INT_24XX_MCBSP5_IRQ_RX, |
173 | .tx_irq = INT_24XX_MCBSP5_IRQ_TX, | 139 | .tx_irq = INT_24XX_MCBSP5_IRQ_TX, |
174 | .ops = &omap2_mcbsp_ops, | ||
175 | .buffer_size = 0x80, /* The FIFO has 128 locations */ | 140 | .buffer_size = 0x80, /* The FIFO has 128 locations */ |
176 | }, | 141 | }, |
177 | }; | 142 | }; |
@@ -189,28 +154,24 @@ static struct omap_mcbsp_platform_data omap44xx_mcbsp_pdata[] = { | |||
189 | .dma_rx_sync = OMAP44XX_DMA_MCBSP1_RX, | 154 | .dma_rx_sync = OMAP44XX_DMA_MCBSP1_RX, |
190 | .dma_tx_sync = OMAP44XX_DMA_MCBSP1_TX, | 155 | .dma_tx_sync = OMAP44XX_DMA_MCBSP1_TX, |
191 | .tx_irq = OMAP44XX_IRQ_MCBSP1, | 156 | .tx_irq = OMAP44XX_IRQ_MCBSP1, |
192 | .ops = &omap2_mcbsp_ops, | ||
193 | }, | 157 | }, |
194 | { | 158 | { |
195 | .phys_base = OMAP44XX_MCBSP2_BASE, | 159 | .phys_base = OMAP44XX_MCBSP2_BASE, |
196 | .dma_rx_sync = OMAP44XX_DMA_MCBSP2_RX, | 160 | .dma_rx_sync = OMAP44XX_DMA_MCBSP2_RX, |
197 | .dma_tx_sync = OMAP44XX_DMA_MCBSP2_TX, | 161 | .dma_tx_sync = OMAP44XX_DMA_MCBSP2_TX, |
198 | .tx_irq = OMAP44XX_IRQ_MCBSP2, | 162 | .tx_irq = OMAP44XX_IRQ_MCBSP2, |
199 | .ops = &omap2_mcbsp_ops, | ||
200 | }, | 163 | }, |
201 | { | 164 | { |
202 | .phys_base = OMAP44XX_MCBSP3_BASE, | 165 | .phys_base = OMAP44XX_MCBSP3_BASE, |
203 | .dma_rx_sync = OMAP44XX_DMA_MCBSP3_RX, | 166 | .dma_rx_sync = OMAP44XX_DMA_MCBSP3_RX, |
204 | .dma_tx_sync = OMAP44XX_DMA_MCBSP3_TX, | 167 | .dma_tx_sync = OMAP44XX_DMA_MCBSP3_TX, |
205 | .tx_irq = OMAP44XX_IRQ_MCBSP3, | 168 | .tx_irq = OMAP44XX_IRQ_MCBSP3, |
206 | .ops = &omap2_mcbsp_ops, | ||
207 | }, | 169 | }, |
208 | { | 170 | { |
209 | .phys_base = OMAP44XX_MCBSP4_BASE, | 171 | .phys_base = OMAP44XX_MCBSP4_BASE, |
210 | .dma_rx_sync = OMAP44XX_DMA_MCBSP4_RX, | 172 | .dma_rx_sync = OMAP44XX_DMA_MCBSP4_RX, |
211 | .dma_tx_sync = OMAP44XX_DMA_MCBSP4_TX, | 173 | .dma_tx_sync = OMAP44XX_DMA_MCBSP4_TX, |
212 | .tx_irq = OMAP44XX_IRQ_MCBSP4, | 174 | .tx_irq = OMAP44XX_IRQ_MCBSP4, |
213 | .ops = &omap2_mcbsp_ops, | ||
214 | }, | 175 | }, |
215 | }; | 176 | }; |
216 | #define OMAP44XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap44xx_mcbsp_pdata) | 177 | #define OMAP44XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap44xx_mcbsp_pdata) |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index ab403b2ed26b..6c2f8f0c0edb 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -87,7 +87,7 @@ static char *omap_mux_options; | |||
87 | int __init omap_mux_init_gpio(int gpio, int val) | 87 | int __init omap_mux_init_gpio(int gpio, int val) |
88 | { | 88 | { |
89 | struct omap_mux_entry *e; | 89 | struct omap_mux_entry *e; |
90 | struct omap_mux *gpio_mux; | 90 | struct omap_mux *gpio_mux = NULL; |
91 | u16 old_mode; | 91 | u16 old_mode; |
92 | u16 mux_mode; | 92 | u16 mux_mode; |
93 | int found = 0; | 93 | int found = 0; |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 11c5b0eefb85..c05c653d1674 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -2084,7 +2084,7 @@ void omap2_gpio_prepare_for_idle(int power_state) | |||
2084 | 2084 | ||
2085 | for (i = min; i < gpio_bank_count; i++) { | 2085 | for (i = min; i < gpio_bank_count; i++) { |
2086 | struct gpio_bank *bank = &gpio_bank[i]; | 2086 | struct gpio_bank *bank = &gpio_bank[i]; |
2087 | u32 l1, l2; | 2087 | u32 l1 = 0, l2 = 0; |
2088 | int j; | 2088 | int j; |
2089 | 2089 | ||
2090 | for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) | 2090 | for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) |
@@ -2152,7 +2152,7 @@ void omap2_gpio_resume_after_idle(void) | |||
2152 | min = 1; | 2152 | min = 1; |
2153 | for (i = min; i < gpio_bank_count; i++) { | 2153 | for (i = min; i < gpio_bank_count; i++) { |
2154 | struct gpio_bank *bank = &gpio_bank[i]; | 2154 | struct gpio_bank *bank = &gpio_bank[i]; |
2155 | u32 l, gen, gen0, gen1; | 2155 | u32 l = 0, gen, gen0, gen1; |
2156 | int j; | 2156 | int j; |
2157 | 2157 | ||
2158 | for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) | 2158 | for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) |
diff --git a/arch/arm/plat-omap/include/plat/i2c.h b/arch/arm/plat-omap/include/plat/i2c.h index 87f6bf2ea4fa..36a0befd6168 100644 --- a/arch/arm/plat-omap/include/plat/i2c.h +++ b/arch/arm/plat-omap/include/plat/i2c.h | |||
@@ -18,6 +18,8 @@ | |||
18 | * 02110-1301 USA | 18 | * 02110-1301 USA |
19 | * | 19 | * |
20 | */ | 20 | */ |
21 | #ifndef __ASM__ARCH_OMAP_I2C_H | ||
22 | #define __ASM__ARCH_OMAP_I2C_H | ||
21 | 23 | ||
22 | #include <linux/i2c.h> | 24 | #include <linux/i2c.h> |
23 | 25 | ||
@@ -36,3 +38,5 @@ static inline int omap_register_i2c_bus(int bus_id, u32 clkrate, | |||
36 | 38 | ||
37 | void __init omap1_i2c_mux_pins(int bus_id); | 39 | void __init omap1_i2c_mux_pins(int bus_id); |
38 | void __init omap2_i2c_mux_pins(int bus_id); | 40 | void __init omap2_i2c_mux_pins(int bus_id); |
41 | |||
42 | #endif /* __ASM__ARCH_OMAP_I2C_H */ | ||
diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h index 9b89ec601ee2..4f819fc261b7 100644 --- a/arch/arm/plat-omap/include/plat/mmc.h +++ b/arch/arm/plat-omap/include/plat/mmc.h | |||
@@ -73,10 +73,9 @@ struct omap_mmc_platform_data { | |||
73 | 73 | ||
74 | struct omap_mmc_slot_data { | 74 | struct omap_mmc_slot_data { |
75 | 75 | ||
76 | /* 4 wire signaling is optional, and is used for SD/SDIO/HSMMC; | 76 | /* 4/8 wires and any additional host capabilities |
77 | * 8 wire signaling is also optional, and is used with HSMMC | 77 | * need to OR'd all capabilities (ref. linux/mmc/host.h) */ |
78 | */ | 78 | u32 caps; |
79 | u8 wires; | ||
80 | 79 | ||
81 | /* | 80 | /* |
82 | * nomux means "standard" muxing is wrong on this board, and | 81 | * nomux means "standard" muxing is wrong on this board, and |
diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index 2a9427c8cc48..667456228a12 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h | |||
@@ -105,7 +105,7 @@ static inline void omap1_usb_init(struct omap_usb_config *pdata) | |||
105 | #if defined(CONFIG_ARCH_OMAP_OTG) || defined(CONFIG_ARCH_OMAP_OTG_MODULE) | 105 | #if defined(CONFIG_ARCH_OMAP_OTG) || defined(CONFIG_ARCH_OMAP_OTG_MODULE) |
106 | void omap2_usbfs_init(struct omap_usb_config *pdata); | 106 | void omap2_usbfs_init(struct omap_usb_config *pdata); |
107 | #else | 107 | #else |
108 | static inline omap2_usbfs_init(struct omap_usb_config *pdata) | 108 | static inline void omap2_usbfs_init(struct omap_usb_config *pdata) |
109 | { | 109 | { |
110 | } | 110 | } |
111 | #endif | 111 | #endif |
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c index e31496e35b0f..ecbfe398a309 100644 --- a/arch/arm/plat-omap/mcbsp.c +++ b/arch/arm/plat-omap/mcbsp.c | |||
@@ -878,7 +878,7 @@ EXPORT_SYMBOL(omap_mcbsp_free); | |||
878 | void omap_mcbsp_start(unsigned int id, int tx, int rx) | 878 | void omap_mcbsp_start(unsigned int id, int tx, int rx) |
879 | { | 879 | { |
880 | struct omap_mcbsp *mcbsp; | 880 | struct omap_mcbsp *mcbsp; |
881 | int idle; | 881 | int enable_srg = 0; |
882 | u16 w; | 882 | u16 w; |
883 | 883 | ||
884 | if (!omap_mcbsp_check_valid_id(id)) { | 884 | if (!omap_mcbsp_check_valid_id(id)) { |
@@ -893,10 +893,13 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx) | |||
893 | mcbsp->rx_word_length = (MCBSP_READ_CACHE(mcbsp, RCR1) >> 5) & 0x7; | 893 | mcbsp->rx_word_length = (MCBSP_READ_CACHE(mcbsp, RCR1) >> 5) & 0x7; |
894 | mcbsp->tx_word_length = (MCBSP_READ_CACHE(mcbsp, XCR1) >> 5) & 0x7; | 894 | mcbsp->tx_word_length = (MCBSP_READ_CACHE(mcbsp, XCR1) >> 5) & 0x7; |
895 | 895 | ||
896 | idle = !((MCBSP_READ_CACHE(mcbsp, SPCR2) | | 896 | /* Only enable SRG, if McBSP is master */ |
897 | MCBSP_READ_CACHE(mcbsp, SPCR1)) & 1); | 897 | w = MCBSP_READ_CACHE(mcbsp, PCR0); |
898 | if (w & (FSXM | FSRM | CLKXM | CLKRM)) | ||
899 | enable_srg = !((MCBSP_READ_CACHE(mcbsp, SPCR2) | | ||
900 | MCBSP_READ_CACHE(mcbsp, SPCR1)) & 1); | ||
898 | 901 | ||
899 | if (idle) { | 902 | if (enable_srg) { |
900 | /* Start the sample generator */ | 903 | /* Start the sample generator */ |
901 | w = MCBSP_READ_CACHE(mcbsp, SPCR2); | 904 | w = MCBSP_READ_CACHE(mcbsp, SPCR2); |
902 | MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 6)); | 905 | MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 6)); |
@@ -919,7 +922,7 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx) | |||
919 | */ | 922 | */ |
920 | udelay(500); | 923 | udelay(500); |
921 | 924 | ||
922 | if (idle) { | 925 | if (enable_srg) { |
923 | /* Start frame sync */ | 926 | /* Start frame sync */ |
924 | w = MCBSP_READ_CACHE(mcbsp, SPCR2); | 927 | w = MCBSP_READ_CACHE(mcbsp, SPCR2); |
925 | MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 7)); | 928 | MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 7)); |