Commit b245f26f authored by Tony Lindgren's avatar Tony Lindgren

Merge branch 'devel-omap-misc' into omap-for-linus

parents 5a37e784 3a63833e
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h>
#include <linux/mmc/host.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/i2c/twl.h> #include <linux/i2c/twl.h>
#include <linux/err.h> #include <linux/err.h>
...@@ -190,7 +191,7 @@ static int __init omap2430_i2c_init(void) ...@@ -190,7 +191,7 @@ static int __init omap2430_i2c_init(void)
static struct omap2_hsmmc_info mmc[] __initdata = { static struct omap2_hsmmc_info mmc[] __initdata = {
{ {
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
.ext_clock = 1, .ext_clock = 1,
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/mmc/host.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -353,12 +354,12 @@ static struct omap2_hsmmc_info mmc[] = { ...@@ -353,12 +354,12 @@ static struct omap2_hsmmc_info mmc[] = {
/* 8 bits (default) requires S6.3 == ON, /* 8 bits (default) requires S6.3 == ON,
* so the SIM card isn't used; else 4 bits. * so the SIM card isn't used; else 4 bits.
*/ */
.wires = 8, .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_wp = 4, .gpio_wp = 4,
}, },
{ {
.mmc = 2, .mmc = 2,
.wires = 8, .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_wp = 7, .gpio_wp = 7,
}, },
{} /* Terminator */ {} /* Terminator */
......
...@@ -193,12 +193,12 @@ static struct omap_musb_board_data musb_board_data = { ...@@ -193,12 +193,12 @@ static struct omap_musb_board_data musb_board_data = {
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 8, .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
}, },
{ {
.mmc = 2, .mmc = 2,
.wires = 8, .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
.nonremovable = true, .nonremovable = true,
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <linux/i2c/at24.h> #include <linux/i2c/at24.h>
#include <linux/i2c/twl.h> #include <linux/i2c/twl.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/mmc/host.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/tdo24m.h> #include <linux/spi/tdo24m.h>
...@@ -579,14 +580,14 @@ static struct twl4030_keypad_data cm_t35_kp_data = { ...@@ -579,14 +580,14 @@ static struct twl4030_keypad_data cm_t35_kp_data = {
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
}, },
{ {
.mmc = 2, .mmc = 2,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.transceiver = 1, .transceiver = 1,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h> #include <linux/mtd/nand.h>
#include <linux/mmc/host.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/i2c/twl.h> #include <linux/i2c/twl.h>
...@@ -105,7 +106,7 @@ static struct omap_nand_platform_data devkit8000_nand_data = { ...@@ -105,7 +106,7 @@ static struct omap_nand_platform_data devkit8000_nand_data = {
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 8, .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_wp = 29, .gpio_wp = 29,
}, },
{} /* Terminator */ {} /* Terminator */
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/i2c/twl.h> #include <linux/i2c/twl.h>
#include <linux/mmc/host.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
...@@ -248,13 +249,13 @@ static struct regulator_init_data igep2_vmmc2 = { ...@@ -248,13 +249,13 @@ static struct regulator_init_data igep2_vmmc2 = {
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
}, },
{ {
.mmc = 2, .mmc = 2,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
}, },
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/i2c/twl.h> #include <linux/i2c/twl.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/smsc911x.h> #include <linux/smsc911x.h>
#include <linux/mmc/host.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -362,7 +363,7 @@ static int __init omap_i2c_init(void) ...@@ -362,7 +363,7 @@ static int __init omap_i2c_init(void)
static struct omap2_hsmmc_info mmc[] __initdata = { static struct omap2_hsmmc_info mmc[] __initdata = {
{ {
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
}, },
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/usb/musb.h> #include <linux/usb/musb.h>
#include <sound/tlv320aic3x.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -487,7 +488,7 @@ static struct omap_mmc_platform_data mmc1_data = { ...@@ -487,7 +488,7 @@ static struct omap_mmc_platform_data mmc1_data = {
.max_freq = 24000000, .max_freq = 24000000,
.dma_mask = 0xffffffff, .dma_mask = 0xffffffff,
.slots[0] = { .slots[0] = {
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.set_power = n8x0_mmc_set_power, .set_power = n8x0_mmc_set_power,
.set_bus_mode = n8x0_mmc_set_bus_mode, .set_bus_mode = n8x0_mmc_set_bus_mode,
.get_cover_state = n8x0_mmc_get_cover_state, .get_cover_state = n8x0_mmc_get_cover_state,
...@@ -614,29 +615,35 @@ static int n8x0_menelaus_late_init(struct device *dev) ...@@ -614,29 +615,35 @@ static int n8x0_menelaus_late_init(struct device *dev)
return 0; return 0;
} }
static struct i2c_board_info __initdata n8x0_i2c_board_info_1[] = { #else
static int n8x0_menelaus_late_init(struct device *dev)
{
return 0;
}
#endif
static struct menelaus_platform_data n8x0_menelaus_platform_data __initdata = {
.late_init = n8x0_menelaus_late_init,
};
static struct i2c_board_info __initdata n8x0_i2c_board_info_1[] __initdata = {
{ {
I2C_BOARD_INFO("menelaus", 0x72), I2C_BOARD_INFO("menelaus", 0x72),
.irq = INT_24XX_SYS_NIRQ, .irq = INT_24XX_SYS_NIRQ,
.platform_data = &n8x0_menelaus_platform_data,
}, },
}; };
static struct menelaus_platform_data n8x0_menelaus_platform_data = { static struct aic3x_pdata n810_aic33_data __initdata = {
.late_init = n8x0_menelaus_late_init, .gpio_reset = 118,
}; };
static void __init n8x0_menelaus_init(void) static struct i2c_board_info n810_i2c_board_info_2[] __initdata = {
{ {
n8x0_i2c_board_info_1[0].platform_data = &n8x0_menelaus_platform_data; I2C_BOARD_INFO("tlv320aic3x", 0x18),
omap_register_i2c_bus(1, 400, n8x0_i2c_board_info_1, .platform_data = &n810_aic33_data,
ARRAY_SIZE(n8x0_i2c_board_info_1)); },
} };
#else
static inline void __init n8x0_menelaus_init(void)
{
}
#endif
static void __init n8x0_map_io(void) static void __init n8x0_map_io(void)
{ {
...@@ -653,6 +660,11 @@ static void __init n8x0_init_irq(void) ...@@ -653,6 +660,11 @@ static void __init n8x0_init_irq(void)
#ifdef CONFIG_OMAP_MUX #ifdef CONFIG_OMAP_MUX
static struct omap_board_mux board_mux[] __initdata = { static struct omap_board_mux board_mux[] __initdata = {
/* I2S codec port pins for McBSP block */
OMAP2420_MUX(EAC_AC_SCLK, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
OMAP2420_MUX(EAC_AC_FS, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
OMAP2420_MUX(EAC_AC_DIN, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
OMAP2420_MUX(EAC_AC_DOUT, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
{ .reg_offset = OMAP_MUX_TERMINATOR }, { .reg_offset = OMAP_MUX_TERMINATOR },
}; };
#else #else
...@@ -665,9 +677,14 @@ static void __init n8x0_init_machine(void) ...@@ -665,9 +677,14 @@ static void __init n8x0_init_machine(void)
/* FIXME: add n810 spi devices */ /* FIXME: add n810 spi devices */
spi_register_board_info(n800_spi_board_info, spi_register_board_info(n800_spi_board_info,
ARRAY_SIZE(n800_spi_board_info)); ARRAY_SIZE(n800_spi_board_info));
omap_register_i2c_bus(1, 400, n8x0_i2c_board_info_1,
ARRAY_SIZE(n8x0_i2c_board_info_1));
omap_register_i2c_bus(2, 400, NULL, 0);
if (machine_is_nokia_n810())
i2c_register_board_info(2, n810_i2c_board_info_2,
ARRAY_SIZE(n810_i2c_board_info_2));
omap_serial_init(); omap_serial_init();
n8x0_menelaus_init();
n8x0_onenand_init(); n8x0_onenand_init();
n8x0_mmc_init(); n8x0_mmc_init();
n8x0_usb_init(); n8x0_usb_init();
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h> #include <linux/mtd/nand.h>
#include <linux/mmc/host.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/i2c/twl.h> #include <linux/i2c/twl.h>
...@@ -166,7 +167,7 @@ static void __init beagle_display_init(void) ...@@ -166,7 +167,7 @@ static void __init beagle_display_init(void)
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 8, .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_wp = 29, .gpio_wp = 29,
}, },
{} /* Terminator */ {} /* Terminator */
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <linux/smsc911x.h> #include <linux/smsc911x.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/mmc/host.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -370,7 +371,7 @@ static struct regulator_init_data omap3evm_vsim = { ...@@ -370,7 +371,7 @@ static struct regulator_init_data omap3evm_vsim = {
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = 63, .gpio_wp = 63,
}, },
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <linux/input.h> #include <linux/input.h>
#include <linux/input/matrix_keypad.h> #include <linux/input/matrix_keypad.h>
#include <linux/gpio_keys.h> #include <linux/gpio_keys.h>
#include <linux/mmc/host.h>
#include <linux/mmc/card.h> #include <linux/mmc/card.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -276,14 +277,14 @@ static void pandora_wl1251_init_card(struct mmc_card *card) ...@@ -276,14 +277,14 @@ static void pandora_wl1251_init_card(struct mmc_card *card)
static struct omap2_hsmmc_info omap3pandora_mmc[] = { static struct omap2_hsmmc_info omap3pandora_mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = 126, .gpio_wp = 126,
.ext_clock = 0, .ext_clock = 0,
}, },
{ {
.mmc = 2, .mmc = 2,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = 127, .gpio_wp = 127,
.ext_clock = 1, .ext_clock = 1,
...@@ -291,7 +292,7 @@ static struct omap2_hsmmc_info omap3pandora_mmc[] = { ...@@ -291,7 +292,7 @@ static struct omap2_hsmmc_info omap3pandora_mmc[] = {
}, },
{ {
.mmc = 3, .mmc = 3,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
.init_card = pandora_wl1251_init_card, .init_card = pandora_wl1251_init_card,
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/i2c/twl.h> #include <linux/i2c/twl.h>
#include <linux/mmc/host.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -275,7 +276,7 @@ static struct regulator_init_data omap3stalker_vsim = { ...@@ -275,7 +276,7 @@ static struct regulator_init_data omap3stalker_vsim = {
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = 23, .gpio_wp = 23,
}, },
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h> #include <linux/mtd/nand.h>
#include <linux/mmc/host.h>
#include <plat/mcspi.h> #include <plat/mcspi.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
...@@ -108,7 +109,7 @@ static struct omap_nand_platform_data omap3touchbook_nand_data = { ...@@ -108,7 +109,7 @@ static struct omap_nand_platform_data omap3touchbook_nand_data = {
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 8, .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_wp = 29, .gpio_wp = 29,
}, },
{} /* Terminator */ {} /* Terminator */
......
...@@ -56,7 +56,7 @@ static struct omap_musb_board_data musb_board_data = { ...@@ -56,7 +56,7 @@ static struct omap_musb_board_data musb_board_data = {
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 8, .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
}, },
{} /* Terminator */ {} /* Terminator */
...@@ -274,8 +274,6 @@ static int __init omap4_panda_i2c_init(void) ...@@ -274,8 +274,6 @@ static int __init omap4_panda_i2c_init(void)
} }
static void __init omap4_panda_init(void) static void __init omap4_panda_init(void)
{ {
int status;
omap4_panda_i2c_init(); omap4_panda_i2c_init();
omap_serial_init(); omap_serial_init();
omap4_twl6030_hsmmc_init(mmc); omap4_twl6030_hsmmc_init(mmc);
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h> #include <linux/mtd/nand.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/mmc/host.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
...@@ -303,13 +304,13 @@ static void __init overo_flash_init(void) ...@@ -303,13 +304,13 @@ static void __init overo_flash_init(void)
static struct omap2_hsmmc_info mmc[] = { static struct omap2_hsmmc_info mmc[] = {
{ {
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
}, },
{ {
.mmc = 2, .mmc = 2,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
.transceiver = true, .transceiver = true,
......
...@@ -302,7 +302,7 @@ static struct omap2_hsmmc_info mmc[] __initdata = { ...@@ -302,7 +302,7 @@ static struct omap2_hsmmc_info mmc[] __initdata = {
{ {
.name = "external", .name = "external",
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.cover_only = true, .cover_only = true,
.gpio_cd = 160, .gpio_cd = 160,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
...@@ -311,7 +311,8 @@ static struct omap2_hsmmc_info mmc[] __initdata = { ...@@ -311,7 +311,8 @@ static struct omap2_hsmmc_info mmc[] __initdata = {
{ {
.name = "internal", .name = "internal",
.mmc = 2, .mmc = 2,
.wires = 8, /* See also rx51_mmc2_remux */ .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
/* See also rx51_mmc2_remux */
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
.nonremovable = true, .nonremovable = true,
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/i2c/twl.h> #include <linux/i2c/twl.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/mmc/host.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
...@@ -155,14 +156,14 @@ static struct omap2_hsmmc_info mmc[] __initdata = { ...@@ -155,14 +156,14 @@ static struct omap2_hsmmc_info mmc[] __initdata = {
{ {
.name = "external", .name = "external",
.mmc = 1, .mmc = 1,
.wires = 4, .caps = MMC_CAP_4_BIT_DATA,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
.power_saving = true, .power_saving = true,
}, },
{ {
.name = "internal", .name = "internal",
.mmc = 2, .mmc = 2,
.wires = 8, .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_cd = -EINVAL, .gpio_cd = -EINVAL,
.gpio_wp = -EINVAL, .gpio_wp = -EINVAL,
.nonremovable = true, .nonremovable = true,
......
...@@ -1838,7 +1838,7 @@ static struct omap_clk omap2420_clks[] = { ...@@ -1838,7 +1838,7 @@ static struct omap_clk omap2420_clks[] = {
CLK(NULL, "des_ick", &des_ick, CK_242X), CLK(NULL, "des_ick", &des_ick, CK_242X),
CLK("omap-sham", "ick", &sha_ick, CK_242X), CLK("omap-sham", "ick", &sha_ick, CK_242X),
CLK("omap_rng", "ick", &rng_ick, CK_242X), CLK("omap_rng", "ick", &rng_ick, CK_242X),
CLK(NULL, "aes_ick", &aes_ick, CK_242X), CLK("omap-aes", "ick", &aes_ick, CK_242X),
CLK(NULL, "pka_ick", &pka_ick, CK_242X), CLK(NULL, "pka_ick", &pka_ick, CK_242X),
CLK(NULL, "usb_fck", &usb_fck, CK_242X), CLK(NULL, "usb_fck", &usb_fck, CK_242X),
CLK("musb_hdrc", "fck", &osc_ck, CK_242X), CLK("musb_hdrc", "fck", &osc_ck, CK_242X),
......
...@@ -1926,7 +1926,7 @@ static struct omap_clk omap2430_clks[] = { ...@@ -1926,7 +1926,7 @@ static struct omap_clk omap2430_clks[] = {
CLK(NULL, "des_ick", &des_ick, CK_243X), CLK(NULL, "des_ick", &des_ick, CK_243X),
CLK("omap-sham", "ick", &sha_ick, CK_243X), CLK("omap-sham", "ick", &sha_ick, CK_243X),
CLK("omap_rng", "ick", &rng_ick, CK_243X), CLK("omap_rng", "ick", &rng_ick, CK_243X),
CLK(NULL, "aes_ick", &aes_ick, CK_243X), CLK("omap-aes", "ick", &aes_ick, CK_243X),
CLK(NULL, "pka_ick", &pka_ick, CK_243X), CLK(NULL, "pka_ick", &pka_ick, CK_243X),
CLK(NULL, "usb_fck", &usb_fck, CK_243X), CLK(NULL, "usb_fck", &usb_fck, CK_243X),
CLK("musb_hdrc", "ick", &usbhs_ick, CK_243X), CLK("musb_hdrc", "ick", &usbhs_ick, CK_243X),
......
...@@ -3288,7 +3288,7 @@ static struct omap_clk omap3xxx_clks[] = { ...@@ -3288,7 +3288,7 @@ static struct omap_clk omap3xxx_clks[] = {
CLK(NULL, "usbtll_ick", &usbtll_ick, CK_3430ES2 | CK_AM35XX), CLK(NULL, "usbtll_ick", &usbtll_ick, CK_3430ES2 | CK_AM35XX),
CLK("mmci-omap-hs.2", "ick", &mmchs3_ick, CK_3430ES2 | CK_AM35XX), CLK("mmci-omap-hs.2", "ick", &mmchs3_ick, CK_3430ES2 | CK_AM35XX),
CLK(NULL, "icr_ick", &icr_ick, CK_343X), CLK(NULL, "icr_ick", &icr_ick, CK_343X),
CLK(NULL, "aes2_ick", &aes2_ick, CK_343X), CLK("omap-aes", "ick", &aes2_ick, CK_343X),
CLK("omap-sham", "ick", &sha12_ick, CK_343X), CLK("omap-sham", "ick", &sha12_ick, CK_343X),
CLK(NULL, "des2_ick", &des2_ick, CK_343X), CLK(NULL, "des2_ick", &des2_ick, CK_343X),
CLK("mmci-omap-hs.1", "ick", &mmchs2_ick, CK_3XXX), CLK("mmci-omap-hs.1", "ick", &mmchs2_ick, CK_3XXX),
......
...@@ -498,6 +498,76 @@ static void omap_init_sham(void) ...@@ -498,6 +498,76 @@ static void omap_init_sham(void)
static inline void omap_init_sham(void) { } static inline void omap_init_sham(void) { }
#endif #endif
#if defined(CONFIG_CRYPTO_DEV_OMAP_AES) || defined(CONFIG_CRYPTO_DEV_OMAP_AES_MODULE)
#ifdef CONFIG_ARCH_OMAP2
static struct resource omap2_aes_resources[] = {
{
.start = OMAP24XX_SEC_AES_BASE,
.end = OMAP24XX_SEC_AES_BASE + 0x4C,
.flags = IORESOURCE_MEM,
},
{
.start = OMAP24XX_DMA_AES_TX,
.flags = IORESOURCE_DMA,
},
{
.start = OMAP24XX_DMA_AES_RX,
.flags = IORESOURCE_DMA,
}
};
static int omap2_aes_resources_sz = ARRAY_SIZE(omap2_aes_resources);
#else
#define omap2_aes_resources NULL
#define omap2_aes_resources_sz 0
#endif
#ifdef CONFIG_ARCH_OMAP3
static struct resource omap3_aes_resources[] = {
{
.start = OMAP34XX_SEC_AES_BASE,
.end = OMAP34XX_SEC_AES_BASE + 0x4C,
.flags = IORESOURCE_MEM,
},
{
.start = OMAP34XX_DMA_AES2_TX,
.flags = IORESOURCE_DMA,
},
{
.start = OMAP34XX_DMA_AES2_RX,
.flags = IORESOURCE_DMA,
}
};
static int omap3_aes_resources_sz = ARRAY_SIZE(omap3_aes_resources);
#else
#define omap3_aes_resources NULL
#define omap3_aes_resources_sz 0
#endif
static struct platform_device aes_device = {
.name = "omap-aes",
.id = -1,
};
static void omap_init_aes(void)
{
if (cpu_is_omap24xx()) {
aes_device.resource = omap2_aes_resources;
aes_device.num_resources = omap2_aes_resources_sz;
} else if (cpu_is_omap34xx()) {
aes_device.resource = omap3_aes_resources;
aes_device.num_resources = omap3_aes_resources_sz;
} else {
pr_err("%s: platform not supported\n", __func__);
return;
}
platform_device_register(&aes_device);
}
#else
static inline void omap_init_aes(void) { }
#endif
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4) #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,7 +694,7 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
omap_mux_init_signal("sdmmc_dat0", 0); omap_mux_init_signal("sdmmc_dat0", 0);
omap_mux_init_signal("sdmmc_dat_dir0", 0); omap_mux_init_signal("sdmmc_dat_dir0", 0);
omap_mux_init_signal("sdmmc_cmd_dir", 0); omap_mux_init_signal("sdmmc_cmd_dir", 0);
if (mmc_controller->slots[0].wires == 4) { if (mmc_controller->slots[0].caps & MMC_CAP_4_BIT_DATA) {
omap_mux_init_signal("sdmmc_dat1", 0); omap_mux_init_signal("sdmmc_dat1", 0);
omap_mux_init_signal("sdmmc_dat2", 0); omap_mux_init_signal("sdmmc_dat2", 0);
omap_mux_init_signal("sdmmc_dat3", 0); 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,8 +722,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
OMAP_PIN_INPUT_PULLUP); OMAP_PIN_INPUT_PULLUP);
omap_mux_init_signal("sdmmc1_dat0", omap_mux_init_signal("sdmmc1_dat0",
OMAP_PIN_INPUT_PULLUP); OMAP_PIN_INPUT_PULLUP);
if (mmc_controller->slots[0].wires == 4 || if (mmc_controller->slots[0].caps &
mmc_controller->slots[0].wires == 8) { (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA)) {
omap_mux_init_signal("sdmmc1_dat1", omap_mux_init_signal("sdmmc1_dat1",
OMAP_PIN_INPUT_PULLUP); OMAP_PIN_INPUT_PULLUP);
omap_mux_init_signal("sdmmc1_dat2", omap_mux_init_signal("sdmmc1_dat2",
...@@ -661,7 +731,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, ...@@ -661,7 +731,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
omap_mux_init_signal("sdmmc1_dat3", omap_mux_init_signal("sdmmc1_dat3",
OMAP_PIN_INPUT_PULLUP); OMAP_PIN_INPUT_PULLUP);
} }
if (mmc_controller->slots[0].wires == 8) { if (mmc_controller->slots[0].caps &
MMC_CAP_8_BIT_DATA) {
omap_mux_init_signal("sdmmc1_dat4", omap_mux_init_signal("sdmmc1_dat4",
OMAP_PIN_INPUT_PULLUP); OMAP_PIN_INPUT_PULLUP);
omap_mux_init_signal("sdmmc1_dat5", omap_mux_init_signal("sdmmc1_dat5",
...@@ -685,8 +756,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, ...@@ -685,8 +756,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
* For 8 wire configurations, Lines DAT4, 5, 6 and 7 need to be muxed * For 8 wire configurations, Lines DAT4, 5, 6 and 7 need to be muxed
* in the board-*.c files * in the board-*.c files
*/ */
if (mmc_controller->slots[0].wires == 4 || if (mmc_controller->slots[0].caps &
mmc_controller->slots[0].wires == 8) { (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA)) {
omap_mux_init_signal("sdmmc2_dat1", omap_mux_init_signal("sdmmc2_dat1",
OMAP_PIN_INPUT_PULLUP); OMAP_PIN_INPUT_PULLUP);
omap_mux_init_signal("sdmmc2_dat2", omap_mux_init_signal("sdmmc2_dat2",
...@@ -694,7 +765,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller, ...@@ -694,7 +765,8 @@ static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
omap_mux_init_signal("sdmmc2_dat3", omap_mux_init_signal("sdmmc2_dat3",
OMAP_PIN_INPUT_PULLUP); OMAP_PIN_INPUT_PULLUP);
} }
if (mmc_controller->slots[0].wires == 8) { if (mmc_controller->slots[0].caps &
MMC_CAP_8_BIT_DATA) {
omap_mux_init_signal("sdmmc2_dat4.sdmmc2_dat4", omap_mux_init_signal("sdmmc2_dat4.sdmmc2_dat4",
OMAP_PIN_INPUT_PULLUP); OMAP_PIN_INPUT_PULLUP);
omap_mux_init_signal("sdmmc2_dat5.sdmmc2_dat5", omap_mux_init_signal("sdmmc2_dat5.sdmmc2_dat5",
...@@ -854,6 +926,7 @@ static int __init omap2_init_devices(void) ...@@ -854,6 +926,7 @@ static int __init omap2_init_devices(void)
omap_hdq_init(); omap_hdq_init();
omap_init_sti(); omap_init_sti();
omap_init_sham(); omap_init_sham();
omap_init_aes();
omap_init_vout(); omap_init_vout();
return 0; return 0;
......
...@@ -258,7 +258,7 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers) ...@@ -258,7 +258,7 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
"mmc%islot%i", c->mmc, 1); "mmc%islot%i", c->mmc, 1);
mmc->slots[0].name = hc->name; mmc->slots[0].name = hc->name;
mmc->nr_slots = 1; mmc->nr_slots = 1;
mmc->slots[0].wires = c->wires; mmc->slots[0].caps = c->caps;
mmc->slots[0].internal_clock = !c->ext_clock; mmc->slots[0].internal_clock = !c->ext_clock;
mmc->dma_mask = 0xffffffff; mmc->dma_mask = 0xffffffff;
...@@ -316,16 +316,20 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers) ...@@ -316,16 +316,20 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
} }
/* Omap3630 HSMMC1 supports only 4-bit */ /* Omap3630 HSMMC1 supports only 4-bit */
if (cpu_is_omap3630() && c->wires > 4) { if (cpu_is_omap3630() &&
c->wires = 4; (c->caps & MMC_CAP_8_BIT_DATA)) {
mmc->slots[0].wires = c->wires; c->caps &= ~MMC_CAP_8_BIT_DATA;
c->caps |= MMC_CAP_4_BIT_DATA;
mmc->slots[0].caps = c->caps;
} }
break; break;
case 2: case 2:
if (c->ext_clock) if (c->ext_clock)
c->transceiver = 1; c->transceiver = 1;
if (c->transceiver && c->wires > 4) if (c->transceiver && (c->caps & MMC_CAP_8_BIT_DATA)) {
c->wires = 4; c->caps &= ~MMC_CAP_8_BIT_DATA;
c->caps |= MMC_CAP_4_BIT_DATA;
}
/* FALLTHROUGH */ /* FALLTHROUGH */
case 3: case 3:
if (mmc->slots[0].features & HSMMC_HAS_PBIAS) { if (mmc->slots[0].features & HSMMC_HAS_PBIAS) {
......
...@@ -10,7 +10,8 @@ struct mmc_card; ...@@ -10,7 +10,8 @@ struct mmc_card;
struct omap2_hsmmc_info { struct omap2_hsmmc_info {
u8 mmc; /* controller 1/2/3 */ u8 mmc; /* controller 1/2/3 */
u8 wires; /* 1/4/8 wires */ u32 caps; /* 4/8 wires and any additional host
* capabilities OR'd (ref. linux/mmc/host.h) */
bool transceiver; /* MMC-2 option */ bool transceiver; /* MMC-2 option */
bool ext_clock; /* use external pin for input clock */ bool ext_clock; /* use external pin for input clock */
bool cover_only; /* No card detect - just cover switch */ bool cover_only; /* No card detect - just cover switch */
......
...@@ -23,29 +23,6 @@ ...@@ -23,29 +23,6 @@
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/mcbsp.h> #include <plat/mcbsp.h>
#include "mux.h"
static void omap2_mcbsp2_mux_setup(void)
{
omap_mux_init_signal("eac_ac_sclk.mcbsp2_clkx", OMAP_PULL_ENA);
omap_mux_init_signal("eac_ac_fs.mcbsp2_fsx", OMAP_PULL_ENA);
omap_mux_init_signal("eac_ac_din.mcbsp2_dr", OMAP_PULL_ENA);
omap_mux_init_signal("eac_ac_dout.mcbsp2_dx", OMAP_PULL_ENA);
omap_mux_init_gpio(117, OMAP_PULL_ENA);
/*
* TODO: Need to add MUX settings for OMAP 2430 SDP
*/
}
static void omap2_mcbsp_request(unsigned int id)
{
if (cpu_is_omap2420() && (id == OMAP_MCBSP2))
omap2_mcbsp2_mux_setup();
}
static struct omap_mcbsp_ops omap2_mcbsp_ops = {
.request = omap2_mcbsp_request,
};
#ifdef CONFIG_ARCH_OMAP2420 #ifdef CONFIG_ARCH_OMAP2420
static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = {
...@@ -55,7 +32,6 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { ...@@ -55,7 +32,6 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX,
.rx_irq = INT_24XX_MCBSP1_IRQ_RX, .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
.tx_irq = INT_24XX_MCBSP1_IRQ_TX, .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
.ops = &omap2_mcbsp_ops,
}, },
{ {
.phys_base = OMAP24XX_MCBSP2_BASE, .phys_base = OMAP24XX_MCBSP2_BASE,
...@@ -63,7 +39,6 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = { ...@@ -63,7 +39,6 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX,
.rx_irq = INT_24XX_MCBSP2_IRQ_RX, .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
.tx_irq = INT_24XX_MCBSP2_IRQ_TX, .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
.ops = &omap2_mcbsp_ops,
}, },
}; };
#define OMAP2420_MCBSP_PDATA_SZ ARRAY_SIZE(omap2420_mcbsp_pdata) #define OMAP2420_MCBSP_PDATA_SZ ARRAY_SIZE(omap2420_mcbsp_pdata)
...@@ -82,7 +57,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { ...@@ -82,7 +57,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX,
.rx_irq = INT_24XX_MCBSP1_IRQ_RX, .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
.tx_irq = INT_24XX_MCBSP1_IRQ_TX, .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
.ops = &omap2_mcbsp_ops,
}, },
{ {
.phys_base = OMAP24XX_MCBSP2_BASE, .phys_base = OMAP24XX_MCBSP2_BASE,
...@@ -90,7 +64,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { ...@@ -90,7 +64,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX,
.rx_irq = INT_24XX_MCBSP2_IRQ_RX, .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
.tx_irq = INT_24XX_MCBSP2_IRQ_TX, .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
.ops = &omap2_mcbsp_ops,
}, },
{ {
.phys_base = OMAP2430_MCBSP3_BASE, .phys_base = OMAP2430_MCBSP3_BASE,
...@@ -98,7 +71,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { ...@@ -98,7 +71,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP3_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP3_TX,
.rx_irq = INT_24XX_MCBSP3_IRQ_RX, .rx_irq = INT_24XX_MCBSP3_IRQ_RX,
.tx_irq = INT_24XX_MCBSP3_IRQ_TX, .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
.ops = &omap2_mcbsp_ops,
}, },
{ {
.phys_base = OMAP2430_MCBSP4_BASE, .phys_base = OMAP2430_MCBSP4_BASE,
...@@ -106,7 +78,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { ...@@ -106,7 +78,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP4_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP4_TX,
.rx_irq = INT_24XX_MCBSP4_IRQ_RX, .rx_irq = INT_24XX_MCBSP4_IRQ_RX,
.tx_irq = INT_24XX_MCBSP4_IRQ_TX, .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
.ops = &omap2_mcbsp_ops,
}, },
{ {
.phys_base = OMAP2430_MCBSP5_BASE, .phys_base = OMAP2430_MCBSP5_BASE,
...@@ -114,7 +85,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = { ...@@ -114,7 +85,6 @@ static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP5_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP5_TX,
.rx_irq = INT_24XX_MCBSP5_IRQ_RX, .rx_irq = INT_24XX_MCBSP5_IRQ_RX,
.tx_irq = INT_24XX_MCBSP5_IRQ_TX, .tx_irq = INT_24XX_MCBSP5_IRQ_TX,
.ops = &omap2_mcbsp_ops,
}, },
}; };
#define OMAP2430_MCBSP_PDATA_SZ ARRAY_SIZE(omap2430_mcbsp_pdata) #define OMAP2430_MCBSP_PDATA_SZ ARRAY_SIZE(omap2430_mcbsp_pdata)
...@@ -133,7 +103,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { ...@@ -133,7 +103,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP1_TX,
.rx_irq = INT_24XX_MCBSP1_IRQ_RX, .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
.tx_irq = INT_24XX_MCBSP1_IRQ_TX, .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
.ops = &omap2_mcbsp_ops,
.buffer_size = 0x80, /* The FIFO has 128 locations */ .buffer_size = 0x80, /* The FIFO has 128 locations */
}, },
{ {
...@@ -143,7 +112,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { ...@@ -143,7 +112,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP2_TX,
.rx_irq = INT_24XX_MCBSP2_IRQ_RX, .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
.tx_irq = INT_24XX_MCBSP2_IRQ_TX, .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
.ops = &omap2_mcbsp_ops,
.buffer_size = 0x500, /* The FIFO has 1024 + 256 locations */ .buffer_size = 0x500, /* The FIFO has 1024 + 256 locations */
}, },
{ {
...@@ -153,7 +121,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { ...@@ -153,7 +121,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP3_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP3_TX,
.rx_irq = INT_24XX_MCBSP3_IRQ_RX, .rx_irq = INT_24XX_MCBSP3_IRQ_RX,
.tx_irq = INT_24XX_MCBSP3_IRQ_TX, .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
.ops = &omap2_mcbsp_ops,
.buffer_size = 0x80, /* The FIFO has 128 locations */ .buffer_size = 0x80, /* The FIFO has 128 locations */
}, },
{ {
...@@ -162,7 +129,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { ...@@ -162,7 +129,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP4_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP4_TX,
.rx_irq = INT_24XX_MCBSP4_IRQ_RX, .rx_irq = INT_24XX_MCBSP4_IRQ_RX,
.tx_irq = INT_24XX_MCBSP4_IRQ_TX, .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
.ops = &omap2_mcbsp_ops,
.buffer_size = 0x80, /* The FIFO has 128 locations */ .buffer_size = 0x80, /* The FIFO has 128 locations */
}, },
{ {
...@@ -171,7 +137,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = { ...@@ -171,7 +137,6 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = {
.dma_tx_sync = OMAP24XX_DMA_MCBSP5_TX, .dma_tx_sync = OMAP24XX_DMA_MCBSP5_TX,
.rx_irq = INT_24XX_MCBSP5_IRQ_RX, .rx_irq = INT_24XX_MCBSP5_IRQ_RX,
.tx_irq = INT_24XX_MCBSP5_IRQ_TX, .tx_irq = INT_24XX_MCBSP5_IRQ_TX,
.ops = &omap2_mcbsp_ops,
.buffer_size = 0x80, /* The FIFO has 128 locations */ .buffer_size = 0x80, /* The FIFO has 128 locations */
}, },
}; };
...@@ -189,28 +154,24 @@ static struct omap_mcbsp_platform_data omap44xx_mcbsp_pdata[] = { ...@@ -189,28 +154,24 @@ static struct omap_mcbsp_platform_data omap44xx_mcbsp_pdata[] = {
.dma_rx_sync = OMAP44XX_DMA_MCBSP1_RX, .dma_rx_sync = OMAP44XX_DMA_MCBSP1_RX,
.dma_tx_sync = OMAP44XX_DMA_MCBSP1_TX, .dma_tx_sync = OMAP44XX_DMA_MCBSP1_TX,
.tx_irq = OMAP44XX_IRQ_MCBSP1, .tx_irq = OMAP44XX_IRQ_MCBSP1,
.ops = &omap2_mcbsp_ops,
}, },
{ {
.phys_base = OMAP44XX_MCBSP2_BASE, .phys_base = OMAP44XX_MCBSP2_BASE,
.dma_rx_sync = OMAP44XX_DMA_MCBSP2_RX, .dma_rx_sync = OMAP44XX_DMA_MCBSP2_RX,
.dma_tx_sync = OMAP44XX_DMA_MCBSP2_TX, .dma_tx_sync = OMAP44XX_DMA_MCBSP2_TX,
.tx_irq = OMAP44XX_IRQ_MCBSP2, .tx_irq = OMAP44XX_IRQ_MCBSP2,
.ops = &omap2_mcbsp_ops,
}, },
{ {
.phys_base = OMAP44XX_MCBSP3_BASE, .phys_base = OMAP44XX_MCBSP3_BASE,
.dma_rx_sync = OMAP44XX_DMA_MCBSP3_RX, .dma_rx_sync = OMAP44XX_DMA_MCBSP3_RX,
.dma_tx_sync = OMAP44XX_DMA_MCBSP3_TX, .dma_tx_sync = OMAP44XX_DMA_MCBSP3_TX,
.tx_irq = OMAP44XX_IRQ_MCBSP3, .tx_irq = OMAP44XX_IRQ_MCBSP3,
.ops = &omap2_mcbsp_ops,
}, },
{ {
.phys_base = OMAP44XX_MCBSP4_BASE, .phys_base = OMAP44XX_MCBSP4_BASE,
.dma_rx_sync = OMAP44XX_DMA_MCBSP4_RX, .dma_rx_sync = OMAP44XX_DMA_MCBSP4_RX,
.dma_tx_sync = OMAP44XX_DMA_MCBSP4_TX, .dma_tx_sync = OMAP44XX_DMA_MCBSP4_TX,
.tx_irq = OMAP44XX_IRQ_MCBSP4, .tx_irq = OMAP44XX_IRQ_MCBSP4,
.ops = &omap2_mcbsp_ops,
}, },
}; };
#define OMAP44XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap44xx_mcbsp_pdata) #define OMAP44XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap44xx_mcbsp_pdata)
......
...@@ -87,7 +87,7 @@ static char *omap_mux_options; ...@@ -87,7 +87,7 @@ static char *omap_mux_options;
int __init omap_mux_init_gpio(int gpio, int val) int __init omap_mux_init_gpio(int gpio, int val)
{ {
struct omap_mux_entry *e; struct omap_mux_entry *e;
struct omap_mux *gpio_mux; struct omap_mux *gpio_mux = NULL;
u16 old_mode; u16 old_mode;
u16 mux_mode; u16 mux_mode;
int found = 0; int found = 0;
......
...@@ -2084,7 +2084,7 @@ void omap2_gpio_prepare_for_idle(int power_state) ...@@ -2084,7 +2084,7 @@ void omap2_gpio_prepare_for_idle(int power_state)
for (i = min; i < gpio_bank_count; i++) { for (i = min; i < gpio_bank_count; i++) {
struct gpio_bank *bank = &gpio_bank[i]; struct gpio_bank *bank = &gpio_bank[i];
u32 l1, l2; u32 l1 = 0, l2 = 0;
int j; int j;
for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++)
...@@ -2152,7 +2152,7 @@ void omap2_gpio_resume_after_idle(void) ...@@ -2152,7 +2152,7 @@ void omap2_gpio_resume_after_idle(void)
min = 1; min = 1;
for (i = min; i < gpio_bank_count; i++) { for (i = min; i < gpio_bank_count; i++) {
struct gpio_bank *bank = &gpio_bank[i]; struct gpio_bank *bank = &gpio_bank[i];
u32 l, gen, gen0, gen1; u32 l = 0, gen, gen0, gen1;
int j; int j;
for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++)
......
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
* 02110-1301 USA * 02110-1301 USA
* *
*/ */
#ifndef __ASM__ARCH_OMAP_I2C_H
#define __ASM__ARCH_OMAP_I2C_H
#include <linux/i2c.h> #include <linux/i2c.h>
...@@ -36,3 +38,5 @@ static inline int omap_register_i2c_bus(int bus_id, u32 clkrate, ...@@ -36,3 +38,5 @@ static inline int omap_register_i2c_bus(int bus_id, u32 clkrate,
void __init omap1_i2c_mux_pins(int bus_id); void __init omap1_i2c_mux_pins(int bus_id);
void __init omap2_i2c_mux_pins(int bus_id); void __init omap2_i2c_mux_pins(int bus_id);
#endif /* __ASM__ARCH_OMAP_I2C_H */
...@@ -73,10 +73,9 @@ struct omap_mmc_platform_data { ...@@ -73,10 +73,9 @@ struct omap_mmc_platform_data {
struct omap_mmc_slot_data { struct omap_mmc_slot_data {
/* 4 wire signaling is optional, and is used for SD/SDIO/HSMMC; /* 4/8 wires and any additional host capabilities
* 8 wire signaling is also optional, and is used with HSMMC * need to OR'd all capabilities (ref. linux/mmc/host.h) */
*/ u32 caps;
u8 wires;
/* /*
* nomux means "standard" muxing is wrong on this board, and * nomux means "standard" muxing is wrong on this board, and
......
...@@ -105,7 +105,7 @@ static inline void omap1_usb_init(struct omap_usb_config *pdata) ...@@ -105,7 +105,7 @@ static inline void omap1_usb_init(struct omap_usb_config *pdata)
#if defined(CONFIG_ARCH_OMAP_OTG) || defined(CONFIG_ARCH_OMAP_OTG_MODULE) #if defined(CONFIG_ARCH_OMAP_OTG) || defined(CONFIG_ARCH_OMAP_OTG_MODULE)
void omap2_usbfs_init(struct omap_usb_config *pdata); void omap2_usbfs_init(struct omap_usb_config *pdata);
#else #else
static inline omap2_usbfs_init(struct omap_usb_config *pdata) static inline void omap2_usbfs_init(struct omap_usb_config *pdata)
{ {
} }
#endif #endif
......
...@@ -878,7 +878,7 @@ EXPORT_SYMBOL(omap_mcbsp_free); ...@@ -878,7 +878,7 @@ EXPORT_SYMBOL(omap_mcbsp_free);
void omap_mcbsp_start(unsigned int id, int tx, int rx) void omap_mcbsp_start(unsigned int id, int tx, int rx)
{ {
struct omap_mcbsp *mcbsp; struct omap_mcbsp *mcbsp;
int idle; int enable_srg = 0;
u16 w; u16 w;
if (!omap_mcbsp_check_valid_id(id)) { if (!omap_mcbsp_check_valid_id(id)) {
...@@ -893,10 +893,13 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx) ...@@ -893,10 +893,13 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx)
mcbsp->rx_word_length = (MCBSP_READ_CACHE(mcbsp, RCR1) >> 5) & 0x7; mcbsp->rx_word_length = (MCBSP_READ_CACHE(mcbsp, RCR1) >> 5) & 0x7;
mcbsp->tx_word_length = (MCBSP_READ_CACHE(mcbsp, XCR1) >> 5) & 0x7; mcbsp->tx_word_length = (MCBSP_READ_CACHE(mcbsp, XCR1) >> 5) & 0x7;
idle = !((MCBSP_READ_CACHE(mcbsp, SPCR2) | /* Only enable SRG, if McBSP is master */
w = MCBSP_READ_CACHE(mcbsp, PCR0);
if (w & (FSXM | FSRM | CLKXM | CLKRM))
enable_srg = !((MCBSP_READ_CACHE(mcbsp, SPCR2) |
MCBSP_READ_CACHE(mcbsp, SPCR1)) & 1); MCBSP_READ_CACHE(mcbsp, SPCR1)) & 1);
if (idle) { if (enable_srg) {
/* Start the sample generator */ /* Start the sample generator */
w = MCBSP_READ_CACHE(mcbsp, SPCR2); w = MCBSP_READ_CACHE(mcbsp, SPCR2);
MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 6)); MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 6));
...@@ -919,7 +922,7 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx) ...@@ -919,7 +922,7 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx)
*/ */
udelay(500); udelay(500);
if (idle) { if (enable_srg) {
/* Start frame sync */ /* Start frame sync */
w = MCBSP_READ_CACHE(mcbsp, SPCR2); w = MCBSP_READ_CACHE(mcbsp, SPCR2);
MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 7)); MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 7));
......
...@@ -1317,7 +1317,7 @@ static int __init mmc_omap_new_slot(struct mmc_omap_host *host, int id) ...@@ -1317,7 +1317,7 @@ static int __init mmc_omap_new_slot(struct mmc_omap_host *host, int id)
host->slots[id] = slot; host->slots[id] = slot;
mmc->caps = 0; mmc->caps = 0;
if (host->pdata->slots[id].wires >= 4) if (host->pdata->slots[id].caps & MMC_CAP_8_BIT_DATA)
mmc->caps |= MMC_CAP_4_BIT_DATA; mmc->caps |= MMC_CAP_4_BIT_DATA;
mmc->ops = &mmc_omap_ops; mmc->ops = &mmc_omap_ops;
......
...@@ -2116,23 +2116,9 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) ...@@ -2116,23 +2116,9 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev)
mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED |
MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_ERASE; MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_ERASE;
switch (mmc_slot(host).wires) { mmc->caps |= mmc_slot(host).caps;
case 8: if (mmc->caps & MMC_CAP_8_BIT_DATA)
mmc->caps |= MMC_CAP_8_BIT_DATA;
/* Fall through */
case 4:
mmc->caps |= MMC_CAP_4_BIT_DATA; mmc->caps |= MMC_CAP_4_BIT_DATA;
break;
case 1:
/* Nothing to crib here */
case 0:
/* Assuming nothing was given by board, Core use's 1-Bit */
break;
default:
/* Completely unexpected.. Core goes with 1-Bit Width */
dev_crit(mmc_dev(host->mmc), "Invalid width %d\n used!"
"using 1 instead\n", mmc_slot(host).wires);
}
if (mmc_slot(host).nonremovable) if (mmc_slot(host).nonremovable)
mmc->caps |= MMC_CAP_NONREMOVABLE; mmc->caps |= MMC_CAP_NONREMOVABLE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment