Commit 9b59a0a4 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'omap-fixes-for-linus' of...

Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6

* 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6:
  ARM/OMAP: Remove the +x bit from a couple of source files
  omap: McBSP: Drop unnecessary status/error bit clearing on reg_cacheretrieved register values
  OMAP4: fix temporary hacks that break multi-omap PM
  OMAP2: cpu_is_omap2*: fix compile-time removal of unused code
  omap3: pandora: add missing i2c3 board_info
  omap: mach-omap2/io.c: fix function declarations
  omap: Fix gpio_resume_after_retention
  omap3: Fix support for the LEDs connected to GPIO outputs on IGEP v2board
  omap: Checkpatch cleanup for blizzard.h
  omap: pass the reboot command to the boot loader
  omap2/3/4: mailbox: remove compiler warning
  OMAP2: serial.c: Fix number of uarts in early_init
  omap: Enable PM_RUNTIME in defconfigs to avoid USB compile errors
  omap2: Update n8x0 defconfig to test multi-omap and DMA api changes
  omap2: add USB initialization for tusb6010
  omap4: Fix build break by moving omap_smc1 into a separate .S
  omap2/3/4: ehci: avoid compiler error with touchbook
  omap3: Fix compile for Touch Book early_param
parents c3a0bd75 29b2ee5a
...@@ -358,7 +358,7 @@ CONFIG_PM_SLEEP=y ...@@ -358,7 +358,7 @@ CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
# CONFIG_PM_RUNTIME is not set CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -308,6 +308,7 @@ CONFIG_PM_SLEEP=y ...@@ -308,6 +308,7 @@ CONFIG_PM_SLEEP=y
CONFIG_SUSPEND_UP_POSSIBLE=y CONFIG_SUSPEND_UP_POSSIBLE=y
CONFIG_SUSPEND=y CONFIG_SUSPEND=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
CONFIG_PM_RUNTIME=y
# #
# Networking # Networking
......
...@@ -191,6 +191,7 @@ CONFIG_ARCH_OMAP=y ...@@ -191,6 +191,7 @@ CONFIG_ARCH_OMAP=y
# #
CONFIG_ARCH_OMAP_OTG=y CONFIG_ARCH_OMAP_OTG=y
# CONFIG_ARCH_OMAP1 is not set # CONFIG_ARCH_OMAP1 is not set
CONFIG_ARCH_OMAP2PLUS=y
CONFIG_ARCH_OMAP2=y CONFIG_ARCH_OMAP2=y
# CONFIG_ARCH_OMAP3 is not set # CONFIG_ARCH_OMAP3 is not set
# CONFIG_ARCH_OMAP4 is not set # CONFIG_ARCH_OMAP4 is not set
...@@ -198,8 +199,6 @@ CONFIG_ARCH_OMAP2=y ...@@ -198,8 +199,6 @@ CONFIG_ARCH_OMAP2=y
# #
# OMAP Feature Selections # OMAP Feature Selections
# #
# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
CONFIG_OMAP_RESET_CLOCKS=y CONFIG_OMAP_RESET_CLOCKS=y
# CONFIG_OMAP_MUX is not set # CONFIG_OMAP_MUX is not set
# CONFIG_OMAP_MCBSP is not set # CONFIG_OMAP_MCBSP is not set
...@@ -208,15 +207,13 @@ CONFIG_OMAP_MBOX_FWK=y ...@@ -208,15 +207,13 @@ CONFIG_OMAP_MBOX_FWK=y
CONFIG_OMAP_32K_TIMER=y CONFIG_OMAP_32K_TIMER=y
CONFIG_OMAP_32K_TIMER_HZ=128 CONFIG_OMAP_32K_TIMER_HZ=128
CONFIG_OMAP_DM_TIMER=y CONFIG_OMAP_DM_TIMER=y
# CONFIG_OMAP_LL_DEBUG_UART1 is not set # CONFIG_OMAP_PM_NONE is not set
# CONFIG_OMAP_LL_DEBUG_UART2 is not set CONFIG_OMAP_PM_NOOP=y
CONFIG_OMAP_LL_DEBUG_UART3=y
# CONFIG_MACH_OMAP_GENERIC is not set # CONFIG_MACH_OMAP_GENERIC is not set
# #
# OMAP Core Type # OMAP Core Type
# #
CONFIG_ARCH_OMAP24XX=y
CONFIG_ARCH_OMAP2420=y CONFIG_ARCH_OMAP2420=y
# CONFIG_ARCH_OMAP2430 is not set # CONFIG_ARCH_OMAP2430 is not set
...@@ -227,6 +224,9 @@ CONFIG_MACH_OMAP2_TUSB6010=y ...@@ -227,6 +224,9 @@ CONFIG_MACH_OMAP2_TUSB6010=y
# CONFIG_MACH_OMAP_H4 is not set # CONFIG_MACH_OMAP_H4 is not set
# CONFIG_MACH_OMAP_APOLLON is not set # CONFIG_MACH_OMAP_APOLLON is not set
# CONFIG_MACH_OMAP_2430SDP is not set # CONFIG_MACH_OMAP_2430SDP is not set
CONFIG_MACH_NOKIA_N800=y
CONFIG_MACH_NOKIA_N810=y
CONFIG_MACH_NOKIA_N810_WIMAX=y
CONFIG_MACH_NOKIA_N8X0=y CONFIG_MACH_NOKIA_N8X0=y
# #
...@@ -303,7 +303,7 @@ CONFIG_ALIGNMENT_TRAP=y ...@@ -303,7 +303,7 @@ CONFIG_ALIGNMENT_TRAP=y
CONFIG_ZBOOT_ROM_TEXT=0x10C08000 CONFIG_ZBOOT_ROM_TEXT=0x10C08000
CONFIG_ZBOOT_ROM_BSS=0x10200000 CONFIG_ZBOOT_ROM_BSS=0x10200000
# CONFIG_ZBOOT_ROM is not set # CONFIG_ZBOOT_ROM is not set
CONFIG_CMDLINE="root=1f03 rootfstype=jffs2 console=ttyS2,115200n8" CONFIG_CMDLINE="root=/dev/mmcblk0p2 console=ttyS2,115200n8 debug earlyprintk rootwait"
# CONFIG_XIP_KERNEL is not set # CONFIG_XIP_KERNEL is not set
# CONFIG_KEXEC is not set # CONFIG_KEXEC is not set
...@@ -337,7 +337,14 @@ CONFIG_HAVE_AOUT=y ...@@ -337,7 +337,14 @@ CONFIG_HAVE_AOUT=y
# #
# Power management options # Power management options
# #
# CONFIG_PM is not set CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set
CONFIG_PM_RUNTIME=y
CONFIG_PM_OPS=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
...@@ -617,7 +624,55 @@ CONFIG_UNIX98_PTYS=y ...@@ -617,7 +624,55 @@ CONFIG_UNIX98_PTYS=y
# CONFIG_R3964 is not set # CONFIG_R3964 is not set
# CONFIG_RAW_DRIVER is not set # CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set # CONFIG_TCG_TPM is not set
# CONFIG_I2C is not set CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_COMPAT is not set
# CONFIG_I2C_CHARDEV is not set
# CONFIG_I2C_HELPER_AUTO is not set
# CONFIG_I2C_SMBUS is not set
#
# I2C Algorithms
#
# CONFIG_I2C_ALGOBIT is not set
# CONFIG_I2C_ALGOPCF is not set
# CONFIG_I2C_ALGOPCA is not set
#
# I2C Hardware Bus support
#
#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
# CONFIG_I2C_DESIGNWARE is not set
# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_OCORES is not set
CONFIG_I2C_OMAP=y
# CONFIG_I2C_SIMTEC is not set
# CONFIG_I2C_XILINX is not set
#
# External I2C/SMBus adapter drivers
#
# 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
#
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_STUB is not set
#
# Miscellaneous I2C Chip support
#
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
CONFIG_SPI=y CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set # CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y CONFIG_SPI_MASTER=y
...@@ -673,15 +728,44 @@ CONFIG_SSB_POSSIBLE=y ...@@ -673,15 +728,44 @@ CONFIG_SSB_POSSIBLE=y
# Multifunction device drivers # Multifunction device drivers
# #
# CONFIG_MFD_CORE is not set # CONFIG_MFD_CORE is not set
# CONFIG_MFD_88PM860X is not set
# CONFIG_MFD_SM501 is not set # CONFIG_MFD_SM501 is not set
# CONFIG_MFD_ASIC3 is not set # CONFIG_MFD_ASIC3 is not set
# CONFIG_HTC_EGPIO is not set # CONFIG_HTC_EGPIO is not set
# CONFIG_HTC_PASIC3 is not set # CONFIG_HTC_PASIC3 is not set
# CONFIG_HTC_I2CPLD is not set
# CONFIG_TPS65010 is not set
CONFIG_MENELAUS=y
# CONFIG_TWL4030_CORE is not set
# CONFIG_MFD_TMIO is not set # CONFIG_MFD_TMIO is not set
# CONFIG_MFD_T7L66XB is not set # CONFIG_MFD_T7L66XB is not set
# CONFIG_MFD_TC6387XB is not set # CONFIG_MFD_TC6387XB is not set
# CONFIG_MFD_TC6393XB is not set # CONFIG_MFD_TC6393XB is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_MAX8925 is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM831X is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_WM8994 is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_MFD_MC13783 is not set
# CONFIG_AB3100_CORE is not set
# CONFIG_EZX_PCAP is not set # CONFIG_EZX_PCAP is not set
# CONFIG_AB4500_CORE is not set
CONFIG_REGULATOR=y
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR_DUMMY is not set
# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
# CONFIG_REGULATOR_BQ24022 is not set
# CONFIG_REGULATOR_MAX1586 is not set
# CONFIG_REGULATOR_MAX8649 is not set
# CONFIG_REGULATOR_MAX8660 is not set
# CONFIG_REGULATOR_LP3971 is not set
# CONFIG_REGULATOR_TPS65023 is not set
# CONFIG_REGULATOR_TPS6507X is not set
# CONFIG_MEDIA_SUPPORT is not set # CONFIG_MEDIA_SUPPORT is not set
# #
...@@ -718,7 +802,10 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ...@@ -718,7 +802,10 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_DEVICEFS=y CONFIG_USB_DEVICEFS=y
CONFIG_USB_DEVICE_CLASS=y CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG 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 is not set # CONFIG_USB_MON is not set
# CONFIG_USB_WUSB is not set # CONFIG_USB_WUSB is not set
# CONFIG_USB_WUSB_CBAF is not set # CONFIG_USB_WUSB_CBAF is not set
...@@ -737,9 +824,10 @@ CONFIG_USB_DEVICE_CLASS=y ...@@ -737,9 +824,10 @@ CONFIG_USB_DEVICE_CLASS=y
CONFIG_USB_MUSB_HDRC=y CONFIG_USB_MUSB_HDRC=y
CONFIG_USB_TUSB6010=y CONFIG_USB_TUSB6010=y
# CONFIG_USB_MUSB_HOST is not set # CONFIG_USB_MUSB_HOST is not set
CONFIG_USB_MUSB_PERIPHERAL=y # CONFIG_USB_MUSB_PERIPHERAL is not set
# CONFIG_USB_MUSB_OTG is not set CONFIG_USB_MUSB_OTG=y
CONFIG_USB_GADGET_MUSB_HDRC=y CONFIG_USB_GADGET_MUSB_HDRC=y
CONFIG_USB_MUSB_HDRC_HCD=y
# CONFIG_MUSB_PIO_ONLY is not set # CONFIG_MUSB_PIO_ONLY is not set
# CONFIG_USB_INVENTRA_DMA is not set # CONFIG_USB_INVENTRA_DMA is not set
# CONFIG_USB_TI_CPPI_DMA is not set # CONFIG_USB_TI_CPPI_DMA is not set
...@@ -824,44 +912,77 @@ CONFIG_USB_GADGET_DUALSPEED=y ...@@ -824,44 +912,77 @@ CONFIG_USB_GADGET_DUALSPEED=y
# CONFIG_USB_ZERO is not set # CONFIG_USB_ZERO is not set
# CONFIG_USB_AUDIO is not set # CONFIG_USB_AUDIO is not set
CONFIG_USB_ETH=y CONFIG_USB_ETH=y
# CONFIG_USB_ETH_RNDIS is not set CONFIG_USB_ETH_RNDIS=y
CONFIG_USB_ETH_EEM=y
# CONFIG_USB_GADGETFS is not set # CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set # CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_MASS_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set # CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MIDI_GADGET is not set # CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_PRINTER is not set # CONFIG_USB_G_PRINTER is not set
# CONFIG_USB_CDC_COMPOSITE is not set # CONFIG_USB_CDC_COMPOSITE is not set
# CONFIG_USB_G_NOKIA is not set
# CONFIG_USB_G_MULTI is not set
# #
# OTG and related infrastructure # OTG and related infrastructure
# #
CONFIG_USB_OTG_UTILS=y CONFIG_USB_OTG_UTILS=y
# CONFIG_USB_GPIO_VBUS is not set # CONFIG_USB_GPIO_VBUS is not set
# CONFIG_ISP1301_OMAP is not set
# CONFIG_USB_ULPI is not set
CONFIG_NOP_USB_XCEIV=y CONFIG_NOP_USB_XCEIV=y
# CONFIG_MMC is not set CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
#
# MMC/SD/SDIO Card Drivers
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_SDHCI is not set
CONFIG_MMC_OMAP=y
# CONFIG_MMC_SPI is not set
# CONFIG_MEMSTICK is not set # CONFIG_MEMSTICK is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_NEW_LEDS is not set # CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set
CONFIG_RTC_LIB=y CONFIG_RTC_LIB=y
# CONFIG_RTC_CLASS is not set # CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set # CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set # CONFIG_AUXDISPLAY is not set
# CONFIG_REGULATOR is not set
# CONFIG_UIO is not set # CONFIG_UIO is not set
#
# TI VLYNQ
#
# CONFIG_STAGING is not set # CONFIG_STAGING is not set
# #
# File systems # File systems
# #
# CONFIG_EXT2_FS is not set # CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set CONFIG_EXT3_FS=y
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_EXT3_FS_XATTR=y
# CONFIG_EXT3_FS_POSIX_ACL is not set
# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4_FS is not set # CONFIG_EXT4_FS is not set
CONFIG_JBD=y
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set # CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set # CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set # CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_OCFS2_FS is not set # CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set # CONFIG_BTRFS_FS is not set
# CONFIG_NILFS2_FS is not set
CONFIG_FILE_LOCKING=y CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y CONFIG_DNOTIFY=y
...@@ -886,8 +1007,11 @@ CONFIG_INOTIFY_USER=y ...@@ -886,8 +1007,11 @@ CONFIG_INOTIFY_USER=y
# #
# DOS/FAT/NT Filesystems # DOS/FAT/NT Filesystems
# #
CONFIG_FAT_FS=y
# CONFIG_MSDOS_FS is not set # CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set # CONFIG_NTFS_FS is not set
# #
......
...@@ -324,6 +324,7 @@ CONFIG_PM_SLEEP=y ...@@ -324,6 +324,7 @@ CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -450,7 +450,7 @@ CONFIG_SUSPEND=y ...@@ -450,7 +450,7 @@ CONFIG_SUSPEND=y
# CONFIG_PM_TEST_SUSPEND is not set # CONFIG_PM_TEST_SUSPEND is not set
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
# CONFIG_PM_RUNTIME is not set CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -340,6 +340,7 @@ CONFIG_PM_SLEEP=y ...@@ -340,6 +340,7 @@ CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -368,7 +368,7 @@ CONFIG_SUSPEND=y ...@@ -368,7 +368,7 @@ CONFIG_SUSPEND=y
# CONFIG_PM_TEST_SUSPEND is not set # CONFIG_PM_TEST_SUSPEND is not set
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
# CONFIG_PM_RUNTIME is not set CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -363,6 +363,7 @@ CONFIG_PM_SLEEP=y ...@@ -363,6 +363,7 @@ CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -361,7 +361,7 @@ CONFIG_SUSPEND=y ...@@ -361,7 +361,7 @@ CONFIG_SUSPEND=y
# CONFIG_PM_TEST_SUSPEND is not set # CONFIG_PM_TEST_SUSPEND is not set
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
# CONFIG_PM_RUNTIME is not set CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -331,6 +331,7 @@ CONFIG_PM_SLEEP=y ...@@ -331,6 +331,7 @@ CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
# #
......
...@@ -343,6 +343,7 @@ CONFIG_SUSPEND=y ...@@ -343,6 +343,7 @@ CONFIG_SUSPEND=y
# CONFIG_PM_TEST_SUSPEND is not set # CONFIG_PM_TEST_SUSPEND is not set
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -361,7 +361,7 @@ CONFIG_SUSPEND=y ...@@ -361,7 +361,7 @@ CONFIG_SUSPEND=y
# CONFIG_PM_TEST_SUSPEND is not set # CONFIG_PM_TEST_SUSPEND is not set
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
# CONFIG_PM_RUNTIME is not set CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -322,6 +322,7 @@ CONFIG_PM_SLEEP=y ...@@ -322,6 +322,7 @@ CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set # CONFIG_APM_EMULATION is not set
CONFIG_PM_RUNTIME=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y CONFIG_NET=y
......
...@@ -22,6 +22,9 @@ obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o ...@@ -22,6 +22,9 @@ obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
# SMP support ONLY available for OMAP4 # SMP support ONLY available for OMAP4
obj-$(CONFIG_SMP) += omap-smp.o omap-headsmp.o obj-$(CONFIG_SMP) += omap-smp.o omap-headsmp.o
obj-$(CONFIG_LOCAL_TIMERS) += timer-mpu.o obj-$(CONFIG_LOCAL_TIMERS) += timer-mpu.o
obj-$(CONFIG_ARCH_OMAP4) += omap44xx-smc.o
AFLAGS_omap44xx-smc.o :=-Wa,-march=armv7-a
# Functions loaded to SRAM # Functions loaded to SRAM
obj-$(CONFIG_ARCH_OMAP2420) += sram242x.o obj-$(CONFIG_ARCH_OMAP2420) += sram242x.o
......
...@@ -648,7 +648,7 @@ static void enable_board_wakeup_source(void) ...@@ -648,7 +648,7 @@ static void enable_board_wakeup_source(void)
OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
} }
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
......
...@@ -54,7 +54,7 @@ static void enable_board_wakeup_source(void) ...@@ -54,7 +54,7 @@ static void enable_board_wakeup_source(void)
OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
} }
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
......
...@@ -50,33 +50,9 @@ static struct omap_board_config_kernel sdp4430_config[] __initdata = { ...@@ -50,33 +50,9 @@ static struct omap_board_config_kernel sdp4430_config[] __initdata = {
}; };
#ifdef CONFIG_CACHE_L2X0 #ifdef CONFIG_CACHE_L2X0
noinline void omap_smc1(u32 fn, u32 arg)
{
register u32 r12 asm("r12") = fn;
register u32 r0 asm("r0") = arg;
/* This is common routine cache secure monitor API used to
* modify the PL310 secure registers.
* r0 contains the value to be modified and "r12" contains
* the monitor API number. It uses few CPU registers
* internally and hence they need be backed up including
* link register "lr".
* Explicitly save r11 and r12 the compiler generated code
* won't save it.
*/
asm volatile(
"stmfd r13!, {r11,r12}\n"
"dsb\n"
"smc\n"
"ldmfd r13!, {r11,r12}\n"
: "+r" (r0), "+r" (r12)
:
: "r4", "r5", "r10", "lr", "cc");
}
EXPORT_SYMBOL(omap_smc1);
static int __init omap_l2_cache_init(void) static int __init omap_l2_cache_init(void)
{ {
extern void omap_smc1(u32 fn, u32 arg);
void __iomem *l2cache_base; void __iomem *l2cache_base;
/* To avoid code running on other OMAPs in /* To avoid code running on other OMAPs in
......
...@@ -273,7 +273,7 @@ static void __init am3517_evm_init_irq(void) ...@@ -273,7 +273,7 @@ static void __init am3517_evm_init_irq(void)
omap_gpio_init(); omap_gpio_init();
} }
static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
......
...@@ -612,7 +612,7 @@ static struct omap2_hsmmc_info mmc[] = { ...@@ -612,7 +612,7 @@ static struct omap2_hsmmc_info mmc[] = {
{} /* Terminator */ {} /* Terminator */
}; };
static struct ehci_hcd_omap_platform_data ehci_pdata = { static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
......
...@@ -636,7 +636,7 @@ static struct omap_musb_board_data musb_board_data = { ...@@ -636,7 +636,7 @@ static struct omap_musb_board_data musb_board_data = {
.power = 100, .power = 100,
}; };
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/leds.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
...@@ -39,8 +38,8 @@ ...@@ -39,8 +38,8 @@
#define IGEP2_SMSC911X_CS 5 #define IGEP2_SMSC911X_CS 5
#define IGEP2_SMSC911X_GPIO 176 #define IGEP2_SMSC911X_GPIO 176
#define IGEP2_GPIO_USBH_NRESET 24 #define IGEP2_GPIO_USBH_NRESET 24
#define IGEP2_GPIO_LED0_RED 26 #define IGEP2_GPIO_LED0_GREEN 26
#define IGEP2_GPIO_LED0_GREEN 27 #define IGEP2_GPIO_LED0_RED 27
#define IGEP2_GPIO_LED1_RED 28 #define IGEP2_GPIO_LED1_RED 28
#define IGEP2_GPIO_DVI_PUP 170 #define IGEP2_GPIO_DVI_PUP 170
#define IGEP2_GPIO_WIFI_NPD 94 #define IGEP2_GPIO_WIFI_NPD 94
...@@ -355,34 +354,50 @@ static void __init igep2_display_init(void) ...@@ -355,34 +354,50 @@ static void __init igep2_display_init(void)
gpio_direction_output(IGEP2_GPIO_DVI_PUP, 1)) gpio_direction_output(IGEP2_GPIO_DVI_PUP, 1))
pr_err("IGEP v2: Could not obtain gpio GPIO_DVI_PUP\n"); pr_err("IGEP v2: Could not obtain gpio GPIO_DVI_PUP\n");
} }
#ifdef CONFIG_LEDS_TRIGGERS
static struct gpio_led gpio_leds[] = { #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
#include <linux/leds.h>
static struct gpio_led igep2_gpio_leds[] = {
{ {
.name = "GPIO_LED1_RED", .name = "led0:red",
.gpio = IGEP2_GPIO_LED0_RED,
},
{
.name = "led0:green",
.default_trigger = "heartbeat", .default_trigger = "heartbeat",
.gpio = IGEP2_GPIO_LED0_GREEN,
},
{
.name = "led1:red",
.gpio = IGEP2_GPIO_LED1_RED, .gpio = IGEP2_GPIO_LED1_RED,
}, },
}; };
static struct gpio_led_platform_data gpio_leds_info = { static struct gpio_led_platform_data igep2_led_pdata = {
.leds = gpio_leds, .leds = igep2_gpio_leds,
.num_leds = ARRAY_SIZE(gpio_leds), .num_leds = ARRAY_SIZE(igep2_gpio_leds),
}; };
static struct platform_device leds_gpio = { static struct platform_device igep2_led_device = {
.name = "leds-gpio", .name = "leds-gpio",
.id = -1, .id = -1,
.dev = { .dev = {
.platform_data = &gpio_leds_info, .platform_data = &igep2_led_pdata,
}, },
}; };
static void __init igep2_init_led(void)
{
platform_device_register(&igep2_led_device);
}
#else
static inline void igep2_init_led(void) {}
#endif #endif
static struct platform_device *igep2_devices[] __initdata = { static struct platform_device *igep2_devices[] __initdata = {
&igep2_dss_device, &igep2_dss_device,
#ifdef CONFIG_LEDS_TRIGGERS
&leds_gpio,
#endif
}; };
static void __init igep2_init_irq(void) static void __init igep2_init_irq(void)
...@@ -442,7 +457,7 @@ static struct omap_musb_board_data musb_board_data = { ...@@ -442,7 +457,7 @@ static struct omap_musb_board_data musb_board_data = {
.power = 100, .power = 100,
}; };
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
...@@ -471,31 +486,34 @@ static void __init igep2_init(void) ...@@ -471,31 +486,34 @@ static void __init igep2_init(void)
usb_ehci_init(&ehci_pdata); usb_ehci_init(&ehci_pdata);
igep2_flash_init(); igep2_flash_init();
igep2_init_led();
igep2_display_init(); igep2_display_init();
igep2_init_smsc911x(); igep2_init_smsc911x();
/* GPIO userspace leds */ /* GPIO userspace leds */
if ((gpio_request(IGEP2_GPIO_LED0_RED, "GPIO_LED0_RED") == 0) && #if !defined(CONFIG_LEDS_GPIO) && !defined(CONFIG_LEDS_GPIO_MODULE)
if ((gpio_request(IGEP2_GPIO_LED0_RED, "led0:red") == 0) &&
(gpio_direction_output(IGEP2_GPIO_LED0_RED, 1) == 0)) { (gpio_direction_output(IGEP2_GPIO_LED0_RED, 1) == 0)) {
gpio_export(IGEP2_GPIO_LED0_RED, 0); gpio_export(IGEP2_GPIO_LED0_RED, 0);
gpio_set_value(IGEP2_GPIO_LED0_RED, 0); gpio_set_value(IGEP2_GPIO_LED0_RED, 0);
} else } else
pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_RED\n"); pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_RED\n");
if ((gpio_request(IGEP2_GPIO_LED0_GREEN, "GPIO_LED0_GREEN") == 0) && if ((gpio_request(IGEP2_GPIO_LED0_GREEN, "led0:green") == 0) &&
(gpio_direction_output(IGEP2_GPIO_LED0_GREEN, 1) == 0)) { (gpio_direction_output(IGEP2_GPIO_LED0_GREEN, 1) == 0)) {
gpio_export(IGEP2_GPIO_LED0_GREEN, 0); gpio_export(IGEP2_GPIO_LED0_GREEN, 0);
gpio_set_value(IGEP2_GPIO_LED0_GREEN, 0); gpio_set_value(IGEP2_GPIO_LED0_GREEN, 0);
} else } else
pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_GREEN\n"); pr_warning("IGEP v2: Could not obtain gpio GPIO_LED0_GREEN\n");
#ifndef CONFIG_LEDS_TRIGGERS
if ((gpio_request(IGEP2_GPIO_LED1_RED, "GPIO_LED1_RED") == 0) && if ((gpio_request(IGEP2_GPIO_LED1_RED, "led1:red") == 0) &&
(gpio_direction_output(IGEP2_GPIO_LED1_RED, 1) == 0)) { (gpio_direction_output(IGEP2_GPIO_LED1_RED, 1) == 0)) {
gpio_export(IGEP2_GPIO_LED1_RED, 0); gpio_export(IGEP2_GPIO_LED1_RED, 0);
gpio_set_value(IGEP2_GPIO_LED1_RED, 0); gpio_set_value(IGEP2_GPIO_LED1_RED, 0);
} else } else
pr_warning("IGEP v2: Could not obtain gpio GPIO_LED1_RED\n"); pr_warning("IGEP v2: Could not obtain gpio GPIO_LED1_RED\n");
#endif #endif
/* GPIO W-LAN + Bluetooth combo module */ /* GPIO W-LAN + Bluetooth combo module */
if ((gpio_request(IGEP2_GPIO_WIFI_NPD, "GPIO_WIFI_NPD") == 0) && if ((gpio_request(IGEP2_GPIO_WIFI_NPD, "GPIO_WIFI_NPD") == 0) &&
(gpio_direction_output(IGEP2_GPIO_WIFI_NPD, 1) == 0)) { (gpio_direction_output(IGEP2_GPIO_WIFI_NPD, 1) == 0)) {
......
...@@ -37,6 +37,103 @@ static int slot1_cover_open; ...@@ -37,6 +37,103 @@ static int slot1_cover_open;
static int slot2_cover_open; static int slot2_cover_open;
static struct device *mmc_device; static struct device *mmc_device;
#define TUSB6010_ASYNC_CS 1
#define TUSB6010_SYNC_CS 4
#define TUSB6010_GPIO_INT 58
#define TUSB6010_GPIO_ENABLE 0
#define TUSB6010_DMACHAN 0x3f
#if defined(CONFIG_USB_TUSB6010) || \
defined(CONFIG_USB_TUSB6010_MODULE)
/*
* Enable or disable power to TUSB6010. When enabling, turn on 3.3 V and
* 1.5 V voltage regulators of PM companion chip. Companion chip will then
* provide then PGOOD signal to TUSB6010 which will release it from reset.
*/
static int tusb_set_power(int state)
{
int i, retval = 0;
if (state) {
gpio_set_value(TUSB6010_GPIO_ENABLE, 1);
msleep(1);
/* Wait until TUSB6010 pulls INT pin down */
i = 100;
while (i && gpio_get_value(TUSB6010_GPIO_INT)) {
msleep(1);
i--;
}
if (!i) {
printk(KERN_ERR "tusb: powerup failed\n");
retval = -ENODEV;
}
} else {
gpio_set_value(TUSB6010_GPIO_ENABLE, 0);
msleep(10);
}
return retval;
}
static struct musb_hdrc_config musb_config = {
.multipoint = 1,
.dyn_fifo = 1,
.num_eps = 16,
.ram_bits = 12,
};
static struct musb_hdrc_platform_data tusb_data = {
#if defined(CONFIG_USB_MUSB_OTG)
.mode = MUSB_OTG,
#elif defined(CONFIG_USB_MUSB_PERIPHERAL)
.mode = MUSB_PERIPHERAL,
#else /* defined(CONFIG_USB_MUSB_HOST) */
.mode = MUSB_HOST,
#endif
.set_power = tusb_set_power,
.min_power = 25, /* x2 = 50 mA drawn from VBUS as peripheral */
.power = 100, /* Max 100 mA VBUS for host mode */
.config = &musb_config,
};
static void __init n8x0_usb_init(void)
{
int ret = 0;
static char announce[] __initdata = KERN_INFO "TUSB 6010\n";
/* PM companion chip power control pin */
ret = gpio_request(TUSB6010_GPIO_ENABLE, "TUSB6010 enable");
if (ret != 0) {
printk(KERN_ERR "Could not get TUSB power GPIO%i\n",
TUSB6010_GPIO_ENABLE);
return;
}
gpio_direction_output(TUSB6010_GPIO_ENABLE, 0);
tusb_set_power(0);
ret = tusb6010_setup_interface(&tusb_data, TUSB6010_REFCLK_19, 2,
TUSB6010_ASYNC_CS, TUSB6010_SYNC_CS,
TUSB6010_GPIO_INT, TUSB6010_DMACHAN);
if (ret != 0)
goto err;
printk(announce);
return;
err:
gpio_free(TUSB6010_GPIO_ENABLE);
}
#else
static void __init n8x0_usb_init(void) {}
#endif /*CONFIG_USB_TUSB6010 */
static struct omap2_mcspi_device_config p54spi_mcspi_config = { static struct omap2_mcspi_device_config p54spi_mcspi_config = {
.turbo_mode = 0, .turbo_mode = 0,
.single_channel = 1, .single_channel = 1,
...@@ -562,6 +659,7 @@ static void __init n8x0_init_machine(void) ...@@ -562,6 +659,7 @@ static void __init n8x0_init_machine(void)
n8x0_menelaus_init(); n8x0_menelaus_init();
n8x0_onenand_init(); n8x0_onenand_init();
n8x0_mmc_init(); n8x0_mmc_init();
n8x0_usb_init();
} }
MACHINE_START(NOKIA_N800, "Nokia N800") MACHINE_START(NOKIA_N800, "Nokia N800")
......
...@@ -410,7 +410,7 @@ static void __init omap3beagle_flash_init(void) ...@@ -410,7 +410,7 @@ static void __init omap3beagle_flash_init(void)
} }
} }
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
......
...@@ -635,7 +635,7 @@ static struct platform_device *omap3_evm_devices[] __initdata = { ...@@ -635,7 +635,7 @@ static struct platform_device *omap3_evm_devices[] __initdata = {
&omap3_evm_dss_device, &omap3_evm_dss_device,
}; };
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
......
...@@ -459,12 +459,20 @@ static struct i2c_board_info __initdata omap3pandora_i2c_boardinfo[] = { ...@@ -459,12 +459,20 @@ static struct i2c_board_info __initdata omap3pandora_i2c_boardinfo[] = {
}, },
}; };
static struct i2c_board_info __initdata omap3pandora_i2c3_boardinfo[] = {
{
I2C_BOARD_INFO("bq27500", 0x55),
.flags = I2C_CLIENT_WAKE,
},
};
static int __init omap3pandora_i2c_init(void) static int __init omap3pandora_i2c_init(void)
{ {
omap_register_i2c_bus(1, 2600, omap3pandora_i2c_boardinfo, omap_register_i2c_bus(1, 2600, omap3pandora_i2c_boardinfo,
ARRAY_SIZE(omap3pandora_i2c_boardinfo)); ARRAY_SIZE(omap3pandora_i2c_boardinfo));
/* i2c2 pins are not connected */ /* i2c2 pins are not connected */
omap_register_i2c_bus(3, 100, NULL, 0); omap_register_i2c_bus(3, 100, omap3pandora_i2c3_boardinfo,
ARRAY_SIZE(omap3pandora_i2c3_boardinfo));
return 0; return 0;
} }
...@@ -537,7 +545,7 @@ static struct platform_device *omap3pandora_devices[] __initdata = { ...@@ -537,7 +545,7 @@ static struct platform_device *omap3pandora_devices[] __initdata = {
&pandora_dss_device, &pandora_dss_device,
}; };
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN,
......
...@@ -493,7 +493,7 @@ static void __init omap3touchbook_flash_init(void) ...@@ -493,7 +493,7 @@ static void __init omap3touchbook_flash_init(void)
} }
} }
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
...@@ -518,14 +518,14 @@ static void omap3_touchbook_poweroff(void) ...@@ -518,14 +518,14 @@ static void omap3_touchbook_poweroff(void)
gpio_direction_output(TB_KILL_POWER_GPIO, 0); gpio_direction_output(TB_KILL_POWER_GPIO, 0);
} }
static void __init early_touchbook_revision(char **p) static int __init early_touchbook_revision(char *p)
{ {
if (!*p) if (!p)
return; return 0;
strict_strtoul(*p, 10, &touchbook_revision); return strict_strtoul(p, 10, &touchbook_revision);
} }
__early_param("tbr=", early_touchbook_revision); early_param("tbr", early_touchbook_revision);
static struct omap_musb_board_data musb_board_data = { static struct omap_musb_board_data musb_board_data = {
.interface_type = MUSB_INTERFACE_ULPI, .interface_type = MUSB_INTERFACE_ULPI,
......
...@@ -394,7 +394,7 @@ static struct platform_device *overo_devices[] __initdata = { ...@@ -394,7 +394,7 @@ static struct platform_device *overo_devices[] __initdata = {
&overo_lcd_device, &overo_lcd_device,
}; };
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
......
...@@ -52,7 +52,7 @@ static struct omap_board_mux board_mux[] __initdata = { ...@@ -52,7 +52,7 @@ static struct omap_board_mux board_mux[] __initdata = {
#define board_mux NULL #define board_mux NULL
#endif #endif
static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY, .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN, .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
......
...@@ -1841,6 +1841,7 @@ static struct omap_clk omap2420_clks[] = { ...@@ -1841,6 +1841,7 @@ static struct omap_clk omap2420_clks[] = {
CLK(NULL, "aes_ick", &aes_ick, CK_242X), CLK(NULL, "aes_ick", &aes_ick, CK_242X),
CLK(NULL, "pka_ick", &pka_ick, CK_242X), CLK(NULL, "pka_ick", &pka_ick, CK_242X),
CLK(NULL, "usb_fck", &usb_fck, CK_242X), CLK(NULL, "usb_fck", &usb_fck, CK_242X),
CLK("musb_hdrc", "fck", &osc_ck, CK_242X),
}; };
/* /*
......
...@@ -237,7 +237,7 @@ static void __init _omap2_map_common_io(void) ...@@ -237,7 +237,7 @@ static void __init _omap2_map_common_io(void)
} }
#ifdef CONFIG_ARCH_OMAP2420 #ifdef CONFIG_ARCH_OMAP2420
void __init omap242x_map_common_io() void __init omap242x_map_common_io(void)
{ {
iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
iotable_init(omap242x_io_desc, ARRAY_SIZE(omap242x_io_desc)); iotable_init(omap242x_io_desc, ARRAY_SIZE(omap242x_io_desc));
...@@ -246,7 +246,7 @@ void __init omap242x_map_common_io() ...@@ -246,7 +246,7 @@ void __init omap242x_map_common_io()
#endif #endif
#ifdef CONFIG_ARCH_OMAP2430 #ifdef CONFIG_ARCH_OMAP2430
void __init omap243x_map_common_io() void __init omap243x_map_common_io(void)
{ {
iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
iotable_init(omap243x_io_desc, ARRAY_SIZE(omap243x_io_desc)); iotable_init(omap243x_io_desc, ARRAY_SIZE(omap243x_io_desc));
...@@ -255,7 +255,7 @@ void __init omap243x_map_common_io() ...@@ -255,7 +255,7 @@ void __init omap243x_map_common_io()
#endif #endif
#ifdef CONFIG_ARCH_OMAP3 #ifdef CONFIG_ARCH_OMAP3
void __init omap34xx_map_common_io() void __init omap34xx_map_common_io(void)
{ {
iotable_init(omap34xx_io_desc, ARRAY_SIZE(omap34xx_io_desc)); iotable_init(omap34xx_io_desc, ARRAY_SIZE(omap34xx_io_desc));
_omap2_map_common_io(); _omap2_map_common_io();
...@@ -263,7 +263,7 @@ void __init omap34xx_map_common_io() ...@@ -263,7 +263,7 @@ void __init omap34xx_map_common_io()
#endif #endif
#ifdef CONFIG_ARCH_OMAP4 #ifdef CONFIG_ARCH_OMAP4
void __init omap44xx_map_common_io() void __init omap44xx_map_common_io(void)
{ {
iotable_init(omap44xx_io_desc, ARRAY_SIZE(omap44xx_io_desc)); iotable_init(omap44xx_io_desc, ARRAY_SIZE(omap44xx_io_desc));
_omap2_map_common_io(); _omap2_map_common_io();
...@@ -309,7 +309,6 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, ...@@ -309,7 +309,6 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
{ {
pwrdm_init(powerdomains_omap); pwrdm_init(powerdomains_omap);
clkdm_init(clockdomains_omap, clkdm_autodeps); clkdm_init(clockdomains_omap, clkdm_autodeps);
#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */
if (cpu_is_omap242x()) if (cpu_is_omap242x())
omap2420_hwmod_init(); omap2420_hwmod_init();
else if (cpu_is_omap243x()) else if (cpu_is_omap243x())
...@@ -319,7 +318,6 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, ...@@ -319,7 +318,6 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
omap2_mux_init(); omap2_mux_init();
/* The OPP tables have to be registered before a clk init */ /* The OPP tables have to be registered before a clk init */
omap_pm_if_early_init(mpu_opps, dsp_opps, l3_opps); omap_pm_if_early_init(mpu_opps, dsp_opps, l3_opps);
#endif
if (cpu_is_omap2420()) if (cpu_is_omap2420())
omap2420_clk_init(); omap2420_clk_init();
...@@ -333,11 +331,12 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, ...@@ -333,11 +331,12 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
pr_err("Could not init clock framework - unknown CPU\n"); pr_err("Could not init clock framework - unknown CPU\n");
omap_serial_early_init(); omap_serial_early_init();
#ifndef CONFIG_ARCH_OMAP4 if (cpu_is_omap24xx() || cpu_is_omap34xx()) /* FIXME: OMAP4 */
omap_hwmod_late_init(); omap_hwmod_late_init();
omap_pm_if_init(); omap_pm_if_init();
if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
omap2_sdrc_init(sdrc_cs0, sdrc_cs1); omap2_sdrc_init(sdrc_cs0, sdrc_cs1);
_omap2_init_reprogram_sdrc(); _omap2_init_reprogram_sdrc();
#endif }
gpmc_init(); gpmc_init();
} }
...@@ -430,19 +430,19 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev) ...@@ -430,19 +430,19 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
if (unlikely(!res)) { if (unlikely(!res)) {
dev_err(&pdev->dev, "invalid irq resource\n"); dev_err(&pdev->dev, "invalid irq resource\n");
ret = -ENODEV; ret = -ENODEV;
goto err_iva1; omap_mbox_unregister(&mbox_dsp_info);
goto err_dsp;
} }
mbox_iva_info.irq = res->start; mbox_iva_info.irq = res->start;
ret = omap_mbox_register(&pdev->dev, &mbox_iva_info); ret = omap_mbox_register(&pdev->dev, &mbox_iva_info);
if (ret) if (ret) {
goto err_iva1; omap_mbox_unregister(&mbox_dsp_info);
goto err_dsp;
}
} }
#endif #endif
return 0; return 0;
err_iva1:
omap_mbox_unregister(&mbox_dsp_info);
err_dsp: err_dsp:
iounmap(mbox_base); iounmap(mbox_base);
return ret; return ret;
......
/*
* OMAP44xx secure APIs file.
*
* Copyright (C) 2010 Texas Instruments, Inc.
* Written by Santosh Shilimkar <santosh.shilimkar@ti.com>
*
*
* This program is free software,you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/linkage.h>
/*
* This is common routine to manage secure monitor API
* used to modify the PL310 secure registers.
* 'r0' contains the value to be modified and 'r12' contains
* the monitor API number. It uses few CPU registers
* internally and hence they need be backed up including
* link register "lr".
* Function signature : void omap_smc1(u32 fn, u32 arg)
*/
ENTRY(omap_smc1)
stmfd sp!, {r2-r12, lr}
mov r12, r0
mov r0, r1
dsb
smc
ldmfd sp!, {r2-r12, pc}
END(omap_smc1)
...@@ -133,7 +133,7 @@ u32 omap_prcm_get_reset_sources(void) ...@@ -133,7 +133,7 @@ u32 omap_prcm_get_reset_sources(void)
EXPORT_SYMBOL(omap_prcm_get_reset_sources); EXPORT_SYMBOL(omap_prcm_get_reset_sources);
/* Resets clock rates and reboots the system. Only called from system.h */ /* Resets clock rates and reboots the system. Only called from system.h */
void omap_prcm_arch_reset(char mode) void omap_prcm_arch_reset(char mode, const char *cmd)
{ {
s16 prcm_offs = 0; s16 prcm_offs = 0;
...@@ -145,7 +145,7 @@ void omap_prcm_arch_reset(char mode) ...@@ -145,7 +145,7 @@ void omap_prcm_arch_reset(char mode)
u32 l; u32 l;
prcm_offs = OMAP3430_GR_MOD; prcm_offs = OMAP3430_GR_MOD;
l = ('B' << 24) | ('M' << 16) | mode; l = ('B' << 24) | ('M' << 16) | (cmd ? (u8)*cmd : 0);
/* Reserve the first word in scratchpad for communicating /* Reserve the first word in scratchpad for communicating
* with the boot ROM. A pointer to a data structure * with the boot ROM. A pointer to a data structure
* describing the boot process can be stored there, * describing the boot process can be stored there,
......
...@@ -644,16 +644,21 @@ static void serial_out_override(struct uart_port *up, int offset, int value) ...@@ -644,16 +644,21 @@ static void serial_out_override(struct uart_port *up, int offset, int value)
} }
void __init omap_serial_early_init(void) void __init omap_serial_early_init(void)
{ {
int i; int i, nr_ports;
char name[16]; char name[16];
if (!(cpu_is_omap3630() || cpu_is_omap4430()))
nr_ports = 3;
else
nr_ports = ARRAY_SIZE(omap_uart);
/* /*
* Make sure the serial ports are muxed on at this point. * Make sure the serial ports are muxed on at this point.
* You have to mux them off in device drivers later on * You have to mux them off in device drivers later on
* if not needed. * if not needed.
*/ */
for (i = 0; i < ARRAY_SIZE(omap_uart); i++) { for (i = 0; i < nr_ports; i++) {
struct omap_uart_state *uart = &omap_uart[i]; struct omap_uart_state *uart = &omap_uart[i];
struct platform_device *pdev = &uart->pdev; struct platform_device *pdev = &uart->pdev;
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
...@@ -669,17 +674,17 @@ void __init omap_serial_early_init(void) ...@@ -669,17 +674,17 @@ void __init omap_serial_early_init(void)
continue; continue;
} }
sprintf(name, "uart%d_ick", i+1); sprintf(name, "uart%d_ick", i + 1);
uart->ick = clk_get(NULL, name); uart->ick = clk_get(NULL, name);
if (IS_ERR(uart->ick)) { if (IS_ERR(uart->ick)) {
printk(KERN_ERR "Could not get uart%d_ick\n", i+1); printk(KERN_ERR "Could not get uart%d_ick\n", i + 1);
uart->ick = NULL; uart->ick = NULL;
} }
sprintf(name, "uart%d_fck", i+1); sprintf(name, "uart%d_fck", i+1);
uart->fck = clk_get(NULL, name); uart->fck = clk_get(NULL, name);
if (IS_ERR(uart->fck)) { if (IS_ERR(uart->fck)) {
printk(KERN_ERR "Could not get uart%d_fck\n", i+1); printk(KERN_ERR "Could not get uart%d_fck\n", i + 1);
uart->fck = NULL; uart->fck = NULL;
} }
......
...@@ -70,7 +70,7 @@ static struct platform_device ehci_device = { ...@@ -70,7 +70,7 @@ static struct platform_device ehci_device = {
/* /*
* setup_ehci_io_mux - initialize IO pad mux for USBHOST * setup_ehci_io_mux - initialize IO pad mux for USBHOST
*/ */
static void setup_ehci_io_mux(enum ehci_hcd_omap_mode *port_mode) static void setup_ehci_io_mux(const enum ehci_hcd_omap_mode *port_mode)
{ {
switch (port_mode[0]) { switch (port_mode[0]) {
case EHCI_HCD_OMAP_MODE_PHY: case EHCI_HCD_OMAP_MODE_PHY:
...@@ -213,7 +213,7 @@ static void setup_ehci_io_mux(enum ehci_hcd_omap_mode *port_mode) ...@@ -213,7 +213,7 @@ static void setup_ehci_io_mux(enum ehci_hcd_omap_mode *port_mode)
return; return;
} }
void __init usb_ehci_init(struct ehci_hcd_omap_platform_data *pdata) void __init usb_ehci_init(const struct ehci_hcd_omap_platform_data *pdata)
{ {
platform_device_add_data(&ehci_device, pdata, sizeof(*pdata)); platform_device_add_data(&ehci_device, pdata, sizeof(*pdata));
...@@ -229,7 +229,7 @@ void __init usb_ehci_init(struct ehci_hcd_omap_platform_data *pdata) ...@@ -229,7 +229,7 @@ void __init usb_ehci_init(struct ehci_hcd_omap_platform_data *pdata)
#else #else
void __init usb_ehci_init(struct ehci_hcd_omap_platform_data *pdata) void __init usb_ehci_init(const struct ehci_hcd_omap_platform_data *pdata)
{ {
} }
......
...@@ -2140,7 +2140,7 @@ void omap2_gpio_resume_after_retention(void) ...@@ -2140,7 +2140,7 @@ void omap2_gpio_resume_after_retention(void)
if (gen) { if (gen) {
u32 old0, old1; u32 old0, old1;
if (cpu_is_omap24xx() || cpu_is_omap44xx()) { if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
old0 = __raw_readl(bank->base + old0 = __raw_readl(bank->base +
OMAP24XX_GPIO_LEVELDETECT0); OMAP24XX_GPIO_LEVELDETECT0);
old1 = __raw_readl(bank->base + old1 = __raw_readl(bank->base +
......
...@@ -6,7 +6,7 @@ struct blizzard_platform_data { ...@@ -6,7 +6,7 @@ struct blizzard_platform_data {
void (*power_down)(struct device *dev); void (*power_down)(struct device *dev);
unsigned long (*get_clock_rate)(struct device *dev); unsigned long (*get_clock_rate)(struct device *dev);
unsigned te_connected : 1; unsigned te_connected:1;
}; };
#endif #endif
...@@ -167,10 +167,14 @@ IS_OMAP_SUBCLASS(443x, 0x443) ...@@ -167,10 +167,14 @@ IS_OMAP_SUBCLASS(443x, 0x443)
#if defined(MULTI_OMAP2) #if defined(MULTI_OMAP2)
# if defined(CONFIG_ARCH_OMAP2) # if defined(CONFIG_ARCH_OMAP2)
# undef cpu_is_omap24xx # undef cpu_is_omap24xx
# undef cpu_is_omap242x
# undef cpu_is_omap243x
# define cpu_is_omap24xx() is_omap24xx() # define cpu_is_omap24xx() is_omap24xx()
# endif
# if defined (CONFIG_ARCH_OMAP2420)
# undef cpu_is_omap242x
# define cpu_is_omap242x() is_omap242x() # define cpu_is_omap242x() is_omap242x()
# endif
# if defined (CONFIG_ARCH_OMAP2430)
# undef cpu_is_omap243x
# define cpu_is_omap243x() is_omap243x() # define cpu_is_omap243x() is_omap243x()
# endif # endif
# if defined(CONFIG_ARCH_OMAP3) # if defined(CONFIG_ARCH_OMAP3)
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#define __ASM_ARM_ARCH_OMAP_PRCM_H #define __ASM_ARM_ARCH_OMAP_PRCM_H
u32 omap_prcm_get_reset_sources(void); u32 omap_prcm_get_reset_sources(void);
void omap_prcm_arch_reset(char mode); void omap_prcm_arch_reset(char mode, const char *cmd);
int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, u8 idlest, int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, u8 idlest,
const char *name); const char *name);
......
...@@ -22,7 +22,7 @@ static inline void arch_idle(void) ...@@ -22,7 +22,7 @@ static inline void arch_idle(void)
cpu_do_idle(); cpu_do_idle();
} }
static inline void omap1_arch_reset(char mode) static inline void omap1_arch_reset(char mode, const char *cmd)
{ {
/* /*
* Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28 * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
...@@ -43,9 +43,9 @@ static inline void omap1_arch_reset(char mode) ...@@ -43,9 +43,9 @@ static inline void omap1_arch_reset(char mode)
static inline void arch_reset(char mode, const char *cmd) static inline void arch_reset(char mode, const char *cmd)
{ {
if (!cpu_class_is_omap2()) if (!cpu_class_is_omap2())
omap1_arch_reset(mode); omap1_arch_reset(mode, cmd);
else else
omap_prcm_arch_reset(mode); omap_prcm_arch_reset(mode, cmd);
} }
#endif #endif
...@@ -53,7 +53,7 @@ enum musb_interface {MUSB_INTERFACE_ULPI, MUSB_INTERFACE_UTMI}; ...@@ -53,7 +53,7 @@ enum musb_interface {MUSB_INTERFACE_ULPI, MUSB_INTERFACE_UTMI};
extern void usb_musb_init(struct omap_musb_board_data *board_data); extern void usb_musb_init(struct omap_musb_board_data *board_data);
extern void usb_ehci_init(struct ehci_hcd_omap_platform_data *pdata); extern void usb_ehci_init(const struct ehci_hcd_omap_platform_data *pdata);
#endif #endif
......
...@@ -133,8 +133,7 @@ static irqreturn_t omap_mcbsp_tx_irq_handler(int irq, void *dev_id) ...@@ -133,8 +133,7 @@ static irqreturn_t omap_mcbsp_tx_irq_handler(int irq, void *dev_id)
dev_err(mcbsp_tx->dev, "TX Frame Sync Error! : 0x%x\n", dev_err(mcbsp_tx->dev, "TX Frame Sync Error! : 0x%x\n",
irqst_spcr2); irqst_spcr2);
/* Writing zero to XSYNC_ERR clears the IRQ */ /* Writing zero to XSYNC_ERR clears the IRQ */
MCBSP_WRITE(mcbsp_tx, SPCR2, MCBSP_WRITE(mcbsp_tx, SPCR2, MCBSP_READ_CACHE(mcbsp_tx, SPCR2));
MCBSP_READ_CACHE(mcbsp_tx, SPCR2) & ~(XSYNC_ERR));
} else { } else {
complete(&mcbsp_tx->tx_irq_completion); complete(&mcbsp_tx->tx_irq_completion);
} }
...@@ -154,8 +153,7 @@ static irqreturn_t omap_mcbsp_rx_irq_handler(int irq, void *dev_id) ...@@ -154,8 +153,7 @@ static irqreturn_t omap_mcbsp_rx_irq_handler(int irq, void *dev_id)
dev_err(mcbsp_rx->dev, "RX Frame Sync Error! : 0x%x\n", dev_err(mcbsp_rx->dev, "RX Frame Sync Error! : 0x%x\n",
irqst_spcr1); irqst_spcr1);
/* Writing zero to RSYNC_ERR clears the IRQ */ /* Writing zero to RSYNC_ERR clears the IRQ */
MCBSP_WRITE(mcbsp_rx, SPCR1, MCBSP_WRITE(mcbsp_rx, SPCR1, MCBSP_READ_CACHE(mcbsp_rx, SPCR1));
MCBSP_READ_CACHE(mcbsp_rx, SPCR1) & ~(RSYNC_ERR));
} else { } else {
complete(&mcbsp_rx->tx_irq_completion); complete(&mcbsp_rx->tx_irq_completion);
} }
...@@ -934,8 +932,7 @@ int omap_mcbsp_pollwrite(unsigned int id, u16 buf) ...@@ -934,8 +932,7 @@ int omap_mcbsp_pollwrite(unsigned int id, u16 buf)
/* if frame sync error - clear the error */ /* if frame sync error - clear the error */
if (MCBSP_READ(mcbsp, SPCR2) & XSYNC_ERR) { if (MCBSP_READ(mcbsp, SPCR2) & XSYNC_ERR) {
/* clear error */ /* clear error */
MCBSP_WRITE(mcbsp, SPCR2, MCBSP_WRITE(mcbsp, SPCR2, MCBSP_READ_CACHE(mcbsp, SPCR2));
MCBSP_READ_CACHE(mcbsp, SPCR2) & (~XSYNC_ERR));
/* resend */ /* resend */
return -1; return -1;
} else { } else {
...@@ -975,8 +972,7 @@ int omap_mcbsp_pollread(unsigned int id, u16 *buf) ...@@ -975,8 +972,7 @@ int omap_mcbsp_pollread(unsigned int id, u16 *buf)
/* if frame sync error - clear the error */ /* if frame sync error - clear the error */
if (MCBSP_READ(mcbsp, SPCR1) & RSYNC_ERR) { if (MCBSP_READ(mcbsp, SPCR1) & RSYNC_ERR) {
/* clear error */ /* clear error */
MCBSP_WRITE(mcbsp, SPCR1, MCBSP_WRITE(mcbsp, SPCR1, MCBSP_READ_CACHE(mcbsp, SPCR1));
MCBSP_READ_CACHE(mcbsp, SPCR1) & (~RSYNC_ERR));
/* resend */ /* resend */
return -1; return -1;
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment