]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'omap-pool'
authorTony Lindgren <tony@atomide.com>
Tue, 7 Apr 2009 22:55:24 +0000 (15:55 -0700)
committerTony Lindgren <tony@atomide.com>
Tue, 7 Apr 2009 22:55:24 +0000 (15:55 -0700)
Conflicts:
arch/arm/mach-omap2/board-ldp.c
arch/arm/mach-omap2/board-overo.c
drivers/regulator/core.c
drivers/regulator/twl4030-regulator.c
include/linux/i2c/twl4030.h
include/linux/regulator/driver.h

20 files changed:
1  2 
Makefile
arch/arm/configs/omap_ldp_defconfig
arch/arm/mach-omap2/board-overo.c
drivers/hwmon/Kconfig
drivers/hwmon/Makefile
drivers/input/touchscreen/ads7846.c
drivers/leds/Kconfig
drivers/leds/Makefile
drivers/mfd/Kconfig
drivers/misc/Kconfig
drivers/mmc/host/Kconfig
drivers/mmc/host/omap_hsmmc.c
drivers/mtd/cmdlinepart.c
drivers/mtd/maps/Kconfig
drivers/mtd/maps/Makefile
drivers/mtd/maps/omap_nor.c
drivers/mtd/nand/Kconfig
drivers/mtd/nand/Makefile
include/linux/connector.h
kernel/printk.c

diff --combined Makefile
index a04da9376d1d849add2337e671faa74422ab5567,e5ad5fd961771f10f4e9e94ca0fbeb4246f1dad4..6bc634547c6c67307ece857968211f95ee87794f
+++ b/Makefile
@@@ -1,7 -1,7 +1,7 @@@
  VERSION = 2
  PATCHLEVEL = 6
- SUBLEVEL = 29
- EXTRAVERSION =
+ SUBLEVEL = 30
+ EXTRAVERSION = -rc1
  NAME = Temporary Tasmanian Devil
  
  # *DOCUMENTATION*
@@@ -16,9 -16,6 +16,9 @@@
  # o  print "Entering directory ...";
  MAKEFLAGS += -rR --no-print-directory
  
 +# Add custom flags here to avoid conflict with updates
 +EXTRAVERSION := $(EXTRAVERSION)-omap1
 +
  # We are using a recursive build, so we need to do a little thinking
  # to get the ordering right.
  #
@@@ -174,8 -171,6 +174,8 @@@ SUBARCH := $(shell uname -m | sed -e s/
                                  -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
                                  -e s/sh.*/sh/ )
  
 +SUBARCH := arm
 +
  # Cross compiling and selecting different set of gcc/bin-utils
  # ---------------------------------------------------------------------------
  #
  # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
  export KBUILD_BUILDHOST := $(SUBARCH)
  ARCH          ?= $(SUBARCH)
 -CROSS_COMPILE ?=
 +CROSS_COMPILE ?= arm-linux-
  
  # Architecture as present in compile.h
  UTS_MACHINE   := $(ARCH)
index a41b844c4528bfefe0a0d0975d971a3ea7866095,679a4a3e265e8222f91c67a17ab58d838a1dddb0..d7ba7d2204eab4cad102bc2769678dfa962de58e
@@@ -1,7 -1,7 +1,7 @@@
  #
  # Automatically generated make config: don't edit
 -# Linux kernel version: 2.6.27-rc5
 -# Fri Oct 10 11:49:41 2008
 +# Linux kernel version: 2.6.27-omap1
 +# Fri Oct 17 17:56:45 2008
  #
  CONFIG_ARM=y
  CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@@ -180,18 -180,11 +180,18 @@@ CONFIG_ARCH_OMAP3=
  #
  # CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
  # CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
 +# CONFIG_OMAP_SMARTREFLEX is not set
  # CONFIG_OMAP_RESET_CLOCKS is not set
 +CONFIG_OMAP_BOOT_TAG=y
 +CONFIG_OMAP_BOOT_REASON=y
 +# CONFIG_OMAP_COMPONENT_VERSION is not set
 +# CONFIG_OMAP_GPIO_SWITCH is not set
  CONFIG_OMAP_MUX=y
  CONFIG_OMAP_MUX_DEBUG=y
  CONFIG_OMAP_MUX_WARNINGS=y
  CONFIG_OMAP_MCBSP=y
 +# CONFIG_OMAP_MMU_FWK is not set
 +# CONFIG_OMAP_MBOX_FWK is not set
  # CONFIG_OMAP_MPU_TIMER is not set
  CONFIG_OMAP_32K_TIMER=y
  CONFIG_OMAP_32K_TIMER_HZ=128
@@@ -206,12 -199,9 +206,12 @@@ CONFIG_ARCH_OMAP3430=
  #
  # OMAP Board Type
  #
 -# CONFIG_MACH_OMAP3_BEAGLE is not set
  CONFIG_MACH_OMAP_LDP=y
 +# CONFIG_MACH_OMAP_3430SDP is not set
 +# CONFIG_MACH_OMAP3EVM is not set
 +# CONFIG_MACH_OMAP3_BEAGLE is not set
  # CONFIG_MACH_OVERO is not set
 +CONFIG_OMAP_TICK_GPTIMER=1
  
  #
  # Boot options
@@@ -324,10 -314,7 +324,10 @@@ CONFIG_BINFMT_MISC=
  #
  # Power management options
  #
 -# CONFIG_PM is not set
 +CONFIG_PM=y
 +# CONFIG_PM_DEBUG is not set
 +# CONFIG_SUSPEND is not set
 +# CONFIG_APM_EMULATION is not set
  CONFIG_ARCH_SUSPEND_POSSIBLE=y
  CONFIG_NET=y
  
@@@ -428,7 -415,6 +428,7 @@@ CONFIG_BLK_DEV=
  # CONFIG_BLK_DEV_COW_COMMON is not set
  CONFIG_BLK_DEV_LOOP=y
  # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 +# CONFIG_BLK_DEV_UB is not set
  CONFIG_BLK_DEV_RAM=y
  CONFIG_BLK_DEV_RAM_COUNT=16
  CONFIG_BLK_DEV_RAM_SIZE=16384
  # CONFIG_CDROM_PKTCDVD is not set
  CONFIG_MISC_DEVICES=y
  # CONFIG_EEPROM_93CX6 is not set
 +# CONFIG_OMAP_STI is not set
  # CONFIG_ENCLOSURE_SERVICES is not set
  CONFIG_HAVE_IDE=y
  # CONFIG_IDE is not set
@@@ -489,14 -474,34 +489,34 @@@ CONFIG_NETDEVICES=
  # CONFIG_EQUALIZER is not set
  # CONFIG_TUN is not set
  # CONFIG_VETH is not set
- # CONFIG_PHYLIB is not set
+ CONFIG_PHYLIB=y
+ #
+ # MII PHY device drivers
+ #
+ # CONFIG_MARVELL_PHY is not set
+ # CONFIG_DAVICOM_PHY is not set
+ # CONFIG_QSEMI_PHY is not set
+ # CONFIG_LXT_PHY is not set
+ # CONFIG_CICADA_PHY is not set
+ # CONFIG_VITESSE_PHY is not set
+ CONFIG_SMSC_PHY=y
+ # CONFIG_BROADCOM_PHY is not set
+ # CONFIG_ICPLUS_PHY is not set
+ # CONFIG_REALTEK_PHY is not set
+ # CONFIG_NATIONAL_PHY is not set
+ # CONFIG_STE10XP is not set
+ # CONFIG_LSI_ET1011C_PHY is not set
+ # CONFIG_FIXED_PHY is not set
+ # CONFIG_MDIO_BITBANG is not set
  CONFIG_NET_ETHERNET=y
  CONFIG_MII=y
  # CONFIG_AX88796 is not set
  # CONFIG_SMC91X is not set
  # CONFIG_DM9000 is not set
  # CONFIG_ENC28J60 is not set
- CONFIG_SMC911X=y
+ # CONFIG_SMC911X is not set
+ CONFIG_SMSC911X=y
  # CONFIG_IBM_NEW_EMAC_ZMII is not set
  # CONFIG_IBM_NEW_EMAC_RGMII is not set
  # CONFIG_IBM_NEW_EMAC_TAH is not set
@@@ -549,16 -554,7 +569,16 @@@ CONFIG_INPUT_EVDEV=
  #
  # Input Device Drivers
  #
 -# CONFIG_INPUT_KEYBOARD is not set
 +CONFIG_INPUT_KEYBOARD=y
 +# CONFIG_KEYBOARD_ATKBD is not set
 +# CONFIG_KEYBOARD_SUNKBD is not set
 +# CONFIG_KEYBOARD_LKKBD is not set
 +# CONFIG_KEYBOARD_XTKBD is not set
 +# CONFIG_KEYBOARD_NEWTON is not set
 +# CONFIG_KEYBOARD_STOWAWAY is not set
 +CONFIG_KEYBOARD_TWL4030=y
 +# CONFIG_KEYBOARD_LM8323 is not set
 +CONFIG_KEYBOARD_GPIO=y
  # CONFIG_INPUT_MOUSE is not set
  # CONFIG_INPUT_JOYSTICK is not set
  # CONFIG_INPUT_TABLET is not set
@@@ -573,11 -569,7 +593,11 @@@ CONFIG_TOUCHSCREEN_ADS7846=
  # CONFIG_TOUCHSCREEN_PENMOUNT is not set
  # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
  # CONFIG_TOUCHSCREEN_TOUCHWIN is not set
 +# CONFIG_TOUCHSCREEN_TSC2005 is not set
 +# CONFIG_TOUCHSCREEN_TSC2102 is not set
 +# CONFIG_TOUCHSCREEN_TSC210X is not set
  # CONFIG_TOUCHSCREEN_UCB1400 is not set
 +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
  # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
  # CONFIG_INPUT_MISC is not set
  
@@@ -646,7 -638,6 +666,7 @@@ CONFIG_I2C_OMAP=
  #
  # CONFIG_I2C_PARPORT_LIGHT is not set
  # CONFIG_I2C_TAOS_EVM is not set
 +# CONFIG_I2C_TINY_USB is not set
  
  #
  # Other I2C/SMBus bus drivers
  # Miscellaneous I2C Chip support
  #
  # CONFIG_DS1682 is not set
 -# CONFIG_EEPROM_AT24 is not set
 -# CONFIG_EEPROM_LEGACY is not set
 +# CONFIG_AT24 is not set
 +# CONFIG_SENSORS_EEPROM is not set
  # CONFIG_SENSORS_PCF8574 is not set
  # CONFIG_PCF8575 is not set
  # CONFIG_SENSORS_PCA9539 is not set
  # CONFIG_SENSORS_PCF8591 is not set
  # CONFIG_ISP1301_OMAP is not set
  # CONFIG_TPS65010 is not set
 +# CONFIG_SENSORS_TLV320AIC23 is not set
 +CONFIG_TWL4030_MADC=y
 +CONFIG_TWL4030_USB=y
 +# CONFIG_TWL4030_PWRBUTTON is not set
 +# CONFIG_TWL4030_POWEROFF is not set
  # CONFIG_SENSORS_MAX6875 is not set
  # CONFIG_SENSORS_TSL2550 is not set
 +# CONFIG_LP5521 is not set
  # CONFIG_I2C_DEBUG_CORE is not set
  # CONFIG_I2C_DEBUG_ALGO is not set
  # CONFIG_I2C_DEBUG_BUS is not set
@@@ -691,11 -676,7 +711,11 @@@ CONFIG_SPI_OMAP24XX=
  #
  # SPI Protocol Masters
  #
 -# CONFIG_EEPROM_AT25 is not set
 +# CONFIG_SPI_AT25 is not set
 +# CONFIG_SPI_TSC2101 is not set
 +# CONFIG_SPI_TSC2102 is not set
 +# CONFIG_SPI_TSC210X is not set
 +# CONFIG_SPI_TSC2301 is not set
  # CONFIG_SPI_SPIDEV is not set
  # CONFIG_SPI_TLE62X0 is not set
  CONFIG_ARCH_REQUIRE_GPIOLIB=y
@@@ -709,7 -690,6 +729,7 @@@ CONFIG_GPIOLIB=
  # CONFIG_GPIO_MAX732X is not set
  # CONFIG_GPIO_PCA953X is not set
  # CONFIG_GPIO_PCF857X is not set
 +CONFIG_GPIO_TWL4030=y
  
  #
  # PCI GPIO expanders:
@@@ -725,10 -705,8 +745,10 @@@ CONFIG_W1=
  #
  # 1-wire Bus Masters
  #
 +# CONFIG_W1_MASTER_DS2490 is not set
  # CONFIG_W1_MASTER_DS2482 is not set
  # CONFIG_W1_MASTER_DS1WM is not set
 +CONFIG_HDQ_MASTER_OMAP=y
  # CONFIG_W1_MASTER_GPIO is not set
  
  #
  # CONFIG_W1_SLAVE_SMEM is not set
  # CONFIG_W1_SLAVE_DS2433 is not set
  # CONFIG_W1_SLAVE_DS2760 is not set
 +CONFIG_W1_SLAVE_BQ27000=y
  CONFIG_POWER_SUPPLY=y
  # CONFIG_POWER_SUPPLY_DEBUG is not set
  # CONFIG_PDA_POWER is not set
  # CONFIG_BATTERY_DS2760 is not set
 +# CONFIG_BATTERY_BQ27x00 is not set
 +CONFIG_TWL4030_BCI_BATTERY=y
  # CONFIG_HWMON is not set
  CONFIG_WATCHDOG=y
  CONFIG_WATCHDOG_NOWAYOUT=y
  # Watchdog Device Drivers
  #
  # CONFIG_SOFT_WATCHDOG is not set
 +CONFIG_OMAP_WATCHDOG=y
 +
 +#
 +# USB-based Watchdog Cards
 +#
 +# CONFIG_USBPCWATCHDOG is not set
  
  #
  # Sonics Silicon Backplane
@@@ -771,10 -740,8 +791,10 @@@ CONFIG_SSB_POSSIBLE=
  #
  # CONFIG_MFD_CORE is not set
  # CONFIG_MFD_SM501 is not set
 +# CONFIG_MFD_ASIC3 is not set
  # CONFIG_HTC_EGPIO is not set
  # CONFIG_HTC_PASIC3 is not set
 +CONFIG_TWL4030_CORE=y
  # CONFIG_MFD_TMIO is not set
  # CONFIG_MFD_T7L66XB is not set
  # CONFIG_MFD_TC6387XB is not set
  # Multimedia drivers
  #
  CONFIG_DAB=y
 +# CONFIG_USB_DABUSB is not set
  
  #
  # Graphics support
  #
  # CONFIG_VGASTATE is not set
  CONFIG_VIDEO_OUTPUT_CONTROL=m
 -# CONFIG_FB is not set
 -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 +CONFIG_FB=y
 +CONFIG_FIRMWARE_EDID=y
 +# CONFIG_FB_DDC is not set
 +# CONFIG_FB_BOOT_VESA_SUPPORT is not set
 +CONFIG_FB_CFB_FILLRECT=y
 +CONFIG_FB_CFB_COPYAREA=y
 +CONFIG_FB_CFB_IMAGEBLIT=y
 +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
 +# CONFIG_FB_SYS_FILLRECT is not set
 +# CONFIG_FB_SYS_COPYAREA is not set
 +# CONFIG_FB_SYS_IMAGEBLIT is not set
 +# CONFIG_FB_FOREIGN_ENDIAN is not set
 +# CONFIG_FB_SYS_FOPS is not set
 +# CONFIG_FB_SVGALIB is not set
 +# CONFIG_FB_MACMODES is not set
 +# CONFIG_FB_BACKLIGHT is not set
 +CONFIG_FB_MODE_HELPERS=y
 +CONFIG_FB_TILEBLITTING=y
 +
 +#
 +# Frame buffer hardware drivers
 +#
 +# CONFIG_FB_S1D13XXX is not set
 +# CONFIG_FB_VIRTUAL is not set
 +# CONFIG_FB_METRONOME is not set
 +CONFIG_FB_OMAP=y
 +CONFIG_FB_OMAP_LCD_VGA=y
 +# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
 +# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
 +CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=4
 +CONFIG_BACKLIGHT_LCD_SUPPORT=y
 +CONFIG_LCD_CLASS_DEVICE=y
 +# CONFIG_LCD_LTV350QV is not set
 +# CONFIG_LCD_ILI9320 is not set
 +# CONFIG_LCD_TDO24M is not set
 +# CONFIG_LCD_VGG2432A4 is not set
 +CONFIG_LCD_PLATFORM=y
 +CONFIG_BACKLIGHT_CLASS_DEVICE=y
 +# CONFIG_BACKLIGHT_CORGI is not set
  
  #
  # Display device support
  #
  # CONFIG_VGA_CONSOLE is not set
  CONFIG_DUMMY_CONSOLE=y
 +CONFIG_FRAMEBUFFER_CONSOLE=y
 +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
 +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
 +# CONFIG_FONTS is not set
 +CONFIG_FONT_8x8=y
 +CONFIG_FONT_8x16=y
 +CONFIG_LOGO=y
 +CONFIG_LOGO_LINUX_MONO=y
 +CONFIG_LOGO_LINUX_VGA16=y
 +CONFIG_LOGO_LINUX_CLUT224=y
  CONFIG_SOUND=y
  CONFIG_SND=y
  # CONFIG_SND_SEQUENCER is not set
@@@ -877,153 -796,14 +897,153 @@@ CONFIG_SND_DRIVERS=
  # CONFIG_SND_SERIAL_U16550 is not set
  # CONFIG_SND_MPU401 is not set
  CONFIG_SND_ARM=y
 +# CONFIG_SND_OMAP_AIC23 is not set
 +# CONFIG_SND_OMAP_TSC2101 is not set
 +# CONFIG_SND_SX1 is not set
 +# CONFIG_SND_OMAP_TSC2102 is not set
 +# CONFIG_SND_OMAP24XX_EAC is not set
  CONFIG_SND_SPI=y
 +CONFIG_SND_USB=y
 +# CONFIG_SND_USB_AUDIO is not set
 +# CONFIG_SND_USB_CAIAQ is not set
  # CONFIG_SND_SOC is not set
  # CONFIG_SOUND_PRIME is not set
  CONFIG_HID_SUPPORT=y
  CONFIG_HID=y
  # CONFIG_HID_DEBUG is not set
  # CONFIG_HIDRAW is not set
 -# CONFIG_USB_SUPPORT is not set
 +
 +#
 +# USB Input Devices
 +#
 +CONFIG_USB_HID=y
 +# CONFIG_USB_HIDINPUT_POWERBOOK is not set
 +# CONFIG_HID_FF is not set
 +# CONFIG_USB_HIDDEV is not set
 +CONFIG_USB_SUPPORT=y
 +CONFIG_USB_ARCH_HAS_HCD=y
 +CONFIG_USB_ARCH_HAS_OHCI=y
 +CONFIG_USB_ARCH_HAS_EHCI=y
 +CONFIG_USB=y
 +# CONFIG_USB_DEBUG is not set
 +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
 +
 +#
 +# Miscellaneous USB options
 +#
 +CONFIG_USB_DEVICEFS=y
 +CONFIG_USB_DEVICE_CLASS=y
 +# CONFIG_USB_DYNAMIC_MINORS is not set
 +CONFIG_USB_SUSPEND=y
 +CONFIG_USB_OTG=y
 +# CONFIG_USB_OTG_WHITELIST is not set
 +# CONFIG_USB_OTG_BLACKLIST_HUB is not set
 +CONFIG_USB_MON=y
 +
 +#
 +# USB Host Controller Drivers
 +#
 +# CONFIG_USB_C67X00_HCD is not set
 +# CONFIG_USB_EHCI_HCD is not set
 +# CONFIG_USB_ISP116X_HCD is not set
 +# CONFIG_USB_ISP1760_HCD is not set
 +# CONFIG_USB_OHCI_HCD is not set
 +# CONFIG_USB_SL811_HCD is not set
 +# CONFIG_USB_R8A66597_HCD is not set
 +CONFIG_USB_MUSB_HDRC=y
 +CONFIG_USB_MUSB_SOC=y
 +
 +#
 +# OMAP 343x high speed USB support
 +#
 +# CONFIG_USB_MUSB_HOST is not set
 +# CONFIG_USB_MUSB_PERIPHERAL is not set
 +CONFIG_USB_MUSB_OTG=y
 +CONFIG_USB_GADGET_MUSB_HDRC=y
 +CONFIG_USB_MUSB_HDRC_HCD=y
 +# CONFIG_MUSB_PIO_ONLY is not set
 +CONFIG_USB_INVENTRA_DMA=y
 +# CONFIG_USB_TI_CPPI_DMA is not set
 +# CONFIG_USB_MUSB_DEBUG is not set
 +
 +#
 +# USB Device Class drivers
 +#
 +# CONFIG_USB_ACM is not set
 +# CONFIG_USB_PRINTER is not set
 +# CONFIG_USB_WDM is not set
 +
 +#
 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
 +#
 +
 +#
 +# may also be needed; see USB_STORAGE Help for more information
 +#
 +# CONFIG_USB_STORAGE is not set
 +# CONFIG_USB_LIBUSUAL is not set
 +
 +#
 +# USB Imaging devices
 +#
 +# CONFIG_USB_MDC800 is not set
 +# CONFIG_USB_MICROTEK is not set
 +
 +#
 +# USB port drivers
 +#
 +# CONFIG_USB_SERIAL is not set
 +
 +#
 +# USB Miscellaneous drivers
 +#
 +# CONFIG_USB_EMI62 is not set
 +# CONFIG_USB_EMI26 is not set
 +# CONFIG_USB_ADUTUX is not set
 +# CONFIG_USB_RIO500 is not set
 +# CONFIG_USB_LEGOTOWER is not set
 +# CONFIG_USB_LCD is not set
 +# CONFIG_USB_BERRY_CHARGE is not set
 +# CONFIG_USB_LED is not set
 +# CONFIG_USB_CYPRESS_CY7C63 is not set
 +# CONFIG_USB_CYTHERM is not set
 +# CONFIG_USB_PHIDGET is not set
 +# CONFIG_USB_IDMOUSE is not set
 +# CONFIG_USB_FTDI_ELAN is not set
 +# CONFIG_USB_APPLEDISPLAY is not set
 +# CONFIG_USB_LD is not set
 +# CONFIG_USB_TRANCEVIBRATOR is not set
 +# CONFIG_USB_IOWARRIOR is not set
 +# CONFIG_USB_TEST is not set
 +# CONFIG_USB_ISIGHTFW is not set
 +CONFIG_USB_GADGET=y
 +CONFIG_USB_GADGET_DEBUG=y
 +CONFIG_USB_GADGET_DEBUG_FILES=y
 +CONFIG_USB_GADGET_SELECTED=y
 +# CONFIG_USB_GADGET_AMD5536UDC is not set
 +# CONFIG_USB_GADGET_ATMEL_USBA is not set
 +# CONFIG_USB_GADGET_FSL_USB2 is not set
 +# CONFIG_USB_GADGET_NET2280 is not set
 +# CONFIG_USB_GADGET_PXA25X is not set
 +# CONFIG_USB_GADGET_M66592 is not set
 +# CONFIG_USB_GADGET_PXA27X is not set
 +# CONFIG_USB_GADGET_GOKU is not set
 +# CONFIG_USB_GADGET_LH7A40X is not set
 +# CONFIG_USB_GADGET_OMAP is not set
 +# CONFIG_USB_GADGET_S3C2410 is not set
 +# CONFIG_USB_GADGET_AT91 is not set
 +# CONFIG_USB_GADGET_DUMMY_HCD is not set
 +CONFIG_USB_GADGET_DUALSPEED=y
 +CONFIG_USB_ZERO=m
 +# CONFIG_USB_ZERO_HNPTEST is not set
 +# CONFIG_USB_ETH is not set
 +# CONFIG_USB_GADGETFS is not set
 +CONFIG_USB_FILE_STORAGE=m
 +CONFIG_USB_FILE_STORAGE_TEST=y
 +CONFIG_USB_G_SERIAL=m
 +# CONFIG_USB_MIDI_GADGET is not set
 +# CONFIG_USB_G_PRINTER is not set
 +# CONFIG_USB_CDC_COMPOSITE is not set
  CONFIG_MMC=y
  # CONFIG_MMC_DEBUG is not set
  # CONFIG_MMC_UNSAFE_RESUME is not set
@@@ -1040,7 -820,7 +1060,7 @@@ CONFIG_MMC_BLOCK_BOUNCE=
  # MMC/SD Host Controller Drivers
  #
  # CONFIG_MMC_SDHCI is not set
 -# CONFIG_MMC_OMAP is not set
 +CONFIG_MMC_OMAP_HS=y
  # CONFIG_MMC_SPI is not set
  # CONFIG_NEW_LEDS is not set
  CONFIG_RTC_LIB=y
@@@ -1071,7 -851,6 +1091,7 @@@ CONFIG_RTC_INTF_DEV=
  # CONFIG_RTC_DRV_PCF8563 is not set
  # CONFIG_RTC_DRV_PCF8583 is not set
  # CONFIG_RTC_DRV_M41T80 is not set
 +CONFIG_RTC_DRV_TWL4030=y
  # CONFIG_RTC_DRV_S35390A is not set
  # CONFIG_RTC_DRV_FM3130 is not set
  
  #
  # Voltage and Current regulators
  #
 -# CONFIG_REGULATOR is not set
 +CONFIG_REGULATOR=y
  # CONFIG_REGULATOR_FIXED_VOLTAGE is not set
  # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
  # CONFIG_REGULATOR_BQ24022 is not set
 +CONFIG_REGULATOR_TWL4030=y
  # CONFIG_UIO is not set
  
 +#
 +# CBUS support
 +#
 +# CONFIG_CBUS is not set
 +
  #
  # File systems
  #
@@@ -1426,7 -1199,7 +1446,7 @@@ CONFIG_BITREVERSE=
  # CONFIG_GENERIC_FIND_NEXT_BIT is not set
  CONFIG_CRC_CCITT=y
  # CONFIG_CRC16 is not set
 -CONFIG_CRC_T10DIF=y
 +# CONFIG_CRC_T10DIF is not set
  # CONFIG_CRC_ITU_T is not set
  CONFIG_CRC32=y
  # CONFIG_CRC7 is not set
index f9cc015d36d869b3c84f3a46a6cbeaaffff216dc,9d36bc946ac49afb13dc229c397e9cf6e8de15e8..f357de9681c7308d43af80837f70c2c608a108e7
  #define OVERO_SMSC911X_CS     5
  #define OVERO_SMSC911X_GPIO   176
  
+ #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
+       defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
+ #include <mach/mcspi.h>
+ #include <linux/spi/spi.h>
+ #include <linux/spi/ads7846.h>
+ static struct omap2_mcspi_device_config ads7846_mcspi_config = {
+       .turbo_mode     = 0,
+       .single_channel = 1,    /* 0: slave, 1: master */
+ };
+ static int ads7846_get_pendown_state(void)
+ {
+       return !gpio_get_value(OVERO_GPIO_PENDOWN);
+ }
+ static struct ads7846_platform_data ads7846_config = {
+       .x_max                  = 0x0fff,
+       .y_max                  = 0x0fff,
+       .x_plate_ohms           = 180,
+       .pressure_max           = 255,
+       .debounce_max           = 10,
+       .debounce_tol           = 3,
+       .debounce_rep           = 1,
+       .get_pendown_state      = ads7846_get_pendown_state,
+       .keep_vref_on           = 1,
+ };
+ static struct spi_board_info overo_spi_board_info[] __initdata = {
+       {
+               .modalias               = "ads7846",
+               .bus_num                = 1,
+               .chip_select            = 0,
+               .max_speed_hz           = 1500000,
+               .controller_data        = &ads7846_mcspi_config,
+               .irq                    = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN),
+               .platform_data          = &ads7846_config,
+       }
+ };
+ static void __init overo_ads7846_init(void)
+ {
+       if ((gpio_request(OVERO_GPIO_PENDOWN, "ADS7846_PENDOWN") == 0) &&
+           (gpio_direction_input(OVERO_GPIO_PENDOWN) == 0)) {
+               gpio_export(OVERO_GPIO_PENDOWN, 0);
+       } else {
+               printk(KERN_ERR "could not obtain gpio for ADS7846_PENDOWN\n");
+               return;
+       }
+       spi_register_board_info(overo_spi_board_info,
+                       ARRAY_SIZE(overo_spi_board_info));
+ }
+ #else
+ static inline void __init overo_ads7846_init(void) { return; }
+ #endif
  #if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
  
  #include <linux/smsc911x.h>
@@@ -124,66 -183,7 +183,8 @@@ static inline void __init overo_init_sm
  static inline void __init overo_init_smsc911x(void) { return; }
  #endif
  
- #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
-       defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
- #include <mach/mcspi.h>
- #include <linux/spi/spi.h>
- #include <linux/spi/ads7846.h>
- static struct omap2_mcspi_device_config ads7846_mcspi_config = {
-       .turbo_mode     = 0,
-       .single_channel = 1,    /* 0: slave, 1: master */
- };
- static int ads7846_get_pendown_state(void)
- {
-       return !gpio_get_value(OVERO_GPIO_PENDOWN);
- }
  
- static struct ads7846_platform_data ads7846_config = {
-       .x_max                  = 0x0fff,
-       .y_max                  = 0x0fff,
-       .x_plate_ohms           = 180,
-       .pressure_max           = 255,
-       .debounce_max           = 10,
-       .debounce_tol           = 3,
-       .debounce_rep           = 1,
-       .get_pendown_state      = ads7846_get_pendown_state,
-       .keep_vref_on           = 1,
- };
- static struct spi_board_info overo_spi_board_info[] __initdata = {
-       {
-               .modalias               = "ads7846",
-               .bus_num                = 1,
-               .chip_select            = 0,
-               .max_speed_hz           = 1500000,
-               .controller_data        = &ads7846_mcspi_config,
-               .irq                    = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN),
-               .platform_data          = &ads7846_config,
-       }
- };
- static void __init overo_ads7846_init(void)
- {
-       if ((gpio_request(OVERO_GPIO_PENDOWN, "ADS7846_PENDOWN") == 0) &&
-           (gpio_direction_input(OVERO_GPIO_PENDOWN) == 0)) {
-               gpio_export(OVERO_GPIO_PENDOWN, 0);
-       } else {
-               printk(KERN_ERR "could not obtain gpio for ADS7846_PENDOWN\n");
-               return;
-       }
-       spi_register_board_info(overo_spi_board_info,
-                       ARRAY_SIZE(overo_spi_board_info));
- }
- #else
- static inline void __init overo_ads7846_init(void) { return; }
- #endif
 +
  static struct mtd_partition overo_nand_partitions[] = {
        {
                .name           = "xloader",
@@@ -393,11 -393,12 +394,12 @@@ static void __init overo_init(void
        omap_board_config = overo_config;
        omap_board_config_size = ARRAY_SIZE(overo_config);
        omap_serial_init();
 -      twl4030_mmc_init(mmc);
 -      overo_flash_init();
        usb_musb_init();
        usb_ehci_init();
 +      overo_flash_init();
 +      overo_init_smsc911x();
        overo_ads7846_init();
+       overo_init_smsc911x();
  
        if ((gpio_request(OVERO_GPIO_W2W_NRESET,
                          "OVERO_GPIO_W2W_NRESET") == 0) &&
diff --combined drivers/hwmon/Kconfig
index d2b0eea3455189d5e451ccd95df8bafd8307d12c,0e8a9185f676fa6ade83113b983a7e6430e52739..1d3374ae7eba898d251359e6cf6657228dc60575
@@@ -248,6 -248,18 +248,18 @@@ config SENSORS_ASB10
          This driver can also be built as a module.  If so, the module
          will be called asb100.
  
+ config SENSORS_ATK0110
+       tristate "ASUS ATK0110 ACPI hwmon"
+       depends on X86 && ACPI && EXPERIMENTAL
+       help
+         If you say yes here you get support for the ACPI hardware
+         monitoring interface found in many ASUS motherboards. This
+         driver will provide readings of fans, voltages and temperatures
+         through the system firmware.
+         This driver can also be built as a module. If so, the module
+         will be called asus_atk0110.
  config SENSORS_ATXP1
        tristate "Attansic ATXP1 VID controller"
        depends on I2C && EXPERIMENTAL
@@@ -358,6 -370,16 +370,16 @@@ config SENSORS_FSCHM
          This driver can also be built as a module.  If so, the module
          will be called fschmd.
  
+ config SENSORS_G760A
+       tristate "GMT G760A"
+       depends on I2C
+       help
+         If you say yes here you get support for Global Mixed-mode
+         Technology Inc G760A fan speed PWM controller chips.
+         This driver can also be built as a module.  If so, the module
+         will be called g760a.
  config SENSORS_GL518SM
        tristate "Genesys Logic GL518SM"
        depends on I2C
@@@ -973,22 -995,6 +995,22 @@@ config SENSORS_APPLESM
          Say Y here if you have an applicable laptop and want to experience
          the awesome power of applesmc.
  
 +config SENSORS_TSC210X
 +      tristate "TI TSC210x battery & temperature sensors"
 +      depends on HWMON && SPI_MASTER
 +      select SPI_TSC210X
 +      help
 +        Say Y if your board has a TSC210x chip and you want to
 +        have its battery state, auxiliary input and/or temperature
 +        sensors exported through hwmon.
 +
 +        This driver can also be built as a module.  In this case
 +        the module will be called tsc210x_sensors.
 +
 +config SENSORS_OMAP34XX
 +      tristate "TI OMAP34xx internal temperature sensor"
 +      depends on ARCH_OMAP3 && HIGH_RES_TIMERS
 +
  config HWMON_DEBUG_CHIP
        bool "Hardware Monitoring Chip debugging messages"
        default n
diff --combined drivers/hwmon/Makefile
index a4a6320dcb2657fbbf522556ecbc771a57fe355e,1d3757837b4ff5091f4ae2d6728616f9ec7aee1a..023f5719abdc088ff3b4c03c64f64a4ff982d528
@@@ -32,6 -32,7 +32,7 @@@ obj-$(CONFIG_SENSORS_ADT7475) += adt747
  
  obj-$(CONFIG_SENSORS_APPLESMC)        += applesmc.o
  obj-$(CONFIG_SENSORS_AMS)     += ams/
+ obj-$(CONFIG_SENSORS_ATK0110) += asus_atk0110.o
  obj-$(CONFIG_SENSORS_ATXP1)   += atxp1.o
  obj-$(CONFIG_SENSORS_CORETEMP)        += coretemp.o
  obj-$(CONFIG_SENSORS_DME1737) += dme1737.o
@@@ -42,6 -43,7 +43,7 @@@ obj-$(CONFIG_SENSORS_F75375S) += f75375
  obj-$(CONFIG_SENSORS_FSCHER)  += fscher.o
  obj-$(CONFIG_SENSORS_FSCHMD)  += fschmd.o
  obj-$(CONFIG_SENSORS_FSCPOS)  += fscpos.o
+ obj-$(CONFIG_SENSORS_G760A)   += g760a.o
  obj-$(CONFIG_SENSORS_GL518SM) += gl518sm.o
  obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o
  obj-$(CONFIG_SENSORS_ULTRA45) += ultra45_env.o
@@@ -84,9 -86,7 +86,9 @@@ obj-$(CONFIG_SENSORS_VT1211)  += vt1211.
  obj-$(CONFIG_SENSORS_VT8231)  += vt8231.o
  obj-$(CONFIG_SENSORS_W83627EHF)       += w83627ehf.o
  obj-$(CONFIG_SENSORS_W83L785TS)       += w83l785ts.o
 +obj-$(CONFIG_SENSORS_TSC210X) += tsc210x_sensors.o
  obj-$(CONFIG_SENSORS_W83L786NG)       += w83l786ng.o
 +obj-$(CONFIG_SENSORS_OMAP34XX)  += omap34xx_temp.o
  
  ifeq ($(CONFIG_HWMON_DEBUG_CHIP),y)
  EXTRA_CFLAGS += -DDEBUG
index 2ae5ab8e45c43cfa905f434dcb9a710545a5cdd0,056ac77e2cf0ed6fe5624d9f62f35bbab2d57697..c5ecce1842fea53539e828c2bfd67d9fc5583cc3
@@@ -295,7 -295,7 +295,7 @@@ name ## _show(struct device *dev, struc
  static DEVICE_ATTR(name, S_IRUGO, name ## _show, NULL);
  
  
- /* Sysfs conventions report temperatures in millidegrees Celcius.
+ /* Sysfs conventions report temperatures in millidegrees Celsius.
   * ADS7846 could use the low-accuracy two-sample scheme, but can't do the high
   * accuracy scheme without calibration data.  For now we won't try either;
   * userspace sees raw sensor values, and must scale/calibrate appropriately.
@@@ -878,15 -878,6 +878,15 @@@ static int __devinit ads7846_probe(stru
                return -ENODEV;
        }
  
 +      /* enable voltage */
 +      if (pdata->vaux_control != NULL) {
 +              err = pdata->vaux_control(VAUX_ENABLE);
 +              if (err != 0) {
 +                      dev_dbg(&spi->dev, "TS vaux enable failed\n");
 +                      return err;
 +              }
 +      }
 +
        /* don't exceed max specified sample rate */
        if (spi->max_speed_hz > (125000 * SAMPLE_BITS)) {
                dev_dbg(&spi->dev, "f(sample) %d KHz?\n",
diff --combined drivers/leds/Kconfig
index 5c34aef3e9a2f029ce13fb1c6699c2489c023b36,9b60b6b684d9cd7c5a62c843d827e6071491a51f..788f48cf921a6c2cb319bdffd3ac4a5dae629e03
@@@ -31,6 -31,13 +31,13 @@@ config LEDS_LOCOM
          This option enables support for the LEDs on Sharp Locomo.
          Zaurus models SL-5500 and SL-5600.
  
+ config LEDS_MIKROTIK_RB532
+       tristate "LED Support for Mikrotik Routerboard 532"
+       depends on LEDS_CLASS && MIKROTIK_RB532
+       help
+         This option enables support for the so called "User LED" of
+         Mikrotik's Routerboard 532.
  config LEDS_S3C24XX
        tristate "LED Support for Samsung S3C24XX GPIO LEDs"
        depends on LEDS_CLASS && ARCH_S3C2410
@@@ -63,26 -70,11 +70,26 @@@ config LEDS_WRA
        help
          This option enables support for the PCEngines WRAP programmable LEDs.
  
 -config LEDS_ALIX2
 -      tristate "LED Support for ALIX.2 and ALIX.3 series"
 -      depends on LEDS_CLASS && X86 && EXPERIMENTAL
 +config LEDS_OMAP_DEBUG
 +      boolean "LED Support for OMAP debug board LEDs"
 +      depends on LEDS_CLASS=y && ARCH_OMAP
        help
 -        This option enables support for the PCEngines ALIX.2 and ALIX.3 LEDs.
 +        Enables support for the LEDs on the debug board used with OMAP
 +        reference boards like H2/H3/H4 and Perseus2.  Up to six of these
 +        may be claimed by the original ARM debug LED API.
 +
 +config LEDS_OMAP
 +      tristate "LED Support for OMAP GPIO LEDs"
 +      depends on LEDS_CLASS && ARCH_OMAP
 +      help
 +        This option enables support for the LEDs on OMAP processors.
 +
 +config LEDS_OMAP_PWM
 +      tristate "LED Support for OMAP PWM-controlled LEDs"
 +      depends on LEDS_CLASS && ARCH_OMAP && OMAP_DM_TIMER
 +      help
 +        This options enables support for LEDs connected to GPIO lines
 +        controlled by a PWM timer on OMAP CPUs.
  
  config LEDS_H1940
        tristate "LED Support for iPAQ H1940 device"
@@@ -98,7 -90,7 +105,7 @@@ config LEDS_COBALT_QUB
  
  config LEDS_COBALT_RAQ
        bool "LED Support for the Cobalt Raq series"
 -      depends on LEDS_CLASS=y && MIPS_COBALT
 +      depends on LEDS_CLASS && MIPS_COBALT
        select LEDS_TRIGGERS
        help
          This option enables support for the Cobalt Raq series LEDs.
@@@ -115,7 -107,7 +122,7 @@@ config LEDS_HP6X
        tristate "LED Support for the HP Jornada 6xx"
        depends on LEDS_CLASS && SH_HP6XX
        help
-         This option enables led support for the handheld
+         This option enables LED support for the handheld
          HP Jornada 620/660/680/690.
  
  config LEDS_PCA9532
        depends on LEDS_CLASS && I2C && INPUT && EXPERIMENTAL
        help
          This option enables support for NXP pca9532
-         led controller. It is generally only usefull
+         LED controller. It is generally only useful
          as a platform driver
  
  config LEDS_GPIO
        help
          This option enables support for the LEDs connected to GPIO
          outputs. To be useful the particular board must have LEDs
-         and they must be connected to the GPIO lines.
+         and they must be connected to the GPIO lines.  The LEDs must be
+         defined as platform devices and/or OpenFirmware platform devices.
+         The code to use these bindings can be selected below.
+ config LEDS_GPIO_PLATFORM
+       bool "Platform device bindings for GPIO LEDs"
+       depends on LEDS_GPIO
+       default y
+       help
+         Let the leds-gpio driver drive LEDs which have been defined as
+         platform devices.  If you don't know what this means, say yes.
+ config LEDS_GPIO_OF
+       bool "OpenFirmware platform device bindings for GPIO LEDs"
+       depends on LEDS_GPIO && OF_DEVICE
+       default y
+       help
+         Let the leds-gpio driver drive LEDs which have been defined as
+         of_platform devices.  For instance, LEDs which are listed in a "dts"
+         file.
+ config LEDS_LP5521
+       tristate "LED Support for the LP5521 LEDs"
+       depends on LEDS_CLASS && I2C
+       help
+         If you say 'Y' here you get support for the National Semiconductor
+         LP5521 LED driver used in n8x0 boards.
+         This driver can be built as a module by choosing 'M'. The module
+         will be called leds-lp5521.
  
 +config LEDS_LP5521
 +      tristate "LED Support for the LP5521 LEDs"
 +      depends on LEDS_CLASS && I2C
 +      help
 +        If you say 'Y' here you get support for the National Semiconductor
 +        LP5521 LED driver used in n8x0 boards.
 +
 +        This driver can be built as a module by choosing 'M'. The module
 +        will be called leds-lp5521.
 +
  config LEDS_CLEVO_MAIL
-       tristate "Mail LED on Clevo notebook (EXPERIMENTAL)"
-       depends on LEDS_CLASS && X86 && SERIO_I8042 && DMI && EXPERIMENTAL
+       tristate "Mail LED on Clevo notebook"
+       depends on LEDS_CLASS && X86 && SERIO_I8042 && DMI
        help
          This driver makes the mail LED accessible from userspace
          programs through the leds subsystem. This LED have three
                Positivo Mobile (Clevo M5x0V)
  
          If your model is not listed here you can try the "nodetect"
-         module paramter.
+         module parameter.
  
          To compile this driver as a module, choose M here: the
          module will be called leds-clevo-mail.
@@@ -182,6 -193,13 +218,6 @@@ config LEDS_PCA955
          LED driver chips accessed via the I2C bus.  Supported
          devices include PCA9550, PCA9551, PCA9552, and PCA9553.
  
 -config LEDS_WM8350
 -      tristate "LED Support for WM8350 AudioPlus PMIC"
 -      depends on LEDS_CLASS && MFD_WM8350
 -      help
 -        This option enables support for LEDs driven by the Wolfson
 -        Microelectronics WM8350 AudioPlus PMIC.
 -
  config LEDS_DA903X
        tristate "LED Support for DA9030/DA9034 PMIC"
        depends on LEDS_CLASS && PMIC_DA903X
          This option enables support for on-chip LED drivers found
          on Dialog Semiconductor DA9030/DA9034 PMICs.
  
+ config LEDS_DAC124S085
+       tristate "LED Support for DAC124S085 SPI DAC"
+       depends on LEDS_CLASS && SPI
+       help
+         This option enables support for DAC124S085 SPI DAC from NatSemi,
+         which can be used to control up to four LEDs.
+ config LEDS_PWM
+       tristate "PWM driven LED Support"
+       depends on LEDS_CLASS && HAVE_PWM
+       help
+         This option enables support for pwm driven LEDs
+ config LEDS_BD2802
+       tristate "LED driver for BD2802 RGB LED"
+       depends on LEDS_CLASS && I2C
+       help
+         This option enables support for BD2802GU RGB LED driver chips
+         accessed via the I2C bus.
  comment "LED Triggers"
  
  config LEDS_TRIGGERS
@@@ -234,6 -272,19 +290,19 @@@ config LEDS_TRIGGER_BACKLIGH
  
          If unsure, say N.
  
+ config LEDS_TRIGGER_GPIO
+       tristate "LED GPIO Trigger"
+       depends on LEDS_TRIGGERS
+       depends on GPIOLIB
+       help
+         This allows LEDs to be controlled by gpio events. It's good
+         when using gpios as switches and triggering the needed LEDs
+         from there. One use case is n810's keypad LEDs that could
+         be triggered by this trigger when user slides up to show
+         keypad.
+         If unsure, say N.
  config LEDS_TRIGGER_DEFAULT_ON
        tristate "LED Default ON Trigger"
        depends on LEDS_TRIGGERS
diff --combined drivers/leds/Makefile
index 4ab09e8f649f628951fb6ba300e56b3065e8bf8d,2d41c4dcf92ff9a8db515aac17aee9dc9482db96..ee79340b3fa827a5c0d594bf485df941d475a85e
@@@ -6,30 -6,35 +6,37 @@@ obj-$(CONFIG_LEDS_TRIGGERS)           += led-tri
  
  # LED Platform Drivers
  obj-$(CONFIG_LEDS_ATMEL_PWM)          += leds-atmel-pwm.o
+ obj-$(CONFIG_LEDS_BD2802)             += leds-bd2802.o
  obj-$(CONFIG_LEDS_LOCOMO)             += leds-locomo.o
+ obj-$(CONFIG_LEDS_MIKROTIK_RB532)     += leds-rb532.o
  obj-$(CONFIG_LEDS_S3C24XX)            += leds-s3c24xx.o
  obj-$(CONFIG_LEDS_AMS_DELTA)          += leds-ams-delta.o
  obj-$(CONFIG_LEDS_NET48XX)            += leds-net48xx.o
  obj-$(CONFIG_LEDS_WRAP)                       += leds-wrap.o
 -obj-$(CONFIG_LEDS_ALIX2)              += leds-alix2.o
 +obj-$(CONFIG_LEDS_OMAP)                       += leds-omap.o
 +obj-$(CONFIG_LEDS_OMAP_PWM)           += leds-omap-pwm.o
  obj-$(CONFIG_LEDS_H1940)              += leds-h1940.o
  obj-$(CONFIG_LEDS_COBALT_QUBE)                += leds-cobalt-qube.o
  obj-$(CONFIG_LEDS_COBALT_RAQ)         += leds-cobalt-raq.o
  obj-$(CONFIG_LEDS_SUNFIRE)            += leds-sunfire.o
  obj-$(CONFIG_LEDS_PCA9532)            += leds-pca9532.o
  obj-$(CONFIG_LEDS_GPIO)                       += leds-gpio.o
 +obj-$(CONFIG_LEDS_LP5521)             += leds-lp5521.o
  obj-$(CONFIG_LEDS_CLEVO_MAIL)         += leds-clevo-mail.o
  obj-$(CONFIG_LEDS_HP6XX)              += leds-hp6xx.o
  obj-$(CONFIG_LEDS_FSG)                        += leds-fsg.o
  obj-$(CONFIG_LEDS_PCA955X)            += leds-pca955x.o
  obj-$(CONFIG_LEDS_DA903X)             += leds-da903x.o
  obj-$(CONFIG_LEDS_WM8350)             += leds-wm8350.o
+ obj-$(CONFIG_LEDS_PWM)                        += leds-pwm.o
+ # LED SPI Drivers
+ obj-$(CONFIG_LEDS_DAC124S085)         += leds-dac124s085.o
  
  # LED Triggers
  obj-$(CONFIG_LEDS_TRIGGER_TIMER)      += ledtrig-timer.o
  obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK)   += ledtrig-ide-disk.o
  obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT)  += ledtrig-heartbeat.o
  obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT)  += ledtrig-backlight.o
+ obj-$(CONFIG_LEDS_TRIGGER_GPIO)               += ledtrig-gpio.o
  obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
diff --combined drivers/mfd/Kconfig
index d8746410db5a080e4afd08d5f14a3470a53fc06b,ee3927ab11e053a06bd68f019075ffbcc7d66077..502c1165058f8c90bae973f245dfde0e76260032
@@@ -52,6 -52,7 +52,7 @@@ config HTC_EGPI
  
  config HTC_PASIC3
        tristate "HTC PASIC3 LED/DS1WM chip support"
+       select MFD_CORE
        help
          This core driver provides register access for the LED/DS1WM
          chips labeled "AIC2" and "AIC3", found on HTC Blueangel and
@@@ -88,7 -89,7 +89,7 @@@ config MENELAU
        help
          If you say yes here you get support for the Texas Instruments
          TWL92330/Menelaus Power Management chip. This include voltage
-         regulators, Dual slot memory card tranceivers, real-time clock
+         regulators, Dual slot memory card transceivers, real-time clock
          and other features that are often used in portable devices like
          cell phones and PDAs.
  
@@@ -106,19 -107,6 +107,19 @@@ config TWL4030_COR
          high speed USB OTG transceiver, an audio codec (on most
          versions) and many other features.
  
 +config TWL4030_POWER
 +      bool "Support power resources on TWL4030 family chips"
 +      depends on TWL4030_CORE
 +      help
 +        Say yes here if you want to use the power resources on the
 +        TWL4030 family chips.  Most of these resources are regulators,
 +        which have a separate driver; some are control signals, such
 +        as clock request handshaking.
 +
 +        This driver uses board-specific data to initialize the resources
 +        and load scripts controling which resources are switched off/on
 +        or reset when a sleep, wakeup or warm reset event occurs.
 +
  config MFD_TMIO
        bool
        default n
diff --combined drivers/misc/Kconfig
index 4a022dad4b4f0ece88a2a44a5bb91859f080a7ea,6d1ac180f6ee8013b212ff06bf6dca6ff475b1cb..b1b2696c9c2bba0c2f5d340d9ef4f98c9daf0f81
@@@ -18,8 -18,8 +18,8 @@@ config ATMEL_PW
        depends on AVR32 || ARCH_AT91SAM9263 || ARCH_AT91SAM9RL || ARCH_AT91CAP9
        help
          This option enables device driver support for the PWM channels
-         on certain Atmel prcoessors.  Pulse Width Modulation is used for
-         purposes including software controlled power-efficent backlights
+         on certain Atmel processors.  Pulse Width Modulation is used for
+         purposes including software controlled power-efficient backlights
          on LCD displays, motor control, and waveform generation.
  
  config ATMEL_TCLIB
@@@ -142,7 -142,7 +142,7 @@@ config ATMEL_SS
        tristate "Device driver for Atmel SSC peripheral"
        depends on AVR32 || ARCH_AT91
        ---help---
-         This option enables device driver support for Atmel Syncronized
+         This option enables device driver support for Atmel Synchronized
          Serial Communication peripheral (SSC).
  
          The SSC peripheral supports a wide variety of serial frame based
  
          If unsure, say N.
  
 +config OMAP_STI
 +      bool "Serial Trace Interface support"
 +      depends on ARCH_OMAP16XX || ARCH_OMAP24XX || ARCH_OMAP34XX
 +      default n
 +      help
 +        Serial Trace Interface. The protocols suported for OMAP1/2/3 are
 +        STI/CSTI/XTIv2 correspondingly.
 +
 +config OMAP_STI_CONSOLE
 +      bool "STI console support"
 +      depends on OMAP_STI
 +      help
 +        This enables a console driver by way of STI/XTI.
 +
  config ENCLOSURE_SERVICES
        tristate "Enclosure Services"
        default n
@@@ -179,7 -165,7 +179,7 @@@ config SGI_X
        depends on (IA64_GENERIC || IA64_SGI_SN2 || IA64_SGI_UV || X86_UV) && SMP
        select IA64_UNCACHED_ALLOCATOR if IA64_GENERIC || IA64_SGI_SN2
        select GENERIC_ALLOCATOR if IA64_GENERIC || IA64_SGI_SN2
-       select SGI_GRU if (IA64_GENERIC || IA64_SGI_UV || X86_64) && SMP
+       select SGI_GRU if X86_64 && SMP
        ---help---
          An SGI machine can be divided into multiple Single System
          Images which act independently of each other and have
@@@ -203,7 -189,7 +203,7 @@@ config HP_IL
  
  config SGI_GRU
        tristate "SGI GRU driver"
-       depends on (X86_UV || IA64_SGI_UV || IA64_GENERIC) && SMP
+       depends on X86_UV && SMP
        default n
        select MMU_NOTIFIER
        ---help---
diff --combined drivers/mmc/host/Kconfig
index ff8836306e77176cee4c3ddef4b458726b76a0dd,b4cf691f3f64ec9cdbbc2792d32ae35bbf37bbfe..5e7ef789c828735754e25275a60f54ac9c3d9a86
@@@ -37,6 -37,13 +37,13 @@@ config MMC_SDHC
  
          If unsure, say N.
  
+ config MMC_SDHCI_IO_ACCESSORS
+       bool
+       depends on MMC_SDHCI
+       help
+         This is silent Kconfig symbol that is selected by the drivers that
+         need to overwrite SDHCI IO memory accessors.
  config MMC_SDHCI_PCI
        tristate "SDHCI support on PCI bus"
        depends on MMC_SDHCI && PCI
@@@ -65,11 -72,21 +72,22 @@@ config MMC_RICOH_MM
  
          If unsure, say Y.
  
+ config MMC_SDHCI_OF
+       tristate "SDHCI support on OpenFirmware platforms"
+       depends on MMC_SDHCI && PPC_OF
+       select MMC_SDHCI_IO_ACCESSORS
+       help
+         This selects the OF support for Secure Digital Host Controller
+         Interfaces. So far, only the Freescale eSDHC controller is known
+         to exist on OF platforms.
+         If unsure, say N.
  config MMC_OMAP
        tristate "TI OMAP Multimedia Card Interface support"
 -      depends on ARCH_OMAP
 +      depends on ARCH_OMAP1 || (ARCH_OMAP2 && ARCH_OMAP2420)
        select TPS65010 if MACH_OMAP_H2
 +      select OMAP_GPIO_SWITCH if MACH_NOKIA_N800
        help
          This selects the TI OMAP Multimedia card Interface.
          If you have an OMAP board with a Multimedia Card slot,
@@@ -172,13 -189,24 +190,24 @@@ config MMC_TIFM_S
            To compile this driver as a module, choose M here: the
          module will be called tifm_sd.
  
+ config MMC_MVSDIO
+       tristate "Marvell MMC/SD/SDIO host driver"
+       depends on PLAT_ORION
+       ---help---
+         This selects the Marvell SDIO host driver.
+         SDIO may currently be found on the Kirkwood 88F6281 and 88F6192
+         SoC controllers.
+         To compile this driver as a module, choose M here: the
+         module will be called mvsdio.
  config MMC_SPI
        tristate "MMC/SD/SDIO over SPI"
        depends on SPI_MASTER && !HIGHMEM && HAS_DMA
        select CRC7
        select CRC_ITU_T
        help
-         Some systems accss MMC/SD/SDIO cards using a SPI controller
+         Some systems access MMC/SD/SDIO cards using a SPI controller
          instead of using a "native" MMC/SD/SDIO controller.  This has a
          disadvantage of being relatively high overhead, but a compensating
          advantage of working on many systems without dedicated MMC/SD/SDIO
index ac51f0b4954d2cf9270367b79b71df5e7a617ab1,d183be6f2a5f7ab369ef8b60c5cfd25815db110f..63a06266828edb21fda7fefe8172b704bcb1a236
@@@ -56,6 -56,7 +56,7 @@@
  #define SDVS18                        (0x5 << 9)
  #define SDVS30                        (0x6 << 9)
  #define SDVS33                        (0x7 << 9)
+ #define SDVS_MASK             0x00000E00
  #define SDVSCLR                       0xFFFFF1FF
  #define SDVSDET                       0x00000400
  #define AUTOIDLE              0x1
@@@ -76,6 -77,7 +77,7 @@@
  #define MSBS                  (1 << 5)
  #define BCE                   (1 << 1)
  #define FOUR_BIT              (1 << 1)
+ #define DW8                   (1 << 5)
  #define CC                    0x1
  #define TC                    0x02
  #define OD                    0x1
   */
  #define OMAP_MMC1_DEVID               0
  #define OMAP_MMC2_DEVID               1
+ #define OMAP_MMC3_DEVID               2
  
- #define OMAP_MMC_DATADIR_NONE 0
- #define OMAP_MMC_DATADIR_READ 1
- #define OMAP_MMC_DATADIR_WRITE        2
  #define MMC_TIMEOUT_MS                20
  #define OMAP_MMC_MASTER_CLOCK 96000000
  #define DRIVER_NAME           "mmci-omap-hs"
@@@ -137,18 -137,18 +137,18 @@@ struct mmc_omap_host 
        resource_size_t         mapbase;
        unsigned int            id;
        unsigned int            dma_len;
-       unsigned int            dma_dir;
+       unsigned int            dma_sg_idx;
        unsigned char           bus_mode;
-       unsigned char           datadir;
        u32                     *buffer;
        u32                     bytesleft;
        int                     suspended;
        int                     irq;
        int                     carddetect;
        int                     use_dma, dma_ch;
-       int                     initstr;
+       int                     dma_line_tx, dma_line_rx;
        int                     slot_id;
        int                     dbclk_enabled;
+       int                     response_busy;
        struct  omap_mmc_platform_data  *pdata;
  };
  
@@@ -218,7 -218,7 +218,7 @@@ mmc_omap_show_slot_name(struct device *
        struct mmc_omap_host *host = mmc_priv(mmc);
        struct omap_mmc_slot_data slot = host->pdata->slots[host->slot_id];
  
-       return sprintf(buf, "slot:%s\n", slot.name);
+       return sprintf(buf, "%s\n", slot.name);
  }
  
  static DEVICE_ATTR(slot_name, S_IRUGO, mmc_omap_show_slot_name, NULL);
@@@ -243,10 -243,14 +243,14 @@@ mmc_omap_start_command(struct mmc_omap_
        OMAP_HSMMC_WRITE(host->base, ISE, INT_EN_MASK);
        OMAP_HSMMC_WRITE(host->base, IE, INT_EN_MASK);
  
+       host->response_busy = 0;
        if (cmd->flags & MMC_RSP_PRESENT) {
                if (cmd->flags & MMC_RSP_136)
                        resptype = 1;
-               else
+               else if (cmd->flags & MMC_RSP_BUSY) {
+                       resptype = 3;
+                       host->response_busy = 1;
+               } else
                        resptype = 2;
        }
  
        OMAP_HSMMC_WRITE(host->base, CMD, cmdreg);
  }
  
+ static int
+ mmc_omap_get_dma_dir(struct mmc_omap_host *host, struct mmc_data *data)
+ {
+       if (data->flags & MMC_DATA_WRITE)
+               return DMA_TO_DEVICE;
+       else
+               return DMA_FROM_DEVICE;
+ }
  /*
   * Notify the transfer complete to MMC core
   */
  static void
  mmc_omap_xfer_done(struct mmc_omap_host *host, struct mmc_data *data)
  {
+       if (!data) {
+               struct mmc_request *mrq = host->mrq;
+               host->mrq = NULL;
+               mmc_omap_fclk_lazy_disable(host);
+               mmc_request_done(host->mmc, mrq);
+               return;
+       }
        host->data = NULL;
  
        if (host->use_dma && host->dma_ch != -1)
                dma_unmap_sg(mmc_dev(host->mmc), data->sg, host->dma_len,
-                       host->dma_dir);
-       host->datadir = OMAP_MMC_DATADIR_NONE;
+                       mmc_omap_get_dma_dir(host, data));
  
        if (!data->error)
                data->bytes_xfered += data->blocks * (data->blksz);
@@@ -322,7 -342,7 +342,7 @@@ mmc_omap_cmd_done(struct mmc_omap_host 
                        cmd->resp[0] = OMAP_HSMMC_READ(host->base, RSP10);
                }
        }
-       if (host->data == NULL || cmd->error) {
+       if ((host->data == NULL && !host->response_busy) || cmd->error) {
                host->mrq = NULL;
                mmc_request_done(host->mmc, cmd->mrq);
        }
  /*
   * DMA clean up for command errors
   */
- static void mmc_dma_cleanup(struct mmc_omap_host *host)
+ static void mmc_dma_cleanup(struct mmc_omap_host *host, int errno)
  {
-       host->data->error = -ETIMEDOUT;
+       host->data->error = errno;
  
        if (host->use_dma && host->dma_ch != -1) {
                dma_unmap_sg(mmc_dev(host->mmc), host->data->sg, host->dma_len,
-                       host->dma_dir);
+                       mmc_omap_get_dma_dir(host, host->data));
                omap_free_dma(host->dma_ch);
                host->dma_ch = -1;
                up(&host->sem);
        }
        host->data = NULL;
-       host->datadir = OMAP_MMC_DATADIR_NONE;
  }
  
  /*
@@@ -412,7 -431,7 +431,7 @@@ static irqreturn_t mmc_omap_irq(int irq
        struct mmc_data *data;
        int end_cmd = 0, end_trans = 0, status;
  
-       if (host->cmd == NULL && host->data == NULL) {
+       if (host->mrq == NULL) {
                OMAP_HSMMC_WRITE(host->base, STAT,
                        OMAP_HSMMC_READ(host->base, STAT));
                return IRQ_HANDLED;
                                }
                                end_cmd = 1;
                        }
-                       if (host->data) {
-                               mmc_dma_cleanup(host);
+                       if (host->data || host->response_busy) {
+                               if (host->data)
+                                       mmc_dma_cleanup(host, -ETIMEDOUT);
+                               host->response_busy = 0;
                                mmc_omap_reset_controller_fsm(host, SRD);
                        }
                }
                if ((status & DATA_TIMEOUT) ||
                        (status & DATA_CRC)) {
-                       if (host->data) {
-                               if (status & DATA_TIMEOUT)
-                                       mmc_dma_cleanup(host);
+                       if (host->data || host->response_busy) {
+                               int err = (status & DATA_TIMEOUT) ?
+                                               -ETIMEDOUT : -EILSEQ;
+                               if (host->data)
+                                       mmc_dma_cleanup(host, err);
                                else
-                                       host->data->error = -EILSEQ;
+                                       host->mrq->cmd->error = err;
+                               host->response_busy = 0;
                                mmc_omap_reset_controller_fsm(host, SRD);
                                end_trans = 1;
                        }
        }
  
        OMAP_HSMMC_WRITE(host->base, STAT, status);
 +      OMAP_HSMMC_READ(host->base, STAT); /* flush posted write */
  
        if (end_cmd || (status & CC))
                mmc_omap_cmd_done(host, host->cmd);
        return IRQ_HANDLED;
  }
  
+ static void set_sd_bus_power(struct mmc_omap_host *host)
+ {
+       unsigned long i;
+       OMAP_HSMMC_WRITE(host->base, HCTL,
+                        OMAP_HSMMC_READ(host->base, HCTL) | SDBP);
+       for (i = 0; i < loops_per_jiffy; i++) {
+               if (OMAP_HSMMC_READ(host->base, HCTL) & SDBP)
+                       break;
+               cpu_relax();
+       }
+ }
  /*
   * Switch MMC interface voltage ... only relevant for MMC1.
   *
@@@ -486,9 -523,6 +524,6 @@@ static int omap_mmc_switch_opcond(struc
        u32 reg_val = 0;
        int ret;
  
-       if (host->id != OMAP_MMC1_DEVID)
-               return 0;
        /* Disable the clocks */
        clk_disable(host->fclk);
        clk_disable(host->iclk);
                reg_val |= SDVS30;
  
        OMAP_HSMMC_WRITE(host->base, HCTL, reg_val);
-       OMAP_HSMMC_WRITE(host->base, HCTL,
-               OMAP_HSMMC_READ(host->base, HCTL) | SDBP);
+       set_sd_bus_power(host);
  
        return 0;
  err:
@@@ -552,7 -584,10 +585,10 @@@ static void mmc_omap_detect(struct work
                                                mmc_carddetect_work);
        struct omap_mmc_slot_data *slot = &mmc_slot(host);
  
-       host->carddetect = slot->card_detect(slot->card_detect_irq);
+       if (mmc_slot(host).card_detect)
+               host->carddetect = slot->card_detect(slot->card_detect_irq);
+       else
+               host->carddetect = -ENOSYS;
  
        sysfs_notify(&host->mmc->class_dev.kobj, NULL, "cover_switch");
        if (host->carddetect) {
@@@ -575,6 -610,48 +611,48 @@@ static irqreturn_t omap_mmc_cd_handler(
        return IRQ_HANDLED;
  }
  
+ static int mmc_omap_get_dma_sync_dev(struct mmc_omap_host *host,
+                                    struct mmc_data *data)
+ {
+       int sync_dev;
+       if (data->flags & MMC_DATA_WRITE)
+               sync_dev = host->dma_line_tx;
+       else
+               sync_dev = host->dma_line_rx;
+       return sync_dev;
+ }
+ static void mmc_omap_config_dma_params(struct mmc_omap_host *host,
+                                      struct mmc_data *data,
+                                      struct scatterlist *sgl)
+ {
+       int blksz, nblk, dma_ch;
+       dma_ch = host->dma_ch;
+       if (data->flags & MMC_DATA_WRITE) {
+               omap_set_dma_dest_params(dma_ch, 0, OMAP_DMA_AMODE_CONSTANT,
+                       (host->mapbase + OMAP_HSMMC_DATA), 0, 0);
+               omap_set_dma_src_params(dma_ch, 0, OMAP_DMA_AMODE_POST_INC,
+                       sg_dma_address(sgl), 0, 0);
+       } else {
+               omap_set_dma_src_params(dma_ch, 0, OMAP_DMA_AMODE_CONSTANT,
+                                       (host->mapbase + OMAP_HSMMC_DATA), 0, 0);
+               omap_set_dma_dest_params(dma_ch, 0, OMAP_DMA_AMODE_POST_INC,
+                       sg_dma_address(sgl), 0, 0);
+       }
+       blksz = host->data->blksz;
+       nblk = sg_dma_len(sgl) / blksz;
+       omap_set_dma_transfer_params(dma_ch, OMAP_DMA_DATA_TYPE_S32,
+                       blksz / 4, nblk, OMAP_DMA_SYNC_FRAME,
+                       mmc_omap_get_dma_sync_dev(host, data),
+                       !(data->flags & MMC_DATA_WRITE));
+       omap_start_dma(dma_ch);
+ }
  /*
   * DMA call back function
   */
@@@ -588,6 -665,14 +666,14 @@@ static void mmc_omap_dma_cb(int lch, u1
        if (host->dma_ch < 0)
                return;
  
+       host->dma_sg_idx++;
+       if (host->dma_sg_idx < host->dma_len) {
+               /* Fire up the next transfer. */
+               mmc_omap_config_dma_params(host, host->data,
+                                          host->data->sg + host->dma_sg_idx);
+               return;
+       }
        omap_free_dma(host->dma_ch);
        host->dma_ch = -1;
        /*
        up(&host->sem);
  }
  
- /*
-  * Configure dma src and destination parameters
-  */
- static int mmc_omap_config_dma_param(int sync_dir, struct mmc_omap_host *host,
-                               struct mmc_data *data)
- {
-       if (sync_dir == 0) {
-               omap_set_dma_dest_params(host->dma_ch, 0,
-                       OMAP_DMA_AMODE_CONSTANT,
-                       (host->mapbase + OMAP_HSMMC_DATA), 0, 0);
-               omap_set_dma_src_params(host->dma_ch, 0,
-                       OMAP_DMA_AMODE_POST_INC,
-                       sg_dma_address(&data->sg[0]), 0, 0);
-       } else {
-               omap_set_dma_src_params(host->dma_ch, 0,
-                       OMAP_DMA_AMODE_CONSTANT,
-                       (host->mapbase + OMAP_HSMMC_DATA), 0, 0);
-               omap_set_dma_dest_params(host->dma_ch, 0,
-                       OMAP_DMA_AMODE_POST_INC,
-                       sg_dma_address(&data->sg[0]), 0, 0);
-       }
-       return 0;
- }
  /*
   * Routine to configure and start DMA for the MMC card
   */
  static int
  mmc_omap_start_dma_transfer(struct mmc_omap_host *host, struct mmc_request *req)
  {
-       int sync_dev, sync_dir = 0;
-       int dma_ch = 0, ret = 0, err = 1;
+       int dma_ch = 0, ret = 0, err = 1, i;
        struct mmc_data *data = req->data;
  
+       /* Sanity check: all the SG entries must be aligned by block size. */
+       for (i = 0; i < host->dma_len; i++) {
+               struct scatterlist *sgl;
+               sgl = data->sg + i;
+               if (sgl->length % data->blksz)
+                       return -EINVAL;
+       }
+       if ((data->blksz % 4) != 0)
+               /* REVISIT: The MMC buffer increments only when MSB is written.
+                * Return error for blksz which is non multiple of four.
+                */
+               return -EINVAL;
        /*
         * If for some reason the DMA transfer is still active,
         * we wait for timeout period and free the dma
                        return err;
        }
  
-       if (!(data->flags & MMC_DATA_WRITE)) {
-               host->dma_dir = DMA_FROM_DEVICE;
-               if (host->id == OMAP_MMC1_DEVID)
-                       sync_dev = OMAP24XX_DMA_MMC1_RX;
-               else
-                       sync_dev = OMAP24XX_DMA_MMC2_RX;
-       } else {
-               host->dma_dir = DMA_TO_DEVICE;
-               if (host->id == OMAP_MMC1_DEVID)
-                       sync_dev = OMAP24XX_DMA_MMC1_TX;
-               else
-                       sync_dev = OMAP24XX_DMA_MMC2_TX;
-       }
-       ret = omap_request_dma(sync_dev, "MMC/SD", mmc_omap_dma_cb,
-                       host, &dma_ch);
+       ret = omap_request_dma(mmc_omap_get_dma_sync_dev(host, data), "MMC/SD",
+                              mmc_omap_dma_cb,host, &dma_ch);
        if (ret != 0) {
-               dev_dbg(mmc_dev(host->mmc),
+               dev_err(mmc_dev(host->mmc),
                        "%s: omap_request_dma() failed with %d\n",
                        mmc_hostname(host->mmc), ret);
                return ret;
        }
  
        host->dma_len = dma_map_sg(mmc_dev(host->mmc), data->sg,
-                       data->sg_len, host->dma_dir);
+                       data->sg_len, mmc_omap_get_dma_dir(host, data));
        host->dma_ch = dma_ch;
+       host->dma_sg_idx = 0;
  
-       if (!(data->flags & MMC_DATA_WRITE))
-               mmc_omap_config_dma_param(1, host, data);
-       else
-               mmc_omap_config_dma_param(0, host, data);
-       if ((data->blksz % 4) == 0)
-               omap_set_dma_transfer_params(dma_ch, OMAP_DMA_DATA_TYPE_S32,
-                       (data->blksz / 4), data->blocks, OMAP_DMA_SYNC_FRAME,
-                       sync_dev, sync_dir);
-       else
-               /* REVISIT: The MMC buffer increments only when MSB is written.
-                * Return error for blksz which is non multiple of four.
-                */
-               return -EINVAL;
+       mmc_omap_config_dma_params(host, data, data->sg);
  
-       omap_start_dma(dma_ch);
        return 0;
  }
  
@@@ -740,7 -788,6 +789,6 @@@ mmc_omap_prepare_data(struct mmc_omap_h
        host->data = req->data;
  
        if (req->data == NULL) {
-               host->datadir = OMAP_MMC_DATADIR_NONE;
                OMAP_HSMMC_WRITE(host->base, BLK, 0);
                return 0;
        }
                                        | (req->data->blocks << 16));
        set_data_timeout(host, req);
  
-       host->datadir = (req->data->flags & MMC_DATA_WRITE) ?
-                       OMAP_MMC_DATADIR_WRITE : OMAP_MMC_DATADIR_READ;
        if (host->use_dma) {
                ret = mmc_omap_start_dma_transfer(host, req);
                if (ret != 0) {
@@@ -783,36 -827,29 +828,29 @@@ static void omap_mmc_set_ios(struct mmc
        u16 dsor = 0;
        unsigned long regval;
        unsigned long timeout;
+       u32 con;
  
        switch (ios->power_mode) {
        case MMC_POWER_OFF:
                mmc_slot(host).set_power(host->dev, host->slot_id, 0, 0);
-               /*
-                * Reset interface voltage to 3V if it's 1.8V now;
-                * only relevant on MMC-1, the others always use 1.8V.
-                *
-                * REVISIT: If we are able to detect cards after unplugging
-                * a 1.8V card, this code should not be needed.
-                */
-               if (host->id != OMAP_MMC1_DEVID)
-                       break;
-               if (!(OMAP_HSMMC_READ(host->base, HCTL) & SDVSDET)) {
-                       int vdd = fls(host->mmc->ocr_avail) - 1;
-                       if (omap_mmc_switch_opcond(host, vdd) != 0)
-                               host->mmc->ios.vdd = vdd;
-               }
                break;
        case MMC_POWER_UP:
                mmc_slot(host).set_power(host->dev, host->slot_id, 1, ios->vdd);
                break;
        }
  
+       con = OMAP_HSMMC_READ(host->base, CON);
        switch (mmc->ios.bus_width) {
+       case MMC_BUS_WIDTH_8:
+               OMAP_HSMMC_WRITE(host->base, CON, con | DW8);
+               break;
        case MMC_BUS_WIDTH_4:
+               OMAP_HSMMC_WRITE(host->base, CON, con & ~DW8);
                OMAP_HSMMC_WRITE(host->base, HCTL,
                        OMAP_HSMMC_READ(host->base, HCTL) | FOUR_BIT);
                break;
        case MMC_BUS_WIDTH_1:
+               OMAP_HSMMC_WRITE(host->base, CON, con & ~DW8);
                OMAP_HSMMC_WRITE(host->base, HCTL,
                        OMAP_HSMMC_READ(host->base, HCTL) & ~FOUR_BIT);
                break;
@@@ -892,6 -929,33 +930,33 @@@ static int omap_hsmmc_get_ro(struct mmc
        return pdata->slots[0].get_ro(host->dev, 0);
  }
  
+ static void omap_hsmmc_init(struct mmc_omap_host *host)
+ {
+       u32 hctl, capa, value;
+       /* Only MMC1 supports 3.0V */
+       if (host->id == OMAP_MMC1_DEVID) {
+               hctl = SDVS30;
+               capa = VS30 | VS18;
+       } else {
+               hctl = SDVS18;
+               capa = VS18;
+       }
+       value = OMAP_HSMMC_READ(host->base, HCTL) & ~SDVS_MASK;
+       OMAP_HSMMC_WRITE(host->base, HCTL, value | hctl);
+       value = OMAP_HSMMC_READ(host->base, CAPA);
+       OMAP_HSMMC_WRITE(host->base, CAPA, value | capa);
+       /* Set the controller to AUTO IDLE mode */
+       value = OMAP_HSMMC_READ(host->base, SYSCONFIG);
+       OMAP_HSMMC_WRITE(host->base, SYSCONFIG, value | AUTOIDLE);
+       /* Set SD bus power bit */
+       set_sd_bus_power(host);
+ }
  static struct mmc_host_ops mmc_omap_ops = {
        .request = omap_mmc_request,
        .set_ios = omap_mmc_set_ios,
@@@ -907,7 -971,6 +972,6 @@@ static int __init omap_mmc_probe(struc
        struct mmc_omap_host *host = NULL;
        struct resource *res;
        int ret = 0, irq;
-       u32 hctl, capa;
  
        if (pdata == NULL) {
                dev_err(&pdev->dev, "Platform Data is missing\n");
                else
                        host->dbclk_enabled = 1;
  
- #ifdef CONFIG_MMC_BLOCK_BOUNCE
-       mmc->max_phys_segs = 1;
-       mmc->max_hw_segs = 1;
- #endif
+       /* Since we do only SG emulation, we can have as many segs
+        * as we want. */
+       mmc->max_phys_segs = 1024;
+       mmc->max_hw_segs = 1024;
        mmc->max_blk_size = 512;       /* Block Length at max can be 1024 */
        mmc->max_blk_count = 0xFFFF;    /* No. of Blocks is 16 bits */
        mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
        mmc->max_seg_size = mmc->max_req_size;
  
 -      mmc->ocr_avail = mmc_slot(host).ocr_mask;
        mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED;
  
-       if (pdata->slots[host->slot_id].wires >= 4)
+       if (pdata->slots[host->slot_id].wires >= 8)
+               mmc->caps |= MMC_CAP_8_BIT_DATA;
+       else if (pdata->slots[host->slot_id].wires >= 4)
                mmc->caps |= MMC_CAP_4_BIT_DATA;
  
-       /* Only MMC1 supports 3.0V */
-       if (host->id == OMAP_MMC1_DEVID) {
-               hctl = SDVS30;
-               capa = VS30 | VS18;
-       } else {
-               hctl = SDVS18;
-               capa = VS18;
-       }
-       OMAP_HSMMC_WRITE(host->base, HCTL,
-                       OMAP_HSMMC_READ(host->base, HCTL) | hctl);
-       OMAP_HSMMC_WRITE(host->base, CAPA,
-                       OMAP_HSMMC_READ(host->base, CAPA) | capa);
-       /* Set the controller to AUTO IDLE mode */
-       OMAP_HSMMC_WRITE(host->base, SYSCONFIG,
-                       OMAP_HSMMC_READ(host->base, SYSCONFIG) | AUTOIDLE);
+       omap_hsmmc_init(host);
  
-       /* Set SD bus power bit */
-       OMAP_HSMMC_WRITE(host->base, HCTL,
-                       OMAP_HSMMC_READ(host->base, HCTL) | SDBP);
+       /* Select DMA lines */
+       switch (host->id) {
+       case OMAP_MMC1_DEVID:
+               host->dma_line_tx = OMAP24XX_DMA_MMC1_TX;
+               host->dma_line_rx = OMAP24XX_DMA_MMC1_RX;
+               break;
+       case OMAP_MMC2_DEVID:
+               host->dma_line_tx = OMAP24XX_DMA_MMC2_TX;
+               host->dma_line_rx = OMAP24XX_DMA_MMC2_RX;
+               break;
+       case OMAP_MMC3_DEVID:
+               host->dma_line_tx = OMAP34XX_DMA_MMC3_TX;
+               host->dma_line_rx = OMAP34XX_DMA_MMC3_RX;
+               break;
+       default:
+               dev_err(mmc_dev(host->mmc), "Invalid MMC id\n");
+               goto err_irq;
+       }
  
        /* Request IRQ for MMC operations */
        ret = request_irq(host->irq, mmc_omap_irq, IRQF_DISABLED,
                goto err_irq;
        }
  
 +      /* initialize power supplies, gpios, etc */
        if (pdata->init != NULL) {
                if (pdata->init(&pdev->dev) != 0) {
 -                      dev_dbg(mmc_dev(host->mmc),
 -                              "Unable to configure MMC IRQs\n");
 +                      dev_dbg(mmc_dev(host->mmc), "late init error\n");
                        goto err_irq_cd_init;
                }
        }
 +      mmc->ocr_avail = mmc_slot(host).ocr_mask;
  
        /* Request IRQ for card detect */
-       if ((mmc_slot(host).card_detect_irq) && (mmc_slot(host).card_detect)) {
+       if ((mmc_slot(host).card_detect_irq)) {
                ret = request_irq(mmc_slot(host).card_detect_irq,
                                  omap_mmc_cd_handler,
                                  IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING
                if (ret < 0)
                        goto err_slot_name;
        }
-       if (mmc_slot(host).card_detect_irq && mmc_slot(host).card_detect &&
-                       host->pdata->slots[host->slot_id].get_cover_state) {
+       if (mmc_slot(host).card_detect_irq &&
+           host->pdata->slots[host->slot_id].get_cover_state) {
                ret = device_create_file(&mmc->class_dev,
                                        &dev_attr_cover_switch);
                if (ret < 0)
@@@ -1174,20 -1238,8 +1239,8 @@@ static int omap_mmc_suspend(struct plat
                                                " level suspend\n");
                        }
  
-                       if (host->id == OMAP_MMC1_DEVID
-                                       && !(OMAP_HSMMC_READ(host->base, HCTL)
-                                                       & SDVSDET)) {
-                               OMAP_HSMMC_WRITE(host->base, HCTL,
-                                       OMAP_HSMMC_READ(host->base, HCTL)
-                                       & SDVSCLR);
-                               OMAP_HSMMC_WRITE(host->base, HCTL,
-                                       OMAP_HSMMC_READ(host->base, HCTL)
-                                       | SDVS30);
-                               OMAP_HSMMC_WRITE(host->base, HCTL,
-                                       OMAP_HSMMC_READ(host->base, HCTL)
-                                       | SDBP);
-                       }
+                       OMAP_HSMMC_WRITE(host->base, HCTL,
+                                        OMAP_HSMMC_READ(host->base, HCTL) & ~SDBP);
                        clk_disable(host->fclk);
                        clk_disable(host->iclk);
                        clk_disable(host->dbclk);
@@@ -1223,6 -1275,8 +1276,8 @@@ static int omap_mmc_resume(struct platf
                        dev_dbg(mmc_dev(host->mmc),
                                        "Enabling debounce clk failed\n");
  
+               omap_hsmmc_init(host);
                if (host->pdata->resume) {
                        ret = host->pdata->resume(&pdev->dev, host->slot_id);
                        if (ret)
index 56cfd5244b1636a0dbc28766ed236613fb9c2405,5011fa73f91886302135ea08904908c2c6f89461..6b172a4f88627607912887178e9b176161e9dc2a
@@@ -335,7 -335,11 +335,11 @@@ static int parse_cmdline_partitions(str
                                }
                                offset += part->parts[i].size;
                        }
-                       *pparts = part->parts;
+                       *pparts = kmemdup(part->parts,
+                                       sizeof(*part->parts) * part->num_parts,
+                                       GFP_KERNEL);
+                       if (!*pparts)
+                               return -ENOMEM;
                        return part->num_parts;
                }
        }
   *
   * This function needs to be visible for bootloaders.
   */
 -static int mtdpart_setup(char *s)
 +int mtdpart_setup(char *s)
  {
        cmdline = s;
        return 1;
diff --combined drivers/mtd/maps/Kconfig
index d071eabdabaf8ccfd2b2bd112b0d6e7a5e698036,82923bd2d9c5444166c53552a409f27ebb646e50..5d590fe58d735a34d1d31b5f46e1b29bf922547b
@@@ -445,13 -445,6 +445,13 @@@ config MTD_CEIV
          PhotoMax Digital Picture Frame.
          If you have such a device, say 'Y'.
  
 +config MTD_NOR_TOTO
 +      tristate "NOR Flash device on TOTO board"
 +      depends on ARCH_OMAP && OMAP_TOTO
 +      help
 +        This enables access to the NOR flash on the Texas Instruments
 +        TOTO board.
 +
  config MTD_H720X
        tristate "Hynix evaluation board mappings"
        depends on MTD_CFI && ( ARCH_H7201 || ARCH_H7202 )
@@@ -536,12 -529,6 +536,6 @@@ config MTD_DMV18
          help
            Map driver for Dy-4 SVME/DMV-182 board.
  
- config MTD_SHARP_SL
-       tristate "ROM mapped on Sharp SL Series"
-       depends on ARCH_PXA
-       help
-         This enables access to the flash chip on the Sharp SL Series of PDAs.
  config MTD_INTEL_VR_NOR
        tristate "NOR flash on Intel Vermilion Range Expansion Bus CS0"
        depends on PCI
          Map driver for a NOR flash bank located on the Expansion Bus of the
          Intel Vermilion Range chipset.
  
+ config MTD_RBTX4939
+       tristate "Map driver for RBTX4939 board"
+       depends on TOSHIBA_RBTX4939 && MTD_CFI && MTD_COMPLEX_MAPPINGS
+       help
+         Map driver for NOR flash chips on RBTX4939 board.
  config MTD_PLATRAM
        tristate "Map driver for platform device RAM (mtd-ram)"
        select MTD_RAM
index d70822def7924d63238ca01f6a58fc9fbd06f651,2dbc1bec848808559f4bc52995eda5ee06fb8dad..a39401735ba6ae7f6cd6980d763e340e1e73abbe
@@@ -52,14 -52,13 +52,14 @@@ obj-$(CONFIG_MTD_NETtel)   += nettel.
  obj-$(CONFIG_MTD_SCB2_FLASH)  += scb2_flash.o
  obj-$(CONFIG_MTD_H720X)               += h720x-flash.o
  obj-$(CONFIG_MTD_SBC8240)     += sbc8240.o
 +obj-$(CONFIG_MTD_NOR_TOTO)    += omap-toto-flash.o
  obj-$(CONFIG_MTD_IXP4XX)      += ixp4xx.o
  obj-$(CONFIG_MTD_IXP2000)     += ixp2000.o
  obj-$(CONFIG_MTD_WRSBC8260)   += wr_sbc82xx_flash.o
  obj-$(CONFIG_MTD_DMV182)      += dmv182.o
- obj-$(CONFIG_MTD_SHARP_SL)    += sharpsl-flash.o
  obj-$(CONFIG_MTD_PLATRAM)     += plat-ram.o
  obj-$(CONFIG_MTD_OMAP_NOR)    += omap_nor.o
  obj-$(CONFIG_MTD_INTEL_VR_NOR)        += intel_vr_nor.o
  obj-$(CONFIG_MTD_BFIN_ASYNC)  += bfin-async-flash.o
+ obj-$(CONFIG_MTD_RBTX4939)    += rbtx4939-flash.o
  obj-$(CONFIG_MTD_VMU)         += vmu-flash.o
index 1273d5738447428c4b92b42854cff8985a0461cd,a24478102b118920e1dfd423fa082fa432576345..8cc92958e5e9a025c6895ea0a2566d4f3e20c510
@@@ -115,6 -115,8 +115,8 @@@ static int __init omapflash_probe(struc
        }
        info->mtd->owner = THIS_MODULE;
  
+       info->mtd->dev.parent = &pdev->dev;
  #ifdef CONFIG_MTD_PARTITIONS
        err = parse_mtd_partitions(info->mtd, part_probes, &info->parts, 0);
        if (err > 0)
@@@ -142,12 -144,11 +144,12 @@@ out_free_info
  static int __exit omapflash_remove(struct platform_device *pdev)
  {
        struct omapflash_info *info = platform_get_drvdata(pdev);
 +      struct flash_platform_data *pdata = pdev->dev.platform_data;
  
        platform_set_drvdata(pdev, NULL);
  
        if (info) {
 -              if (info->parts) {
 +              if (info->parts || (pdata && pdata->parts)) {
                        del_mtd_partitions(info->mtd);
                        kfree(info->parts);
                } else
diff --combined drivers/mtd/nand/Kconfig
index 53635b95e5aa9082b8cd32f31c1dbdc1c616daa4,890936d0275ed21b957e2a46a9af52764a1fe28b..80b691b67b5ef49819c0105760baf40895b3368e
@@@ -74,31 -74,6 +74,31 @@@ config MTD_NAND_AMS_DELT
        help
          Support for NAND flash on Amstrad E3 (Delta).
  
 +config MTD_NAND_OMAP2
 +      tristate "NAND Flash device on OMAP2 and OMAP3"
 +      depends on ARM && MTD_NAND && (ARCH_OMAP2 || ARCH_OMAP3)
 +      help
 +          Support for NAND flash on Texas Instruments OMAP2 and OMAP3 platforms.
 +
 +config MTD_NAND_OMAP
 +      tristate "NAND Flash device on OMAP H3/H2/P2 boards"
 +      depends on ARM && ARCH_OMAP1 && MTD_NAND && (MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_PERSEUS2)
 +      help
 +        Support for NAND flash on Texas Instruments H3/H2/P2 platforms.
 +
 +config MTD_NAND_OMAP_HW
 +      bool "OMAP HW NAND Flash controller support"
 +        depends on ARM && ARCH_OMAP16XX && MTD_NAND
 +
 +      help
 +        Driver for TI OMAP16xx hardware NAND flash controller.
 +
 +config MTD_NAND_TOTO
 +      tristate "NAND Flash device on TOTO board"
 +      depends on ARCH_OMAP && BROKEN
 +      help
 +        Support for NAND flash on Texas Instruments Toto platform.
 +
  config MTD_NAND_TS7250
        tristate "NAND Flash device on TS-7250 board"
        depends on MACH_TS72XX
@@@ -359,7 -334,7 +359,7 @@@ config MTD_NAND_ATMEL_ECC_NON
  endchoice
  
  config MTD_NAND_PXA3xx
-       bool "Support for NAND flash devices on PXA3xx"
+       tristate "Support for NAND flash devices on PXA3xx"
        depends on MTD_NAND && PXA3xx
        help
          This enables the driver for the NAND flash device found on
@@@ -452,4 -427,23 +452,23 @@@ config MTD_NAND_SH_FLCT
          Several Renesas SuperH CPU has FLCTL. This option enables support
          for NAND Flash using FLCTL. This driver support SH7723.
  
+ config MTD_NAND_DAVINCI
+         tristate "Support NAND on DaVinci SoC"
+         depends on ARCH_DAVINCI
+         help
+         Enable the driver for NAND flash chips on Texas Instruments
+         DaVinci processors.
+ config MTD_NAND_TXX9NDFMC
+       tristate "NAND Flash support for TXx9 SoC"
+       depends on SOC_TX4938 || SOC_TX4939
+       help
+         This enables the NAND flash controller on the TXx9 SoCs.
+ config MTD_NAND_SOCRATES
+       tristate "Support for NAND on Socrates board"
+       depends on MTD_NAND && SOCRATES
+       help
+         Enables support for NAND Flash chips wired onto Socrates board.
  endif # MTD_NAND
index 3ec014c89d328304208b0dbd08f0a50b73d746a0,d33860ac42c396a4f500d6498daf9559787b50c7..9bf5b1da2a4c2eab08c5454488cc4f5f5da3141a
@@@ -8,13 -8,13 +8,14 @@@ obj-$(CONFIG_MTD_NAND_IDS)            += nand_ids
  obj-$(CONFIG_MTD_NAND_CAFE)           += cafe_nand.o
  obj-$(CONFIG_MTD_NAND_SPIA)           += spia.o
  obj-$(CONFIG_MTD_NAND_AMS_DELTA)      += ams-delta.o
 +obj-$(CONFIG_MTD_NAND_TOTO)           += toto.o
  obj-$(CONFIG_MTD_NAND_AUTCPU12)               += autcpu12.o
  obj-$(CONFIG_MTD_NAND_EDB7312)                += edb7312.o
  obj-$(CONFIG_MTD_NAND_AU1550)         += au1550nd.o
  obj-$(CONFIG_MTD_NAND_BF5XX)          += bf5xx_nand.o
  obj-$(CONFIG_MTD_NAND_PPCHAMELEONEVB) += ppchameleonevb.o
  obj-$(CONFIG_MTD_NAND_S3C2410)                += s3c2410.o
+ obj-$(CONFIG_MTD_NAND_DAVINCI)                += davinci_nand.o
  obj-$(CONFIG_MTD_NAND_DISKONCHIP)     += diskonchip.o
  obj-$(CONFIG_MTD_NAND_H1900)          += h1910.o
  obj-$(CONFIG_MTD_NAND_RTC_FROM4)      += rtc_from4.o
@@@ -25,9 -25,6 +26,9 @@@ obj-$(CONFIG_MTD_NAND_CS553X)         += cs553
  obj-$(CONFIG_MTD_NAND_NDFC)           += ndfc.o
  obj-$(CONFIG_MTD_NAND_ATMEL)          += atmel_nand.o
  obj-$(CONFIG_MTD_NAND_GPIO)           += gpio.o
 +obj-$(CONFIG_MTD_NAND_OMAP)           += omap-nand-flash.o
 +obj-$(CONFIG_MTD_NAND_OMAP2)          += omap2.o
 +obj-$(CONFIG_MTD_NAND_OMAP_HW)                += omap-hw.o
  obj-$(CONFIG_MTD_NAND_CM_X270)                += cmx270_nand.o
  obj-$(CONFIG_MTD_NAND_BASLER_EXCITE)  += excite_nandflash.o
  obj-$(CONFIG_MTD_NAND_PXA3xx)         += pxa3xx_nand.o
@@@ -40,5 -37,7 +41,7 @@@ obj-$(CONFIG_MTD_NAND_FSL_ELBC)               += fsl
  obj-$(CONFIG_MTD_NAND_FSL_UPM)                += fsl_upm.o
  obj-$(CONFIG_MTD_NAND_SH_FLCTL)               += sh_flctl.o
  obj-$(CONFIG_MTD_NAND_MXC)            += mxc_nand.o
+ obj-$(CONFIG_MTD_NAND_SOCRATES)               += socrates_nand.o
+ obj-$(CONFIG_MTD_NAND_TXX9NDFMC)      += txx9ndfmc.o
  
  nand-objs := nand_base.o nand_bbt.o
index f8259c18d6159cce1c4dc625fe16113f16628df9,b9966e64604e81b965526afcc39b4209e3a8148c..94d742bdf25970aad2856edceb06a1d9873c9d8b
  #define CN_VAL_CIFS                     0x1
  #define CN_W1_IDX                     0x3     /* w1 communication */
  #define CN_W1_VAL                     0x1
 +#define CN_IDX_SX1SND                 0x4
 +#define CN_VAL_SX1SND                 0x1
  #define CN_IDX_V86D                   0x4
  #define CN_VAL_V86D_UVESAFB           0x1
  #define CN_IDX_BB                     0x5     /* BlackBoard, from the TSP GPL sampling framework */
+ #define CN_DST_IDX                    0x6
+ #define CN_DST_VAL                    0x1
  
- #define CN_NETLINK_USERS              6
+ #define CN_NETLINK_USERS              7
  
  /*
   * Maximum connector's message size.
diff --combined kernel/printk.c
index c11249d55e84178207db09a50cec88f2b8ed3e01,5052b5497c67995f57c6b548b0b52c1989f4027b..4d6ebdc2b972954ce506b709a4091c6aa9216433
@@@ -32,6 -32,7 +32,7 @@@
  #include <linux/security.h>
  #include <linux/bootmem.h>
  #include <linux/syscalls.h>
+ #include <linux/kexec.h>
  
  #include <asm/uaccess.h>
  
@@@ -44,10 -45,6 +45,10 @@@ void asmlinkage __attribute__((weak)) e
  
  #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
  
 +#ifdef CONFIG_DEBUG_LL
 +extern void printascii(char *);
 +#endif
 +
  /* printk's without a loglevel use this.. */
  #define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
  
@@@ -139,6 -136,24 +140,24 @@@ static char *log_buf = __log_buf
  static int log_buf_len = __LOG_BUF_LEN;
  static unsigned logged_chars; /* Number of chars produced since last read+clear operation */
  
+ #ifdef CONFIG_KEXEC
+ /*
+  * This appends the listed symbols to /proc/vmcoreinfo
+  *
+  * /proc/vmcoreinfo is used by various utiilties, like crash and makedumpfile to
+  * obtain access to symbols that are otherwise very difficult to locate.  These
+  * symbols are specifically used so that utilities can access and extract the
+  * dmesg log from a vmcore file after a crash.
+  */
+ void log_buf_kexec_setup(void)
+ {
+       VMCOREINFO_SYMBOL(log_buf);
+       VMCOREINFO_SYMBOL(log_end);
+       VMCOREINFO_SYMBOL(log_buf_len);
+       VMCOREINFO_SYMBOL(logged_chars);
+ }
+ #endif
  static int __init log_buf_len_setup(char *str)
  {
        unsigned size = memparse(str, &str);
@@@ -671,9 -686,6 +690,9 @@@ asmlinkage int vprintk(const char *fmt
        printed_len += vscnprintf(printk_buf + printed_len,
                                  sizeof(printk_buf) - printed_len, fmt, args);
  
 +#ifdef        CONFIG_DEBUG_LL
 +      printascii(printk_buf);
 +#endif
  
        /*
         * Copy the output into log_buf.  If the caller didn't provide
@@@ -1299,8 -1311,11 +1318,11 @@@ EXPORT_SYMBOL(printk_ratelimit)
  bool printk_timed_ratelimit(unsigned long *caller_jiffies,
                        unsigned int interval_msecs)
  {
-       if (*caller_jiffies == 0 || time_after(jiffies, *caller_jiffies)) {
-               *caller_jiffies = jiffies + msecs_to_jiffies(interval_msecs);
+       if (*caller_jiffies == 0
+                       || !time_in_range(jiffies, *caller_jiffies,
+                                       *caller_jiffies
+                                       + msecs_to_jiffies(interval_msecs))) {
+               *caller_jiffies = jiffies;
                return true;
        }
        return false;