Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 8 Dec 2009 16:15:29 +0000 (08:15 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 8 Dec 2009 16:15:29 +0000 (08:15 -0800)
* 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (149 commits)
  arm: omap: Add omap3_defconfig
  AM35xx: Defconfig for AM3517 EVM board
  AM35xx: Add support for AM3517 EVM board
  omap: 3630sdp: defconfig creation
  omap: 3630sdp: introduce 3630 sdp board support
  omap3: Add defconfig for IGEP v2 board
  omap3: Add minimal IGEP v2 support
  omap3: Add CompuLab CM-T35 defconfig
  omap3: Add CompuLab CM-T35 board support
  omap3: rx51: Add wl1251 wlan driver support
  omap3: rx51: Add SDRAM init
  omap1: Add default kernel configuration for Herald
  omap1: Add board support and LCD for HTC Herald
  omap: zoom2: update defconfig for LL_DEBUG_NONE
  omap: zoom3: defconfig creation
  omap3: zoom: Introduce zoom3 board support
  omap3: zoom: Drop i2c-1 speed to 2400
  omap3: zoom: rename zoom2 name to generic zoom
  omap3: zoom: split board file for software reuse
  omap3evm: MIgrate to smsc911x ethernet driver
  ...

Fix trivial conflict (two unrelated config options added next to each
other) in arch/arm/mach-omap2/Makefile

1  2 
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/board-zoom2.c
arch/arm/mach-omap2/clock34xx.c
arch/arm/plat-omap/include/plat/memory.h
drivers/mfd/twl4030-core.c
sound/soc/omap/ams-delta.c
sound/soc/omap/omap-mcbsp.c
sound/soc/omap/omap3evm.c
sound/soc/omap/overo.c

index 6f1bbbc4d15fe159621010a8b3d5b2426daeeac0,034d9908228ca5e30fdd72b77fee1e1f0a237f36..7309aab305a98a85d535a6f8ec8791ecac334799
@@@ -65,6 -65,10 +65,10 @@@ config MACH_OMAP3EV
        bool "OMAP 3530 EVM board"
        depends on ARCH_OMAP3 && ARCH_OMAP34XX
  
+ config MACH_OMAP3517EVM
+       bool "OMAP3517/ AM3517 EVM board"
+       depends on ARCH_OMAP3 && ARCH_OMAP34XX
  config MACH_OMAP3_PANDORA
        bool "OMAP3 Pandora"
        depends on ARCH_OMAP3 && ARCH_OMAP34XX
@@@ -97,14 -101,22 +101,30 @@@ config MACH_OMAP_ZOOM
        bool "OMAP3 Zoom2 board"
        depends on ARCH_OMAP3 && ARCH_OMAP34XX
  
+ config MACH_OMAP_ZOOM3
+       bool "OMAP3630 Zoom3 board"
+       depends on ARCH_OMAP3 && ARCH_OMAP34XX
+ config MACH_CM_T35
+       bool "CompuLab CM-T35 module"
+       depends on ARCH_OMAP3 && ARCH_OMAP34XX
+ config MACH_IGEP0020
+       bool "IGEP0020"
+       depends on ARCH_OMAP3 && ARCH_OMAP34XX
+ config MACH_OMAP_3630SDP
+       bool "OMAP3630 SDP board"
+       depends on ARCH_OMAP3 && ARCH_OMAP34XX
  config MACH_OMAP_4430SDP
        bool "OMAP 4430 SDP board"
        depends on ARCH_OMAP4
 +
 +config OMAP3_EMU
 +      bool "OMAP3 debugging peripherals"
 +      depends on ARCH_OMAP3
 +      select OC_ETM
 +      help
 +        Say Y here to enable debugging hardware of omap3
 +
index e141cabcfcce7b3e63072cf227db6dc34eb68228,59b0ccce30992a54f73619a5675333c75a55fa29..32548a4510c51b89e3fc3637fcf306dcc712a77d
@@@ -31,7 -31,7 +31,7 @@@ obj-$(CONFIG_ARCH_OMAP2)              += sdrc2xxx.
  ifeq ($(CONFIG_PM),y)
  obj-$(CONFIG_ARCH_OMAP2)              += pm24xx.o
  obj-$(CONFIG_ARCH_OMAP24XX)           += sleep24xx.o
- obj-$(CONFIG_ARCH_OMAP3)              += pm34xx.o sleep34xx.o
+ obj-$(CONFIG_ARCH_OMAP3)              += pm34xx.o sleep34xx.o cpuidle34xx.o
  obj-$(CONFIG_PM_DEBUG)                        += pm-debug.o
  endif
  
@@@ -44,9 -44,9 +44,12 @@@ obj-$(CONFIG_ARCH_OMAP4)             += cm4xxx.
  obj-$(CONFIG_ARCH_OMAP2)              += clock24xx.o
  obj-$(CONFIG_ARCH_OMAP3)              += clock34xx.o
  
 +# EMU peripherals
 +obj-$(CONFIG_OMAP3_EMU)               += emu.o
 +
+ obj-$(CONFIG_OMAP_MBOX_FWK)           += mailbox_mach.o
+ mailbox_mach-objs                     := mailbox.o
  iommu-y                                       += iommu2.o
  iommu-$(CONFIG_ARCH_OMAP3)            += omap3-iommu.o
  
@@@ -72,17 -72,33 +75,33 @@@ obj-$(CONFIG_MACH_OMAP_3430SDP)            += boa
                                           mmc-twl4030.o
  obj-$(CONFIG_MACH_NOKIA_N8X0)         += board-n8x0.o
  obj-$(CONFIG_MACH_NOKIA_RX51)         += board-rx51.o \
+                                          board-rx51-sdram.o \
                                           board-rx51-peripherals.o \
                                           mmc-twl4030.o
  obj-$(CONFIG_MACH_OMAP_ZOOM2)         += board-zoom2.o \
+                                          board-zoom-peripherals.o \
+                                          mmc-twl4030.o \
+                                          board-zoom-debugboard.o
+ obj-$(CONFIG_MACH_OMAP_ZOOM3)         += board-zoom3.o \
+                                          board-zoom-peripherals.o \
                                           mmc-twl4030.o \
                                           board-zoom-debugboard.o
+ obj-$(CONFIG_MACH_OMAP_3630SDP)               += board-3630sdp.o \
+                                          board-zoom-peripherals.o \
+                                          mmc-twl4030.o
+ obj-$(CONFIG_MACH_CM_T35)             += board-cm-t35.o \
+                                          mmc-twl4030.o
+ obj-$(CONFIG_MACH_IGEP0020)           += board-igep0020.o \
+                                          mmc-twl4030.o
  
  obj-$(CONFIG_MACH_OMAP_4430SDP)               += board-4430sdp.o
  
+ obj-$(CONFIG_MACH_OMAP3517EVM)     += board-am3517evm.o
  # Platform specific device init code
  obj-y                                 += usb-musb.o
  obj-$(CONFIG_MACH_OMAP2_TUSB6010)     += usb-tusb6010.o
+ obj-y                                 += usb-ehci.o
  
  onenand-$(CONFIG_MTD_ONENAND_OMAP2)   := gpmc-onenand.o
  obj-y                                 += $(onenand-m) $(onenand-y)
index 51df584728f6c37b2f991013a3e1c970acdeff3c,2f980e36ebfd568cb08591d32b53b17cb3c21403..d94d047c7dce5b740debe34dcd5643fa0fed8c62
  #include <linux/init.h>
  #include <linux/platform_device.h>
  #include <linux/input.h>
- #include <linux/input/matrix_keypad.h>
  #include <linux/gpio.h>
- #include <linux/i2c/twl4030.h>
- #include <linux/regulator/machine.h>
  
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
  
- #include <mach/common.h>
- #include <mach/usb.h>
+ #include <plat/common.h>
+ #include <plat/board.h>
  
- #include "mmc-twl4030.h"
- #include "sdram-micron-mt46h32m32lf-6.h"
- /* Zoom2 has Qwerty keyboard*/
- static int board_keymap[] = {
-       KEY(0, 0, KEY_E),
-       KEY(0, 1, KEY_R),
-       KEY(0, 2, KEY_T),
-       KEY(0, 3, KEY_HOME),
-       KEY(0, 6, KEY_I),
-       KEY(0, 7, KEY_LEFTSHIFT),
-       KEY(1, 0, KEY_D),
-       KEY(1, 1, KEY_F),
-       KEY(1, 2, KEY_G),
-       KEY(1, 3, KEY_SEND),
-       KEY(1, 6, KEY_K),
-       KEY(1, 7, KEY_ENTER),
-       KEY(2, 0, KEY_X),
-       KEY(2, 1, KEY_C),
-       KEY(2, 2, KEY_V),
-       KEY(2, 3, KEY_END),
-       KEY(2, 6, KEY_DOT),
-       KEY(2, 7, KEY_CAPSLOCK),
-       KEY(3, 0, KEY_Z),
-       KEY(3, 1, KEY_KPPLUS),
-       KEY(3, 2, KEY_B),
-       KEY(3, 3, KEY_F1),
-       KEY(3, 6, KEY_O),
-       KEY(3, 7, KEY_SPACE),
-       KEY(4, 0, KEY_W),
-       KEY(4, 1, KEY_Y),
-       KEY(4, 2, KEY_U),
-       KEY(4, 3, KEY_F2),
-       KEY(4, 4, KEY_VOLUMEUP),
-       KEY(4, 6, KEY_L),
-       KEY(4, 7, KEY_LEFT),
-       KEY(5, 0, KEY_S),
-       KEY(5, 1, KEY_H),
-       KEY(5, 2, KEY_J),
-       KEY(5, 3, KEY_F3),
-       KEY(5, 5, KEY_VOLUMEDOWN),
-       KEY(5, 6, KEY_M),
-       KEY(5, 7, KEY_ENTER),
-       KEY(6, 0, KEY_Q),
-       KEY(6, 1, KEY_A),
-       KEY(6, 2, KEY_N),
-       KEY(6, 3, KEY_BACKSPACE),
-       KEY(6, 6, KEY_P),
-       KEY(6, 7, KEY_SELECT),
-       KEY(7, 0, KEY_PROG1),   /*MACRO 1 <User defined> */
-       KEY(7, 1, KEY_PROG2),   /*MACRO 2 <User defined> */
-       KEY(7, 2, KEY_PROG3),   /*MACRO 3 <User defined> */
-       KEY(7, 3, KEY_PROG4),   /*MACRO 4 <User defined> */
-       KEY(7, 5, KEY_RIGHT),
-       KEY(7, 6, KEY_UP),
-       KEY(7, 7, KEY_DOWN)
- };
- static struct matrix_keymap_data board_map_data = {
-       .keymap                 = board_keymap,
-       .keymap_size            = ARRAY_SIZE(board_keymap),
- };
- static struct twl4030_keypad_data zoom2_kp_twl4030_data = {
-       .keymap_data    = &board_map_data,
-       .rows           = 8,
-       .cols           = 8,
-       .rep            = 1,
- };
- static struct omap_board_config_kernel zoom2_config[] __initdata = {
- };
- static struct regulator_consumer_supply zoom2_vmmc1_supply = {
-       .supply         = "vmmc",
- };
- static struct regulator_consumer_supply zoom2_vsim_supply = {
-       .supply         = "vmmc_aux",
- };
- static struct regulator_consumer_supply zoom2_vmmc2_supply = {
-       .supply         = "vmmc",
- };
- /* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */
- static struct regulator_init_data zoom2_vmmc1 = {
-       .constraints = {
-               .min_uV                 = 1850000,
-               .max_uV                 = 3150000,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
-                                       | REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = 1,
-       .consumer_supplies      = &zoom2_vmmc1_supply,
- };
- /* VMMC2 for MMC2 card */
- static struct regulator_init_data zoom2_vmmc2 = {
-       .constraints = {
-               .min_uV                 = 1850000,
-               .max_uV                 = 1850000,
-               .apply_uV               = true,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = 1,
-       .consumer_supplies      = &zoom2_vmmc2_supply,
- };
- /* VSIM for OMAP VDD_MMC1A (i/o for DAT4..DAT7) */
- static struct regulator_init_data zoom2_vsim = {
-       .constraints = {
-               .min_uV                 = 1800000,
-               .max_uV                 = 3000000,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
-                                       | REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = 1,
-       .consumer_supplies      = &zoom2_vsim_supply,
- };
+ #include <mach/board-zoom.h>
  
- static struct twl4030_hsmmc_info mmc[] __initdata = {
-       {
-               .mmc            = 1,
-               .wires          = 4,
-               .gpio_wp        = -EINVAL,
-       },
-       {
-               .mmc            = 2,
-               .wires          = 4,
-               .gpio_wp        = -EINVAL,
-       },
-       {}      /* Terminator */
- };
- static int zoom2_twl_gpio_setup(struct device *dev,
-               unsigned gpio, unsigned ngpio)
- {
-       /* gpio + 0 is "mmc0_cd" (input/IRQ),
-        * gpio + 1 is "mmc1_cd" (input/IRQ)
-        */
-       mmc[0].gpio_cd = gpio + 0;
-       mmc[1].gpio_cd = gpio + 1;
-       twl4030_mmc_init(mmc);
-       /* link regulators to MMC adapters ... we "know" the
-        * regulators will be set up only *after* we return.
-       */
-       zoom2_vmmc1_supply.dev = mmc[0].dev;
-       zoom2_vsim_supply.dev = mmc[0].dev;
-       zoom2_vmmc2_supply.dev = mmc[1].dev;
-       return 0;
- }
- static int zoom2_batt_table[] = {
- /* 0 C*/
- 30800, 29500, 28300, 27100,
- 26000, 24900, 23900, 22900, 22000, 21100, 20300, 19400, 18700, 17900,
- 17200, 16500, 15900, 15300, 14700, 14100, 13600, 13100, 12600, 12100,
- 11600, 11200, 10800, 10400, 10000, 9630,  9280,  8950,  8620,  8310,
- 8020,  7730,  7460,  7200,  6950,  6710,  6470,  6250,  6040,  5830,
- 5640,  5450,  5260,  5090,  4920,  4760,  4600,  4450,  4310,  4170,
- 4040,  3910,  3790,  3670,  3550
- };
- static struct twl4030_bci_platform_data zoom2_bci_data = {
-       .battery_tmp_tbl        = zoom2_batt_table,
-       .tblsize                = ARRAY_SIZE(zoom2_batt_table),
- };
- static struct twl4030_usb_data zoom2_usb_data = {
-       .usb_mode       = T2_USB_MODE_ULPI,
- };
+ #include "sdram-micron-mt46h32m32lf-6.h"
  
  static void __init omap_zoom2_init_irq(void)
  {
-       omap_board_config = zoom2_config;
-       omap_board_config_size = ARRAY_SIZE(zoom2_config);
        omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
                                 mt46h32m32lf6_sdrc_params);
        omap_init_irq();
        omap_gpio_init();
  }
  
- static struct twl4030_gpio_platform_data zoom2_gpio_data = {
-       .gpio_base      = OMAP_MAX_GPIO_LINES,
-       .irq_base       = TWL4030_GPIO_IRQ_BASE,
-       .irq_end        = TWL4030_GPIO_IRQ_END,
-       .setup          = zoom2_twl_gpio_setup,
- };
+ /* REVISIT: These audio entries can be removed once MFD code is merged */
+ #if 0
  
  static struct twl4030_madc_platform_data zoom2_madc_data = {
        .irq_line       = 1,
  };
  
 +static struct twl4030_codec_audio_data zoom2_audio_data = {
 +      .audio_mclk = 26000000,
 +};
 +
 +static struct twl4030_codec_data zoom2_codec_data = {
 +      .audio_mclk = 26000000,
 +      .audio = &zoom2_audio_data,
 +};
 +
  static struct twl4030_platform_data zoom2_twldata = {
        .irq_base       = TWL4030_IRQ_BASE,
        .irq_end        = TWL4030_IRQ_END,
        .usb            = &zoom2_usb_data,
        .gpio           = &zoom2_gpio_data,
        .keypad         = &zoom2_kp_twl4030_data,
 +      .codec          = &zoom2_codec_data,
        .vmmc1          = &zoom2_vmmc1,
        .vmmc2          = &zoom2_vmmc2,
        .vsim           = &zoom2_vsim,
  
  };
  
- static struct i2c_board_info __initdata zoom2_i2c_boardinfo[] = {
-       {
-               I2C_BOARD_INFO("twl4030", 0x48),
-               .flags          = I2C_CLIENT_WAKE,
-               .irq            = INT_34XX_SYS_NIRQ,
-               .platform_data  = &zoom2_twldata,
-       },
- };
- static int __init omap_i2c_init(void)
- {
-       omap_register_i2c_bus(1, 2600, zoom2_i2c_boardinfo,
-                       ARRAY_SIZE(zoom2_i2c_boardinfo));
-       omap_register_i2c_bus(2, 400, NULL, 0);
-       omap_register_i2c_bus(3, 400, NULL, 0);
-       return 0;
- }
- extern int __init omap_zoom2_debugboard_init(void);
+ #endif
  
  static void __init omap_zoom2_init(void)
  {
-       omap_i2c_init();
-       omap_serial_init();
-       omap_zoom2_debugboard_init();
-       usb_musb_init();
+       zoom_peripherals_init();
+       zoom_debugboard_init();
  }
  
  static void __init omap_zoom2_map_io(void)
  
  MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
        .phys_io        = 0x48000000,
-       .io_pg_offst    = ((0xd8000000) >> 18) & 0xfffc,
+       .io_pg_offst    = ((0xfa000000) >> 18) & 0xfffc,
        .boot_params    = 0x80000100,
        .map_io         = omap_zoom2_map_io,
        .init_irq       = omap_zoom2_init_irq,
index 066e88a1882411e782bd5c8a0de51de9f3033421,225c1a7385eefe10d926a8d9140f209140273725..9f2feaf798658933951a723232a005466e6599bc
  #include <linux/limits.h>
  #include <linux/bitops.h>
  
- #include <mach/cpu.h>
- #include <mach/clock.h>
- #include <mach/sram.h>
+ #include <plat/cpu.h>
+ #include <plat/clock.h>
+ #include <plat/sram.h>
  #include <asm/div64.h>
  #include <asm/clkdev.h>
  
- #include <mach/sdrc.h>
+ #include <plat/sdrc.h>
  #include "clock.h"
  #include "prm.h"
  #include "prm-regbits-34xx.h"
@@@ -119,7 -119,7 +119,7 @@@ static struct omap_clk omap34xx_clks[] 
        CLK(NULL,       "dpll3_m2x2_ck", &dpll3_m2x2_ck, CK_343X),
        CLK(NULL,       "dpll3_m3_ck",  &dpll3_m3_ck,   CK_343X),
        CLK(NULL,       "dpll3_m3x2_ck", &dpll3_m3x2_ck, CK_343X),
 -      CLK(NULL,       "emu_core_alwon_ck", &emu_core_alwon_ck, CK_343X),
 +      CLK("etb",      "emu_core_alwon_ck", &emu_core_alwon_ck, CK_343X),
        CLK(NULL,       "dpll4_ck",     &dpll4_ck,      CK_343X),
        CLK(NULL,       "dpll4_x2_ck",  &dpll4_x2_ck,   CK_343X),
        CLK(NULL,       "omap_96m_alwon_fck", &omap_96m_alwon_fck, CK_343X),
        CLK(NULL,       "dpll4_m5x2_ck", &dpll4_m5x2_ck, CK_343X),
        CLK(NULL,       "dpll4_m6_ck",  &dpll4_m6_ck,   CK_343X),
        CLK(NULL,       "dpll4_m6x2_ck", &dpll4_m6x2_ck, CK_343X),
 -      CLK(NULL,       "emu_per_alwon_ck", &emu_per_alwon_ck, CK_343X),
 +      CLK("etb",      "emu_per_alwon_ck", &emu_per_alwon_ck, CK_343X),
        CLK(NULL,       "dpll5_ck",     &dpll5_ck,      CK_3430ES2),
        CLK(NULL,       "dpll5_m2_ck",  &dpll5_m2_ck,   CK_3430ES2),
        CLK(NULL,       "clkout2_src_ck", &clkout2_src_ck, CK_343X),
        CLK(NULL,       "dpll1_fck",    &dpll1_fck,     CK_343X),
        CLK(NULL,       "mpu_ck",       &mpu_ck,        CK_343X),
        CLK(NULL,       "arm_fck",      &arm_fck,       CK_343X),
 -      CLK(NULL,       "emu_mpu_alwon_ck", &emu_mpu_alwon_ck, CK_343X),
 +      CLK("etb",      "emu_mpu_alwon_ck", &emu_mpu_alwon_ck, CK_343X),
        CLK(NULL,       "dpll2_fck",    &dpll2_fck,     CK_343X),
        CLK(NULL,       "iva2_ck",      &iva2_ck,       CK_343X),
        CLK(NULL,       "l3_ick",       &l3_ick,        CK_343X),
        CLK("omap-mcbsp.2", "fck",      &mcbsp2_fck,    CK_343X),
        CLK("omap-mcbsp.3", "fck",      &mcbsp3_fck,    CK_343X),
        CLK("omap-mcbsp.4", "fck",      &mcbsp4_fck,    CK_343X),
 -      CLK(NULL,       "emu_src_ck",   &emu_src_ck,    CK_343X),
 +      CLK("etb",      "emu_src_ck",   &emu_src_ck,    CK_343X),
        CLK(NULL,       "pclk_fck",     &pclk_fck,      CK_343X),
        CLK(NULL,       "pclkx2_fck",   &pclkx2_fck,    CK_343X),
        CLK(NULL,       "atclk_fck",    &atclk_fck,     CK_343X),
index 0000000000000000000000000000000000000000,9ad41dc484c17ff2da3449d71df2ad7a925b4701..3325f7b49eaa23766d3ea9208230b50972af7226
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,96 +1,103 @@@
+ /*
+  * arch/arm/plat-omap/include/mach/memory.h
+  *
+  * Memory map for OMAP-1510 and 1610
+  *
+  * Copyright (C) 2000 RidgeRun, Inc.
+  * Author: Greg Lonnon <glonnon@ridgerun.com>
+  *
+  * This file was derived from arch/arm/mach-intergrator/include/mach/memory.h
+  * Copyright (C) 1999 ARM Limited
+  *
+  * This program is free software; you can redistribute it and/or modify it
+  * under the terms of the GNU General Public License as published by the
+  * Free Software Foundation; either version 2 of the License, or (at your
+  * option) any later version.
+  *
+  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  * You should have received a copy of the GNU General Public License along
+  * with this program; if not, write to the Free Software Foundation, Inc.,
+  * 675 Mass Ave, Cambridge, MA 02139, USA.
+  */
+ #ifndef __ASM_ARCH_MEMORY_H
+ #define __ASM_ARCH_MEMORY_H
+ /*
+  * Physical DRAM offset.
+  */
+ #if defined(CONFIG_ARCH_OMAP1)
+ #define PHYS_OFFSET           UL(0x10000000)
+ #elif defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) || \
+                       defined(CONFIG_ARCH_OMAP4)
+ #define PHYS_OFFSET           UL(0x80000000)
+ #endif
+ /*
+  * Bus address is physical address, except for OMAP-1510 Local Bus.
+  * OMAP-1510 bus address is translated into a Local Bus address if the
+  * OMAP bus type is lbus. We do the address translation based on the
+  * device overriding the defaults used in the dma-mapping API.
+  * Note that the is_lbus_device() test is not very efficient on 1510
+  * because of the strncmp().
+  */
+ #ifdef CONFIG_ARCH_OMAP15XX
+ /*
+  * OMAP-1510 Local Bus address offset
+  */
+ #define OMAP1510_LB_OFFSET    UL(0x30000000)
+ #define virt_to_lbus(x)               ((x) - PAGE_OFFSET + OMAP1510_LB_OFFSET)
+ #define lbus_to_virt(x)               ((x) - OMAP1510_LB_OFFSET + PAGE_OFFSET)
+ #define is_lbus_device(dev)   (cpu_is_omap15xx() && dev && (strncmp(dev_name(dev), "ohci", 4) == 0))
+ #define __arch_page_to_dma(dev, page) \
+       ({ dma_addr_t __dma = page_to_phys(page); \
+          if (is_lbus_device(dev)) \
+               __dma = __dma - PHYS_OFFSET + OMAP1510_LB_OFFSET; \
+          __dma; })
++#define __arch_dma_to_page(dev, addr) \
++      ({ dma_addr_t __dma = addr;                             \
++         if (is_lbus_device(dev))                             \
++              __dma += PHYS_OFFSET - OMAP1510_LB_OFFSET;      \
++         phys_to_page(__dma);                                 \
++      })
++
+ #define __arch_dma_to_virt(dev, addr) ({ (void *) (is_lbus_device(dev) ? \
+                                               lbus_to_virt(addr) : \
+                                               __phys_to_virt(addr)); })
+ #define __arch_virt_to_dma(dev, addr) ({ unsigned long __addr = (unsigned long)(addr); \
+                                          (dma_addr_t) (is_lbus_device(dev) ? \
+                                               virt_to_lbus(__addr) : \
+                                               __virt_to_phys(__addr)); })
+ #endif        /* CONFIG_ARCH_OMAP15XX */
+ /* Override the ARM default */
+ #ifdef CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE
+ #if (CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE == 0)
+ #undef CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE
+ #define CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE 2
+ #endif
+ #define CONSISTENT_DMA_SIZE \
+       (((CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE + 1) & ~1) * 1024 * 1024)
+ #endif
+ #endif
index 98b984e191d5281c60377c4cc8321e898542fcae,cf462b90dee2833b42064a7bf9dc3506d7612a98..40449cdf09db15acb93a3a6c11cfe468da4db12c
@@@ -39,7 -39,7 +39,7 @@@
  #include <linux/i2c/twl4030.h>
  
  #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
- #include <mach/cpu.h>
+ #include <plat/cpu.h>
  #endif
  
  /*
@@@ -777,7 -777,7 +777,7 @@@ static int twl4030_remove(struct i2c_cl
  }
  
  /* NOTE:  this driver only handles a single twl4030/tps659x0 chip */
 -static int
 +static int __init
  twl4030_probe(struct i2c_client *client, const struct i2c_device_id *id)
  {
        int                             status;
index ae0fc9b135d40aefe8f0ade0fba72522a92c2851,3f1a6c1a0355564492ae1e3691c0f6ff0e72a006..b0f618e4484068e6c62e7b9515b6af5d6dfa021e
@@@ -31,8 -31,8 +31,8 @@@
  
  #include <asm/mach-types.h>
  
- #include <mach/board-ams-delta.h>
- #include <mach/mcbsp.h>
+ #include <plat/board-ams-delta.h>
+ #include <plat/mcbsp.h>
  
  #include "omap-mcbsp.h"
  #include "omap-pcm.h"
@@@ -40,7 -40,7 +40,7 @@@
  
  
  /* Board specific DAPM widgets */
 - const struct snd_soc_dapm_widget ams_delta_dapm_widgets[] = {
 +static const struct snd_soc_dapm_widget ams_delta_dapm_widgets[] = {
        /* Handset */
        SND_SOC_DAPM_MIC("Mouthpiece", NULL),
        SND_SOC_DAPM_HP("Earpiece", NULL),
@@@ -81,7 -81,7 +81,7 @@@ static const char *ams_delta_audio_mode
                                                (1 << AMS_DELTA_SPEAKER))
  #define AMS_DELTA_SPEAKERPHONE        (AMS_DELTA_HANDSFREE | (1 << AMS_DELTA_AGC))
  
 -unsigned short ams_delta_audio_mode_pins[] = {
 +static const unsigned short ams_delta_audio_mode_pins[] = {
        AMS_DELTA_MIXED,
        AMS_DELTA_HANDSET,
        AMS_DELTA_HANDSFREE,
index 45be94201c89747080df9eb9d322165c33097b2f,e8e63ba40877577bc654a1c1e976456c8259c4f7..6bbbd2ab0ee7c48f29e79b9ad77d8386dce3da6b
@@@ -31,9 -31,9 +31,9 @@@
  #include <sound/initval.h>
  #include <sound/soc.h>
  
- #include <mach/control.h>
- #include <mach/dma.h>
- #include <mach/mcbsp.h>
+ #include <plat/control.h>
+ #include <plat/dma.h>
+ #include <plat/mcbsp.h>
  #include "omap-mcbsp.h"
  #include "omap-pcm.h"
  
@@@ -49,8 -49,6 +49,8 @@@ struct omap_mcbsp_data 
         */
        int                             active;
        int                             configured;
 +      unsigned int                    in_freq;
 +      int                             clk_div;
  };
  
  #define to_mcbsp(priv)        container_of((priv), struct omap_mcbsp_data, bus_id)
@@@ -259,7 -257,7 +259,7 @@@ static int omap_mcbsp_dai_hw_params(str
        int dma, bus_id = mcbsp_data->bus_id, id = cpu_dai->id;
        int wlen, channels, wpf, sync_mode = OMAP_DMA_SYNC_ELEMENT;
        unsigned long port;
 -      unsigned int format;
 +      unsigned int format, div, framesize, master;
  
        if (cpu_class_is_omap1()) {
                dma = omap1_dma_reqs[bus_id][substream->stream];
  
        format = mcbsp_data->fmt & SND_SOC_DAIFMT_FORMAT_MASK;
        wpf = channels = params_channels(params);
 -      switch (channels) {
 -      case 2:
 -              if (format == SND_SOC_DAIFMT_I2S) {
 -                      /* Use dual-phase frames */
 -                      regs->rcr2      |= RPHASE;
 -                      regs->xcr2      |= XPHASE;
 -                      /* Set 1 word per (McBSP) frame for phase1 and phase2 */
 -                      wpf--;
 -                      regs->rcr2      |= RFRLEN2(wpf - 1);
 -                      regs->xcr2      |= XFRLEN2(wpf - 1);
 -              }
 -      case 1:
 -      case 4:
 -              /* Set word per (McBSP) frame for phase1 */
 -              regs->rcr1      |= RFRLEN1(wpf - 1);
 -              regs->xcr1      |= XFRLEN1(wpf - 1);
 -              break;
 -      default:
 -              /* Unsupported number of channels */
 -              return -EINVAL;
 +      if (channels == 2 && format == SND_SOC_DAIFMT_I2S) {
 +              /* Use dual-phase frames */
 +              regs->rcr2      |= RPHASE;
 +              regs->xcr2      |= XPHASE;
 +              /* Set 1 word per (McBSP) frame for phase1 and phase2 */
 +              wpf--;
 +              regs->rcr2      |= RFRLEN2(wpf - 1);
 +              regs->xcr2      |= XFRLEN2(wpf - 1);
        }
  
 +      regs->rcr1      |= RFRLEN1(wpf - 1);
 +      regs->xcr1      |= XFRLEN1(wpf - 1);
 +
        switch (params_format(params)) {
        case SNDRV_PCM_FORMAT_S16_LE:
                /* Set word lengths */
                return -EINVAL;
        }
  
 +      /* In McBSP master modes, FRAME (i.e. sample rate) is generated
 +       * by _counting_ BCLKs. Calculate frame size in BCLKs */
 +      master = mcbsp_data->fmt & SND_SOC_DAIFMT_MASTER_MASK;
 +      if (master ==   SND_SOC_DAIFMT_CBS_CFS) {
 +              div = mcbsp_data->clk_div ? mcbsp_data->clk_div : 1;
 +              framesize = (mcbsp_data->in_freq / div) / params_rate(params);
 +
 +              if (framesize < wlen * channels) {
 +                      printk(KERN_ERR "%s: not enough bandwidth for desired rate and "
 +                                      "channels\n", __func__);
 +                      return -EINVAL;
 +              }
 +      } else
 +              framesize = wlen * channels;
 +
        /* Set FS period and length in terms of bit clock periods */
        switch (format) {
        case SND_SOC_DAIFMT_I2S:
 -              regs->srgr2     |= FPER(wlen * channels - 1);
 -              regs->srgr1     |= FWID(wlen - 1);
 +              regs->srgr2     |= FPER(framesize - 1);
 +              regs->srgr1     |= FWID((framesize >> 1) - 1);
                break;
        case SND_SOC_DAIFMT_DSP_A:
        case SND_SOC_DAIFMT_DSP_B:
 -              regs->srgr2     |= FPER(wlen * channels - 1);
 +              regs->srgr2     |= FPER(framesize - 1);
                regs->srgr1     |= FWID(0);
                break;
        }
@@@ -462,7 -454,6 +462,7 @@@ static int omap_mcbsp_dai_set_clkdiv(st
        if (div_id != OMAP_MCBSP_CLKGDV)
                return -ENODEV;
  
 +      mcbsp_data->clk_div = div;
        regs->srgr1     |= CLKGDV(div - 1);
  
        return 0;
@@@ -563,8 -554,6 +563,8 @@@ static int omap_mcbsp_dai_set_dai_syscl
        struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
        int err = 0;
  
 +      mcbsp_data->in_freq = freq;
 +
        switch (clk_id) {
        case OMAP_MCBSP_SYSCLK_CLK:
                regs->srgr2     |= CLKSM;
@@@ -609,13 -598,13 +609,13 @@@ static struct snd_soc_dai_ops omap_mcbs
        .id = (link_id),                                        \
        .playback = {                                           \
                .channels_min = 1,                              \
 -              .channels_max = 4,                              \
 +              .channels_max = 16,                             \
                .rates = OMAP_MCBSP_RATES,                      \
                .formats = SNDRV_PCM_FMTBIT_S16_LE,             \
        },                                                      \
        .capture = {                                            \
                .channels_min = 1,                              \
 -              .channels_max = 4,                              \
 +              .channels_max = 16,                             \
                .rates = OMAP_MCBSP_RATES,                      \
                .formats = SNDRV_PCM_FMTBIT_S16_LE,             \
        },                                                      \
index f484dcd634089562727d189f14615cbf84246d60,627fadb94f380b5b4ad4ae868d9f3527a76405d2..dfcb344092e41c0506e4f243af3c70920a4cc5c0
@@@ -27,7 -27,7 +27,7 @@@
  #include <asm/mach-types.h>
  #include <mach/hardware.h>
  #include <mach/gpio.h>
- #include <mach/mcbsp.h>
+ #include <plat/mcbsp.h>
  
  #include "omap-mcbsp.h"
  #include "omap-pcm.h"
@@@ -93,17 -93,10 +93,17 @@@ static struct snd_soc_card snd_soc_omap
        .num_links = 1,
  };
  
 +/* twl4030 setup */
 +static struct twl4030_setup_data twl4030_setup = {
 +      .ramp_delay_value = 4,
 +      .sysclk = 26000,
 +};
 +
  /* Audio subsystem */
  static struct snd_soc_device omap3evm_snd_devdata = {
        .card = &snd_soc_omap3evm,
        .codec_dev = &soc_codec_dev_twl4030,
 +      .codec_data = &twl4030_setup,
  };
  
  static struct platform_device *omap3evm_snd_device;
diff --combined sound/soc/omap/overo.c
index 97a4d6308bd61aff46efa7ee98a66bbba1c9d07e,624f40ecc4720a8d76ef0b157ff3d0b2486be7f3..c25f5276ad6f0135d1699548da4d3d6ad11b56f5
@@@ -29,7 -29,7 +29,7 @@@
  #include <asm/mach-types.h>
  #include <mach/hardware.h>
  #include <mach/gpio.h>
- #include <mach/mcbsp.h>
+ #include <plat/mcbsp.h>
  
  #include "omap-mcbsp.h"
  #include "omap-pcm.h"
@@@ -107,8 -107,8 +107,8 @@@ static int __init overo_soc_init(void
  {
        int ret;
  
 -      if (!machine_is_overo()) {
 -              pr_debug("Not Overo!\n");
 +      if (!(machine_is_overo() || machine_is_cm_t35())) {
 +              pr_debug("Incomatible machine!\n");
                return -ENODEV;
        }
        printk(KERN_INFO "overo SoC init\n");