Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 21 May 2010 17:50:00 +0000 (10:50 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 21 May 2010 17:50:00 +0000 (10:50 -0700)
* 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (113 commits)
  omap4: Add support for i2c init
  omap: Fix i2c platform init code for omap4
  OMAP2 clock: fix recursive spinlock attempt when CONFIG_CPU_FREQ=y
  OMAP powerdomain, hwmod, omap_device: add some credits
  OMAP4 powerdomain: Support LOWPOWERSTATECHANGE for powerdomains
  OMAP3 clock: add support for setting the divider for sys_clkout2 using clk_set_rate
  OMAP4 powerdomain: Fix pwrsts flags for ALWAYS ON domains
  OMAP: timers: Fix clock source names for OMAP4
  OMAP4 clock: Support clk_set_parent
  OMAP4: PRCM: Add offset defines for all CM registers
  OMAP4: PRCM: Add offset defines for all PRM registers
  OMAP4: PRCM: Remove duplicate definition of base addresses
  OMAP4: PRM: Remove MPU internal code name and apply PRCM naming convention
  OMAP4: CM: Remove non-functional registers in ES1.0
  OMAP: hwmod: Replace WARN by pr_warning for clockdomain check
  OMAP: hwmod: Rename hwmod name for the MPU
  OMAP: hwmod: Do not exit the iteration if one clock init failed
  OMAP: hwmod: Replace WARN by pr_warning if clock lookup failed
  OMAP: hwmod: Remove IS_ERR check with omap_clk_get_by_name return value
  OMAP: hwmod: Fix wrong pointer iteration in oh->slaves
  ...

104 files changed:
arch/arm/configs/am3517_evm_defconfig
arch/arm/configs/ams_delta_defconfig
arch/arm/configs/devkit8000_defconfig
arch/arm/configs/omap3_defconfig
arch/arm/configs/omap3_stalker_lks_defconfig [new file with mode: 0644]
arch/arm/configs/omap_4430sdp_defconfig
arch/arm/mach-omap1/Kconfig
arch/arm/mach-omap1/Makefile
arch/arm/mach-omap1/ams-delta-fiq-handler.S [new file with mode: 0644]
arch/arm/mach-omap1/ams-delta-fiq.c [new file with mode: 0644]
arch/arm/mach-omap1/board-ams-delta.c
arch/arm/mach-omap1/clock.c
arch/arm/mach-omap1/clock.h
arch/arm/mach-omap1/include/mach/ams-delta-fiq.h [new file with mode: 0644]
arch/arm/mach-omap1/include/mach/debug-macro.S
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/board-2430sdp.c
arch/arm/mach-omap2/board-3430sdp.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-am3517evm.c
arch/arm/mach-omap2/board-cm-t35.c
arch/arm/mach-omap2/board-devkit8000.c
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-omap3stalker.c [new file with mode: 0644]
arch/arm/mach-omap2/board-overo.c
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-omap2/board-zoom-debugboard.c
arch/arm/mach-omap2/board-zoom2.c
arch/arm/mach-omap2/board-zoom3.c
arch/arm/mach-omap2/clkt2xxx_apll.c
arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
arch/arm/mach-omap2/clkt_clksel.c
arch/arm/mach-omap2/clock.c
arch/arm/mach-omap2/clock.h
arch/arm/mach-omap2/clock2420_data.c
arch/arm/mach-omap2/clock2430_data.c
arch/arm/mach-omap2/clock3xxx_data.c
arch/arm/mach-omap2/clock44xx_data.c
arch/arm/mach-omap2/clock_common_data.c
arch/arm/mach-omap2/clockdomain.c
arch/arm/mach-omap2/clockdomains44xx.h
arch/arm/mach-omap2/cm-regbits-24xx.h
arch/arm/mach-omap2/cm-regbits-34xx.h
arch/arm/mach-omap2/cm.c
arch/arm/mach-omap2/cm.h
arch/arm/mach-omap2/cm44xx.h
arch/arm/mach-omap2/cm4xxx.c
arch/arm/mach-omap2/control.c
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/hsmmc.c
arch/arm/mach-omap2/include/mach/am35xx.h
arch/arm/mach-omap2/include/mach/debug-macro.S
arch/arm/mach-omap2/include/mach/omap4-common.h [new file with mode: 0644]
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/iommu2.c
arch/arm/mach-omap2/mux34xx.c
arch/arm/mach-omap2/omap-iommu.c [new file with mode: 0644]
arch/arm/mach-omap2/omap-smp.c
arch/arm/mach-omap2/omap3-iommu.c [deleted file]
arch/arm/mach-omap2/omap4-common.c [new file with mode: 0644]
arch/arm/mach-omap2/omap_hwmod.c
arch/arm/mach-omap2/omap_hwmod_2420_data.c
arch/arm/mach-omap2/omap_hwmod_2430_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/pm-debug.c
arch/arm/mach-omap2/pm.h
arch/arm/mach-omap2/pm24xx.c
arch/arm/mach-omap2/pm34xx.c
arch/arm/mach-omap2/powerdomain.c
arch/arm/mach-omap2/powerdomains44xx.h
arch/arm/mach-omap2/prcm-common.h
arch/arm/mach-omap2/prcm.c
arch/arm/mach-omap2/prm-regbits-24xx.h
arch/arm/mach-omap2/prm-regbits-34xx.h
arch/arm/mach-omap2/prm.h
arch/arm/mach-omap2/prm44xx.h
arch/arm/plat-omap/Kconfig
arch/arm/plat-omap/clock.c
arch/arm/plat-omap/common.c
arch/arm/plat-omap/dma.c
arch/arm/plat-omap/dmtimer.c
arch/arm/plat-omap/gpio.c
arch/arm/plat-omap/i2c.c
arch/arm/plat-omap/include/plat/clock.h
arch/arm/plat-omap/include/plat/common.h
arch/arm/plat-omap/include/plat/control.h
arch/arm/plat-omap/include/plat/gpio.h
arch/arm/plat-omap/include/plat/irqs.h
arch/arm/plat-omap/include/plat/mmc.h
arch/arm/plat-omap/include/plat/multi.h
arch/arm/plat-omap/include/plat/omap44xx.h
arch/arm/plat-omap/include/plat/omap_hwmod.h
arch/arm/plat-omap/include/plat/powerdomain.h
arch/arm/plat-omap/include/plat/serial.h
arch/arm/plat-omap/include/plat/uncompress.h
arch/arm/plat-omap/iommu.c
arch/arm/plat-omap/iovmm.c
arch/arm/plat-omap/omap_device.c
arch/arm/plat-omap/sram.c
drivers/input/serio/Kconfig
drivers/input/serio/Makefile
drivers/input/serio/ams_delta_serio.c [new file with mode: 0644]
drivers/spi/Kconfig

index 66a10b5..232f8ee 100644 (file)
@@ -422,15 +422,29 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
 #
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_HAMRADIO is not set
-# CONFIG_CAN is not set
+CONFIG_CAN=y
+CONFIG_CAN_RAW=y
+CONFIG_CAN_BCM=y
+
+#
+# CAN Device Drivers
+#
+CONFIG_CAN_VCAN=y
+CONFIG_CAN_DEV=y
+CONFIG_CAN_CALC_BITTIMING=y
+CONFIG_CAN_TI_HECC=y
+# CONFIG_CAN_SJA1000 is not set
+
+#
+# CAN USB interfaces
+#
+# CONFIG_CAN_EMS_USB is not set
+CONFIG_CAN_DEBUG_DEVICES=y
 # CONFIG_IRDA is not set
 # CONFIG_BT is not set
 # CONFIG_AF_RXRPC is not set
 CONFIG_WIRELESS=y
 # CONFIG_CFG80211 is not set
-CONFIG_CFG80211_DEFAULT_PS_VALUE=0
-# CONFIG_WIRELESS_OLD_REGULATORY is not set
-# CONFIG_WIRELESS_EXT is not set
 # CONFIG_LIB80211 is not set
 
 #
@@ -517,7 +531,75 @@ CONFIG_SCSI_LOWLEVEL=y
 # CONFIG_SCSI_OSD_INITIATOR is not set
 # CONFIG_ATA is not set
 # CONFIG_MD is not set
-# CONFIG_NETDEVICES is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH 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 is not set
+# 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 is not set
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+CONFIG_TI_DAVINCI_EMAC=y
+# CONFIG_DM9000 is not set
+# CONFIG_ETHOC is not set
+# CONFIG_SMC911X is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_DNET is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851_MLL is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_WLAN is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
 # CONFIG_ISDN is not set
 # CONFIG_PHONE is not set
 
index 3b3a377..6d8a0c8 100644 (file)
@@ -47,6 +47,7 @@ CONFIG_SYSVIPC_SYSCTL=y
 # CONFIG_TASKSTATS is not set
 # CONFIG_UTS_NS is not set
 # CONFIG_AUDIT is not set
+CONFIG_TREE_PREEMPT_RCU=y
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_SYSFS_DEPRECATED=y
@@ -95,9 +96,8 @@ CONFIG_KMOD=y
 # Block layer
 #
 CONFIG_BLOCK=y
-# CONFIG_LBD is not set
+# CONFIG_LBDAF is not set
 # CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
 
 #
 # IO Schedulers
@@ -699,6 +699,7 @@ CONFIG_SERIO=y
 CONFIG_SERIO_SERPORT=y
 CONFIG_SERIO_LIBPS2=y
 # CONFIG_SERIO_RAW is not set
+CONFIG_SERIO_AMS_DELTA=y
 # CONFIG_GAMEPORT is not set
 
 #
@@ -835,7 +836,8 @@ CONFIG_DAB=y
 #
 # Graphics support
 #
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
 
 #
 # Display device support
@@ -1283,7 +1285,7 @@ CONFIG_DEBUG_PREEMPT=y
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_VM is not set
 # CONFIG_DEBUG_LIST is not set
index 61a817e..c7a6820 100644 (file)
@@ -1,13 +1,14 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.33-rc6
-# Thu Feb  4 15:42:56 2010
+# Linux kernel version: 2.6.34-rc2
+# Wed Mar 24 13:27:25 2010
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
 CONFIG_GENERIC_GPIO=y
 CONFIG_GENERIC_TIME=y
 CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_HAVE_PROC_CPU=y
 CONFIG_GENERIC_HARDIRQS=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -19,7 +20,9 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_ARCH_HAS_CPUFREQ=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_CONSTRUCTORS=y
@@ -60,11 +63,6 @@ CONFIG_RCU_FANOUT=32
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
 CONFIG_LOG_BUF_SHIFT=14
-CONFIG_GROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_RT_GROUP_SCHED is not set
-CONFIG_USER_SCHED=y
-# CONFIG_CGROUP_SCHED is not set
 # CONFIG_CGROUPS is not set
 # CONFIG_SYSFS_DEPRECATED_V2 is not set
 # CONFIG_RELAY is not set
@@ -96,10 +94,14 @@ CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
 
 #
 # Kernel Performance Events And Counters
 #
+# CONFIG_PERF_EVENTS is not set
+# CONFIG_PERF_COUNTERS is not set
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_COMPAT_BRK=y
 CONFIG_SLAB=y
@@ -170,7 +172,7 @@ CONFIG_INLINE_WRITE_UNLOCK=y
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
 # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
 # CONFIG_MUTEX_SPIN_ON_OWNER is not set
-# CONFIG_FREEZER is not set
+CONFIG_FREEZER=y
 
 #
 # System Type
@@ -181,6 +183,7 @@ CONFIG_MMU=y
 # CONFIG_ARCH_REALVIEW is not set
 # CONFIG_ARCH_VERSATILE is not set
 # CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCMRING is not set
 # CONFIG_ARCH_CLPS711X is not set
 # CONFIG_ARCH_GEMINI is not set
 # CONFIG_ARCH_EBSA110 is not set
@@ -190,7 +193,6 @@ CONFIG_MMU=y
 # CONFIG_ARCH_STMP3XXX is not set
 # CONFIG_ARCH_NETX is not set
 # CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_NOMADIK is not set
 # CONFIG_ARCH_IOP13XX is not set
 # CONFIG_ARCH_IOP32X is not set
 # CONFIG_ARCH_IOP33X is not set
@@ -207,21 +209,26 @@ CONFIG_MMU=y
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_NS9XXX is not set
 # CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_NUC93X is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_SHMOBILE is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C2410 is not set
 # CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_S5P6440 is not set
+# CONFIG_ARCH_S5P6442 is not set
 # CONFIG_ARCH_S5PC1XX is not set
+# CONFIG_ARCH_S5PV210 is not set
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
 # CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_NOMADIK is not set
 # CONFIG_ARCH_DAVINCI is not set
 CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_U8500 is not set
 
 #
 # TI OMAP Implementations
@@ -237,16 +244,20 @@ CONFIG_ARCH_OMAP3=y
 # OMAP Feature Selections
 #
 # CONFIG_OMAP_RESET_CLOCKS is not set
-# CONFIG_OMAP_MUX is not set
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
 CONFIG_OMAP_MCBSP=y
 # CONFIG_OMAP_MBOX_FWK is not set
 # CONFIG_OMAP_MPU_TIMER is not set
 CONFIG_OMAP_32K_TIMER=y
+# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
 CONFIG_OMAP_32K_TIMER_HZ=128
 CONFIG_OMAP_DM_TIMER=y
 # CONFIG_OMAP_PM_NONE is not set
 CONFIG_OMAP_PM_NOOP=y
 CONFIG_ARCH_OMAP3430=y
+CONFIG_OMAP_PACKAGE_CUS=y
 
 #
 # OMAP Board Type
@@ -295,6 +306,7 @@ CONFIG_ARM_THUMB=y
 # CONFIG_CPU_BPREDICT_DISABLE is not set
 CONFIG_HAS_TLS_REG=y
 CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_CPU_HAS_PMU=y
 # CONFIG_ARM_ERRATA_430973 is not set
 # CONFIG_ARM_ERRATA_458693 is not set
 # CONFIG_ARM_ERRATA_460075 is not set
@@ -387,7 +399,14 @@ CONFIG_HAVE_AOUT=y
 #
 # 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 is not set
+CONFIG_PM_OPS=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_NET=y
 
@@ -395,7 +414,6 @@ CONFIG_NET=y
 # Networking options
 #
 CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
 CONFIG_UNIX=y
 CONFIG_XFRM=y
 # CONFIG_XFRM_USER is not set
@@ -666,6 +684,7 @@ CONFIG_HAVE_IDE=y
 #
 # SCSI device support
 #
+CONFIG_SCSI_MOD=y
 # CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
@@ -717,6 +736,7 @@ CONFIG_NET_ETHERNET=y
 CONFIG_MII=y
 # CONFIG_AX88796 is not set
 # CONFIG_SMC91X is not set
+# CONFIG_TI_DAVINCI_EMAC is not set
 CONFIG_DM9000=y
 CONFIG_DM9000_DEBUGLEVEL=4
 CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL=y
@@ -863,6 +883,7 @@ CONFIG_SERIAL_8250_RSA=y
 # CONFIG_SERIAL_MAX3100 is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_TIMBERDALE is not set
 CONFIG_UNIX98_PTYS=y
 # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
 # CONFIG_LEGACY_PTYS is not set
@@ -891,6 +912,7 @@ CONFIG_I2C_HELPER_AUTO=y
 # 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
@@ -904,15 +926,9 @@ CONFIG_I2C_OMAP=y
 #
 # 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_DEBUG is not set
 CONFIG_SPI_MASTER=y
@@ -944,10 +960,12 @@ CONFIG_GPIOLIB=y
 #
 # Memory mapped GPIO expanders:
 #
+# CONFIG_GPIO_IT8761E is not set
 
 #
 # I2C GPIO expanders:
 #
+# CONFIG_GPIO_MAX7300 is not set
 # CONFIG_GPIO_MAX732X is not set
 # CONFIG_GPIO_PCA953X is not set
 # CONFIG_GPIO_PCF857X is not set
@@ -984,10 +1002,12 @@ CONFIG_SSB_POSSIBLE=y
 # Multifunction device drivers
 #
 CONFIG_MFD_CORE=y
+# CONFIG_MFD_88PM860X 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_HTC_I2CPLD is not set
 # CONFIG_TPS65010 is not set
 CONFIG_TWL4030_CORE=y
 CONFIG_TWL4030_POWER=y
@@ -998,22 +1018,25 @@ CONFIG_TWL4030_CODEC=y
 # 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_MFD_88PM8607 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_TWL4030=y
 # CONFIG_REGULATOR_LP3971 is not set
@@ -1072,7 +1095,6 @@ CONFIG_OMAP2_DSS_VENC=y
 CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
 CONFIG_FB_OMAP2=y
 CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
-# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set
 CONFIG_FB_OMAP2_NUM_FBS=3
 
 #
@@ -1080,7 +1102,9 @@ CONFIG_FB_OMAP2_NUM_FBS=3
 #
 CONFIG_PANEL_GENERIC=y
 # CONFIG_PANEL_SHARP_LS037V7DW01 is not set
-CONFIG_PANEL_INNOLUX_AT070TN83=y
+# CONFIG_PANEL_SHARP_LQ043T1DG01 is not set
+# CONFIG_PANEL_TOPPOLY_TDO35S is not set
+# CONFIG_PANEL_TPO_TD043MTEA1 is not set
 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
@@ -1136,6 +1160,7 @@ CONFIG_SND_ARM=y
 CONFIG_SND_SPI=y
 CONFIG_SND_USB=y
 # CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_UA101 is not set
 # CONFIG_SND_USB_CAIAQ is not set
 CONFIG_SND_SOC=y
 CONFIG_SND_OMAP_SOC=y
@@ -1147,42 +1172,44 @@ CONFIG_SND_SOC_TWL4030=y
 # CONFIG_SOUND_PRIME is not set
 CONFIG_HID_SUPPORT=y
 CONFIG_HID=y
-CONFIG_HIDRAW=y
+# CONFIG_HIDRAW is not set
 
 #
 # USB Input Devices
 #
 CONFIG_USB_HID=y
 # CONFIG_HID_PID is not set
-CONFIG_USB_HIDDEV=y
+# CONFIG_USB_HIDDEV is not set
 
 #
 # Special HID drivers
 #
-CONFIG_HID_A4TECH=y
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_CYPRESS=y
+# CONFIG_HID_3M_PCT is not set
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CYPRESS is not set
 # CONFIG_HID_DRAGONRISE is not set
-CONFIG_HID_EZKEY=y
+# CONFIG_HID_EZKEY is not set
 # CONFIG_HID_KYE is not set
-CONFIG_HID_GYRATION=y
+# CONFIG_HID_GYRATION is not set
 # CONFIG_HID_TWINHAN is not set
 # CONFIG_HID_KENSINGTON is not set
-CONFIG_HID_LOGITECH=y
-# CONFIG_LOGITECH_FF is not set
-# CONFIG_LOGIRUMBLEPAD2_FF is not set
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MOSART is not set
+# CONFIG_HID_MONTEREY is not set
 # CONFIG_HID_NTRIG is not set
-CONFIG_HID_PANTHERLORD=y
-# CONFIG_PANTHERLORD_FF is not set
-CONFIG_HID_PETALYNX=y
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SONY=y
-CONFIG_HID_SUNPLUS=y
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_QUANTA is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_STANTUM is not set
+# CONFIG_HID_SUNPLUS is not set
 # CONFIG_HID_GREENASIA is not set
 # CONFIG_HID_SMARTJOYPLUS is not set
 # CONFIG_HID_TOPSEED is not set
@@ -1193,7 +1220,7 @@ 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_DEBUG=y
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 
 #
@@ -1202,7 +1229,7 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 # CONFIG_USB_DEVICEFS is not set
 # CONFIG_USB_DEVICE_CLASS is not set
 # CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
+CONFIG_USB_OTG=y
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
 CONFIG_USB_MON=y
@@ -1230,15 +1257,15 @@ CONFIG_USB_MUSB_SOC=y
 #
 # OMAP 343x high speed USB support
 #
-CONFIG_USB_MUSB_HOST=y
+# CONFIG_USB_MUSB_HOST is not set
 # CONFIG_USB_MUSB_PERIPHERAL is not set
-# CONFIG_USB_MUSB_OTG is not set
-# CONFIG_USB_GADGET_MUSB_HDRC 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
+CONFIG_USB_MUSB_DEBUG=y
 
 #
 # USB Device Class drivers
@@ -1291,7 +1318,6 @@ CONFIG_USB_STORAGE=m
 # 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
@@ -1304,9 +1330,8 @@ CONFIG_USB_STORAGE=m
 # CONFIG_USB_IOWARRIOR is not set
 # CONFIG_USB_TEST is not set
 # CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_VST is not set
 CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG is not set
+CONFIG_USB_GADGET_DEBUG=y
 # CONFIG_USB_GADGET_DEBUG_FILES is not set
 CONFIG_USB_GADGET_VBUS_DRAW=2
 CONFIG_USB_GADGET_SELECTED=y
@@ -1314,8 +1339,7 @@ CONFIG_USB_GADGET_SELECTED=y
 # CONFIG_USB_GADGET_ATMEL_USBA is not set
 # CONFIG_USB_GADGET_FSL_USB2 is not set
 # CONFIG_USB_GADGET_LH7A40X is not set
-CONFIG_USB_GADGET_OMAP=y
-CONFIG_USB_OMAP=y
+# CONFIG_USB_GADGET_OMAP is not set
 # CONFIG_USB_GADGET_PXA25X is not set
 # CONFIG_USB_GADGET_R8A66597 is not set
 # CONFIG_USB_GADGET_PXA27X is not set
@@ -1330,19 +1354,20 @@ CONFIG_USB_OMAP=y
 # CONFIG_USB_GADGET_GOKU is not set
 # CONFIG_USB_GADGET_LANGWELL is not set
 # CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_GADGET_DUALSPEED=y
 # CONFIG_USB_ZERO is not set
-CONFIG_USB_AUDIO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_ETH_EEM=y
-CONFIG_USB_GADGETFS=m
+# CONFIG_USB_AUDIO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_ETH_EEM is not set
+# CONFIG_USB_GADGETFS is not set
 # CONFIG_USB_FILE_STORAGE is not set
 # CONFIG_USB_MASS_STORAGE is not set
-CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_G_SERIAL is not set
 # CONFIG_USB_MIDI_GADGET is not set
-CONFIG_USB_G_PRINTER=m
+# CONFIG_USB_G_PRINTER is not set
 # CONFIG_USB_CDC_COMPOSITE is not set
+# CONFIG_USB_G_NOKIA is not set
 # CONFIG_USB_G_MULTI is not set
 
 #
@@ -1373,8 +1398,6 @@ CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_PLTFM=m
 # CONFIG_MMC_OMAP is not set
 CONFIG_MMC_OMAP_HS=y
-# CONFIG_MMC_AT91 is not set
-# CONFIG_MMC_ATMELMCI is not set
 CONFIG_MMC_SPI=m
 # CONFIG_MEMSTICK is not set
 CONFIG_NEW_LEDS=y
@@ -1392,11 +1415,11 @@ CONFIG_LEDS_GPIO_PLATFORM=y
 # CONFIG_LEDS_REGULATOR is not set
 # CONFIG_LEDS_BD2802 is not set
 # CONFIG_LEDS_LT3593 is not set
+CONFIG_LEDS_TRIGGERS=y
 
 #
 # LED Triggers
 #
-CONFIG_LEDS_TRIGGERS=y
 # CONFIG_LEDS_TRIGGER_TIMER is not set
 CONFIG_LEDS_TRIGGER_HEARTBEAT=y
 # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
@@ -1580,6 +1603,7 @@ CONFIG_UBIFS_FS=y
 CONFIG_UBIFS_FS_LZO=y
 CONFIG_UBIFS_FS_ZLIB=y
 # CONFIG_UBIFS_FS_DEBUG is not set
+# CONFIG_LOGFS is not set
 CONFIG_CRAMFS=y
 # CONFIG_SQUASHFS is not set
 # CONFIG_VXFS_FS is not set
@@ -1606,6 +1630,7 @@ CONFIG_SUNRPC_GSS=y
 CONFIG_RPCSEC_GSS_KRB5=y
 # CONFIG_RPCSEC_GSS_SPKM3 is not set
 # CONFIG_SMB_FS is not set
+# CONFIG_CEPH_FS is not set
 # CONFIG_CIFS is not set
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
index d6ad921..94dfcf0 100644 (file)
@@ -1,13 +1,14 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.33-rc5
-# Tue Jan 26 11:05:31 2010
+# Linux kernel version: 2.6.34-rc7
+# Thu May 13 10:54:43 2010
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
 CONFIG_GENERIC_GPIO=y
 CONFIG_GENERIC_TIME=y
 CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_HAVE_PROC_CPU=y
 CONFIG_GENERIC_HARDIRQS=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -19,7 +20,9 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_ARCH_HAS_CPUFREQ=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
 CONFIG_OPROFILE_ARMV6=y
 CONFIG_OPROFILE_ARM11_CORE=y
 CONFIG_OPROFILE_ARMV7=y
@@ -63,12 +66,7 @@ CONFIG_RCU_FANOUT=32
 # CONFIG_TREE_RCU_TRACE is not set
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_GROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_RT_GROUP_SCHED is not set
-CONFIG_USER_SCHED=y
-# CONFIG_CGROUP_SCHED is not set
+CONFIG_LOG_BUF_SHIFT=16
 # CONFIG_CGROUPS is not set
 # CONFIG_SYSFS_DEPRECATED_V2 is not set
 # CONFIG_RELAY is not set
@@ -100,17 +98,21 @@ CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
 
 #
 # Kernel Performance Events And Counters
 #
+CONFIG_PERF_EVENTS=y
+# CONFIG_PERF_COUNTERS is not set
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_COMPAT_BRK=y
 CONFIG_SLAB=y
 # CONFIG_SLUB is not set
 # CONFIG_SLOB is not set
 CONFIG_PROFILING=y
-CONFIG_TRACEPOINTS=y
 CONFIG_OPROFILE=y
 CONFIG_HAVE_OPROFILE=y
 CONFIG_KPROBES=y
@@ -189,6 +191,7 @@ CONFIG_MMU=y
 # CONFIG_ARCH_REALVIEW is not set
 # CONFIG_ARCH_VERSATILE is not set
 # CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCMRING is not set
 # CONFIG_ARCH_CLPS711X is not set
 # CONFIG_ARCH_GEMINI is not set
 # CONFIG_ARCH_EBSA110 is not set
@@ -198,7 +201,6 @@ CONFIG_MMU=y
 # CONFIG_ARCH_STMP3XXX is not set
 # CONFIG_ARCH_NETX is not set
 # CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_NOMADIK is not set
 # CONFIG_ARCH_IOP13XX is not set
 # CONFIG_ARCH_IOP32X is not set
 # CONFIG_ARCH_IOP33X is not set
@@ -215,21 +217,26 @@ CONFIG_MMU=y
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_NS9XXX is not set
 # CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_NUC93X is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_SHMOBILE is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C2410 is not set
 # CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_S5P6440 is not set
+# CONFIG_ARCH_S5P6442 is not set
 # CONFIG_ARCH_S5PC1XX is not set
+# CONFIG_ARCH_S5PV210 is not set
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
 # CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_NOMADIK is not set
 # CONFIG_ARCH_DAVINCI is not set
 CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_BCMRING is not set
-# CONFIG_ARCH_U8500 is not set
 
 #
 # TI OMAP Implementations
@@ -254,6 +261,7 @@ CONFIG_OMAP_MCBSP=y
 # CONFIG_OMAP_MBOX_FWK is not set
 # CONFIG_OMAP_MPU_TIMER is not set
 CONFIG_OMAP_32K_TIMER=y
+# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
 CONFIG_OMAP_32K_TIMER_HZ=128
 CONFIG_OMAP_DM_TIMER=y
 # CONFIG_OMAP_PM_NONE is not set
@@ -264,7 +272,7 @@ CONFIG_MACH_OMAP_GENERIC=y
 # OMAP Core Type
 #
 CONFIG_ARCH_OMAP2420=y
-# CONFIG_ARCH_OMAP2430 is not set
+CONFIG_ARCH_OMAP2430=y
 CONFIG_ARCH_OMAP3430=y
 CONFIG_OMAP_PACKAGE_CBB=y
 CONFIG_OMAP_PACKAGE_CUS=y
@@ -276,8 +284,9 @@ CONFIG_OMAP_PACKAGE_CBP=y
 CONFIG_MACH_OMAP2_TUSB6010=y
 CONFIG_MACH_OMAP_H4=y
 CONFIG_MACH_OMAP_APOLLON=y
-# CONFIG_MACH_OMAP_2430SDP is not set
+CONFIG_MACH_OMAP_2430SDP=y
 CONFIG_MACH_OMAP3_BEAGLE=y
+CONFIG_MACH_DEVKIT8000=y
 CONFIG_MACH_OMAP_LDP=y
 CONFIG_MACH_OVERO=y
 CONFIG_MACH_OMAP3EVM=y
@@ -294,6 +303,7 @@ CONFIG_MACH_OMAP_ZOOM2=y
 CONFIG_MACH_OMAP_ZOOM3=y
 CONFIG_MACH_CM_T35=y
 CONFIG_MACH_IGEP0020=y
+CONFIG_MACH_SBC3530=y
 CONFIG_MACH_OMAP_3630SDP=y
 CONFIG_MACH_OMAP_4430SDP=y
 # CONFIG_OMAP3_EMU is not set
@@ -330,11 +340,16 @@ CONFIG_ARM_THUMBEE=y
 # CONFIG_CPU_DCACHE_DISABLE is not set
 # CONFIG_CPU_BPREDICT_DISABLE is not set
 CONFIG_HAS_TLS_REG=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_CACHE_L2X0=y
 CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_CPU_HAS_PMU=y
 # CONFIG_ARM_ERRATA_411920 is not set
 # CONFIG_ARM_ERRATA_430973 is not set
 # CONFIG_ARM_ERRATA_458693 is not set
 # CONFIG_ARM_ERRATA_460075 is not set
+# CONFIG_PL310_ERRATA_588369 is not set
 CONFIG_ARM_GIC=y
 CONFIG_COMMON_CLKDEV=y
 
@@ -368,6 +383,7 @@ CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 # CONFIG_HIGHMEM is not set
+CONFIG_HW_PERF_EVENTS=y
 CONFIG_SELECT_MEMORY_MODEL=y
 CONFIG_FLATMEM_MANUAL=y
 # CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -390,7 +406,7 @@ CONFIG_ALIGNMENT_TRAP=y
 #
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.1:/home/user/buildroot ip=192.168.0.2:192.168.0.1:192.168.0.1:255.255.255.0:tgt:eth0:off rw console=ttyS2,115200n8"
+CONFIG_CMDLINE="root=/dev/mmcblk0p2 rootwait console=ttyS2,115200"
 # CONFIG_XIP_KERNEL is not set
 CONFIG_KEXEC=y
 CONFIG_ATAGS_PROC=y
@@ -443,7 +459,8 @@ CONFIG_BINFMT_MISC=y
 #
 CONFIG_PM=y
 CONFIG_PM_DEBUG=y
-CONFIG_PM_VERBOSE=y
+# CONFIG_PM_ADVANCED_DEBUG is not set
+# CONFIG_PM_VERBOSE is not set
 CONFIG_CAN_PM_TRACE=y
 CONFIG_PM_SLEEP=y
 CONFIG_SUSPEND=y
@@ -451,6 +468,7 @@ 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_NET=y
 
@@ -458,7 +476,6 @@ CONFIG_NET=y
 # Networking options
 #
 CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
 CONFIG_UNIX=y
 CONFIG_XFRM=y
 CONFIG_XFRM_USER=y
@@ -544,7 +561,6 @@ CONFIG_NETFILTER_ADVANCED=y
 #
 # CONFIG_NET_PKTGEN is not set
 # CONFIG_NET_TCPPROBE is not set
-# CONFIG_NET_DROP_MONITOR is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_CAN is not set
 # CONFIG_IRDA is not set
@@ -584,7 +600,7 @@ CONFIG_CFG80211=y
 # CONFIG_CFG80211_REG_DEBUG is not set
 CONFIG_CFG80211_DEFAULT_PS=y
 # CONFIG_CFG80211_DEBUGFS is not set
-CONFIG_WIRELESS_OLD_REGULATORY=y
+# CONFIG_CFG80211_INTERNAL_REGDB is not set
 CONFIG_CFG80211_WEXT=y
 CONFIG_WIRELESS_EXT_SYSFS=y
 CONFIG_LIB80211=y
@@ -676,7 +692,6 @@ CONFIG_MTD_CFI_UTIL=y
 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
 # CONFIG_MTD_PHYSMAP is not set
 # CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_OMAP_NOR=y
 # CONFIG_MTD_PLATRAM is not set
 
 #
@@ -754,6 +769,7 @@ CONFIG_MISC_DEVICES=y
 # CONFIG_ICS932S401 is not set
 # CONFIG_ENCLOSURE_SERVICES is not set
 # CONFIG_ISL29003 is not set
+# CONFIG_SENSORS_TSL2550 is not set
 # CONFIG_DS1682 is not set
 # CONFIG_TI_DAC7512 is not set
 # CONFIG_C2PORT is not set
@@ -773,6 +789,7 @@ CONFIG_HAVE_IDE=y
 #
 # SCSI device support
 #
+CONFIG_SCSI_MOD=y
 # CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
@@ -839,12 +856,14 @@ CONFIG_SMSC_PHY=y
 # CONFIG_NATIONAL_PHY is not set
 # CONFIG_STE10XP is not set
 # CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_MICREL_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=y
+# CONFIG_TI_DAVINCI_EMAC is not set
 # CONFIG_DM9000 is not set
 # CONFIG_ENC28J60 is not set
 # CONFIG_ETHOC is not set
@@ -881,6 +900,7 @@ CONFIG_LIBERTAS_USB=y
 CONFIG_LIBERTAS_SDIO=y
 # CONFIG_LIBERTAS_SPI is not set
 CONFIG_LIBERTAS_DEBUG=y
+# CONFIG_LIBERTAS_MESH is not set
 # CONFIG_P54_COMMON is not set
 # CONFIG_RT2X00 is not set
 # CONFIG_WL12XX is not set
@@ -902,6 +922,7 @@ CONFIG_USB_NET_AX8817X=y
 CONFIG_USB_NET_CDCETHER=y
 # CONFIG_USB_NET_CDC_EEM is not set
 # CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SMSC75XX is not set
 # CONFIG_USB_NET_SMSC95XX is not set
 # CONFIG_USB_NET_GL620A is not set
 CONFIG_USB_NET_NET1080=y
@@ -917,6 +938,8 @@ CONFIG_USB_EPSON2888=y
 CONFIG_USB_KC2190=y
 CONFIG_USB_NET_ZAURUS=y
 # CONFIG_USB_NET_INT51X1 is not set
+# CONFIG_USB_IPHETH is not set
+# CONFIG_USB_SIERRA_NET is not set
 # CONFIG_WAN is not set
 # CONFIG_PPP is not set
 # CONFIG_SLIP is not set
@@ -1012,6 +1035,7 @@ CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_YEALINK is not set
 # CONFIG_INPUT_CM109 is not set
 CONFIG_INPUT_TWL4030_PWRBUTTON=y
+# CONFIG_INPUT_TWL4030_VIBRA is not set
 # CONFIG_INPUT_UINPUT is not set
 # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
 
@@ -1055,6 +1079,7 @@ CONFIG_SERIAL_8250_RSA=y
 # CONFIG_SERIAL_MAX3100 is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_TIMBERDALE is not set
 CONFIG_UNIX98_PTYS=y
 # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
 # CONFIG_LEGACY_PTYS is not set
@@ -1083,6 +1108,7 @@ CONFIG_I2C_HELPER_AUTO=y
 # 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
@@ -1096,15 +1122,9 @@ CONFIG_I2C_OMAP=y
 #
 # 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_DEBUG is not set
 CONFIG_SPI_MASTER=y
@@ -1136,10 +1156,12 @@ CONFIG_GPIO_SYSFS=y
 #
 # Memory mapped GPIO expanders:
 #
+# CONFIG_GPIO_IT8761E is not set
 
 #
 # I2C GPIO expanders:
 #
+# CONFIG_GPIO_MAX7300 is not set
 # CONFIG_GPIO_MAX732X is not set
 # CONFIG_GPIO_PCA953X is not set
 # CONFIG_GPIO_PCF857X is not set
@@ -1204,10 +1226,11 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_ADM1029 is not set
 # CONFIG_SENSORS_ADM1031 is not set
 # CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7411 is not set
 # CONFIG_SENSORS_ADT7462 is not set
 # CONFIG_SENSORS_ADT7470 is not set
-# CONFIG_SENSORS_ADT7473 is not set
 # CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_ASC7621 is not set
 # CONFIG_SENSORS_ATXP1 is not set
 # CONFIG_SENSORS_DS1621 is not set
 # CONFIG_SENSORS_F71805F is not set
@@ -1262,7 +1285,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_LIS3_I2C is not set
 # CONFIG_THERMAL is not set
 CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_NOWAYOUT=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
 
 #
 # Watchdog Device Drivers
@@ -1270,6 +1293,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 # CONFIG_SOFT_WATCHDOG is not set
 CONFIG_OMAP_WATCHDOG=y
 CONFIG_TWL4030_WATCHDOG=y
+# CONFIG_MAX63XX_WATCHDOG is not set
 
 #
 # USB-based Watchdog Cards
@@ -1286,14 +1310,16 @@ CONFIG_SSB_POSSIBLE=y
 # Multifunction device drivers
 #
 CONFIG_MFD_CORE=y
+# CONFIG_MFD_88PM860X 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_HTC_I2CPLD is not set
 # CONFIG_TPS65010 is not set
-# CONFIG_MENELAUS is not set
+CONFIG_MENELAUS=y
 CONFIG_TWL4030_CORE=y
-# CONFIG_TWL4030_POWER is not set
+CONFIG_TWL4030_POWER=y
 CONFIG_TWL4030_CODEC=y
 # CONFIG_MFD_TMIO is not set
 # CONFIG_MFD_T7L66XB is not set
@@ -1301,27 +1327,30 @@ CONFIG_TWL4030_CODEC=y
 # 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_MFD_88PM8607 is not set
 # CONFIG_AB4500_CORE is not set
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# 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_TWL4030=y
 # CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
+CONFIG_REGULATOR_TPS65023=y
+CONFIG_REGULATOR_TPS6507X=y
 # CONFIG_MEDIA_SUPPORT is not set
 
 #
@@ -1333,9 +1362,9 @@ 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_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
 # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
 # CONFIG_FB_SYS_FILLRECT is not set
 # CONFIG_FB_SYS_COPYAREA is not set
@@ -1358,19 +1387,12 @@ CONFIG_FB_TILEBLITTING=y
 # CONFIG_FB_METRONOME is not set
 # CONFIG_FB_MB862XX is not set
 # CONFIG_FB_BROADSHEET is not set
-CONFIG_FB_OMAP=y
+# CONFIG_FB_OMAP is not set
 CONFIG_FB_OMAP_LCD_VGA=y
-# CONFIG_FB_OMAP_031M3R is not set
-# CONFIG_FB_OMAP_048M3R is not set
-CONFIG_FB_OMAP_079M3R=y
-# CONFIG_FB_OMAP_092M9R is not set
-# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
-# CONFIG_FB_OMAP_LCD_MIPID is not set
-# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
-CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
 # CONFIG_OMAP2_DSS is not set
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=y
+# CONFIG_LCD_L4F00242T03 is not set
 # CONFIG_LCD_LMS283GF05 is not set
 # CONFIG_LCD_LTV350QV is not set
 # CONFIG_LCD_ILI9320 is not set
@@ -1448,6 +1470,7 @@ CONFIG_SND_ARM=y
 CONFIG_SND_SPI=y
 CONFIG_SND_USB=y
 CONFIG_SND_USB_AUDIO=y
+# CONFIG_SND_USB_UA101 is not set
 # CONFIG_SND_USB_CAIAQ is not set
 CONFIG_SND_SOC=y
 CONFIG_SND_OMAP_SOC=y
@@ -1479,6 +1502,7 @@ CONFIG_USB_HID=y
 #
 # Special HID drivers
 #
+# CONFIG_HID_3M_PCT is not set
 # CONFIG_HID_A4TECH is not set
 # CONFIG_HID_APPLE is not set
 # CONFIG_HID_BELKIN is not set
@@ -1492,13 +1516,18 @@ CONFIG_USB_HID=y
 # CONFIG_HID_TWINHAN is not set
 # CONFIG_HID_KENSINGTON is not set
 # CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MAGICMOUSE is not set
 # CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MOSART is not set
 # CONFIG_HID_MONTEREY is not set
 # CONFIG_HID_NTRIG is not set
+# CONFIG_HID_ORTEK is not set
 # CONFIG_HID_PANTHERLORD is not set
 # CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_QUANTA is not set
 # CONFIG_HID_SAMSUNG is not set
 # CONFIG_HID_SONY is not set
+# CONFIG_HID_STANTUM is not set
 # CONFIG_HID_SUNPLUS is not set
 # CONFIG_HID_GREENASIA is not set
 # CONFIG_HID_SMARTJOYPLUS is not set
@@ -1544,6 +1573,10 @@ CONFIG_USB_MON=y
 CONFIG_USB_MUSB_HDRC=y
 CONFIG_USB_MUSB_SOC=y
 
+#
+# OMAP 243x high speed USB support
+#
+
 #
 # OMAP 343x high speed USB support
 #
@@ -1608,7 +1641,6 @@ CONFIG_USB_LIBUSUAL=y
 # 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
@@ -1621,7 +1653,6 @@ CONFIG_USB_LIBUSUAL=y
 # CONFIG_USB_IOWARRIOR is not set
 CONFIG_USB_TEST=y
 # CONFIG_USB_ISIGHTFW is not set
-# CONFIG_USB_VST is not set
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DEBUG=y
 CONFIG_USB_GADGET_DEBUG_FILES=y
@@ -1659,6 +1690,7 @@ CONFIG_USB_ZERO=m
 # CONFIG_USB_MIDI_GADGET is not set
 # CONFIG_USB_G_PRINTER is not set
 # CONFIG_USB_CDC_COMPOSITE is not set
+# CONFIG_USB_G_NOKIA is not set
 # CONFIG_USB_G_MULTI is not set
 
 #
@@ -1686,10 +1718,8 @@ CONFIG_SDIO_UART=y
 # MMC/SD/SDIO Host Controller Drivers
 #
 # CONFIG_MMC_SDHCI is not set
-# CONFIG_MMC_OMAP is not set
+CONFIG_MMC_OMAP=y
 CONFIG_MMC_OMAP_HS=y
-# CONFIG_MMC_AT91 is not set
-# CONFIG_MMC_ATMELMCI is not set
 # CONFIG_MMC_SPI is not set
 # CONFIG_MEMSTICK is not set
 CONFIG_NEW_LEDS=y
@@ -1707,11 +1737,11 @@ CONFIG_LEDS_GPIO_PLATFORM=y
 # CONFIG_LEDS_REGULATOR is not set
 # CONFIG_LEDS_BD2802 is not set
 # CONFIG_LEDS_LT3593 is not set
+CONFIG_LEDS_TRIGGERS=y
 
 #
 # LED Triggers
 #
-CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=y
 CONFIG_LEDS_TRIGGER_HEARTBEAT=y
 # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
@@ -1751,6 +1781,7 @@ CONFIG_RTC_INTF_DEV=y
 # CONFIG_RTC_DRV_PCF8583 is not set
 # CONFIG_RTC_DRV_M41T80 is not set
 # CONFIG_RTC_DRV_BQ32K is not set
+CONFIG_RTC_DRV_TWL92330=y
 CONFIG_RTC_DRV_TWL4030=y
 # CONFIG_RTC_DRV_S35390A is not set
 # CONFIG_RTC_DRV_FM3130 is not set
@@ -1798,6 +1829,11 @@ CONFIG_RTC_DRV_TWL4030=y
 #
 # CONFIG_STAGING is not set
 
+#
+# CBUS support
+#
+# CONFIG_CBUS is not set
+
 #
 # File systems
 #
@@ -1826,6 +1862,7 @@ CONFIG_INOTIFY_USER=y
 CONFIG_QUOTA=y
 # CONFIG_QUOTA_NETLINK_INTERFACE is not set
 CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QUOTA_DEBUG is not set
 CONFIG_QUOTA_TREE=y
 # CONFIG_QFMT_V1 is not set
 CONFIG_QFMT_V2=y
@@ -1897,6 +1934,7 @@ CONFIG_UBIFS_FS=y
 CONFIG_UBIFS_FS_LZO=y
 CONFIG_UBIFS_FS_ZLIB=y
 # CONFIG_UBIFS_FS_DEBUG is not set
+# CONFIG_LOGFS is not set
 CONFIG_CRAMFS=y
 # CONFIG_SQUASHFS is not set
 # CONFIG_VXFS_FS is not set
@@ -1924,6 +1962,7 @@ CONFIG_SUNRPC_GSS=y
 CONFIG_RPCSEC_GSS_KRB5=y
 # CONFIG_RPCSEC_GSS_SPKM3 is not set
 # CONFIG_SMB_FS is not set
+# CONFIG_CEPH_FS is not set
 # CONFIG_CIFS is not set
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
@@ -2024,6 +2063,7 @@ CONFIG_DEBUG_SPINLOCK=y
 CONFIG_DEBUG_MUTEXES=y
 CONFIG_DEBUG_LOCK_ALLOC=y
 CONFIG_PROVE_LOCKING=y
+# CONFIG_PROVE_RCU is not set
 CONFIG_LOCKDEP=y
 CONFIG_LOCK_STAT=y
 # CONFIG_DEBUG_LOCKDEP is not set
@@ -2053,13 +2093,9 @@ CONFIG_DEBUG_INFO=y
 # CONFIG_LATENCYTOP is not set
 # CONFIG_SYSCTL_SYSCALL_CHECK is not set
 # CONFIG_PAGE_POISONING is not set
-CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_RING_BUFFER=y
-CONFIG_EVENT_TRACING=y
-CONFIG_CONTEXT_SWITCH_TRACER=y
 CONFIG_RING_BUFFER_ALLOW_SWAP=y
-CONFIG_TRACING=y
 CONFIG_TRACING_SUPPORT=y
 CONFIG_FTRACE=y
 # CONFIG_FUNCTION_TRACER is not set
@@ -2199,7 +2235,7 @@ CONFIG_CRYPTO_LZO=y
 #
 # CONFIG_CRYPTO_ANSI_CPRNG is not set
 CONFIG_CRYPTO_HW=y
-CONFIG_BINARY_PRINTF=y
+# CONFIG_BINARY_PRINTF is not set
 
 #
 # Library routines
@@ -2222,3 +2258,4 @@ CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
 CONFIG_NLATTR=y
+CONFIG_GENERIC_ATOMIC64=y
diff --git a/arch/arm/configs/omap3_stalker_lks_defconfig b/arch/arm/configs/omap3_stalker_lks_defconfig
new file mode 100644 (file)
index 0000000..83365f0
--- /dev/null
@@ -0,0 +1,1691 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.34-rc7
+# Mon May 17 16:57:28 2010
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_HAVE_PROC_CPU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_ARCH_HAS_CPUFREQ=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_BZIP2 is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_LZO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_TREE_PREEMPT_RCU is not set
+# CONFIG_TINY_RCU is not set
+# CONFIG_RCU_TRACE is not set
+CONFIG_RCU_FANOUT=32
+# CONFIG_RCU_FANOUT_EXACT is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_LZO is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+
+#
+# Kernel Performance Events And Counters
+#
+# CONFIG_PERF_EVENTS is not set
+# CONFIG_PERF_COUNTERS is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_COMPAT_BRK=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_CLK=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+# CONFIG_SLOW_WORK is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is not set
+# CONFIG_INLINE_READ_LOCK is not set
+# CONFIG_INLINE_READ_LOCK_BH is not set
+# CONFIG_INLINE_READ_LOCK_IRQ is not set
+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
+CONFIG_INLINE_READ_UNLOCK=y
+# CONFIG_INLINE_READ_UNLOCK_BH is not set
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_WRITE_TRYLOCK is not set
+# CONFIG_INLINE_WRITE_LOCK is not set
+# CONFIG_INLINE_WRITE_LOCK_BH is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
+CONFIG_INLINE_WRITE_UNLOCK=y
+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
+# CONFIG_MUTEX_SPIN_ON_OWNER is not set
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+CONFIG_MMU=y
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCMRING is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_STMP3XXX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_NUC93X is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_S5P6440 is not set
+# CONFIG_ARCH_S5P6442 is not set
+# CONFIG_ARCH_S5PC1XX is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_NOMADIK is not set
+# CONFIG_ARCH_DAVINCI is not set
+CONFIG_ARCH_OMAP=y
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+# CONFIG_ARCH_OMAP1 is not set
+CONFIG_ARCH_OMAP2PLUS=y
+# CONFIG_ARCH_OMAP2 is not set
+CONFIG_ARCH_OMAP3=y
+# CONFIG_ARCH_OMAP4 is not set
+
+#
+# OMAP Feature Selections
+#
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_MUX=y
+# CONFIG_OMAP_MUX_DEBUG is not set
+CONFIG_OMAP_MUX_WARNINGS=y
+# CONFIG_OMAP_MCBSP is not set
+# CONFIG_OMAP_MBOX_FWK is not set
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
+CONFIG_OMAP_32K_TIMER_HZ=128
+CONFIG_OMAP_DM_TIMER=y
+# CONFIG_OMAP_PM_NONE is not set
+CONFIG_OMAP_PM_NOOP=y
+CONFIG_ARCH_OMAP3430=y
+CONFIG_OMAP_PACKAGE_CUS=y
+
+#
+# OMAP Board Type
+#
+# CONFIG_MACH_OMAP3_BEAGLE is not set
+# CONFIG_MACH_DEVKIT8000 is not set
+# CONFIG_MACH_OMAP_LDP is not set
+# CONFIG_MACH_OVERO is not set
+# CONFIG_MACH_OMAP3EVM is not set
+# CONFIG_MACH_OMAP3517EVM is not set
+# CONFIG_MACH_OMAP3_PANDORA is not set
+# CONFIG_MACH_OMAP3_TOUCHBOOK is not set
+# CONFIG_MACH_OMAP_3430SDP is not set
+# CONFIG_MACH_NOKIA_RX51 is not set
+# CONFIG_MACH_OMAP_ZOOM2 is not set
+# CONFIG_MACH_OMAP_ZOOM3 is not set
+# CONFIG_MACH_CM_T35 is not set
+# CONFIG_MACH_IGEP0020 is not set
+CONFIG_MACH_SBC3530=y
+# CONFIG_MACH_OMAP_3630SDP is not set
+# CONFIG_OMAP3_EMU is not set
+# CONFIG_OMAP3_SDRC_AC_TIMING is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_ARM_THUMBEE is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_HAS_TLS_REG=y
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_CPU_HAS_PMU=y
+# CONFIG_ARM_ERRATA_430973 is not set
+# CONFIG_ARM_ERRATA_458693 is not set
+# CONFIG_ARM_ERRATA_460075 is not set
+CONFIG_COMMON_CLKDEV=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=128
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.1:/home/user/buildroot ip=192.168.0.2:192.168.0.1:192.168.0.1:255.255.255.0:tgt:eth0:off rw console=ttyS2,115200n8"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Power Management
+#
+# CONFIG_CPU_FREQ is not set
+# CONFIG_CPU_IDLE is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_ADVANCED_DEBUG is not set
+# CONFIG_PM_VERBOSE is not set
+CONFIG_CAN_PM_TRACE=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+# CONFIG_APM_EMULATION is not set
+# CONFIG_PM_RUNTIME is not set
+CONFIG_PM_OPS=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+# CONFIG_LIB80211 is not set
+
+#
+# CFG80211 needs to be enabled for MAC80211
+#
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+# CONFIG_DEVTMPFS is not set
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_TESTS is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_GPIO is not set
+# CONFIG_MTD_NAND_OMAP2 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_ONENAND=y
+CONFIG_MTD_ONENAND_VERIFY_WRITE=y
+# CONFIG_MTD_ONENAND_GENERIC is not set
+CONFIG_MTD_ONENAND_OMAP2=y
+# CONFIG_MTD_ONENAND_OTP is not set
+# CONFIG_MTD_ONENAND_2X_PROGRAM is not set
+# CONFIG_MTD_ONENAND_SIM is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+
+#
+# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
+#
+# CONFIG_BLK_DEV_NBD 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_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_MISC_DEVICES is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_LIBFC is not set
+# CONFIG_LIBFCOE is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_SCSI_OSD_INITIATOR is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH 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 is not set
+# 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_MICREL_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_TI_DAVINCI_EMAC is not set
+# CONFIG_DM9000 is not set
+# CONFIG_ENC28J60 is not set
+# CONFIG_ETHOC is not set
+# CONFIG_SMC911X is not set
+CONFIG_SMSC911X=y
+# CONFIG_DNET is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
+# CONFIG_KS8851_MLL is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+CONFIG_WLAN=y
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_IPHETH is not set
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+CONFIG_KEYBOARD_TWL4030=y
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+# CONFIG_TOUCHSCREEN_AD7877 is not set
+# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
+# CONFIG_TOUCHSCREEN_AD7879_SPI is not set
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+# CONFIG_TOUCHSCREEN_DYNAPRO is not set
+# CONFIG_TOUCHSCREEN_EETI is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+# CONFIG_TOUCHSCREEN_MCS5000 is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TSC2007 is not set
+# CONFIG_TOUCHSCREEN_W90X900 is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_MAX3100 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_TIMBERDALE is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# 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
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_GPIO is not set
+CONFIG_SPI_OMAP24XX=y
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_DESIGNWARE is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+
+#
+# PPS support
+#
+# CONFIG_PPS is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+# CONFIG_GPIO_SYSFS is not set
+
+#
+# Memory mapped GPIO expanders:
+#
+# CONFIG_GPIO_IT8761E is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+CONFIG_GPIO_TWL4030=y
+# CONFIG_GPIO_ADP5588 is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_GPIO_MC33880 is not set
+
+#
+# AC97 GPIO expanders:
+#
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_OMAP_WATCHDOG=y
+# CONFIG_TWL4030_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_88PM860X 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_HTC_I2CPLD is not set
+# CONFIG_TPS65010 is not set
+CONFIG_TWL4030_CORE=y
+# CONFIG_TWL4030_POWER is not set
+# CONFIG_TWL4030_CODEC is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB 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_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_TWL4030=y
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+# CONFIG_OMAP2_DSS is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_3M_PCT is not set
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MOSART is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_QUANTA is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_STANTUM is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_ZEROPLUS 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=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_OTG=y
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=y
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_ISP1362_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_HWA_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
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB 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_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+CONFIG_USB_TEST=y
+# CONFIG_USB_ISIGHTFW is not set
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_R8A66597 is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C_HSOTG is not set
+# CONFIG_USB_GADGET_IMX is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_CI13XXX is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LANGWELL 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_AUDIO is not set
+# CONFIG_USB_ETH is not set
+# CONFIG_USB_GADGETFS 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_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER 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
+#
+CONFIG_USB_OTG_UTILS=y
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_ISP1301_OMAP is not set
+# CONFIG_USB_ULPI is not set
+CONFIG_TWL4030_USB=y
+# CONFIG_NOP_USB_XCEIV 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 is not set
+CONFIG_MMC_OMAP_HS=y
+# CONFIG_MMC_SPI is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_ACCESSIBILITY is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+
+#
+# TI VLYNQ
+#
+# CONFIG_STAGING is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
+CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QUOTA_DEBUG is not set
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+# CONFIG_LOGFS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CEPH_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_LKDTM is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+# CONFIG_PAGE_POISONING is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
+# CONFIG_BOOT_TRACER is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_KMEMTRACE is not set
+# CONFIG_WORKQUEUE_TRACER is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_EARLY_PRINTK is not set
+# CONFIG_DEBUG_ICEDCC is not set
+# CONFIG_OC_ETM is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
+# CONFIG_DEFAULT_SECURITY_SMACK is not set
+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_WORKQUEUE=y
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_GHASH is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_ZLIB is not set
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_BINARY_PRINTF is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_NLATTR=y
index a96bca2..1fb0456 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.32
-# Sun Dec  6 23:37:45 2009
+# Linux kernel version: 2.6.34-rc7
+# Wed May 12 12:26:05 2010
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -9,6 +9,7 @@ CONFIG_GENERIC_GPIO=y
 CONFIG_GENERIC_TIME=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_HAVE_PROC_CPU=y
 CONFIG_GENERIC_HARDIRQS=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_LOCKDEP_SUPPORT=y
@@ -20,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_ARCH_HAS_CPUFREQ=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -33,28 +35,33 @@ CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_LOCALVERSION=""
 CONFIG_LOCALVERSION_AUTO=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_BZIP2 is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_LZO is not set
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
 
 #
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
 # CONFIG_TREE_PREEMPT_RCU is not set
+# CONFIG_TINY_RCU is not set
 # CONFIG_RCU_TRACE is not set
 CONFIG_RCU_FANOUT=32
 # CONFIG_RCU_FANOUT_EXACT is not set
 # CONFIG_TREE_RCU_TRACE is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=14
-CONFIG_GROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-# CONFIG_RT_GROUP_SCHED is not set
-CONFIG_USER_SCHED=y
-# CONFIG_CGROUP_SCHED is not set
 # CONFIG_CGROUPS is not set
 # CONFIG_SYSFS_DEPRECATED_V2 is not set
 # CONFIG_RELAY is not set
@@ -64,6 +71,7 @@ CONFIG_INITRAMFS_SOURCE=""
 CONFIG_RD_GZIP=y
 # CONFIG_RD_BZIP2 is not set
 # CONFIG_RD_LZMA is not set
+# CONFIG_RD_LZO is not set
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
@@ -85,10 +93,14 @@ CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
 
 #
 # Kernel Performance Events And Counters
 #
+# CONFIG_PERF_EVENTS is not set
+# CONFIG_PERF_COUNTERS is not set
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_SLUB_DEBUG=y
 CONFIG_COMPAT_BRK=y
@@ -127,14 +139,41 @@ CONFIG_LBDAF=y
 # IO Schedulers
 #
 CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
 CONFIG_IOSCHED_DEADLINE=y
 CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
 # CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_IOSCHED="cfq"
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_SPIN_UNLOCK is not set
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is not set
+# CONFIG_INLINE_READ_LOCK is not set
+# CONFIG_INLINE_READ_LOCK_BH is not set
+# CONFIG_INLINE_READ_LOCK_IRQ is not set
+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_READ_UNLOCK is not set
+# CONFIG_INLINE_READ_UNLOCK_BH is not set
+# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_WRITE_TRYLOCK is not set
+# CONFIG_INLINE_WRITE_LOCK is not set
+# CONFIG_INLINE_WRITE_LOCK_BH is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_WRITE_UNLOCK is not set
+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
+# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
+CONFIG_MUTEX_SPIN_ON_OWNER=y
 # CONFIG_FREEZER is not set
 
 #
@@ -146,6 +185,7 @@ CONFIG_MMU=y
 # CONFIG_ARCH_REALVIEW is not set
 # CONFIG_ARCH_VERSATILE is not set
 # CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_BCMRING is not set
 # CONFIG_ARCH_CLPS711X is not set
 # CONFIG_ARCH_GEMINI is not set
 # CONFIG_ARCH_EBSA110 is not set
@@ -155,7 +195,6 @@ CONFIG_MMU=y
 # CONFIG_ARCH_STMP3XXX is not set
 # CONFIG_ARCH_NETX is not set
 # CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_NOMADIK is not set
 # CONFIG_ARCH_IOP13XX is not set
 # CONFIG_ARCH_IOP32X is not set
 # CONFIG_ARCH_IOP33X is not set
@@ -163,6 +202,7 @@ CONFIG_MMU=y
 # CONFIG_ARCH_IXP2000 is not set
 # CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_DOVE is not set
 # CONFIG_ARCH_KIRKWOOD is not set
 # CONFIG_ARCH_LOKI is not set
 # CONFIG_ARCH_MV78XX0 is not set
@@ -171,25 +211,32 @@ CONFIG_MMU=y
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_NS9XXX is not set
 # CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_NUC93X is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_SHMOBILE is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C2410 is not set
 # CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_S5P6440 is not set
+# CONFIG_ARCH_S5P6442 is not set
 # CONFIG_ARCH_S5PC1XX is not set
+# CONFIG_ARCH_S5PV210 is not set
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_LH7A40X is not set
 # CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_NOMADIK is not set
 # CONFIG_ARCH_DAVINCI is not set
 CONFIG_ARCH_OMAP=y
-# CONFIG_ARCH_BCMRING is not set
 
 #
 # TI OMAP Implementations
 #
 # CONFIG_ARCH_OMAP1 is not set
+CONFIG_ARCH_OMAP2PLUS=y
 # CONFIG_ARCH_OMAP2 is not set
 # CONFIG_ARCH_OMAP3 is not set
 CONFIG_ARCH_OMAP4=y
@@ -205,10 +252,6 @@ CONFIG_OMAP_MCBSP=y
 CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_32K_TIMER_HZ=128
 CONFIG_OMAP_DM_TIMER=y
-# CONFIG_OMAP_LL_DEBUG_UART1 is not set
-# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-CONFIG_OMAP_LL_DEBUG_UART3=y
-# CONFIG_OMAP_LL_DEBUG_NONE is not set
 # CONFIG_OMAP_PM_NONE is not set
 CONFIG_OMAP_PM_NOOP=y
 
@@ -243,13 +286,16 @@ CONFIG_CPU_CP15_MMU=y
 # CONFIG_CPU_BPREDICT_DISABLE is not set
 CONFIG_HAS_TLS_REG=y
 CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_CACHE_L2X0=y
 CONFIG_ARM_L1_CACHE_SHIFT=5
+CONFIG_CPU_HAS_PMU=y
 # CONFIG_ARM_ERRATA_430973 is not set
 # CONFIG_ARM_ERRATA_458693 is not set
 # CONFIG_ARM_ERRATA_460075 is not set
 CONFIG_PL310_ERRATA_588369=y
 CONFIG_ARM_GIC=y
+CONFIG_COMMON_CLKDEV=y
 
 #
 # Bus support
@@ -280,6 +326,7 @@ CONFIG_HZ=128
 # CONFIG_THUMB2_KERNEL is not set
 CONFIG_AEABI=y
 CONFIG_OABI_COMPAT=y
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 # CONFIG_HIGHMEM is not set
@@ -294,8 +341,6 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 CONFIG_ZONE_DMA_FLAG=0
 CONFIG_VIRT_TO_BUS=y
-CONFIG_HAVE_MLOCK=y
-CONFIG_HAVE_MLOCKED_PAGE_BIT=y
 # CONFIG_KSM is not set
 CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
 # CONFIG_LEDS is not set
@@ -343,7 +388,83 @@ CONFIG_BINFMT_MISC=y
 #
 # CONFIG_PM is not set
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_NET is not set
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_UNIX is not set
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_LRO=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_WIRELESS is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
 
 #
 # Device Drivers
@@ -360,17 +481,24 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 # CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
 # CONFIG_MTD is not set
 # CONFIG_PARPORT is not set
 CONFIG_BLK_DEV=y
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
+
+#
+# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
+#
+# CONFIG_BLK_DEV_NBD is not set
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=16384
 # CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
 # CONFIG_MG_DISK is not set
 # CONFIG_MISC_DEVICES is not set
 CONFIG_HAVE_IDE=y
@@ -379,12 +507,56 @@ CONFIG_HAVE_IDE=y
 #
 # SCSI device support
 #
+CONFIG_SCSI_MOD=y
 # CONFIG_RAID_ATTRS is not set
 # CONFIG_SCSI is not set
 # CONFIG_SCSI_DMA is not set
 # CONFIG_SCSI_NETLINK is not set
 # CONFIG_ATA is not set
 # CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_PHYLIB 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_ETHOC is not set
+# CONFIG_SMC911X is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_DNET is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+# CONFIG_KS8842 is not set
+CONFIG_KS8851=y
+# CONFIG_KS8851_MLL is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_WLAN is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
 # CONFIG_PHONE is not set
 
 #
@@ -393,6 +565,7 @@ CONFIG_HAVE_IDE=y
 CONFIG_INPUT=y
 # CONFIG_INPUT_FF_MEMLESS is not set
 # CONFIG_INPUT_POLLDEV is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
 
 #
 # Userland interfaces
@@ -445,8 +618,10 @@ CONFIG_SERIAL_8250_RSA=y
 #
 # Non-8250 serial port support
 #
+# CONFIG_SERIAL_MAX3100 is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_TIMBERDALE is not set
 CONFIG_UNIX98_PTYS=y
 # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
 # CONFIG_LEGACY_PTYS is not set
@@ -456,8 +631,58 @@ CONFIG_HW_RANDOM=y
 # CONFIG_R3964 is not set
 # CONFIG_RAW_DRIVER is not set
 # CONFIG_TCG_TPM is not set
-# CONFIG_I2C is not set
-# CONFIG_SPI is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# 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
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB 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_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_GPIO is not set
+CONFIG_SPI_OMAP24XX=y
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_DESIGNWARE is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
 
 #
 # PPS support
@@ -471,10 +696,17 @@ CONFIG_GPIOLIB=y
 #
 # Memory mapped GPIO expanders:
 #
+# CONFIG_GPIO_IT8761E is not set
 
 #
 # I2C GPIO expanders:
 #
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_TWL4030 is not set
+# CONFIG_GPIO_ADP5588 is not set
 
 #
 # PCI GPIO expanders:
@@ -483,6 +715,9 @@ CONFIG_GPIOLIB=y
 #
 # SPI GPIO expanders:
 #
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_GPIO_MC33880 is not set
 
 #
 # AC97 GPIO expanders:
@@ -492,7 +727,15 @@ CONFIG_GPIOLIB=y
 # CONFIG_HWMON is not set
 # CONFIG_THERMAL is not set
 CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
 CONFIG_OMAP_WATCHDOG=y
+# CONFIG_TWL4030_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
 CONFIG_SSB_POSSIBLE=y
 
 #
@@ -504,15 +747,46 @@ CONFIG_SSB_POSSIBLE=y
 # Multifunction device drivers
 #
 # CONFIG_MFD_CORE is not set
+# CONFIG_MFD_88PM860X 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_HTC_I2CPLD is not set
+# CONFIG_TPS65010 is not set
+CONFIG_TWL4030_CORE=y
+# CONFIG_TWL4030_POWER is not set
+# CONFIG_TWL4030_CODEC is not set
 # CONFIG_MFD_TMIO is not set
 # CONFIG_MFD_T7L66XB is not set
 # CONFIG_MFD_TC6387XB is not set
 # CONFIG_MFD_TC6393XB is not set
-# CONFIG_REGULATOR 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_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_TWL4030=y
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
 # CONFIG_MEDIA_SUPPORT is not set
 
 #
@@ -536,12 +810,94 @@ CONFIG_DUMMY_CONSOLE=y
 # CONFIG_SOUND is not set
 # CONFIG_HID_SUPPORT is not set
 # CONFIG_USB_SUPPORT is not set
-# 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 is not set
+CONFIG_MMC_OMAP_HS=y
 # CONFIG_MEMSTICK is not set
 # CONFIG_NEW_LEDS is not set
 # CONFIG_ACCESSIBILITY is not set
 CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_BQ32K is not set
+CONFIG_RTC_DRV_TWL4030=y
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+# CONFIG_RTC_DRV_PCF2123 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_MSM6242 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_RP5C01 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
 # CONFIG_DMADEVICES is not set
 # CONFIG_AUXDISPLAY is not set
 # CONFIG_UIO is not set
@@ -564,9 +920,10 @@ CONFIG_EXT3_FS=y
 CONFIG_JBD=y
 # CONFIG_REISERFS_FS is not set
 # CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
+CONFIG_FS_POSIX_ACL=y
 # CONFIG_XFS_FS is not set
 # CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
 # CONFIG_BTRFS_FS is not set
 # CONFIG_NILFS2_FS is not set
 CONFIG_FILE_LOCKING=y
@@ -575,7 +932,9 @@ CONFIG_DNOTIFY=y
 CONFIG_INOTIFY=y
 CONFIG_INOTIFY_USER=y
 CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
 CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QUOTA_DEBUG is not set
 CONFIG_QUOTA_TREE=y
 # CONFIG_QFMT_V1 is not set
 CONFIG_QFMT_V2=y
@@ -624,6 +983,7 @@ CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_BEFS_FS is not set
 # CONFIG_BFS_FS is not set
 # CONFIG_EFS_FS is not set
+# CONFIG_LOGFS is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_SQUASHFS is not set
 # CONFIG_VXFS_FS is not set
@@ -634,6 +994,28 @@ CONFIG_MISC_FILESYSTEMS=y
 # CONFIG_ROMFS_FS is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CEPH_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
 
 #
 # Partition Types
@@ -696,6 +1078,7 @@ CONFIG_NLS_ISO8859_1=y
 # CONFIG_NLS_KOI8_R is not set
 # CONFIG_NLS_KOI8_U is not set
 # CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
 
 #
 # Kernel hacking
@@ -750,13 +1133,11 @@ CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 # CONFIG_FAULT_INJECTION is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
 # CONFIG_PAGE_POISONING is not set
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_TRACING_SUPPORT=y
 # CONFIG_FTRACE is not set
-# CONFIG_BRANCH_PROFILE_NONE is not set
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
@@ -765,6 +1146,7 @@ CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_DEBUG_ERRORS is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_LL is not set
+# CONFIG_OC_ETM is not set
 
 #
 # Security options
@@ -772,7 +1154,11 @@ CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
 # CONFIG_SECURITYFS is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
+# CONFIG_DEFAULT_SECURITY_SMACK is not set
+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
 CONFIG_CRYPTO=y
 
 #
@@ -791,6 +1177,7 @@ CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
 # CONFIG_CRYPTO_GF128MUL is not set
 # CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_PCRYPT is not set
 CONFIG_CRYPTO_WORKQUEUE=y
 # CONFIG_CRYPTO_CRYPTD is not set
 # CONFIG_CRYPTO_AUTHENC is not set
@@ -889,3 +1276,4 @@ CONFIG_DECOMPRESS_GZIP=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
+CONFIG_NLATTR=y
index 27f4897..b18d7c2 100644 (file)
@@ -152,6 +152,16 @@ config MACH_AMS_DELTA
          Support for the Amstrad E3 (codename Delta) videophone. Say Y here
          if you have such a device.
 
+config AMS_DELTA_FIQ
+       bool "Fast Interrupt Request (FIQ) support for the E3"
+       depends on MACH_AMS_DELTA
+       select FIQ
+       help
+         Provide a FIQ handler for the E3.
+         This allows for fast handling of interrupts generated
+         by the clock line of the E3 mailboard (or a PS/2 keyboard)
+         connected to the GPIO based external keyboard port.
+
 config MACH_OMAP_GENERIC
        bool "Generic OMAP board"
        depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX)
index b6a537c..ea231c7 100644 (file)
@@ -37,6 +37,7 @@ obj-$(CONFIG_MACH_OMAP_PALMZ71)               += board-palmz71.o
 obj-$(CONFIG_MACH_OMAP_PALMTT)         += board-palmtt.o
 obj-$(CONFIG_MACH_NOKIA770)            += board-nokia770.o
 obj-$(CONFIG_MACH_AMS_DELTA)           += board-ams-delta.o
+obj-$(CONFIG_AMS_DELTA_FIQ)            += ams-delta-fiq.o ams-delta-fiq-handler.o
 obj-$(CONFIG_MACH_SX1)                 += board-sx1.o board-sx1-mmc.o
 obj-$(CONFIG_MACH_HERALD)              += board-htcherald.o
 
diff --git a/arch/arm/mach-omap1/ams-delta-fiq-handler.S b/arch/arm/mach-omap1/ams-delta-fiq-handler.S
new file mode 100644 (file)
index 0000000..927d5a1
--- /dev/null
@@ -0,0 +1,278 @@
+/*
+ *  linux/arch/arm/mach-omap1/ams-delta-fiq-handler.S
+ *
+ *  Based on  linux/arch/arm/lib/floppydma.S
+ *  Renamed and modified to work with 2.6 kernel by Matt Callow
+ *  Copyright (C) 1995, 1996 Russell King
+ *  Copyright (C) 2004 Pete Trapps
+ *  Copyright (C) 2006 Matt Callow
+ *  Copyright (C) 2010 Janusz Krzysztofik
+ *
+ * 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>
+
+#include <plat/io.h>
+#include <plat/board-ams-delta.h>
+
+#include <mach/ams-delta-fiq.h>
+
+/*
+ * GPIO related definitions, copied from arch/arm/plat-omap/gpio.c.
+ * Unfortunately, those were not placed in a separate header file.
+ */
+#define OMAP1510_GPIO_BASE             0xFFFCE000
+#define OMAP1510_GPIO_DATA_INPUT       0x00
+#define OMAP1510_GPIO_DATA_OUTPUT      0x04
+#define OMAP1510_GPIO_DIR_CONTROL      0x08
+#define OMAP1510_GPIO_INT_CONTROL      0x0c
+#define OMAP1510_GPIO_INT_MASK         0x10
+#define OMAP1510_GPIO_INT_STATUS       0x14
+#define OMAP1510_GPIO_PIN_CONTROL      0x18
+
+/* GPIO register bitmasks */
+#define KEYBRD_DATA_MASK               (0x1 << AMS_DELTA_GPIO_PIN_KEYBRD_DATA)
+#define KEYBRD_CLK_MASK                        (0x1 << AMS_DELTA_GPIO_PIN_KEYBRD_CLK)
+#define MODEM_IRQ_MASK                 (0x1 << AMS_DELTA_GPIO_PIN_MODEM_IRQ)
+#define HOOK_SWITCH_MASK               (0x1 << AMS_DELTA_GPIO_PIN_HOOK_SWITCH)
+#define OTHERS_MASK                    (MODEM_IRQ_MASK | HOOK_SWITCH_MASK)
+
+/* IRQ handler register bitmasks */
+#define DEFERRED_FIQ_MASK              (0x1 << (INT_DEFERRED_FIQ % IH2_BASE))
+#define GPIO_BANK1_MASK                (0x1 << INT_GPIO_BANK1)
+
+/* Driver buffer byte offsets */
+#define BUF_MASK                       (FIQ_MASK * 4)
+#define BUF_STATE                      (FIQ_STATE * 4)
+#define BUF_KEYS_CNT                   (FIQ_KEYS_CNT * 4)
+#define BUF_TAIL_OFFSET                        (FIQ_TAIL_OFFSET * 4)
+#define BUF_HEAD_OFFSET                        (FIQ_HEAD_OFFSET * 4)
+#define BUF_BUF_LEN                    (FIQ_BUF_LEN * 4)
+#define BUF_KEY                                (FIQ_KEY * 4)
+#define BUF_MISSED_KEYS                        (FIQ_MISSED_KEYS * 4)
+#define BUF_BUFFER_START               (FIQ_BUFFER_START * 4)
+#define BUF_GPIO_INT_MASK              (FIQ_GPIO_INT_MASK * 4)
+#define BUF_KEYS_HICNT                 (FIQ_KEYS_HICNT * 4)
+#define BUF_IRQ_PEND                   (FIQ_IRQ_PEND * 4)
+#define BUF_SIR_CODE_L1                        (FIQ_SIR_CODE_L1 * 4)
+#define BUF_SIR_CODE_L2                        (IRQ_SIR_CODE_L2 * 4)
+#define BUF_CNT_INT_00                 (FIQ_CNT_INT_00 * 4)
+#define BUF_CNT_INT_KEY                        (FIQ_CNT_INT_KEY * 4)
+#define BUF_CNT_INT_MDM                        (FIQ_CNT_INT_MDM * 4)
+#define BUF_CNT_INT_03                 (FIQ_CNT_INT_03 * 4)
+#define BUF_CNT_INT_HSW                        (FIQ_CNT_INT_HSW * 4)
+#define BUF_CNT_INT_05                 (FIQ_CNT_INT_05 * 4)
+#define BUF_CNT_INT_06                 (FIQ_CNT_INT_06 * 4)
+#define BUF_CNT_INT_07                 (FIQ_CNT_INT_07 * 4)
+#define BUF_CNT_INT_08                 (FIQ_CNT_INT_08 * 4)
+#define BUF_CNT_INT_09                 (FIQ_CNT_INT_09 * 4)
+#define BUF_CNT_INT_10                 (FIQ_CNT_INT_10 * 4)
+#define BUF_CNT_INT_11                 (FIQ_CNT_INT_11 * 4)
+#define BUF_CNT_INT_12                 (FIQ_CNT_INT_12 * 4)
+#define BUF_CNT_INT_13                 (FIQ_CNT_INT_13 * 4)
+#define BUF_CNT_INT_14                 (FIQ_CNT_INT_14 * 4)
+#define BUF_CNT_INT_15                 (FIQ_CNT_INT_15 * 4)
+#define BUF_CIRC_BUFF                  (FIQ_CIRC_BUFF * 4)
+
+
+/*
+ * Register useage
+ * r8  - temporary
+ * r9  - the driver buffer
+ * r10 - temporary
+ * r11 - interrupts mask
+ * r12 - base pointers
+ * r13 - interrupts status
+ */
+
+       .text
+
+       .global qwerty_fiqin_end
+
+ENTRY(qwerty_fiqin_start)
+       @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+       @ FIQ intrrupt handler
+       ldr r12, omap_ih1_base                  @ set pointer to level1 handler
+
+       ldr r11, [r12, #IRQ_MIR_REG_OFFSET]     @ fetch interrupts mask
+
+       ldr r13, [r12, #IRQ_ITR_REG_OFFSET]     @ fetch interrupts status
+       bics r13, r13, r11                      @ clear masked - any left?
+       beq exit                                @ none - spurious FIQ? exit
+
+       ldr r10, [r12, #IRQ_SIR_FIQ_REG_OFFSET] @ get requested interrupt number
+
+       mov r8, #2                              @ reset FIQ agreement
+       str r8, [r12, #IRQ_CONTROL_REG_OFFSET]
+
+       cmp r10, #INT_GPIO_BANK1                @ is it GPIO bank interrupt?
+       beq gpio                                @ yes - process it
+
+       mov r8, #1
+       orr r8, r11, r8, lsl r10                @ mask spurious interrupt
+       str r8, [r12, #IRQ_MIR_REG_OFFSET]
+exit:
+       subs    pc, lr, #4                      @ return from FIQ
+       @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+
+       @@@@@@@@@@@@@@@@@@@@@@@@@@@
+gpio:  @ GPIO bank interrupt handler
+       ldr r12, omap1510_gpio_base             @ set base pointer to GPIO bank
+
+       ldr r11, [r12, #OMAP1510_GPIO_INT_MASK] @ fetch GPIO interrupts mask
+restart:
+       ldr r13, [r12, #OMAP1510_GPIO_INT_STATUS]       @ fetch status bits
+       bics r13, r13, r11                      @ clear masked - any left?
+       beq exit                                @ no - spurious interrupt? exit
+
+       orr r11, r11, r13                       @ mask all requested interrupts
+       str r11, [r12, #OMAP1510_GPIO_INT_MASK]
+
+       ands r10, r13, #KEYBRD_CLK_MASK         @ extract keyboard status - set?
+       beq hksw                                @ no - try next source
+
+
+       @@@@@@@@@@@@@@@@@@@@@@
+       @ Keyboard clock FIQ mode interrupt handler
+       @ r10 now contains KEYBRD_CLK_MASK, use it
+       str r10, [r12, #OMAP1510_GPIO_INT_STATUS]       @ ack the interrupt
+       bic r11, r11, r10                               @ unmask it
+       str r11, [r12, #OMAP1510_GPIO_INT_MASK]
+
+       @ Process keyboard data
+       ldr r8, [r12, #OMAP1510_GPIO_DATA_INPUT]        @ fetch GPIO input
+
+       ldr r10, [r9, #BUF_STATE]               @ fetch kbd interface state
+       cmp r10, #0                             @ are we expecting start bit?
+       bne data                                @ no - go to data processing
+
+       ands r8, r8, #KEYBRD_DATA_MASK          @ check start bit - detected?
+       beq hksw                                @ no - try next source
+
+       @ r8 contains KEYBRD_DATA_MASK, use it
+       str r8, [r9, #BUF_STATE]                @ enter data processing state
+       @ r10 already contains 0, reuse it
+       str r10, [r9, #BUF_KEY]                 @ clear keycode
+       mov r10, #2                             @ reset input bit mask
+       str r10, [r9, #BUF_MASK]
+
+       @ Mask other GPIO line interrupts till key done
+       str r11, [r9, #BUF_GPIO_INT_MASK]       @ save mask for later restore
+       mvn r11, #KEYBRD_CLK_MASK               @ prepare all except kbd mask
+       str r11, [r12, #OMAP1510_GPIO_INT_MASK] @ store into the mask register
+
+       b restart                               @ restart
+
+data:  ldr r10, [r9, #BUF_MASK]                @ fetch current input bit mask
+
+       @ r8 still contains GPIO input bits
+       ands r8, r8, #KEYBRD_DATA_MASK          @ is keyboard data line low?
+       ldreq r8, [r9, #BUF_KEY]                @ yes - fetch collected so far,
+       orreq r8, r8, r10                       @ set 1 at current mask position
+       streq r8, [r9, #BUF_KEY]                @ and save back
+
+       mov r10, r10, lsl #1                    @ shift mask left
+       bics r10, r10, #0x800                   @ have we got all the bits?
+       strne r10, [r9, #BUF_MASK]              @ not yet - store the mask
+       bne restart                             @ and restart
+
+       @ r10 already contains 0, reuse it
+       str r10, [r9, #BUF_STATE]               @ reset state to start
+
+       @ Key done - restore interrupt mask
+       ldr r10, [r9, #BUF_GPIO_INT_MASK]       @ fetch saved mask
+       and r11, r11, r10                       @ unmask all saved as unmasked
+       str r11, [r12, #OMAP1510_GPIO_INT_MASK] @ restore into the mask register
+
+       @ Try appending the keycode to the circular buffer
+       ldr r10, [r9, #BUF_KEYS_CNT]            @ get saved keystrokes count
+       ldr r8, [r9, #BUF_BUF_LEN]              @ get buffer size
+       cmp r10, r8                             @ is buffer full?
+       beq hksw                                @ yes - key lost, next source
+
+       add r10, r10, #1                        @ incremet keystrokes counter
+       str r10, [r9, #BUF_KEYS_CNT]
+
+       ldr r10, [r9, #BUF_TAIL_OFFSET]         @ get buffer tail offset
+       @ r8 already contains buffer size
+       cmp r10, r8                             @ end of buffer?
+       moveq r10, #0                           @ yes - rewind to buffer start
+
+       ldr r12, [r9, #BUF_BUFFER_START]        @ get buffer start address
+       add r12, r12, r10, LSL #2               @ calculate buffer tail address
+       ldr r8, [r9, #BUF_KEY]                  @ get last keycode
+       str r8, [r12]                           @ append it to the buffer tail
+
+       add r10, r10, #1                        @ increment buffer tail offset
+       str r10, [r9, #BUF_TAIL_OFFSET]
+
+       ldr r10, [r9, #BUF_CNT_INT_KEY]         @ increment interrupts counter
+       add r10, r10, #1
+       str r10, [r9, #BUF_CNT_INT_KEY]
+       @@@@@@@@@@@@@@@@@@@@@@@@
+
+
+hksw:  @Is hook switch interrupt requested?
+       tst r13, #HOOK_SWITCH_MASK              @ is hook switch status bit set?
+       beq mdm                                 @ no - try next source
+
+
+       @@@@@@@@@@@@@@@@@@@@@@@@
+       @ Hook switch interrupt FIQ mode simple handler
+
+       @ Don't toggle active edge, the switch always bounces
+
+       @ Increment hook switch interrupt counter
+       ldr r10, [r9, #BUF_CNT_INT_HSW]
+       add r10, r10, #1
+       str r10, [r9, #BUF_CNT_INT_HSW]
+       @@@@@@@@@@@@@@@@@@@@@@@@
+
+
+mdm:   @Is it a modem interrupt?
+       tst r13, #MODEM_IRQ_MASK                @ is modem status bit set?
+       beq irq                                 @ no - check for next interrupt
+
+
+       @@@@@@@@@@@@@@@@@@@@@@@@
+       @ Modem FIQ mode interrupt handler stub
+
+       @ Increment modem interrupt counter
+       ldr r10, [r9, #BUF_CNT_INT_MDM]
+       add r10, r10, #1
+       str r10, [r9, #BUF_CNT_INT_MDM]
+       @@@@@@@@@@@@@@@@@@@@@@@@
+
+
+irq:   @ Place deferred_fiq interrupt request
+       ldr r12, deferred_fiq_ih_base           @ set pointer to IRQ handler
+       mov r10, #DEFERRED_FIQ_MASK             @ set deferred_fiq bit
+       str r10, [r12, #IRQ_ISR_REG_OFFSET]     @ place it in the ISR register
+
+       ldr r12, omap1510_gpio_base             @ set pointer back to GPIO bank
+       b restart                               @ check for next GPIO interrupt
+       @@@@@@@@@@@@@@@@@@@@@@@@@@@
+
+
+/*
+ * Virtual addresses for IO
+ */
+omap_ih1_base:
+       .word OMAP1_IO_ADDRESS(OMAP_IH1_BASE)
+deferred_fiq_ih_base:
+       .word OMAP1_IO_ADDRESS(DEFERRED_FIQ_IH_BASE)
+omap1510_gpio_base:
+       .word OMAP1_IO_ADDRESS(OMAP1510_GPIO_BASE)
+qwerty_fiqin_end:
+
+/*
+ * Check the size of the FIQ,
+ * it cannot go beyond 0xffff0200, and is copied to 0xffff001c
+ */
+.if (qwerty_fiqin_end - qwerty_fiqin_start) > (0x200 - 0x1c)
+       .err
+.endif
diff --git a/arch/arm/mach-omap1/ams-delta-fiq.c b/arch/arm/mach-omap1/ams-delta-fiq.c
new file mode 100644 (file)
index 0000000..6c994e2
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ *  Amstrad E3 FIQ handling
+ *
+ *  Copyright (C) 2009 Janusz Krzysztofik
+ *  Copyright (c) 2006 Matt Callow
+ *  Copyright (c) 2004 Amstrad Plc
+ *  Copyright (C) 2001 RidgeRun, Inc.
+ *
+ * Parts of this code are taken from linux/arch/arm/mach-omap/irq.c
+ * in the MontaVista 2.4 kernel (and the Amstrad changes therein)
+ *
+ * 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/gpio.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/module.h>
+#include <linux/io.h>
+
+#include <plat/board-ams-delta.h>
+
+#include <asm/fiq.h>
+#include <mach/ams-delta-fiq.h>
+
+static struct fiq_handler fh = {
+       .name   = "ams-delta-fiq"
+};
+
+/*
+ * This buffer is shared between FIQ and IRQ contexts.
+ * The FIQ and IRQ isrs can both read and write it.
+ * It is structured as a header section several 32bit slots,
+ * followed by the circular buffer where the FIQ isr stores
+ * keystrokes received from the qwerty keyboard.
+ * See ams-delta-fiq.h for details of offsets.
+ */
+unsigned int fiq_buffer[1024];
+EXPORT_SYMBOL(fiq_buffer);
+
+static unsigned int irq_counter[16];
+
+static irqreturn_t deferred_fiq(int irq, void *dev_id)
+{
+       struct irq_desc *irq_desc;
+       struct irq_chip *irq_chip = NULL;
+       int gpio, irq_num, fiq_count;
+
+       irq_desc = irq_to_desc(IH_GPIO_BASE);
+       if (irq_desc)
+               irq_chip = irq_desc->chip;
+
+       /*
+        * For each handled GPIO interrupt, keep calling its interrupt handler
+        * until the IRQ counter catches the FIQ incremented interrupt counter.
+        */
+       for (gpio = AMS_DELTA_GPIO_PIN_KEYBRD_CLK;
+                       gpio <= AMS_DELTA_GPIO_PIN_HOOK_SWITCH; gpio++) {
+               irq_num = gpio_to_irq(gpio);
+               fiq_count = fiq_buffer[FIQ_CNT_INT_00 + gpio];
+
+               while (irq_counter[gpio] < fiq_count) {
+                       if (gpio != AMS_DELTA_GPIO_PIN_KEYBRD_CLK) {
+                               /*
+                                * It looks like handle_edge_irq() that
+                                * OMAP GPIO edge interrupts default to,
+                                * expects interrupt already unmasked.
+                                */
+                               if (irq_chip && irq_chip->unmask)
+                                       irq_chip->unmask(irq_num);
+                       }
+                       generic_handle_irq(irq_num);
+
+                       irq_counter[gpio]++;
+               }
+       }
+       return IRQ_HANDLED;
+}
+
+void __init ams_delta_init_fiq(void)
+{
+       void *fiqhandler_start;
+       unsigned int fiqhandler_length;
+       struct pt_regs FIQ_regs;
+       unsigned long val, offset;
+       int i, retval;
+
+       fiqhandler_start = &qwerty_fiqin_start;
+       fiqhandler_length = &qwerty_fiqin_end - &qwerty_fiqin_start;
+       pr_info("Installing fiq handler from %p, length 0x%x\n",
+                       fiqhandler_start, fiqhandler_length);
+
+       retval = claim_fiq(&fh);
+       if (retval) {
+               pr_err("ams_delta_init_fiq(): couldn't claim FIQ, ret=%d\n",
+                               retval);
+               return;
+       }
+
+       retval = request_irq(INT_DEFERRED_FIQ, deferred_fiq,
+                       IRQ_TYPE_EDGE_RISING, "deferred_fiq", 0);
+       if (retval < 0) {
+               pr_err("Failed to get deferred_fiq IRQ, ret=%d\n", retval);
+               release_fiq(&fh);
+               return;
+       }
+       /*
+        * Since no set_type() method is provided by OMAP irq chip,
+        * switch to edge triggered interrupt type manually.
+        */
+       offset = IRQ_ILR0_REG_OFFSET + INT_DEFERRED_FIQ * 0x4;
+       val = omap_readl(DEFERRED_FIQ_IH_BASE + offset) & ~(1 << 1);
+       omap_writel(val, DEFERRED_FIQ_IH_BASE + offset);
+
+       set_fiq_handler(fiqhandler_start, fiqhandler_length);
+
+       /*
+        * Initialise the buffer which is shared
+        * between FIQ mode and IRQ mode
+        */
+       fiq_buffer[FIQ_GPIO_INT_MASK]   = 0;
+       fiq_buffer[FIQ_MASK]            = 0;
+       fiq_buffer[FIQ_STATE]           = 0;
+       fiq_buffer[FIQ_KEY]             = 0;
+       fiq_buffer[FIQ_KEYS_CNT]        = 0;
+       fiq_buffer[FIQ_KEYS_HICNT]      = 0;
+       fiq_buffer[FIQ_TAIL_OFFSET]     = 0;
+       fiq_buffer[FIQ_HEAD_OFFSET]     = 0;
+       fiq_buffer[FIQ_BUF_LEN]         = 256;
+       fiq_buffer[FIQ_MISSED_KEYS]     = 0;
+       fiq_buffer[FIQ_BUFFER_START]    =
+                       (unsigned int) &fiq_buffer[FIQ_CIRC_BUFF];
+
+       for (i = FIQ_CNT_INT_00; i <= FIQ_CNT_INT_15; i++)
+               fiq_buffer[i] = 0;
+
+       /*
+        * FIQ mode r9 always points to the fiq_buffer, becauses the FIQ isr
+        * will run in an unpredictable context. The fiq_buffer is the FIQ isr's
+        * only means of communication with the IRQ level and other kernel
+        * context code.
+        */
+       FIQ_regs.ARM_r9 = (unsigned int)fiq_buffer;
+       set_fiq_regs(&FIQ_regs);
+
+       pr_info("request_fiq(): fiq_buffer = %p\n", fiq_buffer);
+
+       /*
+        * Redirect GPIO interrupts to FIQ
+        */
+       offset = IRQ_ILR0_REG_OFFSET + INT_GPIO_BANK1 * 0x4;
+       val = omap_readl(OMAP_IH1_BASE + offset) | 1;
+       omap_writel(val, OMAP_IH1_BASE + offset);
+}
index 7fc11c3..fdd1dd5 100644 (file)
@@ -33,6 +33,8 @@
 #include <plat/board.h>
 #include <plat/common.h>
 
+#include <mach/ams-delta-fiq.h>
+
 static u8 ams_delta_latch1_reg;
 static u16 ams_delta_latch2_reg;
 
@@ -236,6 +238,10 @@ static void __init ams_delta_init(void)
        omap_usb_init(&ams_delta_usb_config);
        platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices));
 
+#ifdef CONFIG_AMS_DELTA_FIQ
+       ams_delta_init_fiq();
+#endif
+
        omap_writew(omap_readw(ARM_RSTCT1) | 0x0004, ARM_RSTCT1);
 }
 
@@ -263,8 +269,18 @@ static struct platform_device ams_delta_modem_device = {
 
 static int __init ams_delta_modem_init(void)
 {
+       int err;
+
        omap_cfg_reg(M14_1510_GPIO2);
-       ams_delta_modem_ports[0].irq = gpio_to_irq(2);
+       ams_delta_modem_ports[0].irq =
+                       gpio_to_irq(AMS_DELTA_GPIO_PIN_MODEM_IRQ);
+
+       err = gpio_request(AMS_DELTA_GPIO_PIN_MODEM_IRQ, "modem");
+       if (err) {
+               pr_err("Couldn't request gpio pin for modem\n");
+               return err;
+       }
+       gpio_direction_input(AMS_DELTA_GPIO_PIN_MODEM_IRQ);
 
        ams_delta_latch2_write(
                AMS_DELTA_LATCH2_MODEM_NRESET | AMS_DELTA_LATCH2_MODEM_CODEC,
index e0aec10..6bbb1b8 100644 (file)
@@ -578,7 +578,7 @@ int omap1_clk_set_rate(struct clk *clk, unsigned long rate)
 
 #ifdef CONFIG_OMAP_RESET_CLOCKS
 
-void __init omap1_clk_disable_unused(struct clk *clk)
+void omap1_clk_disable_unused(struct clk *clk)
 {
        __u32 regval32;
 
index a4190af..75d0d7d 100644 (file)
@@ -39,7 +39,7 @@ extern long omap1_clk_round_rate_ckctl_arm(struct clk *clk, unsigned long rate);
 extern unsigned long omap1_watchdog_recalc(struct clk *clk);
 
 #ifdef CONFIG_OMAP_RESET_CLOCKS
-extern void __init omap1_clk_disable_unused(struct clk *clk);
+extern void omap1_clk_disable_unused(struct clk *clk);
 #else
 #define omap1_clk_disable_unused       NULL
 #endif
diff --git a/arch/arm/mach-omap1/include/mach/ams-delta-fiq.h b/arch/arm/mach-omap1/include/mach/ams-delta-fiq.h
new file mode 100644 (file)
index 0000000..7a2df29
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * arch/arm/mach-omap1/include/ams-delta-fiq.h
+ *
+ * Taken from the original Amstrad modifications to fiq.h
+ *
+ * Copyright (c) 2004 Amstrad Plc
+ * Copyright (c) 2006 Matt Callow
+ * Copyright (c) 2010 Janusz Krzysztofik
+ *
+ * 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.
+ */
+#ifndef __AMS_DELTA_FIQ_H
+#define __AMS_DELTA_FIQ_H
+
+#include <plat/irqs.h>
+
+/*
+ * Interrupt number used for passing control from FIQ to IRQ.
+ * IRQ12, described as reserved, has been selected.
+ */
+#define INT_DEFERRED_FIQ       INT_1510_RES12
+/*
+ * Base address of an interrupt handler that the INT_DEFERRED_FIQ belongs to.
+ */
+#if (INT_DEFERRED_FIQ < IH2_BASE)
+#define DEFERRED_FIQ_IH_BASE   OMAP_IH1_BASE
+#else
+#define DEFERRED_FIQ_IH_BASE   OMAP_IH2_BASE
+#endif
+
+/*
+ * These are the offsets from the begining of the fiq_buffer. They are put here
+ * since the buffer and header need to be accessed by drivers servicing devices
+ * which generate GPIO interrupts - e.g. keyboard, modem, hook switch.
+ */
+#define FIQ_MASK                0
+#define FIQ_STATE               1
+#define FIQ_KEYS_CNT            2
+#define FIQ_TAIL_OFFSET                 3
+#define FIQ_HEAD_OFFSET                 4
+#define FIQ_BUF_LEN             5
+#define FIQ_KEY                         6
+#define FIQ_MISSED_KEYS                 7
+#define FIQ_BUFFER_START        8
+#define FIQ_GPIO_INT_MASK       9
+#define FIQ_KEYS_HICNT         10
+#define FIQ_IRQ_PEND           11
+#define FIQ_SIR_CODE_L1                12
+#define IRQ_SIR_CODE_L2                13
+
+#define FIQ_CNT_INT_00         14
+#define FIQ_CNT_INT_KEY                15
+#define FIQ_CNT_INT_MDM                16
+#define FIQ_CNT_INT_03         17
+#define FIQ_CNT_INT_HSW                18
+#define FIQ_CNT_INT_05         19
+#define FIQ_CNT_INT_06         20
+#define FIQ_CNT_INT_07         21
+#define FIQ_CNT_INT_08         22
+#define FIQ_CNT_INT_09         23
+#define FIQ_CNT_INT_10         24
+#define FIQ_CNT_INT_11         25
+#define FIQ_CNT_INT_12         26
+#define FIQ_CNT_INT_13         27
+#define FIQ_CNT_INT_14         28
+#define FIQ_CNT_INT_15         29
+
+#define FIQ_CIRC_BUFF          30      /*Start of circular buffer */
+
+#ifndef __ASSEMBLER__
+extern unsigned int fiq_buffer[];
+extern unsigned char qwerty_fiqin_start, qwerty_fiqin_end;
+
+extern void __init ams_delta_init_fiq(void);
+#endif
+
+#endif
index b6d9584..e8a8cf3 100644 (file)
@@ -13,6 +13,8 @@
 
 #include <linux/serial_reg.h>
 
+#include <asm/memory.h>
+
 #include <plat/serial.h>
 
                .pushsection .data
@@ -37,23 +39,12 @@ omap_uart_virt:     .word   0x0
                cmp     \rx, #0                 @ is port configured?
                bne     99f                     @ already configured
 
-               /* Check 7XX UART1 scratchpad register for uart to use */
+               /* Check the debug UART configuration set in uncompress.h */
                mrc     p15, 0, \rx, c1, c0
                tst     \rx, #1                 @ MMU enabled?
-               moveq   \rx, #0xff000000        @ physical base address
-               movne   \rx, #0xfe000000        @ virtual base
-               orr     \rx, \rx, #0x00fb0000   @ OMAP1UART1
-               ldrb    \rx, [\rx, #(UART_SCR << OMAP7XX_PORT_SHIFT)]
-               cmp     \rx, #0                 @ anything in 7XX scratchpad?
-               bne     10f                     @ found 7XX uart
-
-               /* Check 15xx/16xx UART1 scratchpad register for uart to use */
-               mrc     p15, 0, \rx, c1, c0
-               tst     \rx, #1                 @ MMU enabled?
-               moveq   \rx, #0xff000000        @ physical base address
-               movne   \rx, #0xfe000000        @ virtual base
-               orr     \rx, \rx, #0x00fb0000   @ OMAP1UART1
-               ldrb    \rx, [\rx, #(UART_SCR << OMAP_PORT_SHIFT)]
+               ldreq   \rx, =OMAP_UART_INFO
+               ldrne   \rx, =__phys_to_virt(OMAP_UART_INFO)
+               ldr     \rx, [\rx, #0]
 
                /* Select the UART to use based on the UART1 scratchpad value */
 10:            cmp     \rx, #0                 @ no port configured?
index 2455dcc..b31b6f1 100644 (file)
@@ -10,6 +10,7 @@ config ARCH_OMAP2420
 config ARCH_OMAP2430
        bool "OMAP2430 support"
        depends on ARCH_OMAP2
+       select ARCH_OMAP_OTG
 
 config ARCH_OMAP3430
        bool "OMAP3430 support"
@@ -141,6 +142,12 @@ config MACH_IGEP0020
        depends on ARCH_OMAP3
        select OMAP_PACKAGE_CBB
 
+config MACH_SBC3530
+       bool "OMAP3 SBC STALKER board"
+       depends on ARCH_OMAP3
+       select OMAP_PACKAGE_CUS
+       select OMAP_MUX
+
 config MACH_OMAP_3630SDP
        bool "OMAP3630 SDP board"
        depends on ARCH_OMAP3
index 4b9fc57..d28e9e5 100644 (file)
@@ -22,7 +22,7 @@ obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
 # SMP support ONLY available for OMAP4
 obj-$(CONFIG_SMP)                      += omap-smp.o omap-headsmp.o
 obj-$(CONFIG_LOCAL_TIMERS)             += timer-mpu.o
-obj-$(CONFIG_ARCH_OMAP4)               += omap44xx-smc.o
+obj-$(CONFIG_ARCH_OMAP4)               += omap44xx-smc.o omap4-common.o
 
 AFLAGS_omap44xx-smc.o                  :=-Wa,-march=armv7-a
 
@@ -89,10 +89,7 @@ obj-$(CONFIG_OMAP3_EMU)                      += emu.o
 obj-$(CONFIG_OMAP_MBOX_FWK)            += mailbox_mach.o
 mailbox_mach-objs                      := mailbox.o
 
-iommu-y                                        += iommu2.o
-iommu-$(CONFIG_ARCH_OMAP3)             += omap3-iommu.o
-
-obj-$(CONFIG_OMAP_IOMMU)               += $(iommu-y)
+obj-$(CONFIG_OMAP_IOMMU)               := iommu2.o omap-iommu.o
 
 i2c-omap-$(CONFIG_I2C_OMAP)            := i2c.o
 obj-y                                  += $(i2c-omap-m) $(i2c-omap-y)
@@ -140,10 +137,13 @@ obj-$(CONFIG_MACH_IGEP0020)               += board-igep0020.o \
                                           hsmmc.o
 obj-$(CONFIG_MACH_OMAP3_TOUCHBOOK)     += board-omap3touchbook.o \
                                           hsmmc.o
-obj-$(CONFIG_MACH_OMAP_4430SDP)                += board-4430sdp.o
+obj-$(CONFIG_MACH_OMAP_4430SDP)                += board-4430sdp.o \
+                                          hsmmc.o
 
 obj-$(CONFIG_MACH_OMAP3517EVM)         += board-am3517evm.o
 
+obj-$(CONFIG_MACH_SBC3530)             += board-omap3stalker.o \
+                                          hsmmc.o
 # Platform specific device init code
 obj-y                                  += usb-musb.o
 obj-$(CONFIG_MACH_OMAP2_TUSB6010)      += usb-tusb6010.o
index 01d113f..a11a575 100644 (file)
@@ -174,9 +174,18 @@ static struct i2c_board_info __initdata sdp2430_i2c_boardinfo[] = {
        },
 };
 
+static struct i2c_board_info __initdata sdp2430_i2c1_boardinfo[] = {
+       {
+               I2C_BOARD_INFO("isp1301_omap", 0x2D),
+               .flags = I2C_CLIENT_WAKE,
+               .irq = OMAP_GPIO_IRQ(78),
+       },
+};
+
 static int __init omap2430_i2c_init(void)
 {
-       omap_register_i2c_bus(1, 400, NULL, 0);
+       omap_register_i2c_bus(1, 100, sdp2430_i2c1_boardinfo,
+                       ARRAY_SIZE(sdp2430_i2c1_boardinfo));
        omap_register_i2c_bus(2, 2600, sdp2430_i2c_boardinfo,
                        ARRAY_SIZE(sdp2430_i2c_boardinfo));
        return 0;
@@ -198,6 +207,15 @@ static struct omap_musb_board_data musb_board_data = {
        .mode                   = MUSB_OTG,
        .power                  = 100,
 };
+static struct omap_usb_config sdp2430_usb_config __initdata = {
+       .otg            = 1,
+#ifdef  CONFIG_USB_GADGET_OMAP
+       .hmc_mode       = 0x0,
+#elif   defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
+       .hmc_mode       = 0x1,
+#endif
+       .pins[0]        = 3,
+};
 
 static void __init omap_2430sdp_init(void)
 {
@@ -208,6 +226,7 @@ static void __init omap_2430sdp_init(void)
        platform_add_devices(sdp2430_devices, ARRAY_SIZE(sdp2430_devices));
        omap_serial_init();
        omap2_hsmmc_init(mmc);
+       omap_usb_init(&sdp2430_usb_config);
        usb_musb_init(&musb_board_data);
        board_smc91x_init();
 
index 5822bcf..e7d629b 100644 (file)
@@ -150,6 +150,7 @@ static int ads7846_get_pendown_state(void)
 static struct ads7846_platform_data tsc2046_config __initdata = {
        .get_pendown_state      = ads7846_get_pendown_state,
        .keep_vref_on           = 1,
+       .wakeup                         = true,
 };
 
 
index b88f28c..e4a5d66 100644 (file)
 #include <linux/io.h>
 #include <linux/gpio.h>
 #include <linux/usb/otg.h>
+#include <linux/spi/spi.h>
+#include <linux/i2c/twl.h>
+#include <linux/regulator/machine.h>
 
 #include <mach/hardware.h>
+#include <mach/omap4-common.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 #include <plat/control.h>
 #include <plat/timer-gp.h>
 #include <plat/usb.h>
-#include <asm/hardware/gic.h>
-#include <asm/hardware/cache-l2x0.h>
+#include <plat/mmc.h>
+#include "hsmmc.h"
+
+#define ETH_KS8851_IRQ                 34
+#define ETH_KS8851_POWER_ON            48
+#define ETH_KS8851_QUART               138
+
+static struct spi_board_info sdp4430_spi_board_info[] __initdata = {
+       {
+               .modalias               = "ks8851",
+               .bus_num                = 1,
+               .chip_select            = 0,
+               .max_speed_hz           = 24000000,
+               .irq                    = ETH_KS8851_IRQ,
+       },
+};
+
+static int omap_ethernet_init(void)
+{
+       int status;
+
+       /* Request of GPIO lines */
+
+       status = gpio_request(ETH_KS8851_POWER_ON, "eth_power");
+       if (status) {
+               pr_err("Cannot request GPIO %d\n", ETH_KS8851_POWER_ON);
+               return status;
+       }
+
+       status = gpio_request(ETH_KS8851_QUART, "quart");
+       if (status) {
+               pr_err("Cannot request GPIO %d\n", ETH_KS8851_QUART);
+               goto error1;
+       }
+
+       status = gpio_request(ETH_KS8851_IRQ, "eth_irq");
+       if (status) {
+               pr_err("Cannot request GPIO %d\n", ETH_KS8851_IRQ);
+               goto error2;
+       }
+
+       /* Configuration of requested GPIO lines */
+
+       status = gpio_direction_output(ETH_KS8851_POWER_ON, 1);
+       if (status) {
+               pr_err("Cannot set output GPIO %d\n", ETH_KS8851_IRQ);
+               goto error3;
+       }
+
+       status = gpio_direction_output(ETH_KS8851_QUART, 1);
+       if (status) {
+               pr_err("Cannot set output GPIO %d\n", ETH_KS8851_QUART);
+               goto error3;
+       }
+
+       status = gpio_direction_input(ETH_KS8851_IRQ);
+       if (status) {
+               pr_err("Cannot set input GPIO %d\n", ETH_KS8851_IRQ);
+               goto error3;
+       }
+
+       return 0;
+
+error3:
+       gpio_free(ETH_KS8851_IRQ);
+error2:
+       gpio_free(ETH_KS8851_QUART);
+error1:
+       gpio_free(ETH_KS8851_POWER_ON);
+       return status;
+}
 
 static struct platform_device sdp4430_lcd_device = {
        .name           = "sdp4430_lcd",
@@ -49,50 +122,6 @@ static struct omap_board_config_kernel sdp4430_config[] __initdata = {
        { OMAP_TAG_LCD,         &sdp4430_lcd_config },
 };
 
-#ifdef CONFIG_CACHE_L2X0
-static int __init omap_l2_cache_init(void)
-{
-       extern void omap_smc1(u32 fn, u32 arg);
-       void __iomem *l2cache_base;
-
-       /* To avoid code running on other OMAPs in
-        * multi-omap builds
-        */
-       if (!cpu_is_omap44xx())
-               return -ENODEV;
-
-       /* Static mapping, never released */
-       l2cache_base = ioremap(OMAP44XX_L2CACHE_BASE, SZ_4K);
-       BUG_ON(!l2cache_base);
-
-       /* Enable PL310 L2 Cache controller */
-       omap_smc1(0x102, 0x1);
-
-       /* 32KB way size, 16-way associativity,
-       * parity disabled
-       */
-       l2x0_init(l2cache_base, 0x0e050000, 0xc0000fff);
-
-       return 0;
-}
-early_initcall(omap_l2_cache_init);
-#endif
-
-static void __init gic_init_irq(void)
-{
-       void __iomem *base;
-
-       /* Static mapping, never released */
-       base = ioremap(OMAP44XX_GIC_DIST_BASE, SZ_4K);
-       BUG_ON(!base);
-       gic_dist_init(0, base, 29);
-
-       /* Static mapping, never released */
-       gic_cpu_base_addr = ioremap(OMAP44XX_GIC_CPU_BASE, SZ_512);
-       BUG_ON(!gic_cpu_base_addr);
-       gic_cpu_init(0, gic_cpu_base_addr);
-}
-
 static void __init omap_4430sdp_init_irq(void)
 {
        omap_board_config = sdp4430_config;
@@ -111,15 +140,254 @@ static struct omap_musb_board_data musb_board_data = {
        .power                  = 100,
 };
 
+static struct omap2_hsmmc_info mmc[] = {
+       {
+               .mmc            = 1,
+               .wires          = 8,
+               .gpio_wp        = -EINVAL,
+       },
+       {
+               .mmc            = 2,
+               .wires          = 8,
+               .gpio_cd        = -EINVAL,
+               .gpio_wp        = -EINVAL,
+               .nonremovable   = true,
+       },
+       {}      /* Terminator */
+};
+
+static struct regulator_consumer_supply sdp4430_vmmc_supply[] = {
+       {
+               .supply = "vmmc",
+               .dev_name = "mmci-omap-hs.0",
+       },
+       {
+               .supply = "vmmc",
+               .dev_name = "mmci-omap-hs.1",
+       },
+};
+
+static int omap4_twl6030_hsmmc_late_init(struct device *dev)
+{
+       int ret = 0;
+       struct platform_device *pdev = container_of(dev,
+                               struct platform_device, dev);
+       struct omap_mmc_platform_data *pdata = dev->platform_data;
+
+       /* Setting MMC1 Card detect Irq */
+       if (pdev->id == 0)
+               pdata->slots[0].card_detect_irq = TWL6030_IRQ_BASE +
+                                               MMCDETECT_INTR_OFFSET;
+       return ret;
+}
+
+static __init void omap4_twl6030_hsmmc_set_late_init(struct device *dev)
+{
+       struct omap_mmc_platform_data *pdata = dev->platform_data;
+
+       pdata->init =   omap4_twl6030_hsmmc_late_init;
+}
+
+static int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
+{
+       struct omap2_hsmmc_info *c;
+
+       omap2_hsmmc_init(controllers);
+       for (c = controllers; c->mmc; c++)
+               omap4_twl6030_hsmmc_set_late_init(c->dev);
+
+       return 0;
+}
+
+static struct regulator_init_data sdp4430_vaux1 = {
+       .constraints = {
+               .min_uV                 = 1000000,
+               .max_uV                 = 3000000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  = REGULATOR_CHANGE_VOLTAGE
+                                       | REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+};
+
+static struct regulator_init_data sdp4430_vaux2 = {
+       .constraints = {
+               .min_uV                 = 1200000,
+               .max_uV                 = 2800000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  = REGULATOR_CHANGE_VOLTAGE
+                                       | REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+};
+
+static struct regulator_init_data sdp4430_vaux3 = {
+       .constraints = {
+               .min_uV                 = 1000000,
+               .max_uV                 = 3000000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  = REGULATOR_CHANGE_VOLTAGE
+                                       | REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+};
+
+/* VMMC1 for MMC1 card */
+static struct regulator_init_data sdp4430_vmmc = {
+       .constraints = {
+               .min_uV                 = 1200000,
+               .max_uV                 = 3000000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  = REGULATOR_CHANGE_VOLTAGE
+                                       | REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = 2,
+       .consumer_supplies      = sdp4430_vmmc_supply,
+};
+
+static struct regulator_init_data sdp4430_vpp = {
+       .constraints = {
+               .min_uV                 = 1800000,
+               .max_uV                 = 2500000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  = REGULATOR_CHANGE_VOLTAGE
+                                       | REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+};
+
+static struct regulator_init_data sdp4430_vusim = {
+       .constraints = {
+               .min_uV                 = 1200000,
+               .max_uV                 = 2900000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  = REGULATOR_CHANGE_VOLTAGE
+                                       | REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+};
+
+static struct regulator_init_data sdp4430_vana = {
+       .constraints = {
+               .min_uV                 = 2100000,
+               .max_uV                 = 2100000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  = REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+};
+
+static struct regulator_init_data sdp4430_vcxio = {
+       .constraints = {
+               .min_uV                 = 1800000,
+               .max_uV                 = 1800000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  = REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+};
+
+static struct regulator_init_data sdp4430_vdac = {
+       .constraints = {
+               .min_uV                 = 1800000,
+               .max_uV                 = 1800000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  = REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+};
+
+static struct regulator_init_data sdp4430_vusb = {
+       .constraints = {
+               .min_uV                 = 3300000,
+               .max_uV                 = 3300000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask  =      REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+};
+
+static struct twl4030_platform_data sdp4430_twldata = {
+       .irq_base       = TWL6030_IRQ_BASE,
+       .irq_end        = TWL6030_IRQ_END,
+
+       /* Regulators */
+       .vmmc           = &sdp4430_vmmc,
+       .vpp            = &sdp4430_vpp,
+       .vusim          = &sdp4430_vusim,
+       .vana           = &sdp4430_vana,
+       .vcxio          = &sdp4430_vcxio,
+       .vdac           = &sdp4430_vdac,
+       .vusb           = &sdp4430_vusb,
+       .vaux1          = &sdp4430_vaux1,
+       .vaux2          = &sdp4430_vaux2,
+       .vaux3          = &sdp4430_vaux3,
+};
+
+static struct i2c_board_info __initdata sdp4430_i2c_boardinfo[] = {
+       {
+               I2C_BOARD_INFO("twl6030", 0x48),
+               .flags = I2C_CLIENT_WAKE,
+               .irq = OMAP44XX_IRQ_SYS_1N,
+               .platform_data = &sdp4430_twldata,
+       },
+};
+static int __init omap4_i2c_init(void)
+{
+       /*
+        * Phoenix Audio IC needs I2C1 to
+        * start with 400 KHz or less
+        */
+       omap_register_i2c_bus(1, 400, sdp4430_i2c_boardinfo,
+                       ARRAY_SIZE(sdp4430_i2c_boardinfo));
+       omap_register_i2c_bus(2, 400, NULL, 0);
+       omap_register_i2c_bus(3, 400, NULL, 0);
+       omap_register_i2c_bus(4, 400, NULL, 0);
+       return 0;
+}
 static void __init omap_4430sdp_init(void)
 {
+       int status;
+
+       omap4_i2c_init();
        platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices));
        omap_serial_init();
+       omap4_twl6030_hsmmc_init(mmc);
        /* OMAP4 SDP uses internal transceiver so register nop transceiver */
        usb_nop_xceiv_register();
        /* FIXME: allow multi-omap to boot until musb is updated for omap4 */
        if (!cpu_is_omap44xx())
                usb_musb_init(&musb_board_data);
+
+       status = omap_ethernet_init();
+       if (status) {
+               pr_err("Ethernet initialization failed: %d\n", status);
+       } else {
+               sdp4430_spi_board_info[0].irq = gpio_to_irq(ETH_KS8851_IRQ);
+               spi_register_board_info(sdp4430_spi_board_info,
+                               ARRAY_SIZE(sdp4430_spi_board_info));
+       }
 }
 
 static void __init omap_4430sdp_map_io(void)
index c1c4389..af383a8 100644 (file)
@@ -21,6 +21,8 @@
 #include <linux/platform_device.h>
 #include <linux/gpio.h>
 #include <linux/i2c/pca953x.h>
+#include <linux/can/platform/ti_hecc.h>
+#include <linux/davinci_emac.h>
 
 #include <mach/hardware.h>
 #include <mach/am35xx.h>
 
 #include <plat/board.h>
 #include <plat/common.h>
+#include <plat/control.h>
 #include <plat/usb.h>
 #include <plat/display.h>
 
 #include "mux.h"
 
+#define AM35XX_EVM_PHY_MASK            (0xF)
+#define AM35XX_EVM_MDIO_FREQUENCY      (1000000)
+
+static struct emac_platform_data am3517_evm_emac_pdata = {
+       .phy_mask       = AM35XX_EVM_PHY_MASK,
+       .mdio_max_freq  = AM35XX_EVM_MDIO_FREQUENCY,
+       .rmii_en        = 1,
+};
+
+static struct resource am3517_emac_resources[] = {
+       {
+               .start  = AM35XX_IPSS_EMAC_BASE,
+               .end    = AM35XX_IPSS_EMAC_BASE + 0x3FFFF,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = INT_35XX_EMAC_C0_RXTHRESH_IRQ,
+               .end    = INT_35XX_EMAC_C0_RXTHRESH_IRQ,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = INT_35XX_EMAC_C0_RX_PULSE_IRQ,
+               .end    = INT_35XX_EMAC_C0_RX_PULSE_IRQ,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = INT_35XX_EMAC_C0_TX_PULSE_IRQ,
+               .end    = INT_35XX_EMAC_C0_TX_PULSE_IRQ,
+               .flags  = IORESOURCE_IRQ,
+       },
+       {
+               .start  = INT_35XX_EMAC_C0_MISC_PULSE_IRQ,
+               .end    = INT_35XX_EMAC_C0_MISC_PULSE_IRQ,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device am3517_emac_device = {
+       .name           = "davinci_emac",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(am3517_emac_resources),
+       .resource       = am3517_emac_resources,
+};
+
+static void am3517_enable_ethernet_int(void)
+{
+       u32 regval;
+
+       regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+       regval = (regval | AM35XX_CPGMAC_C0_RX_PULSE_CLR |
+               AM35XX_CPGMAC_C0_TX_PULSE_CLR |
+               AM35XX_CPGMAC_C0_MISC_PULSE_CLR |
+               AM35XX_CPGMAC_C0_RX_THRESH_CLR);
+       omap_ctrl_writel(regval, AM35XX_CONTROL_LVL_INTR_CLEAR);
+       regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+}
+
+static void am3517_disable_ethernet_int(void)
+{
+       u32 regval;
+
+       regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+       regval = (regval | AM35XX_CPGMAC_C0_RX_PULSE_CLR |
+               AM35XX_CPGMAC_C0_TX_PULSE_CLR);
+       omap_ctrl_writel(regval, AM35XX_CONTROL_LVL_INTR_CLEAR);
+       regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+}
+
+void am3517_evm_ethernet_init(struct emac_platform_data *pdata)
+{
+       unsigned int regval;
+
+       pdata->ctrl_reg_offset          = AM35XX_EMAC_CNTRL_OFFSET;
+       pdata->ctrl_mod_reg_offset      = AM35XX_EMAC_CNTRL_MOD_OFFSET;
+       pdata->ctrl_ram_offset          = AM35XX_EMAC_CNTRL_RAM_OFFSET;
+       pdata->mdio_reg_offset          = AM35XX_EMAC_MDIO_OFFSET;
+       pdata->ctrl_ram_size            = AM35XX_EMAC_CNTRL_RAM_SIZE;
+       pdata->version                  = EMAC_VERSION_2;
+       pdata->hw_ram_addr              = AM35XX_EMAC_HW_RAM_ADDR;
+       pdata->interrupt_enable         = am3517_enable_ethernet_int;
+       pdata->interrupt_disable        = am3517_disable_ethernet_int;
+       am3517_emac_device.dev.platform_data    = pdata;
+       platform_device_register(&am3517_emac_device);
+
+       regval = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
+       regval = regval & (~(AM35XX_CPGMACSS_SW_RST));
+       omap_ctrl_writel(regval, AM35XX_CONTROL_IP_SW_RESET);
+       regval = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
+
+       return ;
+}
+
+
+
 #define LCD_PANEL_PWR          176
 #define LCD_PANEL_BKLIGHT_PWR  182
 #define LCD_PANEL_PWM          181
 
-static struct i2c_board_info __initdata am3517evm_i2c_boardinfo[] = {
+static struct i2c_board_info __initdata am3517evm_i2c1_boardinfo[] = {
        {
                I2C_BOARD_INFO("s35390a", 0x30),
                .type           = "s35390a",
@@ -69,7 +166,7 @@ static void __init am3517_evm_rtc_init(void)
                gpio_free(GPIO_RTCS35390A_IRQ);
                return;
        }
-       am3517evm_i2c_boardinfo[0].irq = gpio_to_irq(GPIO_RTCS35390A_IRQ);
+       am3517evm_i2c1_boardinfo[0].irq = gpio_to_irq(GPIO_RTCS35390A_IRQ);
 }
 
 /*
@@ -80,7 +177,7 @@ static void __init am3517_evm_rtc_init(void)
 static struct pca953x_platform_data am3517evm_gpio_expander_info_0 = {
        .gpio_base      = OMAP_MAX_GPIO_LINES,
 };
-static struct i2c_board_info __initdata am3517evm_tca6416_info_0[] = {
+static struct i2c_board_info __initdata am3517evm_i2c2_boardinfo[] = {
        {
                I2C_BOARD_INFO("tca6416", 0x21),
                .platform_data = &am3517evm_gpio_expander_info_0,
@@ -94,7 +191,7 @@ static struct pca953x_platform_data am3517evm_ui_gpio_expander_info_1 = {
 static struct pca953x_platform_data am3517evm_ui_gpio_expander_info_2 = {
        .gpio_base      = OMAP_MAX_GPIO_LINES + 32,
 };
-static struct i2c_board_info __initdata am3517evm_ui_tca6416_info[] = {
+static struct i2c_board_info __initdata am3517evm_i2c3_boardinfo[] = {
        {
                I2C_BOARD_INFO("tca6416", 0x20),
                .platform_data = &am3517evm_ui_gpio_expander_info_1,
@@ -108,10 +205,10 @@ static struct i2c_board_info __initdata am3517evm_ui_tca6416_info[] = {
 static int __init am3517_evm_i2c_init(void)
 {
        omap_register_i2c_bus(1, 400, NULL, 0);
-       omap_register_i2c_bus(2, 400, am3517evm_tca6416_info_0,
-                       ARRAY_SIZE(am3517evm_tca6416_info_0));
-       omap_register_i2c_bus(3, 400, am3517evm_ui_tca6416_info,
-                       ARRAY_SIZE(am3517evm_ui_tca6416_info));
+       omap_register_i2c_bus(2, 400, am3517evm_i2c2_boardinfo,
+                       ARRAY_SIZE(am3517evm_i2c2_boardinfo));
+       omap_register_i2c_bus(3, 400, am3517evm_i2c3_boardinfo,
+                       ARRAY_SIZE(am3517evm_i2c3_boardinfo));
 
        return 0;
 }
@@ -119,6 +216,8 @@ static int __init am3517_evm_i2c_init(void)
 static int lcd_enabled;
 static int dvi_enabled;
 
+#if defined(CONFIG_PANEL_SHARP_LQ043T1DG01) || \
+               defined(CONFIG_PANEL_SHARP_LQ043T1DG01_MODULE)
 static void __init am3517_evm_display_init(void)
 {
        int r;
@@ -162,6 +261,9 @@ err_2:
 err_1:
        gpio_free(LCD_PANEL_BKLIGHT_PWR);
 }
+#else
+static void __init am3517_evm_display_init(void) {}
+#endif
 
 static int am3517_evm_panel_enable_lcd(struct omap_dss_device *dssdev)
 {
@@ -275,7 +377,12 @@ static void __init am3517_evm_init_irq(void)
 
 static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
        .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
+#if defined(CONFIG_PANEL_SHARP_LQ043T1DG01) || \
+               defined(CONFIG_PANEL_SHARP_LQ043T1DG01_MODULE)
+       .port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN,
+#else
        .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
+#endif
        .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
 
        .phy_reset  = true,
@@ -292,6 +399,42 @@ static struct omap_board_mux board_mux[] __initdata = {
 #define board_mux      NULL
 #endif
 
+
+static struct resource am3517_hecc_resources[] = {
+       {
+               .start  = AM35XX_IPSS_HECC_BASE,
+               .end    = AM35XX_IPSS_HECC_BASE + 0x3FFF,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = INT_35XX_HECC0_IRQ,
+               .end    = INT_35XX_HECC0_IRQ,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device am3517_hecc_device = {
+       .name           = "ti_hecc",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(am3517_hecc_resources),
+       .resource       = am3517_hecc_resources,
+};
+
+static struct ti_hecc_platform_data am3517_evm_hecc_pdata = {
+       .scc_hecc_offset        = AM35XX_HECC_SCC_HECC_OFFSET,
+       .scc_ram_offset         = AM35XX_HECC_SCC_RAM_OFFSET,
+       .hecc_ram_offset        = AM35XX_HECC_RAM_OFFSET,
+       .mbx_offset             = AM35XX_HECC_MBOX_OFFSET,
+       .int_line               = AM35XX_HECC_INT_LINE,
+       .version                = AM35XX_HECC_VERSION,
+};
+
+static void am3517_evm_hecc_init(struct ti_hecc_platform_data *pdata)
+{
+       am3517_hecc_device.dev.platform_data = pdata;
+       platform_device_register(&am3517_hecc_device);
+}
+
 static void __init am3517_evm_init(void)
 {
        omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
@@ -305,14 +448,17 @@ static void __init am3517_evm_init(void)
        /* Configure GPIO for EHCI port */
        omap_mux_init_gpio(57, OMAP_PIN_OUTPUT);
        usb_ehci_init(&ehci_pdata);
+       am3517_evm_hecc_init(&am3517_evm_hecc_pdata);
        /* DSS */
        am3517_evm_display_init();
 
        /* RTC - S35390A */
        am3517_evm_rtc_init();
 
-       i2c_register_board_info(1, am3517evm_i2c_boardinfo,
-                               ARRAY_SIZE(am3517evm_i2c_boardinfo));
+       i2c_register_board_info(1, am3517evm_i2c1_boardinfo,
+                               ARRAY_SIZE(am3517evm_i2c1_boardinfo));
+       /*Ethernet*/
+       am3517_evm_ethernet_init(&am3517_evm_emac_pdata);
 }
 
 static void __init am3517_evm_map_io(void)
index 2de4f79..e679a2c 100644 (file)
@@ -45,6 +45,7 @@
 #include <plat/gpmc.h>
 #include <plat/usb.h>
 #include <plat/display.h>
+#include <plat/mcspi.h>
 
 #include <mach/hardware.h>
 
index 47e3af2..77022b5 100644 (file)
@@ -633,8 +633,163 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
        .reset_gpio_port[2]  = -EINVAL
 };
 
+static struct omap_board_mux board_mux[] __initdata = {
+       /* nCS and IRQ for Devkit8000 ethernet */
+       OMAP3_MUX(GPMC_NCS6, OMAP_MUX_MODE0),
+       OMAP3_MUX(ETK_D11, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP),
+
+       /* McSPI 2*/
+       OMAP3_MUX(MCSPI2_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCSPI2_SIMO, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(MCSPI2_SOMI, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCSPI2_CS0, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(MCSPI2_CS1, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+
+       /* PENDOWN GPIO */
+       OMAP3_MUX(ETK_D13, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
+
+       /* mUSB */
+       OMAP3_MUX(HSUSB0_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_STP, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(HSUSB0_DIR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_NXT, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_DATA0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_DATA1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_DATA2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_DATA3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_DATA4, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_DATA5, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_DATA6, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(HSUSB0_DATA7, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+
+       /* USB 1 */
+       OMAP3_MUX(ETK_CTL, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_CLK, OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(ETK_D8, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_D9, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_D0, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_D1, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_D2, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_D3, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_D4, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_D5, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_D6, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+       OMAP3_MUX(ETK_D7, OMAP_MUX_MODE3 | OMAP_PIN_INPUT),
+
+       /* MMC 1 */
+       OMAP3_MUX(SDMMC1_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(SDMMC1_CMD, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(SDMMC1_DAT0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(SDMMC1_DAT1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(SDMMC1_DAT2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(SDMMC1_DAT3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(SDMMC1_DAT4, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(SDMMC1_DAT5, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(SDMMC1_DAT6, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(SDMMC1_DAT7, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+
+       /* McBSP 2 */
+       OMAP3_MUX(MCBSP2_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCBSP2_CLKX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCBSP2_DR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCBSP2_DX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+
+       /* I2C 1 */
+       OMAP3_MUX(I2C1_SCL, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(I2C1_SDA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+
+       /* I2C 2 */
+       OMAP3_MUX(I2C2_SCL, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(I2C2_SDA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+
+       /* I2C 3 */
+       OMAP3_MUX(I2C3_SCL, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(I2C3_SDA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+
+       /* I2C 4 */
+       OMAP3_MUX(I2C4_SCL, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(I2C4_SDA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+
+       /* serial ports */
+       OMAP3_MUX(MCBSP3_CLKX, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(MCBSP3_FSX, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
+       OMAP3_MUX(UART1_TX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(UART1_RX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+
+       /* DSS */
+       OMAP3_MUX(DSS_PCLK, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_HSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_VSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_ACBIAS, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA0, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA1, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA2, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA3, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA4, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA5, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA6, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA7, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA8, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA9, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA10, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA11, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA12, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA13, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA14, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA15, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA16, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA17, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA18, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA19, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA20, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA21, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA22, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(DSS_DATA23, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
+
+       /* expansion port */
+       /* McSPI 1 */
+       OMAP3_MUX(MCSPI1_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCSPI1_SIMO, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCSPI1_SOMI, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCSPI1_CS0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
+       OMAP3_MUX(MCSPI1_CS3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
+
+       /* HDQ */
+       OMAP3_MUX(HDQ_SIO, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+
+       /* McSPI4 */
+       OMAP3_MUX(MCBSP1_CLKR, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCBSP1_DX, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCBSP1_DR, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
+       OMAP3_MUX(MCBSP1_FSX, OMAP_MUX_MODE1 | OMAP_PIN_INPUT_PULLUP),
+
+       /* MMC 2 */
+       OMAP3_MUX(SDMMC2_DAT4, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(SDMMC2_DAT5, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(SDMMC2_DAT6, OMAP_MUX_MODE1 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(SDMMC2_DAT7, OMAP_MUX_MODE1 | OMAP_PIN_INPUT),
+
+       /* I2C3 */
+       OMAP3_MUX(I2C3_SCL, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+       OMAP3_MUX(I2C3_SDA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
+
+       OMAP3_MUX(MCBSP1_CLKX, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(MCBSP_CLKS, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(MCBSP1_FSR, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
+
+       OMAP3_MUX(GPMC_NCS7, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
+       OMAP3_MUX(GPMC_NCS3, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
+
+       /* TPS IRQ */
+       OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_WAKEUP_EN | \
+                       OMAP_PIN_INPUT_PULLUP),
+
+       { .reg_offset = OMAP_MUX_TERMINATOR },
+};
+
 static void __init devkit8000_init(void)
 {
+       omap3_mux_init(board_mux, OMAP_PACKAGE_CUS);
        omap_serial_init();
 
        omap_dm9000_init();
index 7d7b5bc..81bba19 100644 (file)
@@ -600,6 +600,7 @@ struct ads7846_platform_data ads7846_config = {
        .get_pendown_state      = ads7846_get_pendown_state,
        .keep_vref_on           = 1,
        .settle_delay_usecs     = 150,
+       .wakeup                         = true,
 };
 
 static struct omap2_mcspi_device_config ads7846_mcspi_config = {
@@ -651,11 +652,10 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
 #ifdef CONFIG_OMAP_MUX
 static struct omap_board_mux board_mux[] __initdata = {
        OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP |
-                               OMAP_PIN_OFF_INPUT_PULLUP |
+                               OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_OUTPUT_LOW |
                                OMAP_PIN_OFF_WAKEUPENABLE),
        OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
-                               OMAP_PIN_OFF_INPUT_PULLUP |
-                               OMAP_PIN_OFF_WAKEUPENABLE),
+                               OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_OUTPUT_LOW),
        { .reg_offset = OMAP_MUX_TERMINATOR },
 };
 #else
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c
new file mode 100644 (file)
index 0000000..f848ba8
--- /dev/null
@@ -0,0 +1,672 @@
+/*
+ * linux/arch/arm/mach-omap2/board-omap3evm.c
+ *
+ * Copyright (C) 2008 Guangzhou EMA-Tech
+ *
+ * Modified from mach-omap2/board-omap3evm.c
+ *
+ * Initial code: Syed Mohammed Khasim
+ *
+ * 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/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/clk.h>
+#include <linux/io.h>
+#include <linux/leds.h>
+#include <linux/gpio.h>
+#include <linux/input.h>
+#include <linux/gpio_keys.h>
+
+#include <linux/regulator/machine.h>
+#include <linux/i2c/twl.h>
+
+#include <mach/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/flash.h>
+
+#include <plat/board.h>
+#include <plat/common.h>
+#include <plat/gpmc.h>
+#include <plat/nand.h>
+#include <plat/usb.h>
+#include <plat/timer-gp.h>
+#include <plat/display.h>
+
+#include <plat/mcspi.h>
+#include <linux/input/matrix_keypad.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/ads7846.h>
+#include <linux/interrupt.h>
+#include <linux/smsc911x.h>
+#include <linux/i2c/at24.h>
+
+#include "sdram-micron-mt46h32m32lf-6.h"
+#include "mux.h"
+#include "hsmmc.h"
+
+#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
+#define OMAP3STALKER_ETHR_START        0x2c000000
+#define OMAP3STALKER_ETHR_SIZE 1024
+#define OMAP3STALKER_ETHR_GPIO_IRQ     19
+#define OMAP3STALKER_SMC911X_CS        5
+
+static struct resource omap3stalker_smsc911x_resources[] = {
+       [0] = {
+              .start   = OMAP3STALKER_ETHR_START,
+              .end     =
+              (OMAP3STALKER_ETHR_START + OMAP3STALKER_ETHR_SIZE - 1),
+              .flags   = IORESOURCE_MEM,
+       },
+       [1] = {
+              .start   = OMAP_GPIO_IRQ(OMAP3STALKER_ETHR_GPIO_IRQ),
+              .end     = OMAP_GPIO_IRQ(OMAP3STALKER_ETHR_GPIO_IRQ),
+              .flags   = (IORESOURCE_IRQ | IRQF_TRIGGER_LOW),
+       },
+};
+
+static struct smsc911x_platform_config smsc911x_config = {
+       .phy_interface  = PHY_INTERFACE_MODE_MII,
+       .irq_polarity   = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
+       .irq_type       = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
+       .flags          = (SMSC911X_USE_32BIT | SMSC911X_SAVE_MAC_ADDRESS),
+};
+
+static struct platform_device omap3stalker_smsc911x_device = {
+       .name           = "smsc911x",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(omap3stalker_smsc911x_resources),
+       .resource       = &omap3stalker_smsc911x_resources[0],
+       .dev            = {
+               .platform_data  = &smsc911x_config,
+       },
+};
+
+static inline void __init omap3stalker_init_eth(void)
+{
+       int eth_cs;
+       struct clk *l3ck;
+       unsigned int rate;
+
+       eth_cs = OMAP3STALKER_SMC911X_CS;
+
+       l3ck = clk_get(NULL, "l3_ck");
+       if (IS_ERR(l3ck))
+               rate = 100000000;
+       else
+               rate = clk_get_rate(l3ck);
+
+       omap_mux_init_gpio(19, OMAP_PIN_INPUT_PULLUP);
+       if (gpio_request(OMAP3STALKER_ETHR_GPIO_IRQ, "SMC911x irq") < 0) {
+               printk(KERN_ERR
+                      "Failed to request GPIO%d for smc911x IRQ\n",
+                      OMAP3STALKER_ETHR_GPIO_IRQ);
+               return;
+       }
+
+       gpio_direction_input(OMAP3STALKER_ETHR_GPIO_IRQ);
+
+       platform_device_register(&omap3stalker_smsc911x_device);
+}
+
+#else
+static inline void __init omap3stalker_init_eth(void)
+{
+       return;
+}
+#endif
+
+/*
+ * OMAP3 DSS control signals
+ */
+
+#define DSS_ENABLE_GPIO        199
+#define LCD_PANEL_BKLIGHT_GPIO 210
+#define ENABLE_VPLL2_DEV_GRP   0xE0
+
+static int lcd_enabled;
+static int dvi_enabled;
+
+static void __init omap3_stalker_display_init(void)
+{
+       return;
+}
+
+static int omap3_stalker_enable_lcd(struct omap_dss_device *dssdev)
+{
+       if (dvi_enabled) {
+               printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
+               return -EINVAL;
+       }
+       gpio_set_value(DSS_ENABLE_GPIO, 1);
+       gpio_set_value(LCD_PANEL_BKLIGHT_GPIO, 1);
+       lcd_enabled = 1;
+       return 0;
+}
+
+static void omap3_stalker_disable_lcd(struct omap_dss_device *dssdev)
+{
+       gpio_set_value(DSS_ENABLE_GPIO, 0);
+       gpio_set_value(LCD_PANEL_BKLIGHT_GPIO, 0);
+       lcd_enabled = 0;
+}
+
+static struct omap_dss_device omap3_stalker_lcd_device = {
+       .name                   = "lcd",
+       .driver_name            = "generic_panel",
+       .phy.dpi.data_lines     = 24,
+       .type                   = OMAP_DISPLAY_TYPE_DPI,
+       .platform_enable        = omap3_stalker_enable_lcd,
+       .platform_disable       = omap3_stalker_disable_lcd,
+};
+
+static int omap3_stalker_enable_tv(struct omap_dss_device *dssdev)
+{
+       return 0;
+}
+
+static void omap3_stalker_disable_tv(struct omap_dss_device *dssdev)
+{
+}
+
+static struct omap_dss_device omap3_stalker_tv_device = {
+       .name                   = "tv",
+       .driver_name            = "venc",
+       .type                   = OMAP_DISPLAY_TYPE_VENC,
+#if defined(CONFIG_OMAP2_VENC_OUT_TYPE_SVIDEO)
+       .phy.venc.type          = OMAP_DSS_VENC_TYPE_SVIDEO,
+#elif defined(CONFIG_OMAP2_VENC_OUT_TYPE_COMPOSITE)
+       .u.venc.type            = OMAP_DSS_VENC_TYPE_COMPOSITE,
+#endif
+       .platform_enable        = omap3_stalker_enable_tv,
+       .platform_disable       = omap3_stalker_disable_tv,
+};
+
+static int omap3_stalker_enable_dvi(struct omap_dss_device *dssdev)
+{
+       if (lcd_enabled) {
+               printk(KERN_ERR "cannot enable DVI, LCD is enabled\n");
+               return -EINVAL;
+       }
+       gpio_set_value(DSS_ENABLE_GPIO, 1);
+       dvi_enabled = 1;
+       return 0;
+}
+
+static void omap3_stalker_disable_dvi(struct omap_dss_device *dssdev)
+{
+       gpio_set_value(DSS_ENABLE_GPIO, 0);
+       dvi_enabled = 0;
+}
+
+static struct omap_dss_device omap3_stalker_dvi_device = {
+       .name                   = "dvi",
+       .driver_name            = "generic_panel",
+       .type                   = OMAP_DISPLAY_TYPE_DPI,
+       .phy.dpi.data_lines     = 24,
+       .platform_enable        = omap3_stalker_enable_dvi,
+       .platform_disable       = omap3_stalker_disable_dvi,
+};
+
+static struct omap_dss_device *omap3_stalker_dss_devices[] = {
+       &omap3_stalker_lcd_device,
+       &omap3_stalker_tv_device,
+       &omap3_stalker_dvi_device,
+};
+
+static struct omap_dss_board_info omap3_stalker_dss_data = {
+       .num_devices    = ARRAY_SIZE(omap3_stalker_dss_devices),
+       .devices        = omap3_stalker_dss_devices,
+       .default_device = &omap3_stalker_dvi_device,
+};
+
+static struct platform_device omap3_stalker_dss_device = {
+       .name   = "omapdss",
+       .id     = -1,
+       .dev    = {
+               .platform_data  = &omap3_stalker_dss_data,
+       },
+};
+
+static struct regulator_consumer_supply omap3stalker_vmmc1_supply = {
+       .supply         = "vmmc",
+};
+
+static struct regulator_consumer_supply omap3stalker_vsim_supply = {
+       .supply         = "vmmc_aux",
+};
+
+/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
+static struct regulator_init_data omap3stalker_vmmc1 = {
+       .constraints            = {
+               .min_uV                 = 1850000,
+               .max_uV                 = 3150000,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+               | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
+               | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = 1,
+       .consumer_supplies      = &omap3stalker_vmmc1_supply,
+};
+
+/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
+static struct regulator_init_data omap3stalker_vsim = {
+       .constraints            = {
+               .min_uV                 = 1800000,
+               .max_uV                 = 3000000,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+               | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
+               | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = 1,
+       .consumer_supplies      = &omap3stalker_vsim_supply,
+};
+
+static struct omap2_hsmmc_info mmc[] = {
+       {
+        .mmc           = 1,
+        .wires         = 4,
+        .gpio_cd       = -EINVAL,
+        .gpio_wp       = 23,
+        },
+       {}                      /* Terminator */
+};
+
+static struct gpio_keys_button gpio_buttons[] = {
+       {
+        .code          = BTN_EXTRA,
+        .gpio          = 18,
+        .desc          = "user",
+        .wakeup        = 1,
+        },
+};
+
+static struct gpio_keys_platform_data gpio_key_info = {
+       .buttons        = gpio_buttons,
+       .nbuttons       = ARRAY_SIZE(gpio_buttons),
+};
+
+static struct platform_device keys_gpio = {
+       .name           = "gpio-keys",
+       .id             = -1,
+       .dev            = {
+               .platform_data  = &gpio_key_info,
+       },
+};
+
+static struct gpio_led gpio_leds[] = {
+       {
+        .name                  = "stalker:D8:usr0",
+        .default_trigger       = "default-on",
+        .gpio                  = 126,
+        },
+       {
+        .name                  = "stalker:D9:usr1",
+        .default_trigger       = "default-on",
+        .gpio                  = 127,
+        },
+       {
+        .name                  = "stalker:D3:mmc0",
+        .gpio                  = -EINVAL,      /* gets replaced */
+        .active_low            = true,
+        .default_trigger       = "mmc0",
+        },
+       {
+        .name                  = "stalker:D4:heartbeat",
+        .gpio                  = -EINVAL,      /* gets replaced */
+        .active_low            = true,
+        .default_trigger       = "heartbeat",
+        },
+};
+
+static struct gpio_led_platform_data gpio_led_info = {
+       .leds           = gpio_leds,
+       .num_leds       = ARRAY_SIZE(gpio_leds),
+};
+
+static struct platform_device leds_gpio = {
+       .name   = "leds-gpio",
+       .id     = -1,
+       .dev    = {
+               .platform_data  = &gpio_led_info,
+       },
+};
+
+static int
+omap3stalker_twl_gpio_setup(struct device *dev,
+                           unsigned gpio, unsigned ngpio)
+{
+       /* gpio + 0 is "mmc0_cd" (input/IRQ) */
+       omap_mux_init_gpio(23, OMAP_PIN_INPUT);
+       mmc[0].gpio_cd = gpio + 0;
+       omap2_hsmmc_init(mmc);
+
+       /* link regulators to MMC adapters */
+       omap3stalker_vmmc1_supply.dev = mmc[0].dev;
+       omap3stalker_vsim_supply.dev = mmc[0].dev;
+
+       /*
+        * Most GPIOs are for USB OTG.  Some are mostly sent to
+        * the P2 connector; notably LEDA for the LCD backlight.
+        */
+
+       /* TWL4030_GPIO_MAX + 0 == ledA, LCD Backlight control */
+       gpio_request(gpio + TWL4030_GPIO_MAX, "EN_LCD_BKL");
+       gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
+
+       /* gpio + 7 == DVI Enable */
+       gpio_request(gpio + 7, "EN_DVI");
+       gpio_direction_output(gpio + 7, 0);
+
+       /* TWL4030_GPIO_MAX + 1 == ledB (out, mmc0) */
+       gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
+       /* GPIO + 13 == ledsync (out, heartbeat) */
+       gpio_leds[3].gpio = gpio + 13;
+
+       platform_device_register(&leds_gpio);
+       return 0;
+}
+
+static struct twl4030_gpio_platform_data omap3stalker_gpio_data = {
+       .gpio_base      = OMAP_MAX_GPIO_LINES,
+       .irq_base       = TWL4030_GPIO_IRQ_BASE,
+       .irq_end        = TWL4030_GPIO_IRQ_END,
+       .use_leds       = true,
+       .setup          = omap3stalker_twl_gpio_setup,
+};
+
+static struct twl4030_usb_data omap3stalker_usb_data = {
+       .usb_mode       = T2_USB_MODE_ULPI,
+};
+
+static int board_keymap[] = {
+       KEY(0, 0, KEY_LEFT),
+       KEY(0, 1, KEY_DOWN),
+       KEY(0, 2, KEY_ENTER),
+       KEY(0, 3, KEY_M),
+
+       KEY(1, 0, KEY_RIGHT),
+       KEY(1, 1, KEY_UP),
+       KEY(1, 2, KEY_I),
+       KEY(1, 3, KEY_N),
+
+       KEY(2, 0, KEY_A),
+       KEY(2, 1, KEY_E),
+       KEY(2, 2, KEY_J),
+       KEY(2, 3, KEY_O),
+
+       KEY(3, 0, KEY_B),
+       KEY(3, 1, KEY_F),
+       KEY(3, 2, KEY_K),
+       KEY(3, 3, KEY_P)
+};
+
+static struct matrix_keymap_data board_map_data = {
+       .keymap         = board_keymap,
+       .keymap_size    = ARRAY_SIZE(board_keymap),
+};
+
+static struct twl4030_keypad_data omap3stalker_kp_data = {
+       .keymap_data    = &board_map_data,
+       .rows           = 4,
+       .cols           = 4,
+       .rep            = 1,
+};
+
+static struct twl4030_madc_platform_data omap3stalker_madc_data = {
+       .irq_line       = 1,
+};
+
+static struct twl4030_codec_audio_data omap3stalker_audio_data = {
+       .audio_mclk     = 26000000,
+};
+
+static struct twl4030_codec_data omap3stalker_codec_data = {
+       .audio_mclk     = 26000000,
+       .audio          = &omap3stalker_audio_data,
+};
+
+static struct regulator_consumer_supply omap3_stalker_vdda_dac_supply = {
+       .supply         = "vdda_dac",
+       .dev            = &omap3_stalker_dss_device.dev,
+};
+
+/* VDAC for DSS driving S-Video */
+static struct regulator_init_data omap3_stalker_vdac = {
+       .constraints            = {
+               .min_uV                 = 1800000,
+               .max_uV                 = 1800000,
+               .apply_uV               = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+               | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask         = REGULATOR_CHANGE_MODE
+               | REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = 1,
+       .consumer_supplies      = &omap3_stalker_vdda_dac_supply,
+};
+
+/* VPLL2 for digital video outputs */
+static struct regulator_consumer_supply omap3_stalker_vpll2_supply = {
+       .supply         = "vdds_dsi",
+       .dev            = &omap3_stalker_lcd_device.dev,
+};
+
+static struct regulator_init_data omap3_stalker_vpll2 = {
+       .constraints            = {
+               .name                   = "VDVI",
+               .min_uV                 = 1800000,
+               .max_uV                 = 1800000,
+               .apply_uV = true,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+               | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask         = REGULATOR_CHANGE_MODE
+               | REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = 1,
+       .consumer_supplies      = &omap3_stalker_vpll2_supply,
+};
+
+static struct twl4030_platform_data omap3stalker_twldata = {
+       .irq_base       = TWL4030_IRQ_BASE,
+       .irq_end        = TWL4030_IRQ_END,
+
+       /* platform_data for children goes here */
+       .keypad         = &omap3stalker_kp_data,
+       .madc           = &omap3stalker_madc_data,
+       .usb            = &omap3stalker_usb_data,
+       .gpio           = &omap3stalker_gpio_data,
+       .codec          = &omap3stalker_codec_data,
+       .vdac           = &omap3_stalker_vdac,
+       .vpll2          = &omap3_stalker_vpll2,
+};
+
+static struct i2c_board_info __initdata omap3stalker_i2c_boardinfo[] = {
+       {
+        I2C_BOARD_INFO("twl4030", 0x48),
+        .flags         = I2C_CLIENT_WAKE,
+        .irq           = INT_34XX_SYS_NIRQ,
+        .platform_data = &omap3stalker_twldata,
+        },
+};
+
+static struct at24_platform_data fram_info = {
+       .byte_len       = (64 * 1024) / 8,
+       .page_size      = 8192,
+       .flags          = AT24_FLAG_ADDR16 | AT24_FLAG_IRUGO,
+};
+
+static struct i2c_board_info __initdata omap3stalker_i2c_boardinfo3[] = {
+       {
+        I2C_BOARD_INFO("24c64", 0x50),
+        .flags         = I2C_CLIENT_WAKE,
+        .platform_data = &fram_info,
+        },
+};
+
+static int __init omap3_stalker_i2c_init(void)
+{
+       /*
+        * REVISIT: These entries can be set in omap3evm_twl_data
+        * after a merge with MFD tree
+        */
+       omap3stalker_twldata.vmmc1 = &omap3stalker_vmmc1;
+       omap3stalker_twldata.vsim = &omap3stalker_vsim;
+
+       omap_register_i2c_bus(1, 2600, omap3stalker_i2c_boardinfo,
+                             ARRAY_SIZE(omap3stalker_i2c_boardinfo));
+       omap_register_i2c_bus(2, 400, NULL, 0);
+       omap_register_i2c_bus(3, 400, omap3stalker_i2c_boardinfo3,
+                             ARRAY_SIZE(omap3stalker_i2c_boardinfo3));
+       return 0;
+}
+
+#define OMAP3_STALKER_TS_GPIO  175
+static void ads7846_dev_init(void)
+{
+       if (gpio_request(OMAP3_STALKER_TS_GPIO, "ADS7846 pendown") < 0)
+               printk(KERN_ERR "can't get ads7846 pen down GPIO\n");
+
+       gpio_direction_input(OMAP3_STALKER_TS_GPIO);
+
+       omap_set_gpio_debounce(OMAP3_STALKER_TS_GPIO, 1);
+       omap_set_gpio_debounce_time(OMAP3_STALKER_TS_GPIO, 0xa);
+}
+
+static int ads7846_get_pendown_state(void)
+{
+       return !gpio_get_value(OMAP3_STALKER_TS_GPIO);
+}
+
+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,
+       .settle_delay_usecs     = 150,
+};
+
+static struct omap2_mcspi_device_config ads7846_mcspi_config = {
+       .turbo_mode             = 0,
+       .single_channel         = 1,    /* 0: slave, 1: master */
+};
+
+struct spi_board_info omap3stalker_spi_board_info[] = {
+       [0] = {
+              .modalias        = "ads7846",
+              .bus_num         = 1,
+              .chip_select     = 0,
+              .max_speed_hz    = 1500000,
+              .controller_data = &ads7846_mcspi_config,
+              .irq             = OMAP_GPIO_IRQ(OMAP3_STALKER_TS_GPIO),
+              .platform_data   = &ads7846_config,
+       },
+};
+
+static struct omap_board_config_kernel omap3_stalker_config[] __initdata = {
+};
+
+static void __init omap3_stalker_init_irq(void)
+{
+       omap_board_config = omap3_stalker_config;
+       omap_board_config_size = ARRAY_SIZE(omap3_stalker_config);
+       omap2_init_common_hw(mt46h32m32lf6_sdrc_params, NULL);
+       omap_init_irq();
+#ifdef CONFIG_OMAP_32K_TIMER
+       omap2_gp_clockevent_set_gptimer(12);
+#endif
+       omap_gpio_init();
+}
+
+static struct platform_device *omap3_stalker_devices[] __initdata = {
+       &omap3_stalker_dss_device,
+       &keys_gpio,
+};
+
+static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
+       .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
+       .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
+       .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
+
+       .phy_reset = true,
+       .reset_gpio_port[0] = -EINVAL,
+       .reset_gpio_port[1] = 21,
+       .reset_gpio_port[2] = -EINVAL,
+};
+
+#ifdef CONFIG_OMAP_MUX
+static struct omap_board_mux board_mux[] __initdata = {
+       OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP |
+                 OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),
+       OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
+                 OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),
+       {.reg_offset = OMAP_MUX_TERMINATOR},
+};
+#else
+#define board_mux      NULL
+#endif
+
+static struct omap_musb_board_data musb_board_data = {
+       .interface_type = MUSB_INTERFACE_ULPI,
+       .mode           = MUSB_OTG,
+       .power          = 100,
+};
+
+static void __init omap3_stalker_init(void)
+{
+       omap3_mux_init(board_mux, OMAP_PACKAGE_CUS);
+
+       omap3_stalker_i2c_init();
+
+       platform_add_devices(omap3_stalker_devices,
+                            ARRAY_SIZE(omap3_stalker_devices));
+
+       spi_register_board_info(omap3stalker_spi_board_info,
+                               ARRAY_SIZE(omap3stalker_spi_board_info));
+
+       omap_serial_init();
+       usb_musb_init(&musb_board_data);
+       usb_ehci_init(&ehci_pdata);
+       ads7846_dev_init();
+
+       omap_mux_init_gpio(21, OMAP_PIN_OUTPUT);
+       omap_mux_init_gpio(18, OMAP_PIN_INPUT_PULLUP);
+
+       omap3stalker_init_eth();
+       omap3_stalker_display_init();
+/* Ensure SDRC pins are mux'd for self-refresh */
+       omap_mux_init_signal("sdr_cke0", OMAP_PIN_OUTPUT);
+       omap_mux_init_signal("sdr_cke1", OMAP_PIN_OUTPUT);
+}
+
+static void __init omap3_stalker_map_io(void)
+{
+       omap2_set_globals_343x();
+       omap34xx_map_common_io();
+}
+
+MACHINE_START(SBC3530, "OMAP3 STALKER")
+       /* Maintainer: Jason Lam -lzg@ema-tech.com */
+       .phys_io                = 0x48000000,
+       .io_pg_offst            = ((0xfa000000) >> 18) & 0xfffc,
+       .boot_params            = 0x80000100,
+       .map_io                 = omap3_stalker_map_io,
+       .init_irq               = omap3_stalker_init_irq,
+       .init_machine           = omap3_stalker_init,
+       .timer                  = &omap_timer,
+MACHINE_END
index 8848c7c..79ac414 100644 (file)
@@ -63,6 +63,8 @@
 
 #define OVERO_SMSC911X_CS      5
 #define OVERO_SMSC911X_GPIO    176
+#define OVERO_SMSC911X2_CS     4
+#define OVERO_SMSC911X2_GPIO   65
 
 #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
        defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
@@ -137,6 +139,16 @@ static struct resource overo_smsc911x_resources[] = {
        },
 };
 
+static struct resource overo_smsc911x2_resources[] = {
+       {
+               .name   = "smsc911x2-memory",
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
+       },
+};
+
 static struct smsc911x_platform_config overo_smsc911x_config = {
        .irq_polarity   = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
        .irq_type       = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
@@ -146,7 +158,7 @@ static struct smsc911x_platform_config overo_smsc911x_config = {
 
 static struct platform_device overo_smsc911x_device = {
        .name           = "smsc911x",
-       .id             = -1,
+       .id             = 0,
        .num_resources  = ARRAY_SIZE(overo_smsc911x_resources),
        .resource       = overo_smsc911x_resources,
        .dev            = {
index 4377a4c..966f5f8 100644 (file)
@@ -277,7 +277,7 @@ static struct regulator_consumer_supply rx51_vmmc1_supply = {
        .dev_name = "mmci-omap-hs.0",
 };
 
-static struct regulator_consumer_supply rx51_vmmc2_supply = {
+static struct regulator_consumer_supply rx51_vaux3_supply = {
        .supply   = "vmmc",
        .dev_name = "mmci-omap-hs.1",
 };
@@ -287,6 +287,48 @@ static struct regulator_consumer_supply rx51_vsim_supply = {
        .dev_name = "mmci-omap-hs.1",
 };
 
+static struct regulator_consumer_supply rx51_vmmc2_supplies[] = {
+       /* tlv320aic3x analog supplies */
+       {
+               .supply         = "AVDD",
+               .dev_name       = "2-0018",
+       },
+       {
+               .supply         = "DRVDD",
+               .dev_name       = "2-0018",
+       },
+       /* Keep vmmc as last item. It is not iterated for newer boards */
+       {
+               .supply         = "vmmc",
+               .dev_name       = "mmci-omap-hs.1",
+       },
+};
+
+static struct regulator_consumer_supply rx51_vio_supplies[] = {
+       /* tlv320aic3x digital supplies */
+       {
+               .supply         = "IOVDD",
+               .dev_name       = "2-0018"
+       },
+       {
+               .supply         = "DVDD",
+               .dev_name       = "2-0018"
+       },
+};
+
+#if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE)
+extern struct platform_device rx51_display_device;
+#endif
+
+static struct regulator_consumer_supply rx51_vaux1_consumers[] = {
+#if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE)
+       {
+               .supply = "vdds_sdi",
+               .dev    = &rx51_display_device.dev,
+       },
+#endif
+};
+
 static struct regulator_init_data rx51_vaux1 = {
        .constraints = {
                .name                   = "V28",
@@ -297,6 +339,8 @@ static struct regulator_init_data rx51_vaux1 = {
                .valid_ops_mask         = REGULATOR_CHANGE_MODE
                                        | REGULATOR_CHANGE_STATUS,
        },
+       .num_consumer_supplies  = ARRAY_SIZE(rx51_vaux1_consumers),
+       .consumer_supplies      = rx51_vaux1_consumers,
 };
 
 static struct regulator_init_data rx51_vaux2 = {
@@ -338,7 +382,7 @@ static struct regulator_init_data rx51_vaux3_mmc = {
                                        | REGULATOR_CHANGE_STATUS,
        },
        .num_consumer_supplies  = 1,
-       .consumer_supplies      = &rx51_vmmc2_supply,
+       .consumer_supplies      = &rx51_vaux3_supply,
 };
 
 static struct regulator_init_data rx51_vaux4 = {
@@ -370,9 +414,9 @@ static struct regulator_init_data rx51_vmmc1 = {
 
 static struct regulator_init_data rx51_vmmc2 = {
        .constraints = {
-               .name                   = "VMMC2_30",
-               .min_uV                 = 1850000,
-               .max_uV                 = 3150000,
+               .name                   = "V28_A",
+               .min_uV                 = 2800000,
+               .max_uV                 = 3000000,
                .apply_uV               = true,
                .valid_modes_mask       = REGULATOR_MODE_NORMAL
                                        | REGULATOR_MODE_STANDBY,
@@ -380,8 +424,8 @@ static struct regulator_init_data rx51_vmmc2 = {
                                        | REGULATOR_CHANGE_MODE
                                        | REGULATOR_CHANGE_STATUS,
        },
-       .num_consumer_supplies  = 1,
-       .consumer_supplies      = &rx51_vmmc2_supply,
+       .num_consumer_supplies  = ARRAY_SIZE(rx51_vmmc2_supplies),
+       .consumer_supplies      = rx51_vmmc2_supplies,
 };
 
 static struct regulator_init_data rx51_vsim = {
@@ -411,6 +455,20 @@ static struct regulator_init_data rx51_vdac = {
        },
 };
 
+static struct regulator_init_data rx51_vio = {
+       .constraints = {
+               .min_uV                 = 1800000,
+               .max_uV                 = 1800000,
+               .valid_modes_mask       = REGULATOR_MODE_NORMAL
+                                       | REGULATOR_MODE_STANDBY,
+               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
+                                       | REGULATOR_CHANGE_MODE
+                                       | REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = ARRAY_SIZE(rx51_vio_supplies),
+       .consumer_supplies      = rx51_vio_supplies,
+};
+
 static int rx51_twlgpio_setup(struct device *dev, unsigned gpio, unsigned n)
 {
        /* FIXME this gpio setup is just a placeholder for now */
@@ -618,6 +676,7 @@ static struct twl4030_platform_data rx51_twldata __initdata = {
        .vmmc1                  = &rx51_vmmc1,
        .vsim                   = &rx51_vsim,
        .vdac                   = &rx51_vdac,
+       .vio                    = &rx51_vio,
 };
 
 static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_1[] = {
@@ -629,18 +688,27 @@ static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_1[] = {
        },
 };
 
+static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_2[] = {
+       {
+               I2C_BOARD_INFO("tlv320aic3x", 0x18),
+       },
+};
+
 static int __init rx51_i2c_init(void)
 {
        if ((system_rev >= SYSTEM_REV_S_USES_VAUX3 && system_rev < 0x100) ||
-           system_rev >= SYSTEM_REV_B_USES_VAUX3)
+           system_rev >= SYSTEM_REV_B_USES_VAUX3) {
                rx51_twldata.vaux3 = &rx51_vaux3_mmc;
-       else {
+               /* Only older boards use VMMC2 for internal MMC */
+               rx51_vmmc2.num_consumer_supplies--;
+       } else {
                rx51_twldata.vaux3 = &rx51_vaux3_cam;
-               rx51_twldata.vmmc2 = &rx51_vmmc2;
        }
+       rx51_twldata.vmmc2 = &rx51_vmmc2;
        omap_register_i2c_bus(1, 2200, rx51_peripherals_i2c_board_info_1,
-                       ARRAY_SIZE(rx51_peripherals_i2c_board_info_1));
-       omap_register_i2c_bus(2, 100, NULL, 0);
+                             ARRAY_SIZE(rx51_peripherals_i2c_board_info_1));
+       omap_register_i2c_bus(2, 100, rx51_peripherals_i2c_board_info_2,
+                             ARRAY_SIZE(rx51_peripherals_i2c_board_info_2));
        omap_register_i2c_bus(3, 400, NULL, 0);
        return 0;
 }
index e15d2e8..1d7f827 100644 (file)
@@ -82,7 +82,7 @@ static inline void __init zoom_init_smsc911x(void)
 
 static struct plat_serial8250_port serial_platform_data[] = {
        {
-               .mapbase        = 0x10000000,
+               .mapbase        = ZOOM_UART_BASE,
                .irq            = OMAP_GPIO_IRQ(102),
                .flags          = UPF_BOOT_AUTOCONF|UPF_IOREMAP|UPF_SHARE_IRQ,
                .irqflags       = IRQF_SHARED | IRQF_TRIGGER_RISING,
index 9a26f84..803ef14 100644 (file)
@@ -91,8 +91,8 @@ static void __init omap_zoom2_map_io(void)
 }
 
 MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
-       .phys_io        = 0x48000000,
-       .io_pg_offst    = ((0xfa000000) >> 18) & 0xfffc,
+       .phys_io        = ZOOM_UART_BASE,
+       .io_pg_offst    = (ZOOM_UART_VIRT >> 18) & 0xfffc,
        .boot_params    = 0x80000100,
        .map_io         = omap_zoom2_map_io,
        .init_irq       = omap_zoom2_init_irq,
index cd3e40c..3314704 100644 (file)
@@ -73,8 +73,8 @@ static void __init omap_zoom_init(void)
 }
 
 MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
-       .phys_io        = 0x48000000,
-       .io_pg_offst    = ((0xfa000000) >> 18) & 0xfffc,
+       .phys_io        = ZOOM_UART_BASE,
+       .io_pg_offst    = (ZOOM_UART_VIRT >> 18) & 0xfffc,
        .boot_params    = 0x80000100,
        .map_io         = omap_zoom_map_io,
        .init_irq       = omap_zoom_init_irq,
index 43d7246..66e01ac 100644 (file)
@@ -70,12 +70,12 @@ static int omap2_clk_apll_enable(struct clk *clk, u32 status_mask)
 
 static int omap2_clk_apll96_enable(struct clk *clk)
 {
-       return omap2_clk_apll_enable(clk, OMAP24XX_ST_96M_APLL);
+       return omap2_clk_apll_enable(clk, OMAP24XX_ST_96M_APLL_MASK);
 }
 
 static int omap2_clk_apll54_enable(struct clk *clk)
 {
-       return omap2_clk_apll_enable(clk, OMAP24XX_ST_54M_APLL);
+       return omap2_clk_apll_enable(clk, OMAP24XX_ST_54M_APLL_MASK);
 }
 
 /* Stop APLL */
index e60ca4e..aef6291 100644 (file)
@@ -68,16 +68,13 @@ long omap2_round_to_table_rate(struct clk *clk, unsigned long rate)
 {
        const struct prcm_config *ptr;
        long highest_rate;
-       long sys_ck_rate;
-
-       sys_ck_rate = clk_get_rate(sclk);
 
        highest_rate = -EINVAL;
 
        for (ptr = rate_table; ptr->mpu_speed; ptr++) {
                if (!(ptr->flags & cpu_mask))
                        continue;
-               if (ptr->xtal_speed != sys_ck_rate)
+               if (ptr->xtal_speed != sclk->rate)
                        continue;
 
                highest_rate = ptr->mpu_speed;
@@ -96,15 +93,12 @@ int omap2_select_table_rate(struct clk *clk, unsigned long rate)
        const struct prcm_config *prcm;
        unsigned long found_speed = 0;
        unsigned long flags;
-       long sys_ck_rate;
-
-       sys_ck_rate = clk_get_rate(sclk);
 
        for (prcm = rate_table; prcm->mpu_speed; prcm++) {
                if (!(prcm->flags & cpu_mask))
                        continue;
 
-               if (prcm->xtal_speed != sys_ck_rate)
+               if (prcm->xtal_speed != sclk->rate)
                        continue;
 
                if (prcm->mpu_speed <= rate) {
@@ -181,19 +175,16 @@ static struct cpufreq_frequency_table *freq_table;
 void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
 {
        const struct prcm_config *prcm;
-       long sys_ck_rate;
        int i = 0;
        int tbl_sz = 0;
 
        if (!cpu_is_omap24xx())
                return;
 
-       sys_ck_rate = clk_get_rate(sclk);
-
        for (prcm = rate_table; prcm->mpu_speed; prcm++) {
                if (!(prcm->flags & cpu_mask))
                        continue;
-               if (prcm->xtal_speed != sys_ck_rate)
+               if (prcm->xtal_speed != sclk->rate)
                        continue;
 
                /* don't put bypass rates in table */
@@ -226,7 +217,7 @@ void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
        for (prcm = rate_table; prcm->mpu_speed; prcm++) {
                if (!(prcm->flags & cpu_mask))
                        continue;
-               if (prcm->xtal_speed != sys_ck_rate)
+               if (prcm->xtal_speed != sclk->rate)
                        continue;
 
                /* don't put bypass rates in table */
index e50812d..a781cd6 100644 (file)
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  *
- * XXX At some point these clksel clocks should be split into
- * "divider" clocks and "mux" clocks to better match the hardware.
+ *
+ * clksel clocks are clocks that do not have a fixed parent, or that
+ * can divide their parent's rate, or possibly both at the same time, based
+ * on the contents of a hardware register bitfield.
+ *
+ * All of the various mux and divider settings can be encoded into
+ * struct clksel* data structures, and then these can be autogenerated
+ * from some hardware database for each new chip generation.  This
+ * should avoid the need to write, review, and validate a lot of new
+ * clock code for each new chip, since it can be exported from the SoC
+ * design flow.  This is now done on OMAP4.
+ *
+ * The fusion of mux and divider clocks is a software creation.  In
+ * hardware reality, the multiplexer (parent selection) and the
+ * divider exist separately.  XXX At some point these clksel clocks
+ * should be split into "divider" clocks and "mux" clocks to better
+ * match the hardware.
+ *
+ * (The name "clksel" comes from the name of the corresponding
+ * register field in the OMAP2/3 family of SoCs.)
  *
  * XXX Currently these clocks are only used in the OMAP2/3/4 code, but
  * many of the OMAP1 clocks should be convertible to use this
 #include <plat/clock.h>
 
 #include "clock.h"
-#include "cm.h"
-#include "cm-regbits-24xx.h"
-#include "cm-regbits-34xx.h"
 
 /* Private functions */
 
 /**
- * _omap2_get_clksel_by_parent - return clksel struct for a given clk & parent
+ * _get_clksel_by_parent() - return clksel struct for a given clk & parent
  * @clk: OMAP struct clk ptr to inspect
  * @src_clk: OMAP struct clk ptr of the parent clk to search for
  *
  * the element associated with the supplied parent clock address.
  * Returns a pointer to the struct clksel on success or NULL on error.
  */
-static const struct clksel *_omap2_get_clksel_by_parent(struct clk *clk,
-                                                       struct clk *src_clk)
+static const struct clksel *_get_clksel_by_parent(struct clk *clk,
+                                                 struct clk *src_clk)
 {
        const struct clksel *clks;
 
-       if (!clk->clksel)
-               return NULL;
-
-       for (clks = clk->clksel; clks->parent; clks++) {
+       for (clks = clk->clksel; clks->parent; clks++)
                if (clks->parent == src_clk)
                        break; /* Found the requested parent */
-       }
 
        if (!clks->parent) {
-               printk(KERN_ERR "clock: Could not find parent clock %s in "
-                      "clksel array of clock %s\n", src_clk->name,
-                      clk->name);
+               /* This indicates a data problem */
+               WARN(1, "clock: Could not find parent clock %s in clksel array "
+                    "of clock %s\n", src_clk->name, clk->name);
                return NULL;
        }
 
        return clks;
 }
 
-/*
- * Converts encoded control register address into a full address
- * On error, the return value (parent_div) will be 0.
+/**
+ * _get_div_and_fieldval() - find the new clksel divisor and field value to use
+ * @src_clk: planned new parent struct clk *
+ * @clk: struct clk * that is being reparented
+ * @field_val: pointer to a u32 to contain the register data for the divisor
+ *
+ * Given an intended new parent struct clk * @src_clk, and the struct
+ * clk * @clk to the clock that is being reparented, find the
+ * appropriate rate divisor for the new clock (returned as the return
+ * value), and the corresponding register bitfield data to program to
+ * reach that divisor (returned in the u32 pointed to by @field_val).
+ * Returns 0 on error, or returns the newly-selected divisor upon
+ * success (in this latter case, the corresponding register bitfield
+ * value is passed back in the variable pointed to by @field_val)
  */
-static u32 _omap2_clksel_get_src_field(struct clk *src_clk, struct clk *clk,
-                                      u32 *field_val)
+static u8 _get_div_and_fieldval(struct clk *src_clk, struct clk *clk,
+                               u32 *field_val)
 {
        const struct clksel *clks;
-       const struct clksel_rate *clkr;
+       const struct clksel_rate *clkr, *max_clkr;
+       u8 max_div = 0;
 
-       clks = _omap2_get_clksel_by_parent(clk, src_clk);
+       clks = _get_clksel_by_parent(clk, src_clk);
        if (!clks)
                return 0;
 
+       /*
+        * Find the highest divisor (e.g., the one resulting in the
+        * lowest rate) to use as the default.  This should avoid
+        * clock rates that are too high for the device.  XXX A better
+        * solution here would be to try to determine if there is a
+        * divisor matching the original clock rate before the parent
+        * switch, and if it cannot be found, to fall back to the
+        * highest divisor.
+        */
        for (clkr = clks->rates; clkr->div; clkr++) {
-               if (clkr->flags & cpu_mask && clkr->flags & DEFAULT_RATE)
-                       break; /* Found the default rate for this platform */
+               if (!(clkr->flags & cpu_mask))
+                       continue;
+
+               if (clkr->div > max_div) {
+                       max_div = clkr->div;
+                       max_clkr = clkr;
+               }
        }
 
-       if (!clkr->div) {
-               printk(KERN_ERR "clock: Could not find default rate for "
-                      "clock %s parent %s\n", clk->name,
-                      src_clk->parent->name);
+       if (max_div == 0) {
+               /* This indicates an error in the clksel data */
+               WARN(1, "clock: Could not find divisor for clock %s parent %s"
+                    "\n", clk->name, src_clk->parent->name);
                return 0;
        }
 
-       /* Should never happen.  Add a clksel mask to the struct clk. */
-       WARN_ON(clk->clksel_mask == 0);
+       *field_val = max_clkr->val;
 
-       *field_val = clkr->val;
-
-       return clkr->div;
+       return max_div;
 }
 
+/**
+ * _write_clksel_reg() - program a clock's clksel register in hardware
+ * @clk: struct clk * to program
+ * @v: clksel bitfield value to program (with LSB at bit 0)
+ *
+ * Shift the clksel register bitfield value @v to its appropriate
+ * location in the clksel register and write it in.  This function
+ * will ensure that the write to the clksel_reg reaches its
+ * destination before returning -- important since PRM and CM register
+ * accesses can be quite slow compared to ARM cycles -- but does not
+ * take into account any time the hardware might take to switch the
+ * clock source.
+ */
+static void _write_clksel_reg(struct clk *clk, u32 field_val)
+{
+       u32 v;
 
-/* Public functions */
+       v = __raw_readl(clk->clksel_reg);
+       v &= ~clk->clksel_mask;
+       v |= field_val << __ffs(clk->clksel_mask);
+       __raw_writel(v, clk->clksel_reg);
+
+       v = __raw_readl(clk->clksel_reg); /* OCP barrier */
+}
 
 /**
- * omap2_init_clksel_parent - set a clksel clk's parent field from the hardware
- * @clk: OMAP clock struct ptr to use
+ * _clksel_to_divisor() - turn clksel field value into integer divider
+ * @clk: OMAP struct clk to use
+ * @field_val: register field value to find
  *
- * Given a pointer to a source-selectable struct clk, read the hardware
- * register and determine what its parent is currently set to.  Update the
- * clk->parent field with the appropriate clk ptr.
+ * Given a struct clk of a rate-selectable clksel clock, and a register field
+ * value to search for, find the corresponding clock divisor.  The register
+ * field value should be pre-masked and shifted down so the LSB is at bit 0
+ * before calling.  Returns 0 on error or returns the actual integer divisor
+ * upon success.
  */
-void omap2_init_clksel_parent(struct clk *clk)
+static u32 _clksel_to_divisor(struct clk *clk, u32 field_val)
 {
        const struct clksel *clks;
        const struct clksel_rate *clkr;
-       u32 r, found = 0;
 
-       if (!clk->clksel)
-               return;
+       clks = _get_clksel_by_parent(clk, clk->parent);
+       if (!clks)
+               return 0;
 
-       r = __raw_readl(clk->clksel_reg) & clk->clksel_mask;
-       r >>= __ffs(clk->clksel_mask);
+       for (clkr = clks->rates; clkr->div; clkr++) {
+               if (!(clkr->flags & cpu_mask))
+                       continue;
 
-       for (clks = clk->clksel; clks->parent && !found; clks++) {
-               for (clkr = clks->rates; clkr->div && !found; clkr++) {
-                       if ((clkr->flags & cpu_mask) && (clkr->val == r)) {
-                               if (clk->parent != clks->parent) {
-                                       pr_debug("clock: inited %s parent "
-                                                "to %s (was %s)\n",
-                                                clk->name, clks->parent->name,
-                                                ((clk->parent) ?
-                                                 clk->parent->name : "NULL"));
-                                       clk_reparent(clk, clks->parent);
-                               };
-                               found = 1;
-                       }
-               }
+               if (clkr->val == field_val)
+                       break;
        }
 
-       if (!found)
-               printk(KERN_ERR "clock: init parent: could not find "
-                      "regval %0x for clock %s\n", r,  clk->name);
+       if (!clkr->div) {
+               /* This indicates a data error */
+               WARN(1, "clock: Could not find fieldval %d for clock %s parent "
+                    "%s\n", field_val, clk->name, clk->parent->name);
+               return 0;
+       }
 
-       return;
+       return clkr->div;
 }
 
-/*
- * Used for clocks that are part of CLKSEL_xyz governed clocks.
- * REVISIT: Maybe change to use clk->enable() functions like on omap1?
+/**
+ * _divisor_to_clksel() - turn clksel integer divisor into a field value
+ * @clk: OMAP struct clk to use
+ * @div: integer divisor to search for
+ *
+ * Given a struct clk of a rate-selectable clksel clock, and a clock
+ * divisor, find the corresponding register field value.  Returns the
+ * register field value _before_ left-shifting (i.e., LSB is at bit
+ * 0); or returns 0xFFFFFFFF (~0) upon error.
  */
-unsigned long omap2_clksel_recalc(struct clk *clk)
+static u32 _divisor_to_clksel(struct clk *clk, u32 div)
 {
-       unsigned long rate;
-       u32 div = 0;
+       const struct clksel *clks;
+       const struct clksel_rate *clkr;
 
-       pr_debug("clock: recalc'ing clksel clk %s\n", clk->name);
+       /* should never happen */
+       WARN_ON(div == 0);
 
-       div = omap2_clksel_get_divisor(clk);
-       if (div == 0)
-               return clk->rate;
+       clks = _get_clksel_by_parent(clk, clk->parent);
+       if (!clks)
+               return ~0;
 
-       rate = clk->parent->rate / div;
+       for (clkr = clks->rates; clkr->div; clkr++) {
+               if (!(clkr->flags & cpu_mask))
+                       continue;
 
-       pr_debug("clock: new clock rate is %ld (div %d)\n", rate, div);
+               if (clkr->div == div)
+                       break;
+       }
 
-       return rate;
+       if (!clkr->div) {
+               pr_err("clock: Could not find divisor %d for clock %s parent "
+                      "%s\n", div, clk->name, clk->parent->name);
+               return ~0;
+       }
+
+       return clkr->val;
+}
+
+/**
+ * _read_divisor() - get current divisor applied to parent clock (from hdwr)
+ * @clk: OMAP struct clk to use.
+ *
+ * Read the current divisor register value for @clk that is programmed
+ * into the hardware, convert it into the actual divisor value, and
+ * return it; or return 0 on error.
+ */
+static u32 _read_divisor(struct clk *clk)
+{
+       u32 v;
+
+       if (!clk->clksel || !clk->clksel_mask)
+               return 0;
+
+       v = __raw_readl(clk->clksel_reg);
+       v &= clk->clksel_mask;
+       v >>= __ffs(clk->clksel_mask);
+
+       return _clksel_to_divisor(clk, v);
 }
 
+/* Public functions */
+
 /**
- * omap2_clksel_round_rate_div - find divisor for the given clock and rate
+ * omap2_clksel_round_rate_div() - find divisor for the given clock and rate
  * @clk: OMAP struct clk to use
  * @target_rate: desired clock rate
  * @new_div: ptr to where we should store the divisor
  *
  * Finds 'best' divider value in an array based on the source and target
  * rates.  The divider array must be sorted with smallest divider first.
- * Note that this will not work for clocks which are part of CONFIG_PARTICIPANT,
- * they are only settable as part of virtual_prcm set.
+ * This function is also used by the DPLL3 M2 divider code.
  *
  * Returns the rounded clock rate or returns 0xffffffff on error.
  */
@@ -190,12 +281,15 @@ u32 omap2_clksel_round_rate_div(struct clk *clk, unsigned long target_rate,
        const struct clksel_rate *clkr;
        u32 last_div = 0;
 
+       if (!clk->clksel || !clk->clksel_mask)
+               return ~0;
+
        pr_debug("clock: clksel_round_rate_div: %s target_rate %ld\n",
                 clk->name, target_rate);
 
        *new_div = 1;
 
-       clks = _omap2_get_clksel_by_parent(clk, clk->parent);
+       clks = _get_clksel_by_parent(clk, clk->parent);
        if (!clks)
                return ~0;
 
@@ -231,168 +325,174 @@ u32 omap2_clksel_round_rate_div(struct clk *clk, unsigned long target_rate,
        return clk->parent->rate / clkr->div;
 }
 
-/**
- * omap2_clksel_round_rate - find rounded rate for the given clock and rate
- * @clk: OMAP struct clk to use
- * @target_rate: desired clock rate
- *
- * Compatibility wrapper for OMAP clock framework
- * Finds best target rate based on the source clock and possible dividers.
- * rates. The divider array must be sorted with smallest divider first.
- * Note that this will not work for clocks which are part of CONFIG_PARTICIPANT,
- * they are only settable as part of virtual_prcm set.
- *
- * Returns the rounded clock rate or returns 0xffffffff on error.
+/*
+ * Clocktype interface functions to the OMAP clock code
+ * (i.e., those used in struct clk field function pointers, etc.)
  */
-long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate)
-{
-       u32 new_div;
-
-       return omap2_clksel_round_rate_div(clk, target_rate, &new_div);
-}
-
-
-/* Given a clock and a rate apply a clock specific rounding function */
-long omap2_clk_round_rate(struct clk *clk, unsigned long rate)
-{
-       if (clk->round_rate)
-               return clk->round_rate(clk, rate);
-
-       return clk->rate;
-}
 
 /**
- * omap2_clksel_to_divisor() - turn clksel field value into integer divider
- * @clk: OMAP struct clk to use
- * @field_val: register field value to find
+ * omap2_init_clksel_parent() - set a clksel clk's parent field from the hdwr
+ * @clk: OMAP clock struct ptr to use
  *
- * Given a struct clk of a rate-selectable clksel clock, and a register field
- * value to search for, find the corresponding clock divisor.  The register
- * field value should be pre-masked and shifted down so the LSB is at bit 0
- * before calling.  Returns 0 on error
+ * Given a pointer @clk to a source-selectable struct clk, read the
+ * hardware register and determine what its parent is currently set
+ * to.  Update @clk's .parent field with the appropriate clk ptr.  No
+ * return value.
  */
-u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val)
+void omap2_init_clksel_parent(struct clk *clk)
 {
        const struct clksel *clks;
        const struct clksel_rate *clkr;
+       u32 r, found = 0;
 
-       clks = _omap2_get_clksel_by_parent(clk, clk->parent);
-       if (!clks)
-               return 0;
+       if (!clk->clksel || !clk->clksel_mask)
+               return;
 
-       for (clkr = clks->rates; clkr->div; clkr++) {
-               if ((clkr->flags & cpu_mask) && (clkr->val == field_val))
-                       break;
-       }
+       r = __raw_readl(clk->clksel_reg) & clk->clksel_mask;
+       r >>= __ffs(clk->clksel_mask);
 
-       if (!clkr->div) {
-               printk(KERN_ERR "clock: Could not find fieldval %d for "
-                      "clock %s parent %s\n", field_val, clk->name,
-                      clk->parent->name);
-               return 0;
+       for (clks = clk->clksel; clks->parent && !found; clks++) {
+               for (clkr = clks->rates; clkr->div && !found; clkr++) {
+                       if (!(clkr->flags & cpu_mask))
+                               continue;
+
+                       if (clkr->val == r) {
+                               if (clk->parent != clks->parent) {
+                                       pr_debug("clock: inited %s parent "
+                                                "to %s (was %s)\n",
+                                                clk->name, clks->parent->name,
+                                                ((clk->parent) ?
+                                                 clk->parent->name : "NULL"));
+                                       clk_reparent(clk, clks->parent);
+                               };
+                               found = 1;
+                       }
+               }
        }
 
-       return clkr->div;
+       /* This indicates a data error */
+       WARN(!found, "clock: %s: init parent: could not find regval %0x\n",
+            clk->name, r);
+
+       return;
 }
 
 /**
- * omap2_divisor_to_clksel() - turn clksel integer divisor into a field value
- * @clk: OMAP struct clk to use
- * @div: integer divisor to search for
+ * omap2_clksel_recalc() - function ptr to pass via struct clk .recalc field
+ * @clk: struct clk *
  *
- * Given a struct clk of a rate-selectable clksel clock, and a clock divisor,
- * find the corresponding register field value.  The return register value is
- * the value before left-shifting.  Returns ~0 on error
+ * This function is intended to be called only by the clock framework.
+ * Each clksel clock should have its struct clk .recalc field set to this
+ * function.  Returns the clock's current rate, based on its parent's rate
+ * and its current divisor setting in the hardware.
  */
-u32 omap2_divisor_to_clksel(struct clk *clk, u32 div)
+unsigned long omap2_clksel_recalc(struct clk *clk)
 {
-       const struct clksel *clks;
-       const struct clksel_rate *clkr;
-
-       /* should never happen */
-       WARN_ON(div == 0);
+       unsigned long rate;
+       u32 div = 0;
 
-       clks = _omap2_get_clksel_by_parent(clk, clk->parent);
-       if (!clks)
-               return ~0;
+       div = _read_divisor(clk);
+       if (div == 0)
+               return clk->rate;
 
-       for (clkr = clks->rates; clkr->div; clkr++) {
-               if ((clkr->flags & cpu_mask) && (clkr->div == div))
-                       break;
-       }
+       rate = clk->parent->rate / div;
 
-       if (!clkr->div) {
-               printk(KERN_ERR "clock: Could not find divisor %d for "
-                      "clock %s parent %s\n", div, clk->name,
-                      clk->parent->name);
-               return ~0;
-       }
+       pr_debug("clock: %s: recalc'd rate is %ld (div %d)\n", clk->name,
+                rate, div);
 
-       return clkr->val;
+       return rate;
 }
 
 /**
- * omap2_clksel_get_divisor - get current divider applied to parent clock.
- * @clk: OMAP struct clk to use.
+ * omap2_clksel_round_rate() - find rounded rate for the given clock and rate
+ * @clk: OMAP struct clk to use
+ * @target_rate: desired clock rate
+ *
+ * This function is intended to be called only by the clock framework.
+ * Finds best target rate based on the source clock and possible dividers.
+ * rates. The divider array must be sorted with smallest divider first.
  *
- * Returns the integer divisor upon success or 0 on error.
+ * Returns the rounded clock rate or returns 0xffffffff on error.
  */
-u32 omap2_clksel_get_divisor(struct clk *clk)
+long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate)
 {
-       u32 v;
-
-       if (!clk->clksel_mask)
-               return 0;
-
-       v = __raw_readl(clk->clksel_reg) & clk->clksel_mask;
-       v >>= __ffs(clk->clksel_mask);
+       u32 new_div;
 
-       return omap2_clksel_to_divisor(clk, v);
+       return omap2_clksel_round_rate_div(clk, target_rate, &new_div);
 }
 
+/**
+ * omap2_clksel_set_rate() - program clock rate in hardware
+ * @clk: struct clk * to program rate
+ * @rate: target rate to program
+ *
+ * This function is intended to be called only by the clock framework.
+ * Program @clk's rate to @rate in the hardware.  The clock can be
+ * either enabled or disabled when this happens, although if the clock
+ * is enabled, some downstream devices may glitch or behave
+ * unpredictably when the clock rate is changed - this depends on the
+ * hardware. This function does not currently check the usecount of
+ * the clock, so if multiple drivers are using the clock, and the rate
+ * is changed, they will all be affected without any notification.
+ * Returns -EINVAL upon error, or 0 upon success.
+ */
 int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
 {
-       u32 v, field_val, validrate, new_div = 0;
+       u32 field_val, validrate, new_div = 0;
 
-       if (!clk->clksel_mask)
+       if (!clk->clksel || !clk->clksel_mask)
                return -EINVAL;
 
        validrate = omap2_clksel_round_rate_div(clk, rate, &new_div);
        if (validrate != rate)
                return -EINVAL;
 
-       field_val = omap2_divisor_to_clksel(clk, new_div);
+       field_val = _divisor_to_clksel(clk, new_div);
        if (field_val == ~0)
                return -EINVAL;
 
-       v = __raw_readl(clk->clksel_reg);
-       v &= ~clk->clksel_mask;
-       v |= field_val << __ffs(clk->clksel_mask);
-       __raw_writel(v, clk->clksel_reg);
-       v = __raw_readl(clk->clksel_reg); /* OCP barrier */
+       _write_clksel_reg(clk, field_val);
 
        clk->rate = clk->parent->rate / new_div;
 
+       pr_debug("clock: %s: set rate to %ld\n", clk->name, clk->rate);
+
        return 0;
 }
 
+/*
+ * Clksel parent setting function - not passed in struct clk function
+ * pointer - instead, the OMAP clock code currently assumes that any
+ * parent-setting clock is a clksel clock, and calls
+ * omap2_clksel_set_parent() by default
+ */
+
+/**
+ * omap2_clksel_set_parent() - change a clock's parent clock
+ * @clk: struct clk * of the child clock
+ * @new_parent: struct clk * of the new parent clock
+ *
+ * This function is intended to be called only by the clock framework.
+ * Change the parent clock of clock @clk to @new_parent.  This is
+ * intended to be used while @clk is disabled.  This function does not
+ * currently check the usecount of the clock, so if multiple drivers
+ * are using the clock, and the parent is changed, they will all be
+ * affected without any notification.  Returns -EINVAL upon error, or
+ * 0 upon success.
+ */
 int omap2_clksel_set_parent(struct clk *clk, struct clk *new_parent)
 {
-       u32 field_val, v, parent_div;
+       u32 field_val = 0;
+       u32 parent_div;
 
-       if (!clk->clksel)
+       if (!clk->clksel || !clk->clksel_mask)
                return -EINVAL;
 
-       parent_div = _omap2_clksel_get_src_field(new_parent, clk, &field_val);
+       parent_div = _get_div_and_fieldval(new_parent, clk, &field_val);
        if (!parent_div)
                return -EINVAL;
 
-       /* Set new source value (previous dividers if any in effect) */
-       v = __raw_readl(clk->clksel_reg);
-       v &= ~clk->clksel_mask;
-       v |= field_val << __ffs(clk->clksel_mask);
-       __raw_writel(v, clk->clksel_reg);
-       v = __raw_readl(clk->clksel_reg);    /* OCP barrier */
+       _write_clksel_reg(clk, field_val);
 
        clk_reparent(clk, new_parent);
 
@@ -402,7 +502,7 @@ int omap2_clksel_set_parent(struct clk *clk, struct clk *new_parent)
        if (parent_div > 0)
                clk->rate /= parent_div;
 
-       pr_debug("clock: set parent of %s to %s (new rate %ld)\n",
+       pr_debug("clock: %s: set parent to %s (new rate %ld)\n",
                 clk->name, clk->parent->name, clk->rate);
 
        return 0;
index a6d0b34..605f531 100644 (file)
@@ -334,6 +334,15 @@ oce_err1:
        return ret;
 }
 
+/* Given a clock and a rate apply a clock specific rounding function */
+long omap2_clk_round_rate(struct clk *clk, unsigned long rate)
+{
+       if (clk->round_rate)
+               return clk->round_rate(clk, rate);
+
+       return clk->rate;
+}
+
 /* Set the clock rate for a clock source */
 int omap2_clk_set_rate(struct clk *clk, unsigned long rate)
 {
index ad8a1f7..a535c7a 100644 (file)
@@ -73,19 +73,20 @@ void omap2_clk_disable_unused(struct clk *clk);
 #define omap2_clk_disable_unused       NULL
 #endif
 
-unsigned long omap2_clksel_recalc(struct clk *clk);
 void omap2_init_clk_clkdm(struct clk *clk);
-void omap2_init_clksel_parent(struct clk *clk);
-u32 omap2_clksel_get_divisor(struct clk *clk);
+
+/* clkt_clksel.c public functions */
 u32 omap2_clksel_round_rate_div(struct clk *clk, unsigned long target_rate,
                                u32 *new_div);
-u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val);
-u32 omap2_divisor_to_clksel(struct clk *clk, u32 div);
+void omap2_init_clksel_parent(struct clk *clk);
+unsigned long omap2_clksel_recalc(struct clk *clk);
 long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate);
 int omap2_clksel_set_rate(struct clk *clk, unsigned long rate);
 int omap2_clksel_set_parent(struct clk *clk, struct clk *new_parent);
+
 u32 omap2_get_dpll_rate(struct clk *clk);
 void omap2_init_dpll_parent(struct clk *clk);
+
 int omap2_wait_clock_ready(void __iomem *reg, u32 cval, const char *name);
 
 
index d932b14..23bc981 100644 (file)
@@ -155,12 +155,12 @@ static struct clk apll54_ck = {
 /* func_54m_ck */
 
 static const struct clksel_rate func_54m_apll54_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
 
 static const struct clksel_rate func_54m_alt_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
 
@@ -177,7 +177,7 @@ static struct clk func_54m_ck = {
        .clkdm_name     = "wkup_clkdm",
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
-       .clksel_mask    = OMAP24XX_54M_SOURCE,
+       .clksel_mask    = OMAP24XX_54M_SOURCE_MASK,
        .clksel         = func_54m_clksel,
        .recalc         = &omap2_clksel_recalc,
 };
@@ -201,12 +201,12 @@ static struct clk func_96m_ck = {
 /* func_48m_ck */
 
 static const struct clksel_rate func_48m_apll96_rates[] = {
-       { .div = 2, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 2, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
 
 static const struct clksel_rate func_48m_alt_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
 
@@ -223,7 +223,7 @@ static struct clk func_48m_ck = {
        .clkdm_name     = "wkup_clkdm",
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
-       .clksel_mask    = OMAP24XX_48M_SOURCE,
+       .clksel_mask    = OMAP24XX_48M_SOURCE_MASK,
        .clksel         = func_48m_clksel,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
@@ -256,22 +256,22 @@ static struct clk wdt1_osc_ck = {
  * flags fields, which mark them as 2420-only.
  */
 static const struct clksel_rate common_clkout_src_core_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
 static const struct clksel_rate common_clkout_src_sys_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
 static const struct clksel_rate common_clkout_src_96m_rates[] = {
-       { .div = 1, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 2, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
 static const struct clksel_rate common_clkout_src_54m_rates[] = {
-       { .div = 1, .val = 3, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 3, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
@@ -300,7 +300,7 @@ static struct clk sys_clkout_src = {
 };
 
 static const struct clksel_rate common_clkout_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 2, .val = 1, .flags = RATE_IN_24XX },
        { .div = 4, .val = 2, .flags = RATE_IN_24XX },
        { .div = 8, .val = 3, .flags = RATE_IN_24XX },
@@ -384,7 +384,7 @@ static struct clk emul_ck = {
  *
  */
 static const struct clksel_rate mpu_core_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 4, .val = 4, .flags = RATE_IN_242X },
        { .div = 6, .val = 6, .flags = RATE_IN_242X },
@@ -420,7 +420,7 @@ static struct clk mpu_ck = {        /* Control cpu */
  * routed into a synchronizer and out of clocks abc.
  */
 static const struct clksel_rate dsp_fck_core_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 3, .val = 3, .flags = RATE_IN_24XX },
        { .div = 4, .val = 4, .flags = RATE_IN_24XX },
@@ -450,7 +450,7 @@ static struct clk dsp_fck = {
 
 /* DSP interface clock */
 static const struct clksel_rate dsp_irate_ick_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
@@ -532,7 +532,7 @@ static struct clk iva1_mpu_int_ifck = {
 static const struct clksel_rate core_l3_core_rates[] = {
        { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 2, .val = 2, .flags = RATE_IN_242X },
-       { .div = 4, .val = 4, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 4, .val = 4, .flags = RATE_IN_24XX },
        { .div = 6, .val = 6, .flags = RATE_IN_24XX },
        { .div = 8, .val = 8, .flags = RATE_IN_242X },
        { .div = 12, .val = 12, .flags = RATE_IN_242X },
@@ -559,7 +559,7 @@ static struct clk core_l3_ck = {    /* Used for ick and fck, interconnect */
 /* usb_l4_ick */
 static const struct clksel_rate usb_l4_ick_core_l3_rates[] = {
        { .div = 1, .val = 1, .flags = RATE_IN_24XX },
-       { .div = 2, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 4, .val = 4, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
@@ -591,7 +591,7 @@ static struct clk usb_l4_ick = {    /* FS-USB interface clock */
  * this domain.
  */
 static const struct clksel_rate l4_core_l3_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
@@ -622,7 +622,7 @@ static struct clk l4_ck = {         /* used both as an ick and fck */
  */
 static const struct clksel_rate ssi_ssr_sst_fck_core_rates[] = {
        { .div = 1, .val = 1, .flags = RATE_IN_24XX },
-       { .div = 2, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 3, .val = 3, .flags = RATE_IN_24XX },
        { .div = 4, .val = 4, .flags = RATE_IN_24XX },
        { .div = 6, .val = 6, .flags = RATE_IN_242X },
@@ -730,7 +730,7 @@ static struct clk gfx_ick = {
 /* XXX Add RATE_NOT_VALIDATED */
 
 static const struct clksel_rate dss1_fck_sys_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
@@ -744,7 +744,7 @@ static const struct clksel_rate dss1_fck_core_rates[] = {
        { .div = 8, .val = 8, .flags = RATE_IN_24XX },
        { .div = 9, .val = 9, .flags = RATE_IN_24XX },
        { .div = 12, .val = 12, .flags = RATE_IN_24XX },
-       { .div = 16, .val = 16, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 16, .val = 16, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
@@ -779,12 +779,12 @@ static struct clk dss1_fck = {
 };
 
 static const struct clksel_rate dss2_fck_sys_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
 static const struct clksel_rate dss2_fck_48m_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
@@ -825,7 +825,7 @@ static struct clk dss_54m_fck = {   /* Alt clk used in power management */
  * functional clock parents.
  */
 static const struct clksel_rate gpt_alt_rates[] = {
-       { .div = 1, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 2, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
@@ -1588,7 +1588,7 @@ static struct clk vlynq_ick = {
 };
 
 static const struct clksel_rate vlynq_fck_96m_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_242X | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_242X },
        { .div = 0 }
 };
 
@@ -1601,7 +1601,7 @@ static const struct clksel_rate vlynq_fck_core_rates[] = {
        { .div = 8, .val = 8, .flags = RATE_IN_242X },
        { .div = 9, .val = 9, .flags = RATE_IN_242X },
        { .div = 12, .val = 12, .flags = RATE_IN_242X },
-       { .div = 16, .val = 16, .flags = RATE_IN_242X | DEFAULT_RATE },
+       { .div = 16, .val = 16, .flags = RATE_IN_242X },
        { .div = 18, .val = 18, .flags = RATE_IN_242X },
        { .div = 0 }
 };
index 0438b6e..2df50d9 100644 (file)
@@ -155,12 +155,12 @@ static struct clk apll54_ck = {
 /* func_54m_ck */
 
 static const struct clksel_rate func_54m_apll54_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
 
 static const struct clksel_rate func_54m_alt_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
 
@@ -177,7 +177,7 @@ static struct clk func_54m_ck = {
        .clkdm_name     = "wkup_clkdm",
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
-       .clksel_mask    = OMAP24XX_54M_SOURCE,
+       .clksel_mask    = OMAP24XX_54M_SOURCE_MASK,
        .clksel         = func_54m_clksel,
        .recalc         = &omap2_clksel_recalc,
 };
@@ -192,12 +192,12 @@ static struct clk core_ck = {
 
 /* func_96m_ck */
 static const struct clksel_rate func_96m_apll96_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
 
 static const struct clksel_rate func_96m_alt_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_243X | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_243X },
        { .div = 0 },
 };
 
@@ -214,7 +214,7 @@ static struct clk func_96m_ck = {
        .clkdm_name     = "wkup_clkdm",
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
-       .clksel_mask    = OMAP2430_96M_SOURCE,
+       .clksel_mask    = OMAP2430_96M_SOURCE_MASK,
        .clksel         = func_96m_clksel,
        .recalc         = &omap2_clksel_recalc,
 };
@@ -222,12 +222,12 @@ static struct clk func_96m_ck = {
 /* func_48m_ck */
 
 static const struct clksel_rate func_48m_apll96_rates[] = {
-       { .div = 2, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 2, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
 
 static const struct clksel_rate func_48m_alt_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
 
@@ -244,7 +244,7 @@ static struct clk func_48m_ck = {
        .clkdm_name     = "wkup_clkdm",
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
-       .clksel_mask    = OMAP24XX_48M_SOURCE,
+       .clksel_mask    = OMAP24XX_48M_SOURCE_MASK,
        .clksel         = func_48m_clksel,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
@@ -277,22 +277,22 @@ static struct clk wdt1_osc_ck = {
  * flags fields, which mark them as 2420-only.
  */
 static const struct clksel_rate common_clkout_src_core_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
 static const struct clksel_rate common_clkout_src_sys_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
 static const struct clksel_rate common_clkout_src_96m_rates[] = {
-       { .div = 1, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 2, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
 static const struct clksel_rate common_clkout_src_54m_rates[] = {
-       { .div = 1, .val = 3, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 3, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
@@ -321,7 +321,7 @@ static struct clk sys_clkout_src = {
 };
 
 static const struct clksel_rate common_clkout_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 2, .val = 1, .flags = RATE_IN_24XX },
        { .div = 4, .val = 2, .flags = RATE_IN_24XX },
        { .div = 8, .val = 3, .flags = RATE_IN_24XX },
@@ -369,7 +369,7 @@ static struct clk emul_ck = {
  *
  */
 static const struct clksel_rate mpu_core_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 0 },
 };
@@ -402,7 +402,7 @@ static struct clk mpu_ck = {        /* Control cpu */
  * routed into a synchronizer and out of clocks abc.
  */
 static const struct clksel_rate dsp_fck_core_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 3, .val = 3, .flags = RATE_IN_24XX },
        { .div = 4, .val = 4, .flags = RATE_IN_24XX },
@@ -429,7 +429,7 @@ static struct clk dsp_fck = {
 
 /* DSP interface clock */
 static const struct clksel_rate dsp_irate_ick_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 3, .val = 3, .flags = RATE_IN_243X },
        { .div = 0 },
@@ -481,7 +481,7 @@ static struct clk iva2_1_ick = {
  */
 static const struct clksel_rate core_l3_core_rates[] = {
        { .div = 1, .val = 1, .flags = RATE_IN_24XX },
-       { .div = 4, .val = 4, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 4, .val = 4, .flags = RATE_IN_24XX },
        { .div = 6, .val = 6, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
@@ -505,7 +505,7 @@ static struct clk core_l3_ck = {    /* Used for ick and fck, interconnect */
 /* usb_l4_ick */
 static const struct clksel_rate usb_l4_ick_core_l3_rates[] = {
        { .div = 1, .val = 1, .flags = RATE_IN_24XX },
-       { .div = 2, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 4, .val = 4, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
@@ -537,7 +537,7 @@ static struct clk usb_l4_ick = {    /* FS-USB interface clock */
  * this domain.
  */
 static const struct clksel_rate l4_core_l3_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
@@ -568,7 +568,7 @@ static struct clk l4_ck = {         /* used both as an ick and fck */
  */
 static const struct clksel_rate ssi_ssr_sst_fck_core_rates[] = {
        { .div = 1, .val = 1, .flags = RATE_IN_24XX },
-       { .div = 2, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 2, .val = 2, .flags = RATE_IN_24XX },
        { .div = 3, .val = 3, .flags = RATE_IN_24XX },
        { .div = 4, .val = 4, .flags = RATE_IN_24XX },
        { .div = 5, .val = 5, .flags = RATE_IN_243X },
@@ -673,7 +673,7 @@ static struct clk gfx_ick = {
  */
 static const struct clksel_rate mdm_ick_core_rates[] = {
        { .div = 1, .val = 1, .flags = RATE_IN_243X },
-       { .div = 4, .val = 4, .flags = RATE_IN_243X | DEFAULT_RATE },
+       { .div = 4, .val = 4, .flags = RATE_IN_243X },
        { .div = 6, .val = 6, .flags = RATE_IN_243X },
        { .div = 9, .val = 9, .flags = RATE_IN_243X },
        { .div = 0 }
@@ -718,7 +718,7 @@ static struct clk mdm_osc_ck = {
 /* XXX Add RATE_NOT_VALIDATED */
 
 static const struct clksel_rate dss1_fck_sys_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
@@ -732,7 +732,7 @@ static const struct clksel_rate dss1_fck_core_rates[] = {
        { .div = 8, .val = 8, .flags = RATE_IN_24XX },
        { .div = 9, .val = 9, .flags = RATE_IN_24XX },
        { .div = 12, .val = 12, .flags = RATE_IN_24XX },
-       { .div = 16, .val = 16, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 16, .val = 16, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
@@ -767,12 +767,12 @@ static struct clk dss1_fck = {
 };
 
 static const struct clksel_rate dss2_fck_sys_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
 static const struct clksel_rate dss2_fck_48m_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
@@ -813,7 +813,7 @@ static struct clk dss_54m_fck = {   /* Alt clk used in power management */
  * functional clock parents.
  */
 static const struct clksel_rate gpt_alt_rates[] = {
-       { .div = 1, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE },
+       { .div = 1, .val = 2, .flags = RATE_IN_24XX },
        { .div = 0 }
 };
 
index 9cba556..833be48 100644 (file)
@@ -110,32 +110,32 @@ static struct clk virt_38_4m_ck = {
 };
 
 static const struct clksel_rate osc_sys_12m_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate osc_sys_13m_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate osc_sys_16_8m_rates[] = {
-       { .div = 1, .val = 5, .flags = RATE_IN_3430ES2 | DEFAULT_RATE },
+       { .div = 1, .val = 5, .flags = RATE_IN_3430ES2PLUS },
        { .div = 0 }
 };
 
 static const struct clksel_rate osc_sys_19_2m_rates[] = {
-       { .div = 1, .val = 2, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 2, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate osc_sys_26m_rates[] = {
-       { .div = 1, .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 3, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate osc_sys_38_4m_rates[] = {
-       { .div = 1, .val = 4, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 4, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
@@ -163,8 +163,8 @@ static struct clk osc_sys_ck = {
 };
 
 static const struct clksel_rate div2_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 2, .val = 2, .flags = RATE_IN_343X },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
@@ -213,42 +213,42 @@ static struct clk sys_clkout1 = {
 /* CM CLOCKS */
 
 static const struct clksel_rate div16_dpll_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 2, .val = 2, .flags = RATE_IN_343X },
-       { .div = 3, .val = 3, .flags = RATE_IN_343X },
-       { .div = 4, .val = 4, .flags = RATE_IN_343X },
-       { .div = 5, .val = 5, .flags = RATE_IN_343X },
-       { .div = 6, .val = 6, .flags = RATE_IN_343X },
-       { .div = 7, .val = 7, .flags = RATE_IN_343X },
-       { .div = 8, .val = 8, .flags = RATE_IN_343X },
-       { .div = 9, .val = 9, .flags = RATE_IN_343X },
-       { .div = 10, .val = 10, .flags = RATE_IN_343X },
-       { .div = 11, .val = 11, .flags = RATE_IN_343X },
-       { .div = 12, .val = 12, .flags = RATE_IN_343X },
-       { .div = 13, .val = 13, .flags = RATE_IN_343X },
-       { .div = 14, .val = 14, .flags = RATE_IN_343X },
-       { .div = 15, .val = 15, .flags = RATE_IN_343X },
-       { .div = 16, .val = 16, .flags = RATE_IN_343X },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
+       { .div = 3, .val = 3, .flags = RATE_IN_3XXX },
+       { .div = 4, .val = 4, .flags = RATE_IN_3XXX },
+       { .div = 5, .val = 5, .flags = RATE_IN_3XXX },
+       { .div = 6, .val = 6, .flags = RATE_IN_3XXX },
+       { .div = 7, .val = 7, .flags = RATE_IN_3XXX },
+       { .div = 8, .val = 8, .flags = RATE_IN_3XXX },
+       { .div = 9, .val = 9, .flags = RATE_IN_3XXX },
+       { .div = 10, .val = 10, .flags = RATE_IN_3XXX },
+       { .div = 11, .val = 11, .flags = RATE_IN_3XXX },
+       { .div = 12, .val = 12, .flags = RATE_IN_3XXX },
+       { .div = 13, .val = 13, .flags = RATE_IN_3XXX },
+       { .div = 14, .val = 14, .flags = RATE_IN_3XXX },
+       { .div = 15, .val = 15, .flags = RATE_IN_3XXX },
+       { .div = 16, .val = 16, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
-static const struct clksel_rate div32_dpll4_rates_3630[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_36XX | DEFAULT_RATE },
-       { .div = 2, .val = 2, .flags = RATE_IN_36XX },
-       { .div = 3, .val = 3, .flags = RATE_IN_36XX },
-       { .div = 4, .val = 4, .flags = RATE_IN_36XX },
-       { .div = 5, .val = 5, .flags = RATE_IN_36XX },
-       { .div = 6, .val = 6, .flags = RATE_IN_36XX },
-       { .div = 7, .val = 7, .flags = RATE_IN_36XX },
-       { .div = 8, .val = 8, .flags = RATE_IN_36XX },
-       { .div = 9, .val = 9, .flags = RATE_IN_36XX },
-       { .div = 10, .val = 10, .flags = RATE_IN_36XX },
-       { .div = 11, .val = 11, .flags = RATE_IN_36XX },
-       { .div = 12, .val = 12, .flags = RATE_IN_36XX },
-       { .div = 13, .val = 13, .flags = RATE_IN_36XX },
-       { .div = 14, .val = 14, .flags = RATE_IN_36XX },
-       { .div = 15, .val = 15, .flags = RATE_IN_36XX },
-       { .div = 16, .val = 16, .flags = RATE_IN_36XX },
+static const struct clksel_rate dpll4_rates[] = {
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
+       { .div = 3, .val = 3, .flags = RATE_IN_3XXX },
+       { .div = 4, .val = 4, .flags = RATE_IN_3XXX },
+       { .div = 5, .val = 5, .flags = RATE_IN_3XXX },
+       { .div = 6, .val = 6, .flags = RATE_IN_3XXX },
+       { .div = 7, .val = 7, .flags = RATE_IN_3XXX },
+       { .div = 8, .val = 8, .flags = RATE_IN_3XXX },
+       { .div = 9, .val = 9, .flags = RATE_IN_3XXX },
+       { .div = 10, .val = 10, .flags = RATE_IN_3XXX },
+       { .div = 11, .val = 11, .flags = RATE_IN_3XXX },
+       { .div = 12, .val = 12, .flags = RATE_IN_3XXX },
+       { .div = 13, .val = 13, .flags = RATE_IN_3XXX },
+       { .div = 14, .val = 14, .flags = RATE_IN_3XXX },
+       { .div = 15, .val = 15, .flags = RATE_IN_3XXX },
+       { .div = 16, .val = 16, .flags = RATE_IN_3XXX },
        { .div = 17, .val = 17, .flags = RATE_IN_36XX },
        { .div = 18, .val = 18, .flags = RATE_IN_36XX },
        { .div = 19, .val = 19, .flags = RATE_IN_36XX },
@@ -450,37 +450,37 @@ static struct clk dpll3_x2_ck = {
 };
 
 static const struct clksel_rate div31_dpll3_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 2, .val = 2, .flags = RATE_IN_343X },
-       { .div = 3, .val = 3, .flags = RATE_IN_3430ES2 },
-       { .div = 4, .val = 4, .flags = RATE_IN_3430ES2 },
-       { .div = 5, .val = 5, .flags = RATE_IN_3430ES2 },
-       { .div = 6, .val = 6, .flags = RATE_IN_3430ES2 },
-       { .div = 7, .val = 7, .flags = RATE_IN_3430ES2 },
-       { .div = 8, .val = 8, .flags = RATE_IN_3430ES2 },
-       { .div = 9, .val = 9, .flags = RATE_IN_3430ES2 },
-       { .div = 10, .val = 10, .flags = RATE_IN_3430ES2 },
-       { .div = 11, .val = 11, .flags = RATE_IN_3430ES2 },
-       { .div = 12, .val = 12, .flags = RATE_IN_3430ES2 },
-       { .div = 13, .val = 13, .flags = RATE_IN_3430ES2 },
-       { .div = 14, .val = 14, .flags = RATE_IN_3430ES2 },
-       { .div = 15, .val = 15, .flags = RATE_IN_3430ES2 },
-       { .div = 16, .val = 16, .flags = RATE_IN_3430ES2 },
-       { .div = 17, .val = 17, .flags = RATE_IN_3430ES2 },
-       { .div = 18, .val = 18, .flags = RATE_IN_3430ES2 },
-       { .div = 19, .val = 19, .flags = RATE_IN_3430ES2 },
-       { .div = 20, .val = 20, .flags = RATE_IN_3430ES2 },
-       { .div = 21, .val = 21, .flags = RATE_IN_3430ES2 },
-       { .div = 22, .val = 22, .flags = RATE_IN_3430ES2 },
-       { .div = 23, .val = 23, .flags = RATE_IN_3430ES2 },
-       { .div = 24, .val = 24, .flags = RATE_IN_3430ES2 },
-       { .div = 25, .val = 25, .flags = RATE_IN_3430ES2 },
-       { .div = 26, .val = 26, .flags = RATE_IN_3430ES2 },
-       { .div = 27, .val = 27, .flags = RATE_IN_3430ES2 },
-       { .div = 28, .val = 28, .flags = RATE_IN_3430ES2 },
-       { .div = 29, .val = 29, .flags = RATE_IN_3430ES2 },
-       { .div = 30, .val = 30, .flags = RATE_IN_3430ES2 },
-       { .div = 31, .val = 31, .flags = RATE_IN_3430ES2 },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
+       { .div = 3, .val = 3, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 4, .val = 4, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 5, .val = 5, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 6, .val = 6, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 7, .val = 7, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 8, .val = 8, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 9, .val = 9, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 10, .val = 10, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 11, .val = 11, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 12, .val = 12, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 13, .val = 13, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 14, .val = 14, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 15, .val = 15, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 16, .val = 16, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 17, .val = 17, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 18, .val = 18, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 19, .val = 19, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 20, .val = 20, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 21, .val = 21, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 22, .val = 22, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 23, .val = 23, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 24, .val = 24, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 25, .val = 25, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 26, .val = 26, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 27, .val = 27, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 28, .val = 28, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 29, .val = 29, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 30, .val = 30, .flags = RATE_IN_3430ES2PLUS },
+       { .div = 31, .val = 31, .flags = RATE_IN_3430ES2PLUS },
        { .div = 0 },
 };
 
@@ -562,6 +562,7 @@ static struct clk emu_core_alwon_ck = {
 /* Supplies 96MHz, 54Mhz TV DAC, DSS fclk, CAM sensor clock, emul trace clk */
 /* Type: DPLL */
 static struct dpll_data dpll4_dd;
+
 static struct dpll_data dpll4_dd_34xx __initdata = {
        .mult_div1_reg  = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL2),
        .mult_mask      = OMAP3430_PERIPH_DPLL_MULT_MASK,
@@ -632,39 +633,20 @@ static struct clk dpll4_x2_ck = {
        .recalc         = &omap3_clkoutx2_recalc,
 };
 
-static const struct clksel div16_dpll4_clksel[] = {
-       { .parent = &dpll4_ck, .rates = div16_dpll_rates },
-       { .parent = NULL }
-};
-
-static const struct clksel div32_dpll4_clksel[] = {
-       { .parent = &dpll4_ck, .rates = div32_dpll4_rates_3630 },
+static const struct clksel dpll4_clksel[] = {
+       { .parent = &dpll4_ck, .rates = dpll4_rates },
        { .parent = NULL }
 };
 
 /* This virtual clock is the source for dpll4_m2x2_ck */
-static struct clk dpll4_m2_ck;
-
-static struct clk dpll4_m2_ck_34xx __initdata = {
-       .name           = "dpll4_m2_ck",
-       .ops            = &clkops_null,
-       .parent         = &dpll4_ck,
-       .init           = &omap2_init_clksel_parent,
-       .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, OMAP3430_CM_CLKSEL3),
-       .clksel_mask    = OMAP3430_DIV_96M_MASK,
-       .clksel         = div16_dpll4_clksel,
-       .clkdm_name     = "dpll4_clkdm",
-       .recalc         = &omap2_clksel_recalc,
-};
-
-static struct clk dpll4_m2_ck_3630 __initdata  = {
+static struct clk dpll4_m2_ck = {
        .name           = "dpll4_m2_ck",
        .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, OMAP3430_CM_CLKSEL3),
        .clksel_mask    = OMAP3630_DIV_96M_MASK,
-       .clksel         = div32_dpll4_clksel,
+       .clksel         = dpll4_clksel,
        .clkdm_name     = "dpll4_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -698,7 +680,7 @@ static struct clk omap_192m_alwon_fck = {
 
 static const struct clksel_rate omap_96m_alwon_fck_rates[] = {
        { .div = 1, .val = 1, .flags = RATE_IN_36XX },
-       { .div = 2, .val = 2, .flags = RATE_IN_36XX | DEFAULT_RATE },
+       { .div = 2, .val = 2, .flags = RATE_IN_36XX },
        { .div = 0 }
 };
 
@@ -708,12 +690,12 @@ static const struct clksel omap_96m_alwon_fck_clksel[] = {
 };
 
 static const struct clksel_rate omap_96m_dpll_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate omap_96m_sys_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
@@ -760,28 +742,14 @@ static struct clk omap_96m_fck = {
 };
 
 /* This virtual clock is the source for dpll4_m3x2_ck */
-static struct clk dpll4_m3_ck;
-
-static struct clk dpll4_m3_ck_34xx __initdata = {
+static struct clk dpll4_m3_ck = {
        .name           = "dpll4_m3_ck",
        .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP3430_CLKSEL_TV_MASK,
-       .clksel         = div16_dpll4_clksel,
-       .clkdm_name     = "dpll4_clkdm",
-       .recalc         = &omap2_clksel_recalc,
-};
-
-static struct clk dpll4_m3_ck_3630 __initdata = {
-       .name           = "dpll4_m3_ck",
-       .ops            = &clkops_null,
-       .parent         = &dpll4_ck,
-       .init           = &omap2_init_clksel_parent,
-       .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL),
-       .clksel_mask    = OMAP3630_CLKSEL_TV_MASK,
-       .clksel         = div32_dpll4_clksel,
+       .clksel         = dpll4_clksel,
        .clkdm_name     = "dpll4_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -799,12 +767,12 @@ static struct clk dpll4_m3x2_ck = {
 };
 
 static const struct clksel_rate omap_54m_d4m3x2_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate omap_54m_alt_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
@@ -825,12 +793,12 @@ static struct clk omap_54m_fck = {
 };
 
 static const struct clksel_rate omap_48m_cm96m_rates[] = {
-       { .div = 2, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 2, .val = 0, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate omap_48m_alt_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
@@ -858,31 +826,15 @@ static struct clk omap_12m_fck = {
        .recalc         = &omap_fixed_divisor_recalc,
 };
 
-/* This virstual clock is the source for dpll4_m4x2_ck */
-static struct clk dpll4_m4_ck;
-
-static struct clk dpll4_m4_ck_34xx __initdata = {
+/* This virtual clock is the source for dpll4_m4x2_ck */
+static struct clk dpll4_m4_ck = {
        .name           = "dpll4_m4_ck",
        .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP3430_CLKSEL_DSS1_MASK,
-       .clksel         = div16_dpll4_clksel,
-       .clkdm_name     = "dpll4_clkdm",
-       .recalc         = &omap2_clksel_recalc,
-       .set_rate       = &omap2_clksel_set_rate,
-       .round_rate     = &omap2_clksel_round_rate,
-};
-
-static struct clk dpll4_m4_ck_3630 __initdata = {
-       .name           = "dpll4_m4_ck",
-       .ops            = &clkops_null,
-       .parent         = &dpll4_ck,
-       .init           = &omap2_init_clksel_parent,
-       .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL),
-       .clksel_mask    = OMAP3630_CLKSEL_DSS1_MASK,
-       .clksel         = div32_dpll4_clksel,
+       .clksel         = dpll4_clksel,
        .clkdm_name     = "dpll4_clkdm",
        .recalc         = &omap2_clksel_recalc,
        .set_rate       = &omap2_clksel_set_rate,
@@ -902,30 +854,14 @@ static struct clk dpll4_m4x2_ck = {
 };
 
 /* This virtual clock is the source for dpll4_m5x2_ck */
-static struct clk dpll4_m5_ck;
-
-static struct clk dpll4_m5_ck_34xx __initdata = {
+static struct clk dpll4_m5_ck = {
        .name           = "dpll4_m5_ck",
        .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP3430_CLKSEL_CAM_MASK,
-       .clksel         = div16_dpll4_clksel,
-       .clkdm_name     = "dpll4_clkdm",
-       .set_rate       = &omap2_clksel_set_rate,
-       .round_rate     = &omap2_clksel_round_rate,
-       .recalc         = &omap2_clksel_recalc,
-};
-
-static struct clk dpll4_m5_ck_3630 __initdata = {
-       .name           = "dpll4_m5_ck",
-       .ops            = &clkops_null,
-       .parent         = &dpll4_ck,
-       .init           = &omap2_init_clksel_parent,
-       .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_CLKSEL),
-       .clksel_mask    = OMAP3630_CLKSEL_CAM_MASK,
-       .clksel         = div32_dpll4_clksel,
+       .clksel         = dpll4_clksel,
        .clkdm_name     = "dpll4_clkdm",
        .set_rate       = &omap2_clksel_set_rate,
        .round_rate     = &omap2_clksel_round_rate,
@@ -945,28 +881,14 @@ static struct clk dpll4_m5x2_ck = {
 };
 
 /* This virtual clock is the source for dpll4_m6x2_ck */
-static struct clk dpll4_m6_ck;
-
-static struct clk dpll4_m6_ck_34xx __initdata = {
+static struct clk dpll4_m6_ck = {
        .name           = "dpll4_m6_ck",
        .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_DIV_DPLL4_MASK,
-       .clksel         = div16_dpll4_clksel,
-       .clkdm_name     = "dpll4_clkdm",
-       .recalc         = &omap2_clksel_recalc,
-};
-
-static struct clk dpll4_m6_ck_3630 __initdata = {
-       .name           = "dpll4_m6_ck",
-       .ops            = &clkops_null,
-       .parent         = &dpll4_ck,
-       .init           = &omap2_init_clksel_parent,
-       .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
-       .clksel_mask    = OMAP3630_DIV_DPLL4_MASK,
-       .clksel         = div32_dpll4_clksel,
+       .clksel         = dpll4_clksel,
        .clkdm_name     = "dpll4_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -1049,22 +971,22 @@ static struct clk dpll5_m2_ck = {
 /* CM EXTERNAL CLOCK OUTPUTS */
 
 static const struct clksel_rate clkout2_src_core_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate clkout2_src_sys_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate clkout2_src_96m_rates[] = {
-       { .div = 1, .val = 2, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 2, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate clkout2_src_54m_rates[] = {
-       { .div = 1, .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 3, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
@@ -1090,11 +1012,11 @@ static struct clk clkout2_src_ck = {
 };
 
 static const struct clksel_rate sys_clkout2_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 2, .val = 1, .flags = RATE_IN_343X },
-       { .div = 4, .val = 2, .flags = RATE_IN_343X },
-       { .div = 8, .val = 3, .flags = RATE_IN_343X },
-       { .div = 16, .val = 4, .flags = RATE_IN_343X },
+       { .div = 1, .val = 0, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 4, .val = 2, .flags = RATE_IN_3XXX },
+       { .div = 8, .val = 3, .flags = RATE_IN_3XXX },
+       { .div = 16, .val = 4, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
@@ -1111,6 +1033,8 @@ static struct clk sys_clkout2 = {
        .clksel_mask    = OMAP3430_CLKOUT2_DIV_MASK,
        .clksel         = sys_clkout2_clksel,
        .recalc         = &omap2_clksel_recalc,
+       .round_rate     = &omap2_clksel_round_rate,
+       .set_rate       = &omap2_clksel_set_rate
 };
 
 /* CM OUTPUT CLOCKS */
@@ -1125,9 +1049,9 @@ static struct clk corex2_fck = {
 /* DPLL power domain clock controls */
 
 static const struct clksel_rate div4_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 2, .val = 2, .flags = RATE_IN_343X },
-       { .div = 4, .val = 4, .flags = RATE_IN_343X },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
+       { .div = 4, .val = 4, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
@@ -1161,8 +1085,8 @@ static struct clk mpu_ck = {
 
 /* arm_fck is divided by two when DPLL1 locked; otherwise, passthrough mpu_ck */
 static const struct clksel_rate arm_fck_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 2, .val = 1, .flags = RATE_IN_343X },
+       { .div = 1, .val = 0, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 1, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
@@ -1333,25 +1257,25 @@ static struct clk gfx_cg2_ck = {
 
 static const struct clksel_rate sgx_core_rates[] = {
        { .div = 2, .val = 5, .flags = RATE_IN_36XX },
-       { .div = 3, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 4, .val = 1, .flags = RATE_IN_343X },
-       { .div = 6, .val = 2, .flags = RATE_IN_343X },
+       { .div = 3, .val = 0, .flags = RATE_IN_3XXX },
+       { .div = 4, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 6, .val = 2, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
 static const struct clksel_rate sgx_192m_rates[] = {
-       { .div = 1,  .val = 4, .flags = RATE_IN_36XX | DEFAULT_RATE },
+       { .div = 1,  .val = 4, .flags = RATE_IN_36XX },
        { .div = 0 },
 };
 
 static const struct clksel_rate sgx_corex2_rates[] = {
-       { .div = 3, .val = 6, .flags = RATE_IN_36XX | DEFAULT_RATE },
+       { .div = 3, .val = 6, .flags = RATE_IN_36XX },
        { .div = 5, .val = 7, .flags = RATE_IN_36XX },
        { .div = 0 },
 };
 
 static const struct clksel_rate sgx_96m_rates[] = {
-       { .div = 1,  .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1,  .val = 3, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
@@ -1576,12 +1500,12 @@ static struct clk i2c1_fck = {
  * MCBSP 2, 3, 4 get their 96MHz clock from per_96m_fck.
  */
 static const struct clksel_rate common_mcbsp_96m_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
 static const struct clksel_rate common_mcbsp_mcbsp_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
@@ -1714,12 +1638,12 @@ static struct clk hdq_fck = {
 /* DPLL3-derived clock */
 
 static const struct clksel_rate ssi_ssr_corex2_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 2, .val = 2, .flags = RATE_IN_343X },
-       { .div = 3, .val = 3, .flags = RATE_IN_343X },
-       { .div = 4, .val = 4, .flags = RATE_IN_343X },
-       { .div = 6, .val = 6, .flags = RATE_IN_343X },
-       { .div = 8, .val = 8, .flags = RATE_IN_343X },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
+       { .div = 3, .val = 3, .flags = RATE_IN_3XXX },
+       { .div = 4, .val = 4, .flags = RATE_IN_3XXX },
+       { .div = 6, .val = 6, .flags = RATE_IN_3XXX },
+       { .div = 8, .val = 8, .flags = RATE_IN_3XXX },
        { .div = 0 }
 };
 
@@ -2353,18 +2277,18 @@ static struct clk usbhost_ick = {
 /* WKUP */
 
 static const struct clksel_rate usim_96m_rates[] = {
-       { .div = 2,  .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 4,  .val = 4, .flags = RATE_IN_343X },
-       { .div = 8,  .val = 5, .flags = RATE_IN_343X },
-       { .div = 10, .val = 6, .flags = RATE_IN_343X },
+       { .div = 2,  .val = 3, .flags = RATE_IN_3XXX },
+       { .div = 4,  .val = 4, .flags = RATE_IN_3XXX },
+       { .div = 8,  .val = 5, .flags = RATE_IN_3XXX },
+       { .div = 10, .val = 6, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
 static const struct clksel_rate usim_120m_rates[] = {
-       { .div = 4,  .val = 7,  .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 8,  .val = 8,  .flags = RATE_IN_343X },
-       { .div = 16, .val = 9,  .flags = RATE_IN_343X },
-       { .div = 20, .val = 10, .flags = RATE_IN_343X },
+       { .div = 4,  .val = 7,  .flags = RATE_IN_3XXX },
+       { .div = 8,  .val = 8,  .flags = RATE_IN_3XXX },
+       { .div = 16, .val = 9,  .flags = RATE_IN_3XXX },
+       { .div = 20, .val = 10, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
@@ -2951,22 +2875,22 @@ static struct clk mcbsp4_fck = {
 /* More information: ARM Cortex-A8 Technical Reference Manual, sect 10.1 */
 
 static const struct clksel_rate emu_src_sys_rates[] = {
-       { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 0, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
 static const struct clksel_rate emu_src_core_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
 static const struct clksel_rate emu_src_per_rates[] = {
-       { .div = 1, .val = 2, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 2, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
 static const struct clksel_rate emu_src_mpu_rates[] = {
-       { .div = 1, .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 1, .val = 3, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
@@ -2995,10 +2919,10 @@ static struct clk emu_src_ck = {
 };
 
 static const struct clksel_rate pclk_emu_rates[] = {
-       { .div = 2, .val = 2, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 3, .val = 3, .flags = RATE_IN_343X },
-       { .div = 4, .val = 4, .flags = RATE_IN_343X },
-       { .div = 6, .val = 6, .flags = RATE_IN_343X },
+       { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
+       { .div = 3, .val = 3, .flags = RATE_IN_3XXX },
+       { .div = 4, .val = 4, .flags = RATE_IN_3XXX },
+       { .div = 6, .val = 6, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
@@ -3019,9 +2943,9 @@ static struct clk pclk_fck = {
 };
 
 static const struct clksel_rate pclkx2_emu_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 2, .val = 2, .flags = RATE_IN_343X },
-       { .div = 3, .val = 3, .flags = RATE_IN_343X },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
+       { .div = 3, .val = 3, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
@@ -3069,9 +2993,9 @@ static struct clk traceclk_src_fck = {
 };
 
 static const struct clksel_rate traceclk_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
-       { .div = 2, .val = 2, .flags = RATE_IN_343X },
-       { .div = 4, .val = 4, .flags = RATE_IN_343X },
+       { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
+       { .div = 2, .val = 2, .flags = RATE_IN_3XXX },
+       { .div = 4, .val = 4, .flags = RATE_IN_3XXX },
        { .div = 0 },
 };
 
@@ -3472,8 +3396,8 @@ static struct omap_clk omap3xxx_clks[] = {
        CLK(NULL,       "ipss_ick",     &ipss_ick,      CK_AM35XX),
        CLK(NULL,       "rmii_ck",      &rmii_ck,       CK_AM35XX),
        CLK(NULL,       "pclk_ck",      &pclk_ck,       CK_AM35XX),
-       CLK("davinci_emac",     "ick",          &emac_ick,      CK_AM35XX),
-       CLK("davinci_emac",     "fck",          &emac_fck,      CK_AM35XX),
+       CLK("davinci_emac",     "emac_clk",     &emac_ick,      CK_AM35XX),
+       CLK("davinci_emac",     "phy_clk",      &emac_fck,      CK_AM35XX),
        CLK("vpfe-capture",     "master",       &vpfe_ick,      CK_AM35XX),
        CLK("vpfe-capture",     "slave",        &vpfe_fck,      CK_AM35XX),
        CLK("musb_hdrc",        "ick",          &hsotgusb_ick_am35xx,   CK_AM35XX),
@@ -3488,14 +3412,8 @@ int __init omap3xxx_clk_init(void)
        struct omap_clk *c;
        u32 cpu_clkflg = CK_3XXX;
 
-       if (cpu_is_omap3517()) {
-               cpu_mask = RATE_IN_343X | RATE_IN_3430ES2;
-               cpu_clkflg |= CK_3517;
-       } else if (cpu_is_omap3505()) {
-               cpu_mask = RATE_IN_343X | RATE_IN_3430ES2;
-               cpu_clkflg |= CK_3505;
-       } else if (cpu_is_omap34xx()) {
-               cpu_mask = RATE_IN_343X;
+       if (cpu_is_omap34xx()) {
+               cpu_mask = RATE_IN_3XXX;
                cpu_clkflg |= CK_343X;
 
                /*
@@ -3506,10 +3424,17 @@ int __init omap3xxx_clk_init(void)
                        /* No 3430ES1-only rates exist, so no RATE_IN_3430ES1 */
                        cpu_clkflg |= CK_3430ES1;
                } else {
-                       cpu_mask |= RATE_IN_3430ES2;
+                       cpu_mask |= RATE_IN_3430ES2PLUS;
                        cpu_clkflg |= CK_3430ES2;
                }
+       } else if (cpu_is_omap3517()) {
+               cpu_mask = RATE_IN_3XXX | RATE_IN_3430ES2PLUS;
+               cpu_clkflg |= CK_3517;
+       } else if (cpu_is_omap3505()) {
+               cpu_mask = RATE_IN_3XXX | RATE_IN_3430ES2PLUS;
+               cpu_clkflg |= CK_3505;
        }
+
        if (omap3_has_192mhz_clk())
                omap_96m_alwon_fck = omap_96m_alwon_fck_3630;
 
@@ -3520,14 +3445,7 @@ int __init omap3xxx_clk_init(void)
                /*
                 * XXX This type of dynamic rewriting of the clock tree is
                 * deprecated and should be revised soon.
-                */
-               dpll4_m2_ck = dpll4_m2_ck_3630;
-               dpll4_m3_ck = dpll4_m3_ck_3630;
-               dpll4_m4_ck = dpll4_m4_ck_3630;
-               dpll4_m5_ck = dpll4_m5_ck_3630;
-               dpll4_m6_ck = dpll4_m6_ck_3630;
-
-               /*
+                *
                 * For 3630: override clkops_omap2_dflt_wait for the
                 * clocks affected from PWRDN reset Limitation
                 */
@@ -3543,18 +3461,12 @@ int __init omap3xxx_clk_init(void)
                                &clkops_omap36xx_pwrdn_with_hsdiv_wait_restore;
                dpll4_m6x2_ck.ops =
                                &clkops_omap36xx_pwrdn_with_hsdiv_wait_restore;
-       } else {
-               /*
-                * XXX This type of dynamic rewriting of the clock tree is
-                * deprecated and should be revised soon.
-                */
-               dpll4_m2_ck = dpll4_m2_ck_34xx;
-               dpll4_m3_ck = dpll4_m3_ck_34xx;
-               dpll4_m4_ck = dpll4_m4_ck_34xx;
-               dpll4_m5_ck = dpll4_m5_ck_34xx;
-               dpll4_m6_ck = dpll4_m6_ck_34xx;
        }
 
+       /*
+        * XXX This type of dynamic rewriting of the clock tree is
+        * deprecated and should be revised soon.
+        */
        if (cpu_is_omap3630())
                dpll4_dd = dpll4_dd_3630;
        else
index a5c0c9c..0280422 100644 (file)
@@ -2675,6 +2675,11 @@ static struct omap_clk omap44xx_clks[] = {
        CLK("omap2_mcspi.2",    "ick",                  &dummy_ck,      CK_443X),
        CLK("omap2_mcspi.3",    "ick",                  &dummy_ck,      CK_443X),
        CLK("omap2_mcspi.4",    "ick",                  &dummy_ck,      CK_443X),
+       CLK("mmci-omap-hs.0",   "ick",          &dummy_ck,      CK_443X),
+       CLK("mmci-omap-hs.1",   "ick",          &dummy_ck,      CK_443X),
+       CLK("mmci-omap-hs.2",   "ick",          &dummy_ck,      CK_443X),
+       CLK("mmci-omap-hs.3",   "ick",          &dummy_ck,      CK_443X),
+       CLK("mmci-omap-hs.4",   "ick",          &dummy_ck,      CK_443X),
        CLK(NULL,       "uart1_ick",                    &dummy_ck,      CK_443X),
        CLK(NULL,       "uart2_ick",                    &dummy_ck,      CK_443X),
        CLK(NULL,       "uart3_ick",                    &dummy_ck,      CK_443X),
index f69096b..1cf8131 100644 (file)
 
 /* clksel_rate data common to 24xx/343x */
 const struct clksel_rate gpt_32k_rates[] = {
-        { .div = 1, .val = 0, .flags = RATE_IN_24XX | RATE_IN_343X | DEFAULT_RATE },
+        { .div = 1, .val = 0, .flags = RATE_IN_24XX | RATE_IN_3XXX },
         { .div = 0 }
 };
 
 const struct clksel_rate gpt_sys_rates[] = {
-        { .div = 1, .val = 1, .flags = RATE_IN_24XX | RATE_IN_343X | DEFAULT_RATE },
+        { .div = 1, .val = 1, .flags = RATE_IN_24XX | RATE_IN_3XXX },
         { .div = 0 }
 };
 
 const struct clksel_rate gfx_l3_rates[] = {
-       { .div = 1, .val = 1, .flags = RATE_IN_24XX | RATE_IN_343X },
-       { .div = 2, .val = 2, .flags = RATE_IN_24XX | RATE_IN_343X | DEFAULT_RATE },
-       { .div = 3, .val = 3, .flags = RATE_IN_243X | RATE_IN_343X },
-       { .div = 4, .val = 4, .flags = RATE_IN_243X | RATE_IN_343X },
+       { .div = 1, .val = 1, .flags = RATE_IN_24XX | RATE_IN_3XXX },
+       { .div = 2, .val = 2, .flags = RATE_IN_24XX | RATE_IN_3XXX },
+       { .div = 3, .val = 3, .flags = RATE_IN_243X | RATE_IN_3XXX },
+       { .div = 4, .val = 4, .flags = RATE_IN_243X | RATE_IN_3XXX },
        { .div = 0 }
 };
 
index 6e568ec..5d80cb8 100644 (file)
@@ -809,7 +809,7 @@ int omap2_clkdm_sleep(struct clockdomain *clkdm)
 
        if (cpu_is_omap24xx()) {
 
-               cm_set_mod_reg_bits(OMAP24XX_FORCESTATE,
+               cm_set_mod_reg_bits(OMAP24XX_FORCESTATE_MASK,
                            clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
 
        } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
@@ -853,7 +853,7 @@ int omap2_clkdm_wakeup(struct clockdomain *clkdm)
 
        if (cpu_is_omap24xx()) {
 
-               cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE,
+               cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE_MASK,
                              clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
 
        } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
index 438aaee..7e5ba0f 100644 (file)
@@ -131,7 +131,7 @@ static struct clockdomain mpuss_44xx_clkdm = {
 static struct clockdomain mpu0_44xx_clkdm = {
        .name             = "mpu0_clkdm",
        .pwrdm            = { .name = "cpu0_pwrdm" },
-       .clkstctrl_reg    = OMAP4430_CM_PDA_CPU0_CLKSTCTRL,
+       .clkstctrl_reg    = OMAP4430_CM_CPU0_CLKSTCTRL,
        .clktrctrl_mask   = OMAP4430_CLKTRCTRL_MASK,
        .flags            = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
        .omap_chip        = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
@@ -140,7 +140,7 @@ static struct clockdomain mpu0_44xx_clkdm = {
 static struct clockdomain mpu1_44xx_clkdm = {
        .name             = "mpu1_clkdm",
        .pwrdm            = { .name = "cpu1_pwrdm" },
-       .clkstctrl_reg    = OMAP4430_CM_PDA_CPU1_CLKSTCTRL,
+       .clkstctrl_reg    = OMAP4430_CM_CPU1_CLKSTCTRL,
        .clktrctrl_mask   = OMAP4430_CLKTRCTRL_MASK,
        .flags            = CLKDM_CAN_FORCE_WAKEUP | CLKDM_CAN_HWSUP,
        .omap_chip        = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
index 297a2fe..da51cc3 100644 (file)
 
 /* CM_FCLKEN1_CORE and CM_ICLKEN1_CORE shared bits */
 #define OMAP24XX_EN_CAM_SHIFT                          31
-#define OMAP24XX_EN_CAM                                        (1 << 31)
+#define OMAP24XX_EN_CAM_MASK                           (1 << 31)
 #define OMAP24XX_EN_WDT4_SHIFT                         29
-#define OMAP24XX_EN_WDT4                               (1 << 29)
+#define OMAP24XX_EN_WDT4_MASK                          (1 << 29)
 #define OMAP2420_EN_WDT3_SHIFT                         28
-#define OMAP2420_EN_WDT3                               (1 << 28)
+#define OMAP2420_EN_WDT3_MASK                          (1 << 28)
 #define OMAP24XX_EN_MSPRO_SHIFT                                27
-#define OMAP24XX_EN_MSPRO                              (1 << 27)
+#define OMAP24XX_EN_MSPRO_MASK                         (1 << 27)
 #define OMAP24XX_EN_FAC_SHIFT                          25
-#define OMAP24XX_EN_FAC                                        (1 << 25)
+#define OMAP24XX_EN_FAC_MASK                           (1 << 25)
 #define OMAP2420_EN_EAC_SHIFT                          24
-#define OMAP2420_EN_EAC                                        (1 << 24)
+#define OMAP2420_EN_EAC_MASK                           (1 << 24)
 #define OMAP24XX_EN_HDQ_SHIFT                          23
-#define OMAP24XX_EN_HDQ                                        (1 << 23)
+#define OMAP24XX_EN_HDQ_MASK                           (1 << 23)
 #define OMAP2420_EN_I2C2_SHIFT                         20
-#define OMAP2420_EN_I2C2                               (1 << 20)
+#define OMAP2420_EN_I2C2_MASK                          (1 << 20)
 #define OMAP2420_EN_I2C1_SHIFT                         19
-#define OMAP2420_EN_I2C1                               (1 << 19)
+#define OMAP2420_EN_I2C1_MASK                          (1 << 19)
 
 /* CM_FCLKEN2_CORE and CM_ICLKEN2_CORE shared bits */
 #define OMAP2430_EN_MCBSP5_SHIFT                       5
-#define OMAP2430_EN_MCBSP5                             (1 << 5)
+#define OMAP2430_EN_MCBSP5_MASK                                (1 << 5)
 #define OMAP2430_EN_MCBSP4_SHIFT                       4
-#define OMAP2430_EN_MCBSP4                             (1 << 4)
+#define OMAP2430_EN_MCBSP4_MASK                                (1 << 4)
 #define OMAP2430_EN_MCBSP3_SHIFT                       3
-#define OMAP2430_EN_MCBSP3                             (1 << 3)
+#define OMAP2430_EN_MCBSP3_MASK                                (1 << 3)
 #define OMAP24XX_EN_SSI_SHIFT                          1
-#define OMAP24XX_EN_SSI                                        (1 << 1)
+#define OMAP24XX_EN_SSI_MASK                           (1 << 1)
 
 /* CM_FCLKEN_WKUP and CM_ICLKEN_WKUP shared bits */
 #define OMAP24XX_EN_MPU_WDT_SHIFT                      3
-#define OMAP24XX_EN_MPU_WDT                            (1 << 3)
+#define OMAP24XX_EN_MPU_WDT_MASK                       (1 << 3)
 
 /* Bits specific to each register */
 
 /* CM_IDLEST_MPU */
 /* 2430 only */
-#define OMAP2430_ST_MPU                                        (1 << 0)
+#define OMAP2430_ST_MPU_MASK                           (1 << 0)
 
 /* CM_CLKSEL_MPU */
 #define OMAP24XX_CLKSEL_MPU_SHIFT                      0
 
 /* CM_FCLKEN1_CORE specific bits*/
 #define OMAP24XX_EN_TV_SHIFT                           2
-#define OMAP24XX_EN_TV                                 (1 << 2)
+#define OMAP24XX_EN_TV_MASK                            (1 << 2)
 #define OMAP24XX_EN_DSS2_SHIFT                         1
-#define OMAP24XX_EN_DSS2                               (1 << 1)
+#define OMAP24XX_EN_DSS2_MASK                          (1 << 1)
 #define OMAP24XX_EN_DSS1_SHIFT                         0
-#define OMAP24XX_EN_DSS1                               (1 << 0)
+#define OMAP24XX_EN_DSS1_MASK                          (1 << 0)
 
 /* CM_FCLKEN2_CORE specific bits */
 #define OMAP2430_EN_I2CHS2_SHIFT                       20
-#define OMAP2430_EN_I2CHS2                             (1 << 20)
+#define OMAP2430_EN_I2CHS2_MASK                                (1 << 20)
 #define OMAP2430_EN_I2CHS1_SHIFT                       19
-#define OMAP2430_EN_I2CHS1                             (1 << 19)
+#define OMAP2430_EN_I2CHS1_MASK                                (1 << 19)
 #define OMAP2430_EN_MMCHSDB2_SHIFT                     17
-#define OMAP2430_EN_MMCHSDB2                           (1 << 17)
+#define OMAP2430_EN_MMCHSDB2_MASK                      (1 << 17)
 #define OMAP2430_EN_MMCHSDB1_SHIFT                     16
-#define OMAP2430_EN_MMCHSDB1                           (1 << 16)
+#define OMAP2430_EN_MMCHSDB1_MASK                      (1 << 16)
 
 /* CM_ICLKEN1_CORE specific bits */
 #define OMAP24XX_EN_MAILBOXES_SHIFT                    30
-#define OMAP24XX_EN_MAILBOXES                          (1 << 30)
+#define OMAP24XX_EN_MAILBOXES_MASK                     (1 << 30)
 #define OMAP24XX_EN_DSS_SHIFT                          0
-#define OMAP24XX_EN_DSS                                        (1 << 0)
+#define OMAP24XX_EN_DSS_MASK                           (1 << 0)
 
 /* CM_ICLKEN2_CORE specific bits */
 
 /* CM_ICLKEN3_CORE */
 /* 2430 only */
 #define OMAP2430_EN_SDRC_SHIFT                         2
-#define OMAP2430_EN_SDRC                               (1 << 2)
+#define OMAP2430_EN_SDRC_MASK                          (1 << 2)
 
 /* CM_ICLKEN4_CORE */
 #define OMAP24XX_EN_PKA_SHIFT                          4
-#define OMAP24XX_EN_PKA                                        (1 << 4)
+#define OMAP24XX_EN_PKA_MASK                           (1 << 4)
 #define OMAP24XX_EN_AES_SHIFT                          3
-#define OMAP24XX_EN_AES                                        (1 << 3)
+#define OMAP24XX_EN_AES_MASK                           (1 << 3)
 #define OMAP24XX_EN_RNG_SHIFT                          2
-#define OMAP24XX_EN_RNG                                        (1 << 2)
+#define OMAP24XX_EN_RNG_MASK                           (1 << 2)
 #define OMAP24XX_EN_SHA_SHIFT                          1
-#define OMAP24XX_EN_SHA                                        (1 << 1)
+#define OMAP24XX_EN_SHA_MASK                           (1 << 1)
 #define OMAP24XX_EN_DES_SHIFT                          0
-#define OMAP24XX_EN_DES                                        (1 << 0)
+#define OMAP24XX_EN_DES_MASK                           (1 << 0)
 
 /* CM_IDLEST1_CORE specific bits */
 #define OMAP24XX_ST_MAILBOXES_SHIFT                    30
 /* CM_IDLEST2_CORE */
 #define OMAP2430_ST_MCBSP5_SHIFT                       5
 #define OMAP2430_ST_MCBSP5_MASK                                (1 << 5)
-#define OMAP2430_ST_MCBSP4_SHIFT                               4
+#define OMAP2430_ST_MCBSP4_SHIFT                       4
 #define OMAP2430_ST_MCBSP4_MASK                                (1 << 4)
-#define OMAP2430_ST_MCBSP3_SHIFT                               3
+#define OMAP2430_ST_MCBSP3_SHIFT                       3
 #define OMAP2430_ST_MCBSP3_MASK                                (1 << 3)
 #define OMAP24XX_ST_SSI_SHIFT                          1
 #define OMAP24XX_ST_SSI_MASK                           (1 << 1)
 #define OMAP24XX_ST_DES_MASK                           (1 << 0)
 
 /* CM_AUTOIDLE1_CORE */
-#define OMAP24XX_AUTO_CAM                              (1 << 31)
-#define OMAP24XX_AUTO_MAILBOXES                                (1 << 30)
-#define OMAP24XX_AUTO_WDT4                             (1 << 29)
-#define OMAP2420_AUTO_WDT3                             (1 << 28)
-#define OMAP24XX_AUTO_MSPRO                            (1 << 27)
-#define OMAP2420_AUTO_MMC                              (1 << 26)
-#define OMAP24XX_AUTO_FAC                              (1 << 25)
-#define OMAP2420_AUTO_EAC                              (1 << 24)
-#define OMAP24XX_AUTO_HDQ                              (1 << 23)
-#define OMAP24XX_AUTO_UART2                            (1 << 22)
-#define OMAP24XX_AUTO_UART1                            (1 << 21)
-#define OMAP24XX_AUTO_I2C2                             (1 << 20)
-#define OMAP24XX_AUTO_I2C1                             (1 << 19)
-#define OMAP24XX_AUTO_MCSPI2                           (1 << 18)
-#define OMAP24XX_AUTO_MCSPI1                           (1 << 17)
-#define OMAP24XX_AUTO_MCBSP2                           (1 << 16)
-#define OMAP24XX_AUTO_MCBSP1                           (1 << 15)
-#define OMAP24XX_AUTO_GPT12                            (1 << 14)
-#define OMAP24XX_AUTO_GPT11                            (1 << 13)
-#define OMAP24XX_AUTO_GPT10                            (1 << 12)
-#define OMAP24XX_AUTO_GPT9                             (1 << 11)
-#define OMAP24XX_AUTO_GPT8                             (1 << 10)
-#define OMAP24XX_AUTO_GPT7                             (1 << 9)
-#define OMAP24XX_AUTO_GPT6                             (1 << 8)
-#define OMAP24XX_AUTO_GPT5                             (1 << 7)
-#define OMAP24XX_AUTO_GPT4                             (1 << 6)
-#define OMAP24XX_AUTO_GPT3                             (1 << 5)
-#define OMAP24XX_AUTO_GPT2                             (1 << 4)
-#define OMAP2420_AUTO_VLYNQ                            (1 << 3)
-#define OMAP24XX_AUTO_DSS                              (1 << 0)
+#define OMAP24XX_AUTO_CAM_MASK                         (1 << 31)
+#define OMAP24XX_AUTO_MAILBOXES_MASK                   (1 << 30)
+#define OMAP24XX_AUTO_WDT4_MASK                                (1 << 29)
+#define OMAP2420_AUTO_WDT3_MASK                                (1 << 28)
+#define OMAP24XX_AUTO_MSPRO_MASK                       (1 << 27)
+#define OMAP2420_AUTO_MMC_MASK                         (1 << 26)
+#define OMAP24XX_AUTO_FAC_MASK                         (1 << 25)
+#define OMAP2420_AUTO_EAC_MASK                         (1 << 24)
+#define OMAP24XX_AUTO_HDQ_MASK                         (1 << 23)
+#define OMAP24XX_AUTO_UART2_MASK                       (1 << 22)
+#define OMAP24XX_AUTO_UART1_MASK                       (1 << 21)
+#define OMAP24XX_AUTO_I2C2_MASK                                (1 << 20)
+#define OMAP24XX_AUTO_I2C1_MASK                                (1 << 19)
+#define OMAP24XX_AUTO_MCSPI2_MASK                      (1 << 18)
+#define OMAP24XX_AUTO_MCSPI1_MASK                      (1 << 17)
+#define OMAP24XX_AUTO_MCBSP2_MASK                      (1 << 16)
+#define OMAP24XX_AUTO_MCBSP1_MASK                      (1 << 15)
+#define OMAP24XX_AUTO_GPT12_MASK                       (1 << 14)
+#define OMAP24XX_AUTO_GPT11_MASK                       (1 << 13)
+#define OMAP24XX_AUTO_GPT10_MASK                       (1 << 12)
+#define OMAP24XX_AUTO_GPT9_MASK                                (1 << 11)
+#define OMAP24XX_AUTO_GPT8_MASK                                (1 << 10)
+#define OMAP24XX_AUTO_GPT7_MASK                                (1 << 9)
+#define OMAP24XX_AUTO_GPT6_MASK                                (1 << 8)
+#define OMAP24XX_AUTO_GPT5_MASK                                (1 << 7)
+#define OMAP24XX_AUTO_GPT4_MASK                                (1 << 6)
+#define OMAP24XX_AUTO_GPT3_MASK                                (1 << 5)
+#define OMAP24XX_AUTO_GPT2_MASK                                (1 << 4)
+#define OMAP2420_AUTO_VLYNQ_MASK                       (1 << 3)
+#define OMAP24XX_AUTO_DSS_MASK                         (1 << 0)
 
 /* CM_AUTOIDLE2_CORE */
-#define OMAP2430_AUTO_MDM_INTC                         (1 << 11)
-#define OMAP2430_AUTO_GPIO5                            (1 << 10)
-#define OMAP2430_AUTO_MCSPI3                           (1 << 9)
-#define OMAP2430_AUTO_MMCHS2                           (1 << 8)
-#define OMAP2430_AUTO_MMCHS1                           (1 << 7)
-#define OMAP2430_AUTO_USBHS                            (1 << 6)
-#define OMAP2430_AUTO_MCBSP5                           (1 << 5)
-#define OMAP2430_AUTO_MCBSP4                           (1 << 4)
-#define OMAP2430_AUTO_MCBSP3                           (1 << 3)
-#define OMAP24XX_AUTO_UART3                            (1 << 2)
-#define OMAP24XX_AUTO_SSI                              (1 << 1)
-#define OMAP24XX_AUTO_USB                              (1 << 0)
+#define OMAP2430_AUTO_MDM_INTC_MASK                    (1 << 11)
+#define OMAP2430_AUTO_GPIO5_MASK                       (1 << 10)
+#define OMAP2430_AUTO_MCSPI3_MASK                      (1 << 9)
+#define OMAP2430_AUTO_MMCHS2_MASK                      (1 << 8)
+#define OMAP2430_AUTO_MMCHS1_MASK                      (1 << 7)
+#define OMAP2430_AUTO_USBHS_MASK                       (1 << 6)
+#define OMAP2430_AUTO_MCBSP5_MASK                      (1 << 5)
+#define OMAP2430_AUTO_MCBSP4_MASK                      (1 << 4)
+#define OMAP2430_AUTO_MCBSP3_MASK                      (1 << 3)
+#define OMAP24XX_AUTO_UART3_MASK                       (1 << 2)
+#define OMAP24XX_AUTO_SSI_MASK                         (1 << 1)
+#define OMAP24XX_AUTO_USB_MASK                         (1 << 0)
 
 /* CM_AUTOIDLE3_CORE */
-#define OMAP24XX_AUTO_SDRC                             (1 << 2)
-#define OMAP24XX_AUTO_GPMC                             (1 << 1)
-#define OMAP24XX_AUTO_SDMA                             (1 << 0)
+#define OMAP24XX_AUTO_SDRC_MASK                                (1 << 2)
+#define OMAP24XX_AUTO_GPMC_MASK                                (1 << 1)
+#define OMAP24XX_AUTO_SDMA_MASK                                (1 << 0)
 
 /* CM_AUTOIDLE4_CORE */
-#define OMAP24XX_AUTO_PKA                              (1 << 4)
-#define OMAP24XX_AUTO_AES                              (1 << 3)
-#define OMAP24XX_AUTO_RNG                              (1 << 2)
-#define OMAP24XX_AUTO_SHA                              (1 << 1)
-#define OMAP24XX_AUTO_DES                              (1 << 0)
+#define OMAP24XX_AUTO_PKA_MASK                         (1 << 4)
+#define OMAP24XX_AUTO_AES_MASK                         (1 << 3)
+#define OMAP24XX_AUTO_RNG_MASK                         (1 << 2)
+#define OMAP24XX_AUTO_SHA_MASK                         (1 << 1)
+#define OMAP24XX_AUTO_DES_MASK                         (1 << 0)
 
 /* CM_CLKSEL1_CORE */
 #define OMAP24XX_CLKSEL_USB_SHIFT                      25
 
 /* CM_FCLKEN_GFX */
 #define OMAP24XX_EN_3D_SHIFT                           2
-#define OMAP24XX_EN_3D                                 (1 << 2)
+#define OMAP24XX_EN_3D_MASK                            (1 << 2)
 #define OMAP24XX_EN_2D_SHIFT                           1
-#define OMAP24XX_EN_2D                                 (1 << 1)
+#define OMAP24XX_EN_2D_MASK                            (1 << 1)
 
 /* CM_ICLKEN_GFX specific bits */
 
 
 /* CM_ICLKEN_WKUP specific bits */
 #define OMAP2430_EN_ICR_SHIFT                          6
-#define OMAP2430_EN_ICR                                        (1 << 6)
+#define OMAP2430_EN_ICR_MASK                           (1 << 6)
 #define OMAP24XX_EN_OMAPCTRL_SHIFT                     5
-#define OMAP24XX_EN_OMAPCTRL                           (1 << 5)
+#define OMAP24XX_EN_OMAPCTRL_MASK                      (1 << 5)
 #define OMAP24XX_EN_WDT1_SHIFT                         4
-#define OMAP24XX_EN_WDT1                               (1 << 4)
+#define OMAP24XX_EN_WDT1_MASK                          (1 << 4)
 #define OMAP24XX_EN_32KSYNC_SHIFT                      1
-#define OMAP24XX_EN_32KSYNC                            (1 << 1)
+#define OMAP24XX_EN_32KSYNC_MASK                       (1 << 1)
 
 /* CM_IDLEST_WKUP specific bits */
 #define OMAP2430_ST_ICR_SHIFT                          6
 #define OMAP24XX_ST_32KSYNC_MASK                       (1 << 1)
 
 /* CM_AUTOIDLE_WKUP */
-#define OMAP24XX_AUTO_OMAPCTRL                         (1 << 5)
-#define OMAP24XX_AUTO_WDT1                             (1 << 4)
-#define OMAP24XX_AUTO_MPU_WDT                          (1 << 3)
-#define OMAP24XX_AUTO_GPIOS                            (1 << 2)
-#define OMAP24XX_AUTO_32KSYNC                          (1 << 1)
-#define OMAP24XX_AUTO_GPT1                             (1 << 0)
+#define OMAP24XX_AUTO_OMAPCTRL_MASK                    (1 << 5)
+#define OMAP24XX_AUTO_WDT1_MASK                                (1 << 4)
+#define OMAP24XX_AUTO_MPU_WDT_MASK                     (1 << 3)
+#define OMAP24XX_AUTO_GPIOS_MASK                       (1 << 2)
+#define OMAP24XX_AUTO_32KSYNC_MASK                     (1 << 1)
+#define OMAP24XX_AUTO_GPT1_MASK                                (1 << 0)
 
 /* CM_CLKSEL_WKUP */
 #define OMAP24XX_CLKSEL_GPT1_SHIFT                     0
 #define OMAP24XX_EN_DPLL_MASK                          (0x3 << 0)
 
 /* CM_IDLEST_CKGEN */
-#define OMAP24XX_ST_54M_APLL                           (1 << 9)
-#define OMAP24XX_ST_96M_APLL                           (1 << 8)
-#define OMAP24XX_ST_54M_CLK                            (1 << 6)
-#define OMAP24XX_ST_12M_CLK                            (1 << 5)
-#define OMAP24XX_ST_48M_CLK                            (1 << 4)
-#define OMAP24XX_ST_96M_CLK                            (1 << 2)
+#define OMAP24XX_ST_54M_APLL_MASK                      (1 << 9)
+#define OMAP24XX_ST_96M_APLL_MASK                      (1 << 8)
+#define OMAP24XX_ST_54M_CLK_MASK                       (1 << 6)
+#define OMAP24XX_ST_12M_CLK_MASK                       (1 << 5)
+#define OMAP24XX_ST_48M_CLK_MASK                       (1 << 4)
+#define OMAP24XX_ST_96M_CLK_MASK                       (1 << 2)
 #define OMAP24XX_ST_CORE_CLK_SHIFT                     0
 #define OMAP24XX_ST_CORE_CLK_MASK                      (0x3 << 0)
 
 #define OMAP24XX_DPLL_DIV_SHIFT                                8
 #define OMAP24XX_DPLL_DIV_MASK                         (0xf << 8)
 #define OMAP24XX_54M_SOURCE_SHIFT                      5
-#define OMAP24XX_54M_SOURCE                            (1 << 5)
+#define OMAP24XX_54M_SOURCE_MASK                       (1 << 5)
 #define OMAP2430_96M_SOURCE_SHIFT                      4
-#define OMAP2430_96M_SOURCE                            (1 << 4)
+#define OMAP2430_96M_SOURCE_MASK                       (1 << 4)
 #define OMAP24XX_48M_SOURCE_SHIFT                      3
-#define OMAP24XX_48M_SOURCE                            (1 << 3)
+#define OMAP24XX_48M_SOURCE_MASK                       (1 << 3)
 #define OMAP2430_ALTCLK_SOURCE_SHIFT                   0
 #define OMAP2430_ALTCLK_SOURCE_MASK                    (0x7 << 0)
 
 
 /* CM_FCLKEN_DSP */
 #define OMAP2420_EN_IVA_COP_SHIFT                      10
-#define OMAP2420_EN_IVA_COP                            (1 << 10)
+#define OMAP2420_EN_IVA_COP_MASK                       (1 << 10)
 #define OMAP2420_EN_IVA_MPU_SHIFT                      8
-#define OMAP2420_EN_IVA_MPU                            (1 << 8)
+#define OMAP2420_EN_IVA_MPU_MASK                       (1 << 8)
 #define OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT            0
-#define OMAP24XX_CM_FCLKEN_DSP_EN_DSP                  (1 << 0)
+#define OMAP24XX_CM_FCLKEN_DSP_EN_DSP_MASK             (1 << 0)
 
 /* CM_ICLKEN_DSP */
 #define OMAP2420_EN_DSP_IPI_SHIFT                      1
-#define OMAP2420_EN_DSP_IPI                            (1 << 1)
+#define OMAP2420_EN_DSP_IPI_MASK                       (1 << 1)
 
 /* CM_IDLEST_DSP */
-#define OMAP2420_ST_IVA                                        (1 << 8)
-#define OMAP2420_ST_IPI                                        (1 << 1)
-#define OMAP24XX_ST_DSP                                        (1 << 0)
+#define OMAP2420_ST_IVA_MASK                           (1 << 8)
+#define OMAP2420_ST_IPI_MASK                           (1 << 1)
+#define OMAP24XX_ST_DSP_MASK                           (1 << 0)
 
 /* CM_AUTOIDLE_DSP */
-#define OMAP2420_AUTO_DSP_IPI                          (1 << 1)
+#define OMAP2420_AUTO_DSP_IPI_MASK                     (1 << 1)
 
 /* CM_CLKSEL_DSP */
-#define OMAP2420_SYNC_IVA                              (1 << 13)
+#define OMAP2420_SYNC_IVA_MASK                         (1 << 13)
 #define OMAP2420_CLKSEL_IVA_SHIFT                      8
 #define OMAP2420_CLKSEL_IVA_MASK                       (0x1f << 8)
-#define OMAP24XX_SYNC_DSP                              (1 << 7)
+#define OMAP24XX_SYNC_DSP_MASK                         (1 << 7)
 #define OMAP24XX_CLKSEL_DSP_IF_SHIFT                   5
 #define OMAP24XX_CLKSEL_DSP_IF_MASK                    (0x3 << 5)
 #define OMAP24XX_CLKSEL_DSP_SHIFT                      0
 /* CM_FCLKEN_MDM */
 /* 2430 only */
 #define OMAP2430_EN_OSC_SHIFT                          1
-#define OMAP2430_EN_OSC                                        (1 << 1)
+#define OMAP2430_EN_OSC_MASK                           (1 << 1)
 
 /* CM_ICLKEN_MDM */
 /* 2430 only */
 #define OMAP2430_CM_ICLKEN_MDM_EN_MDM_SHIFT            0
-#define OMAP2430_CM_ICLKEN_MDM_EN_MDM                  (1 << 0)
+#define OMAP2430_CM_ICLKEN_MDM_EN_MDM_MASK             (1 << 0)
 
 /* CM_IDLEST_MDM specific bits */
 /* 2430 only */
 
 /* CM_AUTOIDLE_MDM */
 /* 2430 only */
-#define OMAP2430_AUTO_OSC                              (1 << 1)
-#define OMAP2430_AUTO_MDM                              (1 << 0)
+#define OMAP2430_AUTO_OSC_MASK                         (1 << 1)
+#define OMAP2430_AUTO_MDM_MASK                         (1 << 0)
 
 /* CM_CLKSEL_MDM */
 /* 2430 only */
-#define OMAP2430_SYNC_MDM                              (1 << 4)
+#define OMAP2430_SYNC_MDM_MASK                         (1 << 4)
 #define OMAP2430_CLKSEL_MDM_SHIFT                      0
 #define OMAP2430_CLKSEL_MDM_MASK                       (0xf << 0)
 
index a3a3ca0..fe82b79 100644 (file)
 /* CM_FCLKEN1_CORE and CM_ICLKEN1_CORE shared bits */
 #define OMAP3430ES2_EN_MMC3_MASK                       (1 << 30)
 #define OMAP3430ES2_EN_MMC3_SHIFT                      30
-#define OMAP3430_EN_MSPRO                              (1 << 23)
+#define OMAP3430_EN_MSPRO_MASK                         (1 << 23)
 #define OMAP3430_EN_MSPRO_SHIFT                                23
-#define OMAP3430_EN_HDQ                                        (1 << 22)
+#define OMAP3430_EN_HDQ_MASK                           (1 << 22)
 #define OMAP3430_EN_HDQ_SHIFT                          22
-#define OMAP3430ES1_EN_FSHOSTUSB                       (1 << 5)
+#define OMAP3430ES1_EN_FSHOSTUSB_MASK                  (1 << 5)
 #define OMAP3430ES1_EN_FSHOSTUSB_SHIFT                 5
-#define OMAP3430ES1_EN_D2D                             (1 << 3)
+#define OMAP3430ES1_EN_D2D_MASK                                (1 << 3)
 #define OMAP3430ES1_EN_D2D_SHIFT                       3
-#define OMAP3430_EN_SSI                                        (1 << 0)
+#define OMAP3430_EN_SSI_MASK                           (1 << 0)
 #define OMAP3430_EN_SSI_SHIFT                          0
 
 /* CM_FCLKEN3_CORE and CM_ICLKEN3_CORE shared bits */
 #define OMAP3430ES2_EN_USBTLL_MASK                     (1 << 2)
 
 /* CM_FCLKEN_WKUP and CM_ICLKEN_WKUP shared bits */
-#define OMAP3430_EN_WDT2                               (1 << 5)
+#define OMAP3430_EN_WDT2_MASK                          (1 << 5)
 #define OMAP3430_EN_WDT2_SHIFT                         5
 
 /* CM_ICLKEN_CAM, CM_FCLKEN_CAM shared bits */
-#define OMAP3430_EN_CAM                                        (1 << 0)
+#define OMAP3430_EN_CAM_MASK                           (1 << 0)
 #define OMAP3430_EN_CAM_SHIFT                          0
 
 /* CM_FCLKEN_PER, CM_ICLKEN_PER shared bits */
-#define OMAP3430_EN_WDT3                               (1 << 12)
+#define OMAP3430_EN_WDT3_MASK                          (1 << 12)
 #define OMAP3430_EN_WDT3_SHIFT                         12
 
 /* CM_CLKSEL2_EMU, CM_CLKSEL3_EMU shared bits */
-#define OMAP3430_OVERRIDE_ENABLE                       (1 << 19)
+#define OMAP3430_OVERRIDE_ENABLE_MASK                  (1 << 19)
 
 
 /* Bits specific to each register */
@@ -69,7 +69,7 @@
 #define OMAP3430_EN_IVA2_DPLL_MASK                     (0x7 << 0)
 
 /* CM_IDLEST_IVA2 */
-#define OMAP3430_ST_IVA2                               (1 << 0)
+#define OMAP3430_ST_IVA2_MASK                          (1 << 0)
 
 /* CM_IDLEST_PLL_IVA2 */
 #define OMAP3430_ST_IVA2_CLK_SHIFT                     0
 #define OMAP3430_EN_MPU_DPLL_MASK                      (0x7 << 0)
 
 /* CM_IDLEST_MPU */
-#define OMAP3430_ST_MPU                                        (1 << 0)
+#define OMAP3430_ST_MPU_MASK                           (1 << 0)
 
 /* CM_IDLEST_PLL_MPU */
 #define OMAP3430_ST_MPU_CLK_SHIFT                      0
 #define OMAP3430_CLKACTIVITY_MPU_MASK                  (1 << 0)
 
 /* CM_FCLKEN1_CORE specific bits */
-#define OMAP3430_EN_MODEM                              (1 << 31)
+#define OMAP3430_EN_MODEM_MASK                         (1 << 31)
 #define OMAP3430_EN_MODEM_SHIFT                                31
 
 /* CM_ICLKEN1_CORE specific bits */
-#define OMAP3430_EN_ICR                                        (1 << 29)
+#define OMAP3430_EN_ICR_MASK                           (1 << 29)
 #define OMAP3430_EN_ICR_SHIFT                          29
-#define OMAP3430_EN_AES2                               (1 << 28)
+#define OMAP3430_EN_AES2_MASK                          (1 << 28)
 #define OMAP3430_EN_AES2_SHIFT                         28
-#define OMAP3430_EN_SHA12                              (1 << 27)
+#define OMAP3430_EN_SHA12_MASK                         (1 << 27)
 #define OMAP3430_EN_SHA12_SHIFT                                27
-#define OMAP3430_EN_DES2                               (1 << 26)
+#define OMAP3430_EN_DES2_MASK                          (1 << 26)
 #define OMAP3430_EN_DES2_SHIFT                         26
-#define OMAP3430ES1_EN_FAC                             (1 << 8)
+#define OMAP3430ES1_EN_FAC_MASK                                (1 << 8)
 #define OMAP3430ES1_EN_FAC_SHIFT                       8
-#define OMAP3430_EN_MAILBOXES                          (1 << 7)
+#define OMAP3430_EN_MAILBOXES_MASK                     (1 << 7)
 #define OMAP3430_EN_MAILBOXES_SHIFT                    7
-#define OMAP3430_EN_OMAPCTRL                           (1 << 6)
+#define OMAP3430_EN_OMAPCTRL_MASK                      (1 << 6)
 #define OMAP3430_EN_OMAPCTRL_SHIFT                     6
-#define OMAP3430_EN_SAD2D                              (1 << 3)
+#define OMAP3430_EN_SAD2D_MASK                         (1 << 3)
 #define OMAP3430_EN_SAD2D_SHIFT                                3
-#define OMAP3430_EN_SDRC                               (1 << 1)
+#define OMAP3430_EN_SDRC_MASK                          (1 << 1)
 #define OMAP3430_EN_SDRC_SHIFT                         1
 
 /* AM35XX specific CM_ICLKEN1_CORE bits */
 #define AM35XX_EN_IPSS_MASK                            (1 << 4)
 #define AM35XX_EN_IPSS_SHIFT                           4
-#define AM35XX_EN_UART4_MASK                   (1 << 23)
+#define AM35XX_EN_UART4_MASK                           (1 << 23)
 #define AM35XX_EN_UART4_SHIFT                          23
 
 /* CM_ICLKEN2_CORE */
-#define OMAP3430_EN_PKA                                        (1 << 4)
+#define OMAP3430_EN_PKA_MASK                           (1 << 4)
 #define OMAP3430_EN_PKA_SHIFT                          4
-#define OMAP3430_EN_AES1                               (1 << 3)
+#define OMAP3430_EN_AES1_MASK                          (1 << 3)
 #define OMAP3430_EN_AES1_SHIFT                         3
-#define OMAP3430_EN_RNG                                        (1 << 2)
+#define OMAP3430_EN_RNG_MASK                           (1 << 2)
 #define OMAP3430_EN_RNG_SHIFT                          2
-#define OMAP3430_EN_SHA11                              (1 << 1)
+#define OMAP3430_EN_SHA11_MASK                         (1 << 1)
 #define OMAP3430_EN_SHA11_SHIFT                                1
-#define OMAP3430_EN_DES1                               (1 << 0)
+#define OMAP3430_EN_DES1_MASK                          (1 << 0)
 #define OMAP3430_EN_DES1_SHIFT                         0
 
 /* CM_ICLKEN3_CORE */
 #define OMAP3430_EN_MAD2D_SHIFT                                3
-#define OMAP3430_EN_MAD2D                              (1 << 3)
+#define OMAP3430_EN_MAD2D_MASK                         (1 << 3)
 
 /* CM_FCLKEN3_CORE specific bits */
 #define OMAP3430ES2_EN_TS_SHIFT                                1
 #define OMAP3430ES2_ST_CPEFUSE_MASK                    (1 << 0)
 
 /* CM_AUTOIDLE1_CORE */
-#define OMAP3430_AUTO_MODEM                            (1 << 31)
+#define OMAP3430_AUTO_MODEM_MASK                       (1 << 31)
 #define OMAP3430_AUTO_MODEM_SHIFT                      31
-#define OMAP3430ES2_AUTO_MMC3                          (1 << 30)
+#define OMAP3430ES2_AUTO_MMC3_MASK                     (1 << 30)
 #define OMAP3430ES2_AUTO_MMC3_SHIFT                    30
-#define OMAP3430ES2_AUTO_ICR                           (1 << 29)
+#define OMAP3430ES2_AUTO_ICR_MASK                      (1 << 29)
 #define OMAP3430ES2_AUTO_ICR_SHIFT                     29
-#define OMAP3430_AUTO_AES2                             (1 << 28)
+#define OMAP3430_AUTO_AES2_MASK                                (1 << 28)
 #define OMAP3430_AUTO_AES2_SHIFT                       28
-#define OMAP3430_AUTO_SHA12                            (1 << 27)
+#define OMAP3430_AUTO_SHA12_MASK                       (1 << 27)
 #define OMAP3430_AUTO_SHA12_SHIFT                      27
-#define OMAP3430_AUTO_DES2                             (1 << 26)
+#define OMAP3430_AUTO_DES2_MASK                                (1 << 26)
 #define OMAP3430_AUTO_DES2_SHIFT                       26
-#define OMAP3430_AUTO_MMC2                             (1 << 25)
+#define OMAP3430_AUTO_MMC2_MASK                                (1 << 25)
 #define OMAP3430_AUTO_MMC2_SHIFT                       25
-#define OMAP3430_AUTO_MMC1                             (1 << 24)
+#define OMAP3430_AUTO_MMC1_MASK                                (1 << 24)
 #define OMAP3430_AUTO_MMC1_SHIFT                       24
-#define OMAP3430_AUTO_MSPRO                            (1 << 23)
+#define OMAP3430_AUTO_MSPRO_MASK                       (1 << 23)
 #define OMAP3430_AUTO_MSPRO_SHIFT                      23
-#define OMAP3430_AUTO_HDQ                              (1 << 22)
+#define OMAP3430_AUTO_HDQ_MASK                         (1 << 22)
 #define OMAP3430_AUTO_HDQ_SHIFT                                22
-#define OMAP3430_AUTO_MCSPI4                           (1 << 21)
+#define OMAP3430_AUTO_MCSPI4_MASK                      (1 << 21)
 #define OMAP3430_AUTO_MCSPI4_SHIFT                     21
-#define OMAP3430_AUTO_MCSPI3                           (1 << 20)
+#define OMAP3430_AUTO_MCSPI3_MASK                      (1 << 20)
 #define OMAP3430_AUTO_MCSPI3_SHIFT                     20
-#define OMAP3430_AUTO_MCSPI2                           (1 << 19)
+#define OMAP3430_AUTO_MCSPI2_MASK                      (1 << 19)
 #define OMAP3430_AUTO_MCSPI2_SHIFT                     19
-#define OMAP3430_AUTO_MCSPI1                           (1 << 18)
+#define OMAP3430_AUTO_MCSPI1_MASK                      (1 << 18)
 #define OMAP3430_AUTO_MCSPI1_SHIFT                     18
-#define OMAP3430_AUTO_I2C3                             (1 << 17)
+#define OMAP3430_AUTO_I2C3_MASK                                (1 << 17)
 #define OMAP3430_AUTO_I2C3_SHIFT                       17
-#define OMAP3430_AUTO_I2C2                             (1 << 16)
+#define OMAP3430_AUTO_I2C2_MASK                                (1 << 16)
 #define OMAP3430_AUTO_I2C2_SHIFT                       16
-#define OMAP3430_AUTO_I2C1                             (1 << 15)
+#define OMAP3430_AUTO_I2C1_MASK                                (1 << 15)
 #define OMAP3430_AUTO_I2C1_SHIFT                       15
-#define OMAP3430_AUTO_UART2                            (1 << 14)
+#define OMAP3430_AUTO_UART2_MASK                       (1 << 14)
 #define OMAP3430_AUTO_UART2_SHIFT                      14
-#define OMAP3430_AUTO_UART1                            (1 << 13)
+#define OMAP3430_AUTO_UART1_MASK                       (1 << 13)
 #define OMAP3430_AUTO_UART1_SHIFT                      13
-#define OMAP3430_AUTO_GPT11                            (1 << 12)
+#define OMAP3430_AUTO_GPT11_MASK                       (1 << 12)
 #define OMAP3430_AUTO_GPT11_SHIFT                      12
-#define OMAP3430_AUTO_GPT10                            (1 << 11)
+#define OMAP3430_AUTO_GPT10_MASK                       (1 << 11)
 #define OMAP3430_AUTO_GPT10_SHIFT                      11
-#define OMAP3430_AUTO_MCBSP5                           (1 << 10)
+#define OMAP3430_AUTO_MCBSP5_MASK                      (1 << 10)
 #define OMAP3430_AUTO_MCBSP5_SHIFT                     10
-#define OMAP3430_AUTO_MCBSP1                           (1 << 9)
+#define OMAP3430_AUTO_MCBSP1_MASK                      (1 << 9)
 #define OMAP3430_AUTO_MCBSP1_SHIFT                     9
-#define OMAP3430ES1_AUTO_FAC                           (1 << 8)
+#define OMAP3430ES1_AUTO_FAC_MASK                      (1 << 8)
 #define OMAP3430ES1_AUTO_FAC_SHIFT                     8
-#define OMAP3430_AUTO_MAILBOXES                                (1 << 7)
+#define OMAP3430_AUTO_MAILBOXES_MASK                   (1 << 7)
 #define OMAP3430_AUTO_MAILBOXES_SHIFT                  7
-#define OMAP3430_AUTO_OMAPCTRL                         (1 << 6)
+#define OMAP3430_AUTO_OMAPCTRL_MASK                    (1 << 6)
 #define OMAP3430_AUTO_OMAPCTRL_SHIFT                   6
-#define OMAP3430ES1_AUTO_FSHOSTUSB                     (1 << 5)
+#define OMAP3430ES1_AUTO_FSHOSTUSB_MASK                        (1 << 5)
 #define OMAP3430ES1_AUTO_FSHOSTUSB_SHIFT               5
-#define OMAP3430_AUTO_HSOTGUSB                         (1 << 4)
+#define OMAP3430_AUTO_HSOTGUSB_MASK                    (1 << 4)
 #define OMAP3430_AUTO_HSOTGUSB_SHIFT                   4
-#define OMAP3430ES1_AUTO_D2D                           (1 << 3)
+#define OMAP3430ES1_AUTO_D2D_MASK                      (1 << 3)
 #define OMAP3430ES1_AUTO_D2D_SHIFT                     3
-#define OMAP3430_AUTO_SAD2D                            (1 << 3)
+#define OMAP3430_AUTO_SAD2D_MASK                       (1 << 3)
 #define OMAP3430_AUTO_SAD2D_SHIFT                      3
-#define OMAP3430_AUTO_SSI                              (1 << 0)
+#define OMAP3430_AUTO_SSI_MASK                         (1 << 0)
 #define OMAP3430_AUTO_SSI_SHIFT                                0
 
 /* CM_AUTOIDLE2_CORE */
-#define OMAP3430_AUTO_PKA                              (1 << 4)
+#define OMAP3430_AUTO_PKA_MASK                         (1 << 4)
 #define OMAP3430_AUTO_PKA_SHIFT                                4
-#define OMAP3430_AUTO_AES1                             (1 << 3)
+#define OMAP3430_AUTO_AES1_MASK                                (1 << 3)
 #define OMAP3430_AUTO_AES1_SHIFT                       3
-#define OMAP3430_AUTO_RNG                              (1 << 2)
+#define OMAP3430_AUTO_RNG_MASK                         (1 << 2)
 #define OMAP3430_AUTO_RNG_SHIFT                                2
-#define OMAP3430_AUTO_SHA11                            (1 << 1)
+#define OMAP3430_AUTO_SHA11_MASK                       (1 << 1)
 #define OMAP3430_AUTO_SHA11_SHIFT                      1
-#define OMAP3430_AUTO_DES1                             (1 << 0)
+#define OMAP3430_AUTO_DES1_MASK                                (1 << 0)
 #define OMAP3430_AUTO_DES1_SHIFT                       0
 
 /* CM_AUTOIDLE3_CORE */
 #define OMAP3430ES2_AUTO_USBTLL_SHIFT                  2
 #define OMAP3430ES2_AUTO_USBTLL_MASK                   (1 << 2)
 #define OMAP3430_AUTO_MAD2D_SHIFT                      3
-#define OMAP3430_AUTO_MAD2D                            (1 << 3)
+#define OMAP3430_AUTO_MAD2D_MASK                       (1 << 3)
 
 /* CM_CLKSEL_CORE */
 #define OMAP3430_CLKSEL_SSI_SHIFT                      8
 #define OMAP3430_CLKACTIVITY_L3_MASK                   (1 << 0)
 
 /* CM_FCLKEN_GFX */
-#define OMAP3430ES1_EN_3D                              (1 << 2)
+#define OMAP3430ES1_EN_3D_MASK                         (1 << 2)
 #define OMAP3430ES1_EN_3D_SHIFT                                2
-#define OMAP3430ES1_EN_2D                              (1 << 1)
+#define OMAP3430ES1_EN_2D_MASK                         (1 << 1)
 #define OMAP3430ES1_EN_2D_SHIFT                                1
 
 /* CM_ICLKEN_GFX specific bits */
 #define OMAP3430ES2_EN_USIMOCP_MASK                    (1 << 9)
 
 /* CM_ICLKEN_WKUP specific bits */
-#define OMAP3430_EN_WDT1                               (1 << 4)
+#define OMAP3430_EN_WDT1_MASK                          (1 << 4)
 #define OMAP3430_EN_WDT1_SHIFT                         4
-#define OMAP3430_EN_32KSYNC                            (1 << 2)
+#define OMAP3430_EN_32KSYNC_MASK                       (1 << 2)
 #define OMAP3430_EN_32KSYNC_SHIFT                      2
 
 /* CM_IDLEST_WKUP specific bits */
 #define OMAP3430_ST_32KSYNC_MASK                       (1 << 2)
 
 /* CM_AUTOIDLE_WKUP */
-#define OMAP3430ES2_AUTO_USIMOCP                               (1 << 9)
+#define OMAP3430ES2_AUTO_USIMOCP_MASK                  (1 << 9)
 #define OMAP3430ES2_AUTO_USIMOCP_SHIFT                 9
-#define OMAP3430_AUTO_WDT2                             (1 << 5)
+#define OMAP3430_AUTO_WDT2_MASK                                (1 << 5)
 #define OMAP3430_AUTO_WDT2_SHIFT                       5
-#define OMAP3430_AUTO_WDT1                             (1 << 4)
+#define OMAP3430_AUTO_WDT1_MASK                                (1 << 4)
 #define OMAP3430_AUTO_WDT1_SHIFT                       4
-#define OMAP3430_AUTO_GPIO1                            (1 << 3)
+#define OMAP3430_AUTO_GPIO1_MASK                       (1 << 3)
 #define OMAP3430_AUTO_GPIO1_SHIFT                      3
-#define OMAP3430_AUTO_32KSYNC                          (1 << 2)
+#define OMAP3430_AUTO_32KSYNC_MASK                     (1 << 2)
 #define OMAP3430_AUTO_32KSYNC_SHIFT                    2
-#define OMAP3430_AUTO_GPT12                            (1 << 1)
+#define OMAP3430_AUTO_GPT12_MASK                       (1 << 1)
 #define OMAP3430_AUTO_GPT12_SHIFT                      1
-#define OMAP3430_AUTO_GPT1                             (1 << 0)
+#define OMAP3430_AUTO_GPT1_MASK                                (1 << 0)
 #define OMAP3430_AUTO_GPT1_SHIFT                       0
 
 /* CM_CLKSEL_WKUP */
 #define OMAP3430_EN_CORE_DPLL_MASK                     (0x7 << 0)
 
 /* CM_CLKEN2_PLL */
-#define OMAP3430ES2_EN_PERIPH2_DPLL_LPMODE_SHIFT               10
+#define OMAP3430ES2_EN_PERIPH2_DPLL_LPMODE_SHIFT       10
 #define OMAP3430ES2_PERIPH2_DPLL_RAMPTIME_MASK         (0x3 << 8)
 #define OMAP3430ES2_PERIPH2_DPLL_FREQSEL_SHIFT         4
 #define OMAP3430ES2_PERIPH2_DPLL_FREQSEL_MASK          (0xf << 4)
 #define OMAP3430ES2_EN_PERIPH2_DPLL_MASK               (0x7 << 0)
 
 /* CM_IDLEST_CKGEN */
-#define OMAP3430_ST_54M_CLK                            (1 << 5)
-#define OMAP3430_ST_12M_CLK                            (1 << 4)
-#define OMAP3430_ST_48M_CLK                            (1 << 3)
-#define OMAP3430_ST_96M_CLK                            (1 << 2)
+#define OMAP3430_ST_54M_CLK_MASK                       (1 << 5)
+#define OMAP3430_ST_12M_CLK_MASK                       (1 << 4)
+#define OMAP3430_ST_48M_CLK_MASK                       (1 << 3)
+#define OMAP3430_ST_96M_CLK_MASK                       (1 << 2)
 #define OMAP3430_ST_PERIPH_CLK_SHIFT                   1
 #define OMAP3430_ST_PERIPH_CLK_MASK                    (1 << 1)
 #define OMAP3430_ST_CORE_CLK_SHIFT                     0
 
 /* CM_CLKOUT_CTRL */
 #define OMAP3430_CLKOUT2_EN_SHIFT                      7
-#define OMAP3430_CLKOUT2_EN                            (1 << 7)
+#define OMAP3430_CLKOUT2_EN_MASK                       (1 << 7)
 #define OMAP3430_CLKOUT2_DIV_SHIFT                     3
 #define OMAP3430_CLKOUT2_DIV_MASK                      (0x7 << 3)
 #define OMAP3430_CLKOUT2SOURCE_SHIFT                   0
 #define OMAP3430_CLKOUT2SOURCE_MASK                    (0x3 << 0)
 
 /* CM_FCLKEN_DSS */
-#define OMAP3430_EN_TV                                 (1 << 2)
+#define OMAP3430_EN_TV_MASK                            (1 << 2)
 #define OMAP3430_EN_TV_SHIFT                           2
-#define OMAP3430_EN_DSS2                               (1 << 1)
+#define OMAP3430_EN_DSS2_MASK                          (1 << 1)
 #define OMAP3430_EN_DSS2_SHIFT                         1
-#define OMAP3430_EN_DSS1                               (1 << 0)
+#define OMAP3430_EN_DSS1_MASK                          (1 << 0)
 #define OMAP3430_EN_DSS1_SHIFT                         0
 
 /* CM_ICLKEN_DSS */
-#define OMAP3430_CM_ICLKEN_DSS_EN_DSS                  (1 << 0)
+#define OMAP3430_CM_ICLKEN_DSS_EN_DSS_MASK             (1 << 0)
 #define OMAP3430_CM_ICLKEN_DSS_EN_DSS_SHIFT            0
 
 /* CM_IDLEST_DSS */
 #define OMAP3430ES1_ST_DSS_MASK                                (1 << 0)
 
 /* CM_AUTOIDLE_DSS */
-#define OMAP3430_AUTO_DSS                              (1 << 0)
+#define OMAP3430_AUTO_DSS_MASK                         (1 << 0)
 #define OMAP3430_AUTO_DSS_SHIFT                                0
 
 /* CM_CLKSEL_DSS */
 #define OMAP3430_CLKACTIVITY_DSS_MASK                  (1 << 0)
 
 /* CM_FCLKEN_CAM specific bits */
-#define OMAP3430_EN_CSI2                               (1 << 1)
+#define OMAP3430_EN_CSI2_MASK                          (1 << 1)
 #define OMAP3430_EN_CSI2_SHIFT                         1
 
 /* CM_ICLKEN_CAM specific bits */
 
 /* CM_IDLEST_CAM */
-#define OMAP3430_ST_CAM                                        (1 << 0)
+#define OMAP3430_ST_CAM_MASK                           (1 << 0)
 
 /* CM_AUTOIDLE_CAM */
-#define OMAP3430_AUTO_CAM                              (1 << 0)
+#define OMAP3430_AUTO_CAM_MASK                         (1 << 0)
 #define OMAP3430_AUTO_CAM_SHIFT                                0
 
 /* CM_CLKSEL_CAM */
 #define OMAP3430_ST_MCBSP2_MASK                                (1 << 0)
 
 /* CM_AUTOIDLE_PER */
-#define OMAP3430_AUTO_GPIO6                            (1 << 17)
+#define OMAP3430_AUTO_GPIO6_MASK                       (1 << 17)
 #define OMAP3430_AUTO_GPIO6_SHIFT                      17
-#define OMAP3430_AUTO_GPIO5                            (1 << 16)
+#define OMAP3430_AUTO_GPIO5_MASK                       (1 << 16)
 #define OMAP3430_AUTO_GPIO5_SHIFT                      16
-#define OMAP3430_AUTO_GPIO4                            (1 << 15)
+#define OMAP3430_AUTO_GPIO4_MASK                       (1 << 15)
 #define OMAP3430_AUTO_GPIO4_SHIFT                      15
-#define OMAP3430_AUTO_GPIO3                            (1 << 14)
+#define OMAP3430_AUTO_GPIO3_MASK                       (1 << 14)
 #define OMAP3430_AUTO_GPIO3_SHIFT                      14
-#define OMAP3430_AUTO_GPIO2                            (1 << 13)
+#define OMAP3430_AUTO_GPIO2_MASK                       (1 << 13)
 #define OMAP3430_AUTO_GPIO2_SHIFT                      13
-#define OMAP3430_AUTO_WDT3                             (1 << 12)
+#define OMAP3430_AUTO_WDT3_MASK                                (1 << 12)
 #define OMAP3430_AUTO_WDT3_SHIFT                       12
-#define OMAP3430_AUTO_UART3                            (1 << 11)
+#define OMAP3430_AUTO_UART3_MASK                       (1 << 11)
 #define OMAP3430_AUTO_UART3_SHIFT                      11
-#define OMAP3430_AUTO_GPT9                             (1 << 10)
+#define OMAP3430_AUTO_GPT9_MASK                                (1 << 10)
 #define OMAP3430_AUTO_GPT9_SHIFT                       10
-#define OMAP3430_AUTO_GPT8                             (1 << 9)
+#define OMAP3430_AUTO_GPT8_MASK                                (1 << 9)
 #define OMAP3430_AUTO_GPT8_SHIFT                       9
-#define OMAP3430_AUTO_GPT7                             (1 << 8)
+#define OMAP3430_AUTO_GPT7_MASK                                (1 << 8)
 #define OMAP3430_AUTO_GPT7_SHIFT                       8
-#define OMAP3430_AUTO_GPT6                             (1 << 7)
+#define OMAP3430_AUTO_GPT6_MASK                                (1 << 7)
 #define OMAP3430_AUTO_GPT6_SHIFT                       7
-#define OMAP3430_AUTO_GPT5                             (1 << 6)
+#define OMAP3430_AUTO_GPT5_MASK                                (1 << 6)
 #define OMAP3430_AUTO_GPT5_SHIFT                       6
-#define OMAP3430_AUTO_GPT4                             (1 << 5)
+#define OMAP3430_AUTO_GPT4_MASK                                (1 << 5)
 #define OMAP3430_AUTO_GPT4_SHIFT                       5
-#define OMAP3430_AUTO_GPT3                             (1 << 4)
+#define OMAP3430_AUTO_GPT3_MASK                                (1 << 4)
 #define OMAP3430_AUTO_GPT3_SHIFT                       4
-#define OMAP3430_AUTO_GPT2                             (1 << 3)
+#define OMAP3430_AUTO_GPT2_MASK                                (1 << 3)
 #define OMAP3430_AUTO_GPT2_SHIFT                       3
-#define OMAP3430_AUTO_MCBSP4                           (1 << 2)
+#define OMAP3430_AUTO_MCBSP4_MASK                      (1 << 2)
 #define OMAP3430_AUTO_MCBSP4_SHIFT                     2
-#define OMAP3430_AUTO_MCBSP3                           (1 << 1)
+#define OMAP3430_AUTO_MCBSP3_MASK                      (1 << 1)
 #define OMAP3430_AUTO_MCBSP3_SHIFT                     1
-#define OMAP3430_AUTO_MCBSP2                           (1 << 0)
+#define OMAP3430_AUTO_MCBSP2_MASK                      (1 << 0)
 #define OMAP3430_AUTO_MCBSP2_SHIFT                     0
 
 /* CM_CLKSEL_PER */
 #define OMAP3430_CLKSEL_GPT2_SHIFT                     0
 
 /* CM_SLEEPDEP_PER specific bits */
-#define OMAP3430_CM_SLEEPDEP_PER_EN_IVA2               (1 << 2)
+#define OMAP3430_CM_SLEEPDEP_PER_EN_IVA2_MASK          (1 << 2)
 
 /* CM_CLKSTCTRL_PER */
 #define OMAP3430_CLKTRCTRL_PER_SHIFT                   0
 #define OMAP3430_PERIPH_DPLL_EMU_DIV_MASK              (0x7f << 0)
 
 /* CM_POLCTRL */
-#define OMAP3430_CLKOUT2_POL                           (1 << 0)
+#define OMAP3430_CLKOUT2_POL_MASK                      (1 << 0)
 
 /* CM_IDLEST_NEON */
-#define OMAP3430_ST_NEON                               (1 << 0)
+#define OMAP3430_ST_NEON_MASK                          (1 << 0)
 
 /* CM_CLKSTCTRL_NEON */
 #define OMAP3430_CLKTRCTRL_NEON_SHIFT                  0
index 58e4a1c..2d83565 100644 (file)
@@ -27,9 +27,6 @@
 #include "cm-regbits-24xx.h"
 #include "cm-regbits-34xx.h"
 
-/* MAX_MODULE_READY_TIME: max milliseconds for module to leave idle */
-#define MAX_MODULE_READY_TIME          20000
-
 static const u8 cm_idlest_offs[] = {
        CM_IDLEST1, CM_IDLEST2, OMAP2430_CM_IDLEST3
 };
index 94728b1..a02ca30 100644 (file)
@@ -112,7 +112,7 @@ extern u32 cm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx);
 
 extern int omap2_cm_wait_module_ready(s16 prcm_mod, u8 idlest_id,
                                      u8 idlest_shift);
-extern int omap4_cm_wait_module_ready(u32 prcm_mod, u8 prcm_dev_offs);
+extern int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg);
 
 static inline u32 cm_set_mod_reg_bits(u32 bits, s16 module, s16 idx)
 {
@@ -134,13 +134,23 @@ static inline u32 cm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
 
 /* CM_ICLKEN_GFX */
 #define OMAP_EN_GFX_SHIFT                              0
-#define OMAP_EN_GFX                                    (1 << 0)
+#define OMAP_EN_GFX_MASK                               (1 << 0)
 
 /* CM_IDLEST_GFX */
-#define OMAP_ST_GFX                                    (1 << 0)
+#define OMAP_ST_GFX_MASK                               (1 << 0)
+
 
 /* CM_IDLEST indicator */
 #define OMAP24XX_CM_IDLEST_VAL         0
 #define OMAP34XX_CM_IDLEST_VAL         1
 
+/*
+ * MAX_MODULE_READY_TIME: max duration in microseconds to wait for the
+ * PRCM to request that a module exit the inactive state in the case of
+ * OMAP2 & 3.
+ * In the case of OMAP4 this is the max duration in microseconds for the
+ * module to reach the functionnal state from an inactive state.
+ */
+#define MAX_MODULE_READY_TIME          2000
+
 #endif
index c575b9b..336d948 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * OMAP44xx CM1 & CM2 instance offset macros
  *
- * Copyright (C) 2009 Texas Instruments, Inc.
- * Copyright (C) 2009 Nokia Corporation
+ * Copyright (C) 2009-2010 Texas Instruments, Inc.
+ * Copyright (C) 2009-2010 Nokia Corporation
  *
  * Paul Walmsley (paul@pwsan.com)
  * Rajendra Nayak (rnayak@ti.com)
 
 /* CM1 */
 
-
 /* CM1.OCP_SOCKET_CM1 register offsets */
+#define OMAP4_REVISION_CM1_OFFSET                      0x0000
 #define OMAP4430_REVISION_CM1                          OMAP44XX_CM1_REGADDR(OMAP4430_CM1_OCP_SOCKET_MOD, 0x0000)
+#define OMAP4_CM_CM1_PROFILING_CLKCTRL_OFFSET          0x0040
 #define OMAP4430_CM_CM1_PROFILING_CLKCTRL              OMAP44XX_CM1_REGADDR(OMAP4430_CM1_OCP_SOCKET_MOD, 0x0040)
 
 /* CM1.CKGEN_CM1 register offsets */
+#define OMAP4_CM_CLKSEL_CORE_OFFSET                    0x0000
 #define OMAP4430_CM_CLKSEL_CORE                                OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0000)
+#define OMAP4_CM_CLKSEL_ABE_OFFSET                     0x0008
 #define OMAP4430_CM_CLKSEL_ABE                         OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0008)
+#define OMAP4_CM_DLL_CTRL_OFFSET                       0x0010
 #define OMAP4430_CM_DLL_CTRL                           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0010)
+#define OMAP4_CM_CLKMODE_DPLL_CORE_OFFSET              0x0020
 #define OMAP4430_CM_CLKMODE_DPLL_CORE                  OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0020)
+#define OMAP4_CM_IDLEST_DPLL_CORE_OFFSET               0x0024
 #define OMAP4430_CM_IDLEST_DPLL_CORE                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0024)
+#define OMAP4_CM_AUTOIDLE_DPLL_CORE_OFFSET             0x0028
 #define OMAP4430_CM_AUTOIDLE_DPLL_CORE                 OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0028)
+#define OMAP4_CM_CLKSEL_DPLL_CORE_OFFSET               0x002c
 #define OMAP4430_CM_CLKSEL_DPLL_CORE                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x002c)
+#define OMAP4_CM_DIV_M2_DPLL_CORE_OFFSET               0x0030
 #define OMAP4430_CM_DIV_M2_DPLL_CORE                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0030)
+#define OMAP4_CM_DIV_M3_DPLL_CORE_OFFSET               0x0034
 #define OMAP4430_CM_DIV_M3_DPLL_CORE                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0034)
+#define OMAP4_CM_DIV_M4_DPLL_CORE_OFFSET               0x0038
 #define OMAP4430_CM_DIV_M4_DPLL_CORE                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0038)
+#define OMAP4_CM_DIV_M5_DPLL_CORE_OFFSET               0x003c
 #define OMAP4430_CM_DIV_M5_DPLL_CORE                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x003c)
+#define OMAP4_CM_DIV_M6_DPLL_CORE_OFFSET               0x0040
 #define OMAP4430_CM_DIV_M6_DPLL_CORE                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0040)
+#define OMAP4_CM_DIV_M7_DPLL_CORE_OFFSET               0x0044
 #define OMAP4430_CM_DIV_M7_DPLL_CORE                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0044)
+#define OMAP4_CM_SSC_DELTAMSTEP_DPLL_CORE_OFFSET       0x0048
 #define OMAP4430_CM_SSC_DELTAMSTEP_DPLL_CORE           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0048)
+#define OMAP4_CM_SSC_MODFREQDIV_DPLL_CORE_OFFSET       0x004c
 #define OMAP4430_CM_SSC_MODFREQDIV_DPLL_CORE           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x004c)
+#define OMAP4_CM_EMU_OVERRIDE_DPLL_CORE_OFFSET         0x0050
 #define OMAP4430_CM_EMU_OVERRIDE_DPLL_CORE             OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0050)
+#define OMAP4_CM_CLKMODE_DPLL_MPU_OFFSET               0x0060
 #define OMAP4430_CM_CLKMODE_DPLL_MPU                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0060)
+#define OMAP4_CM_IDLEST_DPLL_MPU_OFFSET                        0x0064
 #define OMAP4430_CM_IDLEST_DPLL_MPU                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0064)
+#define OMAP4_CM_AUTOIDLE_DPLL_MPU_OFFSET              0x0068
 #define OMAP4430_CM_AUTOIDLE_DPLL_MPU                  OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0068)
+#define OMAP4_CM_CLKSEL_DPLL_MPU_OFFSET                        0x006c
 #define OMAP4430_CM_CLKSEL_DPLL_MPU                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x006c)
+#define OMAP4_CM_DIV_M2_DPLL_MPU_OFFSET                        0x0070
 #define OMAP4430_CM_DIV_M2_DPLL_MPU                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0070)
+#define OMAP4_CM_SSC_DELTAMSTEP_DPLL_MPU_OFFSET                0x0088
 #define OMAP4430_CM_SSC_DELTAMSTEP_DPLL_MPU            OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0088)
+#define OMAP4_CM_SSC_MODFREQDIV_DPLL_MPU_OFFSET                0x008c
 #define OMAP4430_CM_SSC_MODFREQDIV_DPLL_MPU            OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x008c)
+#define OMAP4_CM_BYPCLK_DPLL_MPU_OFFSET                        0x009c
 #define OMAP4430_CM_BYPCLK_DPLL_MPU                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x009c)
+#define OMAP4_CM_CLKMODE_DPLL_IVA_OFFSET               0x00a0
 #define OMAP4430_CM_CLKMODE_DPLL_IVA                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00a0)
+#define OMAP4_CM_IDLEST_DPLL_IVA_OFFSET                        0x00a4
 #define OMAP4430_CM_IDLEST_DPLL_IVA                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00a4)
+#define OMAP4_CM_AUTOIDLE_DPLL_IVA_OFFSET              0x00a8
 #define OMAP4430_CM_AUTOIDLE_DPLL_IVA                  OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00a8)
+#define OMAP4_CM_CLKSEL_DPLL_IVA_OFFSET                        0x00ac
 #define OMAP4430_CM_CLKSEL_DPLL_IVA                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00ac)
+#define OMAP4_CM_DIV_M4_DPLL_IVA_OFFSET                        0x00b8
 #define OMAP4430_CM_DIV_M4_DPLL_IVA                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00b8)
+#define OMAP4_CM_DIV_M5_DPLL_IVA_OFFSET                        0x00bc
 #define OMAP4430_CM_DIV_M5_DPLL_IVA                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00bc)
+#define OMAP4_CM_SSC_DELTAMSTEP_DPLL_IVA_OFFSET                0x00c8
 #define OMAP4430_CM_SSC_DELTAMSTEP_DPLL_IVA            OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00c8)
+#define OMAP4_CM_SSC_MODFREQDIV_DPLL_IVA_OFFSET                0x00cc
 #define OMAP4430_CM_SSC_MODFREQDIV_DPLL_IVA            OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00cc)
+#define OMAP4_CM_BYPCLK_DPLL_IVA_OFFSET                        0x00dc
 #define OMAP4430_CM_BYPCLK_DPLL_IVA                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00dc)
+#define OMAP4_CM_CLKMODE_DPLL_ABE_OFFSET               0x00e0
 #define OMAP4430_CM_CLKMODE_DPLL_ABE                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00e0)
+#define OMAP4_CM_IDLEST_DPLL_ABE_OFFSET                        0x00e4
 #define OMAP4430_CM_IDLEST_DPLL_ABE                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00e4)
+#define OMAP4_CM_AUTOIDLE_DPLL_ABE_OFFSET              0x00e8
 #define OMAP4430_CM_AUTOIDLE_DPLL_ABE                  OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00e8)
+#define OMAP4_CM_CLKSEL_DPLL_ABE_OFFSET                        0x00ec
 #define OMAP4430_CM_CLKSEL_DPLL_ABE                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00ec)
+#define OMAP4_CM_DIV_M2_DPLL_ABE_OFFSET                        0x00f0
 #define OMAP4430_CM_DIV_M2_DPLL_ABE                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00f0)
+#define OMAP4_CM_DIV_M3_DPLL_ABE_OFFSET                        0x00f4
 #define OMAP4430_CM_DIV_M3_DPLL_ABE                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x00f4)
+#define OMAP4_CM_SSC_DELTAMSTEP_DPLL_ABE_OFFSET                0x0108
 #define OMAP4430_CM_SSC_DELTAMSTEP_DPLL_ABE            OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0108)
+#define OMAP4_CM_SSC_MODFREQDIV_DPLL_ABE_OFFSET                0x010c
 #define OMAP4430_CM_SSC_MODFREQDIV_DPLL_ABE            OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x010c)
+#define OMAP4_CM_CLKMODE_DPLL_DDRPHY_OFFSET            0x0120
 #define OMAP4430_CM_CLKMODE_DPLL_DDRPHY                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0120)
+#define OMAP4_CM_IDLEST_DPLL_DDRPHY_OFFSET             0x0124
 #define OMAP4430_CM_IDLEST_DPLL_DDRPHY                 OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0124)
+#define OMAP4_CM_AUTOIDLE_DPLL_DDRPHY_OFFSET           0x0128
 #define OMAP4430_CM_AUTOIDLE_DPLL_DDRPHY               OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0128)
+#define OMAP4_CM_CLKSEL_DPLL_DDRPHY_OFFSET             0x012c
 #define OMAP4430_CM_CLKSEL_DPLL_DDRPHY                 OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x012c)
+#define OMAP4_CM_DIV_M2_DPLL_DDRPHY_OFFSET             0x0130
 #define OMAP4430_CM_DIV_M2_DPLL_DDRPHY                 OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0130)
+#define OMAP4_CM_DIV_M4_DPLL_DDRPHY_OFFSET             0x0138
 #define OMAP4430_CM_DIV_M4_DPLL_DDRPHY                 OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0138)
+#define OMAP4_CM_DIV_M5_DPLL_DDRPHY_OFFSET             0x013c
 #define OMAP4430_CM_DIV_M5_DPLL_DDRPHY                 OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x013c)
+#define OMAP4_CM_DIV_M6_DPLL_DDRPHY_OFFSET             0x0140
 #define OMAP4430_CM_DIV_M6_DPLL_DDRPHY                 OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0140)
+#define OMAP4_CM_SSC_DELTAMSTEP_DPLL_DDRPHY_OFFSET     0x0148
 #define OMAP4430_CM_SSC_DELTAMSTEP_DPLL_DDRPHY         OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0148)
+#define OMAP4_CM_SSC_MODFREQDIV_DPLL_DDRPHY_OFFSET     0x014c
 #define OMAP4430_CM_SSC_MODFREQDIV_DPLL_DDRPHY         OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x014c)
+#define OMAP4_CM_SHADOW_FREQ_CONFIG1_OFFSET            0x0160
 #define OMAP4430_CM_SHADOW_FREQ_CONFIG1                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0160)
+#define OMAP4_CM_SHADOW_FREQ_CONFIG2_OFFSET            0x0164
 #define OMAP4430_CM_SHADOW_FREQ_CONFIG2                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0164)
+#define OMAP4_CM_DYN_DEP_PRESCAL_OFFSET                        0x0170
 #define OMAP4430_CM_DYN_DEP_PRESCAL                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0170)
+#define OMAP4_CM_RESTORE_ST_OFFSET                     0x0180
 #define OMAP4430_CM_RESTORE_ST                         OMAP44XX_CM1_REGADDR(OMAP4430_CM1_CKGEN_MOD, 0x0180)
 
 /* CM1.MPU_CM1 register offsets */
+#define OMAP4_CM_MPU_CLKSTCTRL_OFFSET                  0x0000
 #define OMAP4430_CM_MPU_CLKSTCTRL                      OMAP44XX_CM1_REGADDR(OMAP4430_CM1_MPU_MOD, 0x0000)
+#define OMAP4_CM_MPU_STATICDEP_OFFSET                  0x0004
 #define OMAP4430_CM_MPU_STATICDEP                      OMAP44XX_CM1_REGADDR(OMAP4430_CM1_MPU_MOD, 0x0004)
+#define OMAP4_CM_MPU_DYNAMICDEP_OFFSET                 0x0008
 #define OMAP4430_CM_MPU_DYNAMICDEP                     OMAP44XX_CM1_REGADDR(OMAP4430_CM1_MPU_MOD, 0x0008)
+#define OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET                        0x0020
 #define OMAP4430_CM_MPU_MPU_CLKCTRL                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_MPU_MOD, 0x0020)
 
 /* CM1.TESLA_CM1 register offsets */
+#define OMAP4_CM_TESLA_CLKSTCTRL_OFFSET                        0x0000
 #define OMAP4430_CM_TESLA_CLKSTCTRL                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_TESLA_MOD, 0x0000)
+#define OMAP4_CM_TESLA_STATICDEP_OFFSET                        0x0004
 #define OMAP4430_CM_TESLA_STATICDEP                    OMAP44XX_CM1_REGADDR(OMAP4430_CM1_TESLA_MOD, 0x0004)
+#define OMAP4_CM_TESLA_DYNAMICDEP_OFFSET               0x0008
 #define OMAP4430_CM_TESLA_DYNAMICDEP                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_TESLA_MOD, 0x0008)
+#define OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET            0x0020
 #define OMAP4430_CM_TESLA_TESLA_CLKCTRL                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_TESLA_MOD, 0x0020)
 
 /* CM1.ABE_CM1 register offsets */
+#define OMAP4_CM1_ABE_CLKSTCTRL_OFFSET                 0x0000
 #define OMAP4430_CM1_ABE_CLKSTCTRL                     OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0000)
+#define OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET             0x0020
 #define OMAP4430_CM1_ABE_L4ABE_CLKCTRL                 OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0020)
+#define OMAP4_CM1_ABE_AESS_CLKCTRL_OFFSET              0x0028
 #define OMAP4430_CM1_ABE_AESS_CLKCTRL                  OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0028)
+#define OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET               0x0030
 #define OMAP4430_CM1_ABE_PDM_CLKCTRL                   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0030)
+#define OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET              0x0038
 #define OMAP4430_CM1_ABE_DMIC_CLKCTRL                  OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0038)
+#define OMAP4_CM1_ABE_MCASP_CLKCTRL_OFFSET             0x0040
 #define OMAP4430_CM1_ABE_MCASP_CLKCTRL                 OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0040)
+#define OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET            0x0048
 #define OMAP4430_CM1_ABE_MCBSP1_CLKCTRL                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0048)
+#define OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET            0x0050
 #define OMAP4430_CM1_ABE_MCBSP2_CLKCTRL                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0050)
+#define OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET            0x0058
 #define OMAP4430_CM1_ABE_MCBSP3_CLKCTRL                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0058)
+#define OMAP4_CM1_ABE_SLIMBUS_CLKCTRL_OFFSET           0x0060
 #define OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL               OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0060)
+#define OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET            0x0068
 #define OMAP4430_CM1_ABE_TIMER5_CLKCTRL                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0068)
+#define OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET            0x0070
 #define OMAP4430_CM1_ABE_TIMER6_CLKCTRL                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0070)
+#define OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET            0x0078
 #define OMAP4430_CM1_ABE_TIMER7_CLKCTRL                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0078)
+#define OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET            0x0080
 #define OMAP4430_CM1_ABE_TIMER8_CLKCTRL                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0080)
+#define OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET              0x0088
 #define OMAP4430_CM1_ABE_WDT3_CLKCTRL                  OMAP44XX_CM1_REGADDR(OMAP4430_CM1_ABE_MOD, 0x0088)
 
-/* CM1.RESTORE_CM1 register offsets */
-#define OMAP4430_CM_CLKSEL_CORE_RESTORE                        OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0000)
-#define OMAP4430_CM_DIV_M2_DPLL_CORE_RESTORE           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0004)
-#define OMAP4430_CM_DIV_M3_DPLL_CORE_RESTORE           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0008)
-#define OMAP4430_CM_DIV_M4_DPLL_CORE_RESTORE           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x000c)
-#define OMAP4430_CM_DIV_M5_DPLL_CORE_RESTORE           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0010)
-#define OMAP4430_CM_DIV_M6_DPLL_CORE_RESTORE           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0014)
-#define OMAP4430_CM_DIV_M7_DPLL_CORE_RESTORE           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0018)
-#define OMAP4430_CM_CLKSEL_DPLL_CORE_RESTORE           OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x001c)
-#define OMAP4430_CM_SSC_DELTAMSTEP_DPLL_CORE_RESTORE   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0020)
-#define OMAP4430_CM_SSC_MODFREQDIV_DPLL_CORE_RESTORE   OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0024)
-#define OMAP4430_CM_CLKMODE_DPLL_CORE_RESTORE          OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0028)
-#define OMAP4430_CM_SHADOW_FREQ_CONFIG1_RESTORE                OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x002c)
-#define OMAP4430_CM_AUTOIDLE_DPLL_CORE_RESTORE         OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0030)
-#define OMAP4430_CM_MPU_CLKSTCTRL_RESTORE              OMAP44XX_CM1_REGADDR(OMAP4430_CM1_RESTORE_MOD, 0x0034)
-
 /* CM2 */
 
-
 /* CM2.OCP_SOCKET_CM2 register offsets */
+#define OMAP4_REVISION_CM2_OFFSET                      0x0000
 #define OMAP4430_REVISION_CM2                          OMAP44XX_CM2_REGADDR(OMAP4430_CM2_OCP_SOCKET_MOD, 0x0000)
+#define OMAP4_CM_CM2_PROFILING_CLKCTRL_OFFSET          0x0040
 #define OMAP4430_CM_CM2_PROFILING_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_OCP_SOCKET_MOD, 0x0040)
 
 /* CM2.CKGEN_CM2 register offsets */
+#define OMAP4_CM_CLKSEL_DUCATI_ISS_ROOT_OFFSET         0x0000
 #define OMAP4430_CM_CLKSEL_DUCATI_ISS_ROOT             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0000)
+#define OMAP4_CM_CLKSEL_USB_60MHZ_OFFSET               0x0004
 #define OMAP4430_CM_CLKSEL_USB_60MHZ                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0004)
+#define OMAP4_CM_SCALE_FCLK_OFFSET                     0x0008
 #define OMAP4430_CM_SCALE_FCLK                         OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0008)
+#define OMAP4_CM_CORE_DVFS_PERF1_OFFSET                        0x0010
 #define OMAP4430_CM_CORE_DVFS_PERF1                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0010)
+#define OMAP4_CM_CORE_DVFS_PERF2_OFFSET                        0x0014
 #define OMAP4430_CM_CORE_DVFS_PERF2                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0014)
+#define OMAP4_CM_CORE_DVFS_PERF3_OFFSET                        0x0018
 #define OMAP4430_CM_CORE_DVFS_PERF3                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0018)
+#define OMAP4_CM_CORE_DVFS_PERF4_OFFSET                        0x001c
 #define OMAP4430_CM_CORE_DVFS_PERF4                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x001c)
+#define OMAP4_CM_CORE_DVFS_CURRENT_OFFSET              0x0024
 #define OMAP4430_CM_CORE_DVFS_CURRENT                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0024)
+#define OMAP4_CM_IVA_DVFS_PERF_TESLA_OFFSET            0x0028
 #define OMAP4430_CM_IVA_DVFS_PERF_TESLA                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0028)
+#define OMAP4_CM_IVA_DVFS_PERF_IVAHD_OFFSET            0x002c
 #define OMAP4430_CM_IVA_DVFS_PERF_IVAHD                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x002c)
+#define OMAP4_CM_IVA_DVFS_PERF_ABE_OFFSET              0x0030
 #define OMAP4430_CM_IVA_DVFS_PERF_ABE                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0030)
+#define OMAP4_CM_IVA_DVFS_CURRENT_OFFSET               0x0038
 #define OMAP4430_CM_IVA_DVFS_CURRENT                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0038)
+#define OMAP4_CM_CLKMODE_DPLL_PER_OFFSET               0x0040
 #define OMAP4430_CM_CLKMODE_DPLL_PER                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0040)
+#define OMAP4_CM_IDLEST_DPLL_PER_OFFSET                        0x0044
 #define OMAP4430_CM_IDLEST_DPLL_PER                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0044)
+#define OMAP4_CM_AUTOIDLE_DPLL_PER_OFFSET              0x0048
 #define OMAP4430_CM_AUTOIDLE_DPLL_PER                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0048)
+#define OMAP4_CM_CLKSEL_DPLL_PER_OFFSET                        0x004c
 #define OMAP4430_CM_CLKSEL_DPLL_PER                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x004c)
+#define OMAP4_CM_DIV_M2_DPLL_PER_OFFSET                        0x0050
 #define OMAP4430_CM_DIV_M2_DPLL_PER                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0050)
+#define OMAP4_CM_DIV_M3_DPLL_PER_OFFSET                        0x0054
 #define OMAP4430_CM_DIV_M3_DPLL_PER                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0054)
+#define OMAP4_CM_DIV_M4_DPLL_PER_OFFSET                        0x0058
 #define OMAP4430_CM_DIV_M4_DPLL_PER                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0058)
+#define OMAP4_CM_DIV_M5_DPLL_PER_OFFSET                        0x005c
 #define OMAP4430_CM_DIV_M5_DPLL_PER                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x005c)
+#define OMAP4_CM_DIV_M6_DPLL_PER_OFFSET                        0x0060
 #define OMAP4430_CM_DIV_M6_DPLL_PER                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0060)
+#define OMAP4_CM_DIV_M7_DPLL_PER_OFFSET                        0x0064
 #define OMAP4430_CM_DIV_M7_DPLL_PER                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0064)
+#define OMAP4_CM_SSC_DELTAMSTEP_DPLL_PER_OFFSET                0x0068
 #define OMAP4430_CM_SSC_DELTAMSTEP_DPLL_PER            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0068)
+#define OMAP4_CM_SSC_MODFREQDIV_DPLL_PER_OFFSET                0x006c
 #define OMAP4430_CM_SSC_MODFREQDIV_DPLL_PER            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x006c)
+#define OMAP4_CM_EMU_OVERRIDE_DPLL_PER_OFFSET          0x0070
 #define OMAP4430_CM_EMU_OVERRIDE_DPLL_PER              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0070)
+#define OMAP4_CM_CLKMODE_DPLL_USB_OFFSET               0x0080
 #define OMAP4430_CM_CLKMODE_DPLL_USB                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0080)
+#define OMAP4_CM_IDLEST_DPLL_USB_OFFSET                        0x0084
 #define OMAP4430_CM_IDLEST_DPLL_USB                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0084)
+#define OMAP4_CM_AUTOIDLE_DPLL_USB_OFFSET              0x0088
 #define OMAP4430_CM_AUTOIDLE_DPLL_USB                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0088)
+#define OMAP4_CM_CLKSEL_DPLL_USB_OFFSET                        0x008c
 #define OMAP4430_CM_CLKSEL_DPLL_USB                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x008c)
+#define OMAP4_CM_DIV_M2_DPLL_USB_OFFSET                        0x0090
 #define OMAP4430_CM_DIV_M2_DPLL_USB                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x0090)
+#define OMAP4_CM_SSC_DELTAMSTEP_DPLL_USB_OFFSET                0x00a8
 #define OMAP4430_CM_SSC_DELTAMSTEP_DPLL_USB            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00a8)
+#define OMAP4_CM_SSC_MODFREQDIV_DPLL_USB_OFFSET                0x00ac
 #define OMAP4430_CM_SSC_MODFREQDIV_DPLL_USB            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00ac)
+#define OMAP4_CM_CLKDCOLDO_DPLL_USB_OFFSET             0x00b4
 #define OMAP4430_CM_CLKDCOLDO_DPLL_USB                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00b4)
+#define OMAP4_CM_CLKMODE_DPLL_UNIPRO_OFFSET            0x00c0
 #define OMAP4430_CM_CLKMODE_DPLL_UNIPRO                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00c0)
+#define OMAP4_CM_IDLEST_DPLL_UNIPRO_OFFSET             0x00c4
 #define OMAP4430_CM_IDLEST_DPLL_UNIPRO                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00c4)
+#define OMAP4_CM_AUTOIDLE_DPLL_UNIPRO_OFFSET           0x00c8
 #define OMAP4430_CM_AUTOIDLE_DPLL_UNIPRO               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00c8)
+#define OMAP4_CM_CLKSEL_DPLL_UNIPRO_OFFSET             0x00cc
 #define OMAP4430_CM_CLKSEL_DPLL_UNIPRO                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00cc)
+#define OMAP4_CM_DIV_M2_DPLL_UNIPRO_OFFSET             0x00d0
 #define OMAP4430_CM_DIV_M2_DPLL_UNIPRO                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00d0)
+#define OMAP4_CM_SSC_DELTAMSTEP_DPLL_UNIPRO_OFFSET     0x00e8
 #define OMAP4430_CM_SSC_DELTAMSTEP_DPLL_UNIPRO         OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00e8)
+#define OMAP4_CM_SSC_MODFREQDIV_DPLL_UNIPRO_OFFSET     0x00ec
 #define OMAP4430_CM_SSC_MODFREQDIV_DPLL_UNIPRO         OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CKGEN_MOD, 0x00ec)
 
 /* CM2.ALWAYS_ON_CM2 register offsets */
+#define OMAP4_CM_ALWON_CLKSTCTRL_OFFSET                        0x0000
 #define OMAP4430_CM_ALWON_CLKSTCTRL                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_ALWAYS_ON_MOD, 0x0000)
+#define OMAP4_CM_ALWON_MDMINTC_CLKCTRL_OFFSET          0x0020
 #define OMAP4430_CM_ALWON_MDMINTC_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_ALWAYS_ON_MOD, 0x0020)
+#define OMAP4_CM_ALWON_SR_MPU_CLKCTRL_OFFSET           0x0028
 #define OMAP4430_CM_ALWON_SR_MPU_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_ALWAYS_ON_MOD, 0x0028)
+#define OMAP4_CM_ALWON_SR_IVA_CLKCTRL_OFFSET           0x0030
 #define OMAP4430_CM_ALWON_SR_IVA_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_ALWAYS_ON_MOD, 0x0030)
+#define OMAP4_CM_ALWON_SR_CORE_CLKCTRL_OFFSET          0x0038
 #define OMAP4430_CM_ALWON_SR_CORE_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_ALWAYS_ON_MOD, 0x0038)
 
 /* CM2.CORE_CM2 register offsets */
+#define OMAP4_CM_L3_1_CLKSTCTRL_OFFSET                 0x0000
 #define OMAP4430_CM_L3_1_CLKSTCTRL                     OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0000)
+#define OMAP4_CM_L3_1_DYNAMICDEP_OFFSET                        0x0008
 #define OMAP4430_CM_L3_1_DYNAMICDEP                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0008)
+#define OMAP4_CM_L3_1_L3_1_CLKCTRL_OFFSET              0x0020
 #define OMAP4430_CM_L3_1_L3_1_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0020)
+#define OMAP4_CM_L3_2_CLKSTCTRL_OFFSET                 0x0100
 #define OMAP4430_CM_L3_2_CLKSTCTRL                     OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0100)
+#define OMAP4_CM_L3_2_DYNAMICDEP_OFFSET                        0x0108
 #define OMAP4430_CM_L3_2_DYNAMICDEP                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0108)
+#define OMAP4_CM_L3_2_L3_2_CLKCTRL_OFFSET              0x0120
 #define OMAP4430_CM_L3_2_L3_2_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0120)
+#define OMAP4_CM_L3_2_GPMC_CLKCTRL_OFFSET              0x0128
 #define OMAP4430_CM_L3_2_GPMC_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0128)
+#define OMAP4_CM_L3_2_OCMC_RAM_CLKCTRL_OFFSET          0x0130
 #define OMAP4430_CM_L3_2_OCMC_RAM_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0130)
+#define OMAP4_CM_DUCATI_CLKSTCTRL_OFFSET               0x0200
 #define OMAP4430_CM_DUCATI_CLKSTCTRL                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0200)
+#define OMAP4_CM_DUCATI_STATICDEP_OFFSET               0x0204
 #define OMAP4430_CM_DUCATI_STATICDEP                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0204)
+#define OMAP4_CM_DUCATI_DYNAMICDEP_OFFSET              0x0208
 #define OMAP4430_CM_DUCATI_DYNAMICDEP                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0208)
+#define OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET          0x0220
 #define OMAP4430_CM_DUCATI_DUCATI_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0220)
+#define OMAP4_CM_SDMA_CLKSTCTRL_OFFSET                 0x0300
 #define OMAP4430_CM_SDMA_CLKSTCTRL                     OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0300)
+#define OMAP4_CM_SDMA_STATICDEP_OFFSET                 0x0304
 #define OMAP4430_CM_SDMA_STATICDEP                     OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0304)
+#define OMAP4_CM_SDMA_DYNAMICDEP_OFFSET                        0x0308
 #define OMAP4430_CM_SDMA_DYNAMICDEP                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0308)
+#define OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET              0x0320
 #define OMAP4430_CM_SDMA_SDMA_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0320)
+#define OMAP4_CM_MEMIF_CLKSTCTRL_OFFSET                        0x0400
 #define OMAP4430_CM_MEMIF_CLKSTCTRL                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0400)
+#define OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET              0x0420
 #define OMAP4430_CM_MEMIF_DMM_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0420)
+#define OMAP4_CM_MEMIF_EMIF_FW_CLKCTRL_OFFSET          0x0428
 #define OMAP4430_CM_MEMIF_EMIF_FW_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0428)
+#define OMAP4_CM_MEMIF_EMIF_1_CLKCTRL_OFFSET           0x0430
 #define OMAP4430_CM_MEMIF_EMIF_1_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0430)
+#define OMAP4_CM_MEMIF_EMIF_2_CLKCTRL_OFFSET           0x0438
 #define OMAP4430_CM_MEMIF_EMIF_2_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0438)
+#define OMAP4_CM_MEMIF_DLL_CLKCTRL_OFFSET              0x0440
 #define OMAP4430_CM_MEMIF_DLL_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0440)
+#define OMAP4_CM_MEMIF_EMIF_H1_CLKCTRL_OFFSET          0x0450
 #define OMAP4430_CM_MEMIF_EMIF_H1_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0450)
+#define OMAP4_CM_MEMIF_EMIF_H2_CLKCTRL_OFFSET          0x0458
 #define OMAP4430_CM_MEMIF_EMIF_H2_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0458)
+#define OMAP4_CM_MEMIF_DLL_H_CLKCTRL_OFFSET            0x0460
 #define OMAP4430_CM_MEMIF_DLL_H_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0460)
+#define OMAP4_CM_D2D_CLKSTCTRL_OFFSET                  0x0500
 #define OMAP4430_CM_D2D_CLKSTCTRL                      OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0500)
+#define OMAP4_CM_D2D_STATICDEP_OFFSET                  0x0504
 #define OMAP4430_CM_D2D_STATICDEP                      OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0504)
+#define OMAP4_CM_D2D_DYNAMICDEP_OFFSET                 0x0508
 #define OMAP4430_CM_D2D_DYNAMICDEP                     OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0508)
+#define OMAP4_CM_D2D_SAD2D_CLKCTRL_OFFSET              0x0520
 #define OMAP4430_CM_D2D_SAD2D_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0520)
+#define OMAP4_CM_D2D_MODEM_ICR_CLKCTRL_OFFSET          0x0528
 #define OMAP4430_CM_D2D_MODEM_ICR_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0528)
+#define OMAP4_CM_D2D_SAD2D_FW_CLKCTRL_OFFSET           0x0530
 #define OMAP4430_CM_D2D_SAD2D_FW_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0530)
+#define OMAP4_CM_L4CFG_CLKSTCTRL_OFFSET                        0x0600
 #define OMAP4430_CM_L4CFG_CLKSTCTRL                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0600)
+#define OMAP4_CM_L4CFG_DYNAMICDEP_OFFSET               0x0608
 #define OMAP4430_CM_L4CFG_DYNAMICDEP                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0608)
+#define OMAP4_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET           0x0620
 #define OMAP4430_CM_L4CFG_L4_CFG_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0620)
+#define OMAP4_CM_L4CFG_HW_SEM_CLKCTRL_OFFSET           0x0628
 #define OMAP4430_CM_L4CFG_HW_SEM_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0628)
+#define OMAP4_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET          0x0630
 #define OMAP4430_CM_L4CFG_MAILBOX_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0630)
+#define OMAP4_CM_L4CFG_SAR_ROM_CLKCTRL_OFFSET          0x0638
 #define OMAP4430_CM_L4CFG_SAR_ROM_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0638)
+#define OMAP4_CM_L3INSTR_CLKSTCTRL_OFFSET              0x0700
 #define OMAP4430_CM_L3INSTR_CLKSTCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0700)
+#define OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET           0x0720
 #define OMAP4430_CM_L3INSTR_L3_3_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0720)
+#define OMAP4_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET       0x0728
 #define OMAP4430_CM_L3INSTR_L3_INSTR_CLKCTRL           OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0728)
+#define OMAP4_CM_L3INSTR_OCP_WP1_CLKCTRL_OFFSET                0x0740
 #define OMAP4430_CM_L3INSTR_OCP_WP1_CLKCTRL            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CORE_MOD, 0x0740)
 
 /* CM2.IVAHD_CM2 register offsets */
+#define OMAP4_CM_IVAHD_CLKSTCTRL_OFFSET                        0x0000
 #define OMAP4430_CM_IVAHD_CLKSTCTRL                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_IVAHD_MOD, 0x0000)
+#define OMAP4_CM_IVAHD_STATICDEP_OFFSET                        0x0004
 #define OMAP4430_CM_IVAHD_STATICDEP                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_IVAHD_MOD, 0x0004)
+#define OMAP4_CM_IVAHD_DYNAMICDEP_OFFSET               0x0008
 #define OMAP4430_CM_IVAHD_DYNAMICDEP                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_IVAHD_MOD, 0x0008)
+#define OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET            0x0020
 #define OMAP4430_CM_IVAHD_IVAHD_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_IVAHD_MOD, 0x0020)
+#define OMAP4_CM_IVAHD_SL2_CLKCTRL_OFFSET              0x0028
 #define OMAP4430_CM_IVAHD_SL2_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_IVAHD_MOD, 0x0028)
 
 /* CM2.CAM_CM2 register offsets */
+#define OMAP4_CM_CAM_CLKSTCTRL_OFFSET                  0x0000
 #define OMAP4430_CM_CAM_CLKSTCTRL                      OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CAM_MOD, 0x0000)
+#define OMAP4_CM_CAM_STATICDEP_OFFSET                  0x0004
 #define OMAP4430_CM_CAM_STATICDEP                      OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CAM_MOD, 0x0004)
+#define OMAP4_CM_CAM_DYNAMICDEP_OFFSET                 0x0008
 #define OMAP4430_CM_CAM_DYNAMICDEP                     OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CAM_MOD, 0x0008)
+#define OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET                        0x0020
 #define OMAP4430_CM_CAM_ISS_CLKCTRL                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CAM_MOD, 0x0020)
+#define OMAP4_CM_CAM_FDIF_CLKCTRL_OFFSET               0x0028
 #define OMAP4430_CM_CAM_FDIF_CLKCTRL                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CAM_MOD, 0x0028)
 
 /* CM2.DSS_CM2 register offsets */
+#define OMAP4_CM_DSS_CLKSTCTRL_OFFSET                  0x0000
 #define OMAP4430_CM_DSS_CLKSTCTRL                      OMAP44XX_CM2_REGADDR(OMAP4430_CM2_DSS_MOD, 0x0000)
+#define OMAP4_CM_DSS_STATICDEP_OFFSET                  0x0004
 #define OMAP4430_CM_DSS_STATICDEP                      OMAP44XX_CM2_REGADDR(OMAP4430_CM2_DSS_MOD, 0x0004)
+#define OMAP4_CM_DSS_DYNAMICDEP_OFFSET                 0x0008
 #define OMAP4430_CM_DSS_DYNAMICDEP                     OMAP44XX_CM2_REGADDR(OMAP4430_CM2_DSS_MOD, 0x0008)
+#define OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET                        0x0020
 #define OMAP4430_CM_DSS_DSS_CLKCTRL                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_DSS_MOD, 0x0020)
+#define OMAP4_CM_DSS_DEISS_CLKCTRL_OFFSET              0x0028
 #define OMAP4430_CM_DSS_DEISS_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_DSS_MOD, 0x0028)
 
 /* CM2.GFX_CM2 register offsets */
+#define OMAP4_CM_GFX_CLKSTCTRL_OFFSET                  0x0000
 #define OMAP4430_CM_GFX_CLKSTCTRL                      OMAP44XX_CM2_REGADDR(OMAP4430_CM2_GFX_MOD, 0x0000)
+#define OMAP4_CM_GFX_STATICDEP_OFFSET                  0x0004
 #define OMAP4430_CM_GFX_STATICDEP                      OMAP44XX_CM2_REGADDR(OMAP4430_CM2_GFX_MOD, 0x0004)
+#define OMAP4_CM_GFX_DYNAMICDEP_OFFSET                 0x0008
 #define OMAP4430_CM_GFX_DYNAMICDEP                     OMAP44XX_CM2_REGADDR(OMAP4430_CM2_GFX_MOD, 0x0008)
+#define OMAP4_CM_GFX_GFX_CLKCTRL_OFFSET                        0x0020
 #define OMAP4430_CM_GFX_GFX_CLKCTRL                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_GFX_MOD, 0x0020)
 
 /* CM2.L3INIT_CM2 register offsets */
+#define OMAP4_CM_L3INIT_CLKSTCTRL_OFFSET               0x0000
 #define OMAP4430_CM_L3INIT_CLKSTCTRL                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0000)
+#define OMAP4_CM_L3INIT_STATICDEP_OFFSET               0x0004
 #define OMAP4430_CM_L3INIT_STATICDEP                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0004)
+#define OMAP4_CM_L3INIT_DYNAMICDEP_OFFSET              0x0008
 #define OMAP4430_CM_L3INIT_DYNAMICDEP                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0008)
+#define OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET            0x0028
 #define OMAP4430_CM_L3INIT_MMC1_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0028)
+#define OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET            0x0030
 #define OMAP4430_CM_L3INIT_MMC2_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0030)
+#define OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET             0x0038
 #define OMAP4430_CM_L3INIT_HSI_CLKCTRL                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0038)
+#define OMAP4_CM_L3INIT_UNIPRO1_CLKCTRL_OFFSET         0x0040
 #define OMAP4430_CM_L3INIT_UNIPRO1_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0040)
+#define OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET                0x0058
 #define OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0058)
+#define OMAP4_CM_L3INIT_USB_OTG_CLKCTRL_OFFSET         0x0060
 #define OMAP4430_CM_L3INIT_USB_OTG_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0060)
+#define OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET         0x0068
 #define OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0068)
+#define OMAP4_CM_L3INIT_P1500_CLKCTRL_OFFSET           0x0078
 #define OMAP4430_CM_L3INIT_P1500_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0078)
+#define OMAP4_CM_L3INIT_EMAC_CLKCTRL_OFFSET            0x0080
 #define OMAP4430_CM_L3INIT_EMAC_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0080)
+#define OMAP4_CM_L3INIT_SATA_CLKCTRL_OFFSET            0x0088
 #define OMAP4430_CM_L3INIT_SATA_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0088)
+#define OMAP4_CM_L3INIT_TPPSS_CLKCTRL_OFFSET           0x0090
 #define OMAP4430_CM_L3INIT_TPPSS_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0090)
+#define OMAP4_CM_L3INIT_PCIESS_CLKCTRL_OFFSET          0x0098
 #define OMAP4430_CM_L3INIT_PCIESS_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x0098)
+#define OMAP4_CM_L3INIT_CCPTX_CLKCTRL_OFFSET           0x00a8
 #define OMAP4430_CM_L3INIT_CCPTX_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x00a8)
+#define OMAP4_CM_L3INIT_XHPI_CLKCTRL_OFFSET            0x00c0
 #define OMAP4430_CM_L3INIT_XHPI_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x00c0)
+#define OMAP4_CM_L3INIT_MMC6_CLKCTRL_OFFSET            0x00c8
 #define OMAP4430_CM_L3INIT_MMC6_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x00c8)
+#define OMAP4_CM_L3INIT_USB_HOST_FS_CLKCTRL_OFFSET     0x00d0
 #define OMAP4430_CM_L3INIT_USB_HOST_FS_CLKCTRL         OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x00d0)
+#define OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET   0x00e0
 #define OMAP4430_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL       OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L3INIT_MOD, 0x00e0)
 
 /* CM2.L4PER_CM2 register offsets */
+#define OMAP4_CM_L4PER_CLKSTCTRL_OFFSET                        0x0000
 #define OMAP4430_CM_L4PER_CLKSTCTRL                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0000)
+#define OMAP4_CM_L4PER_DYNAMICDEP_OFFSET               0x0008
 #define OMAP4430_CM_L4PER_DYNAMICDEP                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0008)
+#define OMAP4_CM_L4PER_ADC_CLKCTRL_OFFSET              0x0020
 #define OMAP4430_CM_L4PER_ADC_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0020)
+#define OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET                0x0028
 #define OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0028)
+#define OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET                0x0030
 #define OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0030)
+#define OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET         0x0038
 #define OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0038)
+#define OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET         0x0040
 #define OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0040)
+#define OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET         0x0048
 #define OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0048)
+#define OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET         0x0050
 #define OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0050)
+#define OMAP4_CM_L4PER_ELM_CLKCTRL_OFFSET              0x0058
 #define OMAP4430_CM_L4PER_ELM_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0058)
+#define OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET            0x0060
 #define OMAP4430_CM_L4PER_GPIO2_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0060)
+#define OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET            0x0068
 #define OMAP4430_CM_L4PER_GPIO3_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0068)
+#define OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET            0x0070
 #define OMAP4430_CM_L4PER_GPIO4_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0070)
+#define OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET            0x0078
 #define OMAP4430_CM_L4PER_GPIO5_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0078)
+#define OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET            0x0080
 #define OMAP4430_CM_L4PER_GPIO6_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0080)
+#define OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET            0x0088
 #define OMAP4430_CM_L4PER_HDQ1W_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0088)
+#define OMAP4_CM_L4PER_HECC1_CLKCTRL_OFFSET            0x0090
 #define OMAP4430_CM_L4PER_HECC1_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0090)
+#define OMAP4_CM_L4PER_HECC2_CLKCTRL_OFFSET            0x0098
 #define OMAP4430_CM_L4PER_HECC2_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0098)
+#define OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET             0x00a0
 #define OMAP4430_CM_L4PER_I2C1_CLKCTRL                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00a0)
+#define OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET             0x00a8
 #define OMAP4430_CM_L4PER_I2C2_CLKCTRL                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00a8)
+#define OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET             0x00b0
 #define OMAP4430_CM_L4PER_I2C3_CLKCTRL                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00b0)
+#define OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET             0x00b8
 #define OMAP4430_CM_L4PER_I2C4_CLKCTRL                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00b8)
+#define OMAP4_CM_L4PER_L4PER_CLKCTRL_OFFSET            0x00c0
 #define OMAP4430_CM_L4PER_L4PER_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00c0)
+#define OMAP4_CM_L4PER_MCASP2_CLKCTRL_OFFSET           0x00d0
 #define OMAP4430_CM_L4PER_MCASP2_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00d0)
+#define OMAP4_CM_L4PER_MCASP3_CLKCTRL_OFFSET           0x00d8
 #define OMAP4430_CM_L4PER_MCASP3_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00d8)
+#define OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET           0x00e0
 #define OMAP4430_CM_L4PER_MCBSP4_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00e0)
+#define OMAP4_CM_L4PER_MGATE_CLKCTRL_OFFSET            0x00e8
 #define OMAP4430_CM_L4PER_MGATE_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00e8)
+#define OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET           0x00f0
 #define OMAP4430_CM_L4PER_MCSPI1_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00f0)
+#define OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET           0x00f8
 #define OMAP4430_CM_L4PER_MCSPI2_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x00f8)
+#define OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET           0x0100
 #define OMAP4430_CM_L4PER_MCSPI3_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0100)
+#define OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET           0x0108
 #define OMAP4430_CM_L4PER_MCSPI4_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0108)
+#define OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET           0x0120
 #define OMAP4430_CM_L4PER_MMCSD3_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0120)
+#define OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET           0x0128
 #define OMAP4430_CM_L4PER_MMCSD4_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0128)
+#define OMAP4_CM_L4PER_MSPROHG_CLKCTRL_OFFSET          0x0130
 #define OMAP4430_CM_L4PER_MSPROHG_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0130)
+#define OMAP4_CM_L4PER_SLIMBUS2_CLKCTRL_OFFSET         0x0138
 #define OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0138)
+#define OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET            0x0140
 #define OMAP4430_CM_L4PER_UART1_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0140)
+#define OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET            0x0148
 #define OMAP4430_CM_L4PER_UART2_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0148)
+#define OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET            0x0150
 #define OMAP4430_CM_L4PER_UART3_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0150)
+#define OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET            0x0158
 #define OMAP4430_CM_L4PER_UART4_CLKCTRL                        OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0158)
+#define OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET           0x0160
 #define OMAP4430_CM_L4PER_MMCSD5_CLKCTRL               OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0160)
+#define OMAP4_CM_L4PER_I2C5_CLKCTRL_OFFSET             0x0168
 #define OMAP4430_CM_L4PER_I2C5_CLKCTRL                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0168)
+#define OMAP4_CM_L4SEC_CLKSTCTRL_OFFSET                        0x0180
 #define OMAP4430_CM_L4SEC_CLKSTCTRL                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0180)
+#define OMAP4_CM_L4SEC_STATICDEP_OFFSET                        0x0184
 #define OMAP4430_CM_L4SEC_STATICDEP                    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0184)
+#define OMAP4_CM_L4SEC_DYNAMICDEP_OFFSET               0x0188
 #define OMAP4430_CM_L4SEC_DYNAMICDEP                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x0188)
+#define OMAP4_CM_L4SEC_AES1_CLKCTRL_OFFSET             0x01a0
 #define OMAP4430_CM_L4SEC_AES1_CLKCTRL                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x01a0)
+#define OMAP4_CM_L4SEC_AES2_CLKCTRL_OFFSET             0x01a8
 #define OMAP4430_CM_L4SEC_AES2_CLKCTRL                 OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x01a8)
+#define OMAP4_CM_L4SEC_DES3DES_CLKCTRL_OFFSET          0x01b0
 #define OMAP4430_CM_L4SEC_DES3DES_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x01b0)
+#define OMAP4_CM_L4SEC_PKAEIP29_CLKCTRL_OFFSET         0x01b8
 #define OMAP4430_CM_L4SEC_PKAEIP29_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x01b8)
+#define OMAP4_CM_L4SEC_RNG_CLKCTRL_OFFSET              0x01c0
 #define OMAP4430_CM_L4SEC_RNG_CLKCTRL                  OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x01c0)
+#define OMAP4_CM_L4SEC_SHA2MD51_CLKCTRL_OFFSET         0x01c8
 #define OMAP4430_CM_L4SEC_SHA2MD51_CLKCTRL             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x01c8)
+#define OMAP4_CM_L4SEC_CRYPTODMA_CLKCTRL_OFFSET                0x01d8
 #define OMAP4430_CM_L4SEC_CRYPTODMA_CLKCTRL            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_L4PER_MOD, 0x01d8)
 
 /* CM2.CEFUSE_CM2 register offsets */
+#define OMAP4_CM_CEFUSE_CLKSTCTRL_OFFSET               0x0000
 #define OMAP4430_CM_CEFUSE_CLKSTCTRL                   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CEFUSE_MOD, 0x0000)
+#define OMAP4_CM_CEFUSE_CEFUSE_CLKCTRL_OFFSET          0x0020
 #define OMAP4430_CM_CEFUSE_CEFUSE_CLKCTRL              OMAP44XX_CM2_REGADDR(OMAP4430_CM2_CEFUSE_MOD, 0x0020)
-
-/* CM2.RESTORE_CM2 register offsets */
-#define OMAP4430_CM_L3_1_CLKSTCTRL_RESTORE             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0000)
-#define OMAP4430_CM_L3_2_CLKSTCTRL_RESTORE             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0004)
-#define OMAP4430_CM_L4CFG_CLKSTCTRL_RESTORE            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0008)
-#define OMAP4430_CM_MEMIF_CLKSTCTRL_RESTORE            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x000c)
-#define OMAP4430_CM_L4PER_CLKSTCTRL_RESTORE            OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0010)
-#define OMAP4430_CM_L3INIT_CLKSTCTRL_RESTORE           OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0014)
-#define OMAP4430_CM_L3INSTR_L3_3_CLKCTRL_RESTORE       OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0018)
-#define OMAP4430_CM_L3INSTR_L3_INSTR_CLKCTRL_RESTORE   OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x001c)
-#define OMAP4430_CM_L3INSTR_OCP_WP1_CLKCTRL_RESTORE    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0020)
-#define OMAP4430_CM_L4PER_GPIO2_CLKCTRL_RESTORE                OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0024)
-#define OMAP4430_CM_L4PER_GPIO3_CLKCTRL_RESTORE                OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0028)
-#define OMAP4430_CM_L4PER_GPIO4_CLKCTRL_RESTORE                OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x002c)
-#define OMAP4430_CM_L4PER_GPIO5_CLKCTRL_RESTORE                OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0030)
-#define OMAP4430_CM_L4PER_GPIO6_CLKCTRL_RESTORE                OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0034)
-#define OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL_RESTORE    OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0038)
-#define OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL_RESTORE     OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x003c)
-#define OMAP4430_CM_SDMA_STATICDEP_RESTORE             OMAP44XX_CM2_REGADDR(OMAP4430_CM2_RESTORE_MOD, 0x0040)
 #endif
index 4af76bb..b101091 100644 (file)
 
 #include <asm/atomic.h>
 
-#include "cm.h"
-
-/* XXX move this to cm.h */
-/* MAX_MODULE_READY_TIME: max milliseconds for module to leave idle */
-#define MAX_MODULE_READY_TIME                  20000
+#include <plat/common.h>
 
-/*
- * OMAP4_PRCM_CM_CLKCTRL_IDLEST_MASK: isolates the IDLEST field in the
- * CM_CLKCTRL register.
- */
-#define OMAP4_PRCM_CM_CLKCTRL_IDLEST_MASK      (0x2 << 16)
-
-/*
- * OMAP4 prcm_mod u32 fields contain packed data: the CM ID in bit 16 and
- * the PRCM module offset address (from the CM module base) in bits 15-0.
- */
-#define OMAP4_PRCM_MOD_CM_ID_SHIFT             16
-#define OMAP4_PRCM_MOD_OFFS_MASK               0xffff
+#include "cm.h"
+#include "cm-regbits-44xx.h"
 
 /**
- * omap4_cm_wait_idlest_ready - wait for a module to leave idle or standby
- * @prcm_mod: PRCM module offset (XXX example)
- * @prcm_dev_offs: PRCM device offset (e.g. MCASP XXX example)
+ * omap4_cm_wait_module_ready - wait for a module to be in 'func' state
+ * @clkctrl_reg: CLKCTRL module address
+ *
+ * Wait for the module IDLEST to be functional. If the idle state is in any
+ * the non functional state (trans, idle or disabled), module and thus the
+ * sysconfig cannot be accessed and will probably lead to an "imprecise
+ * external abort"
+ *
+ * Module idle state:
+ *   0x0 func:     Module is fully functional, including OCP
+ *   0x1 trans:    Module is performing transition: wakeup, or sleep, or sleep
+ *                 abortion
+ *   0x2 idle:     Module is in Idle mode (only OCP part). It is functional if
+ *                 using separate functional clock
+ *   0x3 disabled: Module is disabled and cannot be accessed
  *
- * XXX document
+ * TODO: Need to handle module accessible in idle state
  */
-int omap4_cm_wait_idlest_ready(u32 prcm_mod, u8 prcm_dev_offs)
+int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg)
 {
-       /* FIXME: Add clock manager related code */
-       return 0;
+       int i = 0;
+
+       if (!clkctrl_reg)
+               return 0;
+
+       omap_test_timeout(((__raw_readl(clkctrl_reg) &
+                           OMAP4430_IDLEST_MASK) == 0),
+                         MAX_MODULE_READY_TIME, i);
+
+       return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY;
 }
 
index 43f8a33..a8d20ee 100644 (file)
@@ -194,11 +194,12 @@ void omap3_clear_scratchpad_contents(void)
        u32 offset = 0;
        v_addr = OMAP2_L4_IO_ADDRESS(OMAP343X_SCRATCHPAD_ROM);
        if (prm_read_mod_reg(OMAP3430_GR_MOD, OMAP3_PRM_RSTST_OFFSET) &
-               OMAP3430_GLOBAL_COLD_RST) {
+           OMAP3430_GLOBAL_COLD_RST_MASK) {
                for ( ; offset <= max_offset; offset += 0x4)
                        __raw_writel(0x0, (v_addr + offset));
-               prm_set_mod_reg_bits(OMAP3430_GLOBAL_COLD_RST, OMAP3430_GR_MOD,
-                       OMAP3_PRM_RSTST_OFFSET);
+               prm_set_mod_reg_bits(OMAP3430_GLOBAL_COLD_RST_MASK,
+                                    OMAP3430_GR_MOD,
+                                    OMAP3_PRM_RSTST_OFFSET);
        }
 }
 
index 12154d1..705a7a3 100644 (file)
@@ -624,6 +624,15 @@ static inline void omap_hsmmc_reset(void) {}
 static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
                        int controller_nr)
 {
+       if ((mmc_controller->slots[0].switch_pin > 0) && \
+               (mmc_controller->slots[0].switch_pin < OMAP_MAX_GPIO_LINES))
+               omap_mux_init_gpio(mmc_controller->slots[0].switch_pin,
+                                       OMAP_PIN_INPUT_PULLUP);
+       if ((mmc_controller->slots[0].gpio_wp > 0) && \
+               (mmc_controller->slots[0].gpio_wp < OMAP_MAX_GPIO_LINES))
+               omap_mux_init_gpio(mmc_controller->slots[0].gpio_wp,
+                                       OMAP_PIN_INPUT_PULLUP);
+
        if (cpu_is_omap2420() && controller_nr == 0) {
                omap_cfg_reg(H18_24XX_MMC_CMD);
                omap_cfg_reg(H15_24XX_MMC_CLKI);
@@ -819,6 +828,33 @@ static inline void omap_hdq_init(void)
 static inline void omap_hdq_init(void) {}
 #endif
 
+/*---------------------------------------------------------------------------*/
+
+#if defined(CONFIG_VIDEO_OMAP2_VOUT) || \
+       defined(CONFIG_VIDEO_OMAP2_VOUT_MODULE)
+#if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE)
+static struct resource omap_vout_resource[3 - CONFIG_FB_OMAP2_NUM_FBS] = {
+};
+#else
+static struct resource omap_vout_resource[2] = {
+};
+#endif
+
+static struct platform_device omap_vout_device = {
+       .name           = "omap_vout",
+       .num_resources  = ARRAY_SIZE(omap_vout_resource),
+       .resource       = &omap_vout_resource[0],
+       .id             = -1,
+};
+static void omap_init_vout(void)
+{
+       if (platform_device_register(&omap_vout_device) < 0)
+               printk(KERN_ERR "Unable to register OMAP-VOUT device\n");
+}
+#else
+static inline void omap_init_vout(void) {}
+#endif
+
 /*-------------------------------------------------------------------------*/
 
 static int __init omap2_init_devices(void)
@@ -834,6 +870,7 @@ static int __init omap2_init_devices(void)
        omap_hdq_init();
        omap_init_sti();
        omap_init_sha1_md5();
+       omap_init_vout();
 
        return 0;
 }
index 9ad2295..1ef54b0 100644 (file)
@@ -24,6 +24,7 @@
 
 static u16 control_pbias_offset;
 static u16 control_devconf1_offset;
+static u16 control_mmc1;
 
 #define HSMMC_NAME_LEN 9
 
@@ -42,7 +43,7 @@ static int hsmmc_get_context_loss(struct device *dev)
 #define hsmmc_get_context_loss NULL
 #endif
 
-static void hsmmc1_before_set_reg(struct device *dev, int slot,
+static void omap_hsmmc1_before_set_reg(struct device *dev, int slot,
                                  int power_on, int vdd)
 {
        u32 reg, prog_io;
@@ -95,7 +96,7 @@ static void hsmmc1_before_set_reg(struct device *dev, int slot,
        }
 }
 
-static void hsmmc1_after_set_reg(struct device *dev, int slot,
+static void omap_hsmmc1_after_set_reg(struct device *dev, int slot,
                                 int power_on, int vdd)
 {
        u32 reg;
@@ -119,6 +120,60 @@ static void hsmmc1_after_set_reg(struct device *dev, int slot,
        }
 }
 
+static void omap4_hsmmc1_before_set_reg(struct device *dev, int slot,
+                                 int power_on, int vdd)
+{
+       u32 reg;
+
+       /*
+        * Assume we power both OMAP VMMC1 (for CMD, CLK, DAT0..3) and the
+        * card with Vcc regulator (from twl4030 or whatever).  OMAP has both
+        * 1.8V and 3.0V modes, controlled by the PBIAS register.
+        *
+        * In 8-bit modes, OMAP VMMC1A (for DAT4..7) needs a supply, which
+        * is most naturally TWL VSIM; those pins also use PBIAS.
+        *
+        * FIXME handle VMMC1A as needed ...
+        */
+       reg = omap_ctrl_readl(control_pbias_offset);
+       reg &= ~(OMAP4_MMC1_PBIASLITE_PWRDNZ | OMAP4_MMC1_PWRDNZ |
+                                       OMAP4_USBC1_ICUSB_PWRDNZ);
+       omap_ctrl_writel(reg, control_pbias_offset);
+}
+
+static void omap4_hsmmc1_after_set_reg(struct device *dev, int slot,
+                                int power_on, int vdd)
+{
+       u32 reg;
+
+       if (power_on) {
+               reg = omap_ctrl_readl(control_pbias_offset);
+               reg |= OMAP4_MMC1_PBIASLITE_PWRDNZ;
+               if ((1 << vdd) <= MMC_VDD_165_195)
+                       reg &= ~OMAP4_MMC1_PBIASLITE_VMODE;
+               else
+                       reg |= OMAP4_MMC1_PBIASLITE_VMODE;
+               reg |= (OMAP4_MMC1_PBIASLITE_PWRDNZ | OMAP4_MMC1_PWRDNZ |
+                                               OMAP4_USBC1_ICUSB_PWRDNZ);
+               omap_ctrl_writel(reg, control_pbias_offset);
+               /* 4 microsec delay for comparator to generate an error*/
+               udelay(4);
+               reg = omap_ctrl_readl(control_pbias_offset);
+               if (reg & OMAP4_MMC1_PBIASLITE_VMODE_ERROR) {
+                       pr_err("Pbias Voltage is not same as LDO\n");
+                       /* Caution : On VMODE_ERROR Power Down MMC IO */
+                       reg &= ~(OMAP4_MMC1_PWRDNZ | OMAP4_USBC1_ICUSB_PWRDNZ);
+                       omap_ctrl_writel(reg, control_pbias_offset);
+               }
+       } else {
+               reg = omap_ctrl_readl(control_pbias_offset);
+                reg |= (OMAP4_MMC1_PBIASLITE_PWRDNZ |
+                       OMAP4_MMC1_PBIASLITE_VMODE | OMAP4_MMC1_PWRDNZ |
+                       OMAP4_USBC1_ICUSB_PWRDNZ);
+               omap_ctrl_writel(reg, control_pbias_offset);
+       }
+}
+
 static void hsmmc23_before_set_reg(struct device *dev, int slot,
                                   int power_on, int vdd)
 {
@@ -139,6 +194,12 @@ static void hsmmc23_before_set_reg(struct device *dev, int slot,
        }
 }
 
+static int nop_mmc_set_power(struct device *dev, int slot, int power_on,
+                                                       int vdd)
+{
+       return 0;
+}
+
 static struct omap_mmc_platform_data *hsmmc_data[OMAP34XX_NR_MMC] __initdata;
 
 void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
@@ -146,13 +207,28 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
        struct omap2_hsmmc_info *c;
        int nr_hsmmc = ARRAY_SIZE(hsmmc_data);
        int i;
+       u32 reg;
 
-       if (cpu_is_omap2430()) {
-               control_pbias_offset = OMAP243X_CONTROL_PBIAS_LITE;
-               control_devconf1_offset = OMAP243X_CONTROL_DEVCONF1;
+       if (!cpu_is_omap44xx()) {
+               if (cpu_is_omap2430()) {
+                       control_pbias_offset = OMAP243X_CONTROL_PBIAS_LITE;
+                       control_devconf1_offset = OMAP243X_CONTROL_DEVCONF1;
+               } else {
+                       control_pbias_offset = OMAP343X_CONTROL_PBIAS_LITE;
+                       control_devconf1_offset = OMAP343X_CONTROL_DEVCONF1;
+               }
        } else {
-               control_pbias_offset = OMAP343X_CONTROL_PBIAS_LITE;
-               control_devconf1_offset = OMAP343X_CONTROL_DEVCONF1;
+               control_pbias_offset = OMAP44XX_CONTROL_PBIAS_LITE;
+               control_mmc1 = OMAP44XX_CONTROL_MMC1;
+               reg = omap_ctrl_readl(control_mmc1);
+               reg |= (OMAP4_CONTROL_SDMMC1_PUSTRENGTHGRP0 |
+                       OMAP4_CONTROL_SDMMC1_PUSTRENGTHGRP1);
+               reg &= ~(OMAP4_CONTROL_SDMMC1_PUSTRENGTHGRP2 |
+                       OMAP4_CONTROL_SDMMC1_PUSTRENGTHGRP3);
+               reg |= (OMAP4_CONTROL_SDMMC1_DR0_SPEEDCTRL |
+                       OMAP4_CONTROL_SDMMC1_DR1_SPEEDCTRL |
+                       OMAP4_CONTROL_SDMMC1_DR2_SPEEDCTRL);
+               omap_ctrl_writel(reg, control_mmc1);
        }
 
        for (c = controllers; c->mmc; c++) {
@@ -216,11 +292,27 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
                 */
                mmc->slots[0].ocr_mask = c->ocr_mask;
 
+               if (cpu_is_omap3517() || cpu_is_omap3505())
+                       mmc->slots[0].set_power = nop_mmc_set_power;
+               else
+                       mmc->slots[0].features |= HSMMC_HAS_PBIAS;
+
                switch (c->mmc) {
                case 1:
-                       /* on-chip level shifting via PBIAS0/PBIAS1 */
-                       mmc->slots[0].before_set_reg = hsmmc1_before_set_reg;
-                       mmc->slots[0].after_set_reg = hsmmc1_after_set_reg;
+                       if (mmc->slots[0].features & HSMMC_HAS_PBIAS) {
+                               /* on-chip level shifting via PBIAS0/PBIAS1 */
+                               if (cpu_is_omap44xx()) {
+                                       mmc->slots[0].before_set_reg =
+                                               omap4_hsmmc1_before_set_reg;
+                                       mmc->slots[0].after_set_reg =
+                                               omap4_hsmmc1_after_set_reg;
+                               } else {
+                                       mmc->slots[0].before_set_reg =
+                                               omap_hsmmc1_before_set_reg;
+                                       mmc->slots[0].after_set_reg =
+                                               omap_hsmmc1_after_set_reg;
+                               }
+                       }
 
                        /* Omap3630 HSMMC1 supports only 4-bit */
                        if (cpu_is_omap3630() && c->wires > 4) {
@@ -235,9 +327,11 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
                                c->wires = 4;
                        /* FALLTHROUGH */
                case 3:
-                       /* off-chip level shifting, or none */
-                       mmc->slots[0].before_set_reg = hsmmc23_before_set_reg;
-                       mmc->slots[0].after_set_reg = NULL;
+                       if (mmc->slots[0].features & HSMMC_HAS_PBIAS) {
+                               /* off-chip level shifting, or none */
+                               mmc->slots[0].before_set_reg = hsmmc23_before_set_reg;
+                               mmc->slots[0].after_set_reg = NULL;
+                       }
                        break;
                default:
                        pr_err("MMC%d configuration not supported!\n", c->mmc);
index a705f94..f1e13d1 100644 (file)
 #define AM35XX_IPSS_HECC_BASE          0x5C050000
 #define AM35XX_IPSS_VPFE_BASE          0x5C060000
 
-#endif /*  __ASM_ARCH_AM35XX_H */
+
+/* HECC module specifc offset definitions */
+#define AM35XX_HECC_SCC_HECC_OFFSET    (0x0)
+#define AM35XX_HECC_SCC_RAM_OFFSET     (0x3000)
+#define AM35XX_HECC_RAM_OFFSET         (0x3000)
+#define AM35XX_HECC_MBOX_OFFSET                (0x2000)
+#define AM35XX_HECC_INT_LINE           (0x0)
+#define AM35XX_HECC_VERSION            (0x1)
+
+#define AM35XX_EMAC_CNTRL_OFFSET       (0x10000)
+#define AM35XX_EMAC_CNTRL_MOD_OFFSET   (0x0)
+#define AM35XX_EMAC_CNTRL_RAM_OFFSET   (0x20000)
+#define AM35XX_EMAC_MDIO_OFFSET                (0x30000)
+#define AM35XX_EMAC_CNTRL_RAM_SIZE     (0x2000)
+#define AM35XX_EMAC_RAM_ADDR           (AM3517_EMAC_BASE + \
+                                               AM3517_EMAC_CNTRL_RAM_OFFSET)
+#define AM35XX_EMAC_HW_RAM_ADDR                (0x01E20000)
+
+#endif  /*  __ASM_ARCH_AM35XX_H */
index 4a63a2e..35b2440 100644 (file)
@@ -13,6 +13,8 @@
 
 #include <linux/serial_reg.h>
 
+#include <asm/memory.h>
+
 #include <plat/serial.h>
 
 #define UART_OFFSET(addr)      ((addr) & 0x00ffffff)
@@ -40,13 +42,12 @@ omap_uart_lsr:      .word   0
                cmp     \rx, #0                 @ is port configured?
                bne     99f                     @ already configured
 
-               /* Check UART1 scratchpad register for uart to use */
+               /* Check the debug UART configuration set in uncompress.h */
                mrc     p15, 0, \rx, c1, c0
                tst     \rx, #1                 @ MMU enabled?
-               moveq   \rx, #0x48000000        @ physical base address
-               movne   \rx, #0xfa000000        @ virtual base
-               orr     \rx, \rx, #0x0006a000   @ uart1 on omap2/3/4
-               ldrb    \rx, [\rx, #(UART_SCR << OMAP_PORT_SHIFT)] @ scratchpad
+               ldreq   \rx, =OMAP_UART_INFO
+               ldrne   \rx, =__phys_to_virt(OMAP_UART_INFO)
+               ldr     \rx, [\rx, #0]
 
                /* Select the UART to use based on the UART1 scratchpad value */
                cmp     \rx, #0                 @ no port configured?
@@ -87,10 +88,10 @@ omap_uart_lsr:      .word   0
                b       98f
 44:            mov     \rx, #UART_OFFSET(OMAP4_UART4_BASE)
                b       98f
-95:            mov     \rx, #ZOOM_UART_BASE
+95:            ldr     \rx, =ZOOM_UART_BASE
                ldr     \tmp, =omap_uart_phys
                str     \rx, [\tmp, #0]
-               mov     \rx, #ZOOM_UART_VIRT
+               ldr     \rx, =ZOOM_UART_VIRT
                ldr     \tmp, =omap_uart_virt
                str     \rx, [\tmp, #0]
                mov     \rx, #(UART_LSR << ZOOM_PORT_SHIFT)
diff --git a/arch/arm/mach-omap2/include/mach/omap4-common.h b/arch/arm/mach-omap2/include/mach/omap4-common.h
new file mode 100644 (file)
index 0000000..423af3a
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * omap4-common.h: OMAP4 specific common header file
+ *
+ * Copyright (C) 2010 Texas Instruments, Inc.
+ *
+ * Author:
+ *     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.
+ */
+#ifndef OMAP_ARCH_OMAP4_COMMON_H
+#define OMAP_ARCH_OMAP4_COMMON_H
+
+#ifdef CONFIG_CACHE_L2X0
+extern void __iomem *l2cache_base;
+#endif
+
+extern void __iomem *gic_cpu_base_addr;
+extern void __iomem *gic_dist_base_addr;
+
+extern void __init gic_init_irq(void);
+extern void omap_smc1(u32 fn, u32 arg);
+
+#endif
index 87f676a..3cfb425 100644 (file)
@@ -166,6 +166,15 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
                .length         = L4_EMU_34XX_SIZE,
                .type           = MT_DEVICE
        },
+#if defined(CONFIG_DEBUG_LL) &&                                                        \
+       (defined(CONFIG_MACH_OMAP_ZOOM2) || defined(CONFIG_MACH_OMAP_ZOOM3))
+       {
+               .virtual        = ZOOM_UART_VIRT,
+               .pfn            = __phys_to_pfn(ZOOM_UART_BASE),
+               .length         = SZ_1M,
+               .type           = MT_DEVICE
+       },
+#endif
 };
 #endif
 #ifdef CONFIG_ARCH_OMAP4
index 4f63dc6..e82da68 100644 (file)
@@ -147,6 +147,7 @@ static u32 omap2_iommu_fault_isr(struct iommu *obj, u32 *ra)
        printk("\n");
 
        iommu_write_reg(obj, stat, MMU_IRQSTATUS);
+       omap2_iommu_disable(obj);
        return stat;
 }
 
@@ -184,7 +185,7 @@ static struct cr_regs *omap2_alloc_cr(struct iommu *obj, struct iotlb_entry *e)
        if (!cr)
                return ERR_PTR(-ENOMEM);
 
-       cr->cam = (e->da & MMU_CAM_VATAG_MASK) | e->prsvd | e->pgsz;
+       cr->cam = (e->da & MMU_CAM_VATAG_MASK) | e->prsvd | e->pgsz | e->valid;
        cr->ram = e->pa | e->endian | e->elsz | e->mixed;
 
        return cr;
@@ -212,7 +213,8 @@ static ssize_t omap2_dump_cr(struct iommu *obj, struct cr_regs *cr, char *buf)
        char *p = buf;
 
        /* FIXME: Need more detail analysis of cam/ram */
-       p += sprintf(p, "%08x %08x\n", cr->cam, cr->ram);
+       p += sprintf(p, "%08x %08x %01x\n", cr->cam, cr->ram,
+                                       (cr->cam & MMU_CAM_P) ? 1 : 0);
 
        return p - buf;
 }
index 07aa7b3..2ff4dce 100644 (file)
@@ -1901,26 +1901,15 @@ struct omap_ball __initdata omap36xx_cbp_ball[] = {
        _OMAP3_BALLENTRY(GPMC_A8, "m3", "ab18"),
        _OMAP3_BALLENTRY(GPMC_A9, "l3", "ac19"),
        _OMAP3_BALLENTRY(GPMC_CLK, "t4", "w2"),
-       _OMAP3_BALLENTRY(GPMC_D0, "k1", "m2"),
-       _OMAP3_BALLENTRY(GPMC_D1, "l1", "m1"),
        _OMAP3_BALLENTRY(GPMC_D10, "p1", "ab4"),
        _OMAP3_BALLENTRY(GPMC_D11, "r1", "ac4"),
        _OMAP3_BALLENTRY(GPMC_D12, "r2", "ab6"),
        _OMAP3_BALLENTRY(GPMC_D13, "t2", "ac6"),
        _OMAP3_BALLENTRY(GPMC_D14, "w1", "ab7"),
        _OMAP3_BALLENTRY(GPMC_D15, "y1", "ac7"),
-       _OMAP3_BALLENTRY(GPMC_D2, "l2", "n2"),
-       _OMAP3_BALLENTRY(GPMC_D3, "p2", "n1"),
-       _OMAP3_BALLENTRY(GPMC_D4, "t1", "r2"),
-       _OMAP3_BALLENTRY(GPMC_D5, "v1", "r1"),
-       _OMAP3_BALLENTRY(GPMC_D6, "v2", "t2"),
-       _OMAP3_BALLENTRY(GPMC_D7, "w2", "t1"),
-       _OMAP3_BALLENTRY(GPMC_D8, "h2", "ab3"),
        _OMAP3_BALLENTRY(GPMC_D9, "k2", "ac3"),
-       _OMAP3_BALLENTRY(GPMC_NADV_ALE, "f3", "w1"),
        _OMAP3_BALLENTRY(GPMC_NBE0_CLE, "g3", "ac12"),
        _OMAP3_BALLENTRY(GPMC_NBE1, "u3", NULL),
-       _OMAP3_BALLENTRY(GPMC_NCS0, "g4", "y2"),
        _OMAP3_BALLENTRY(GPMC_NCS1, "h3", "y1"),
        _OMAP3_BALLENTRY(GPMC_NCS2, "v8", NULL),
        _OMAP3_BALLENTRY(GPMC_NCS3, "u8", NULL),
@@ -1928,10 +1917,7 @@ struct omap_ball __initdata omap36xx_cbp_ball[] = {
        _OMAP3_BALLENTRY(GPMC_NCS5, "r8", NULL),
        _OMAP3_BALLENTRY(GPMC_NCS6, "p8", NULL),
        _OMAP3_BALLENTRY(GPMC_NCS7, "n8", NULL),
-       _OMAP3_BALLENTRY(GPMC_NOE, "g2", "v2"),
-       _OMAP3_BALLENTRY(GPMC_NWE, "f4", "v1"),
        _OMAP3_BALLENTRY(GPMC_NWP, "h1", "ab10"),
-       _OMAP3_BALLENTRY(GPMC_WAIT0, "m8", "ab12"),
        _OMAP3_BALLENTRY(GPMC_WAIT1, "l8", "ac10"),
        _OMAP3_BALLENTRY(GPMC_WAIT2, "k8", NULL),
        _OMAP3_BALLENTRY(GPMC_WAIT3, "j8", NULL),
@@ -1948,8 +1934,6 @@ struct omap_ball __initdata omap36xx_cbp_ball[] = {
        _OMAP3_BALLENTRY(HSUSB0_DIR, "r28", NULL),
        _OMAP3_BALLENTRY(HSUSB0_NXT, "t26", NULL),
        _OMAP3_BALLENTRY(HSUSB0_STP, "t25", NULL),
-       _OMAP3_BALLENTRY(I2C1_SCL, "k21", NULL),
-       _OMAP3_BALLENTRY(I2C1_SDA, "j21", NULL),
        _OMAP3_BALLENTRY(I2C2_SCL, "af15", NULL),
        _OMAP3_BALLENTRY(I2C2_SDA, "ae15", NULL),
        _OMAP3_BALLENTRY(I2C3_SCL, "af14", NULL),
@@ -1958,11 +1942,6 @@ struct omap_ball __initdata omap36xx_cbp_ball[] = {
        _OMAP3_BALLENTRY(I2C4_SDA, "ae26", NULL),
        _OMAP3_BALLENTRY(JTAG_EMU0, "aa11", NULL),
        _OMAP3_BALLENTRY(JTAG_EMU1, "aa10", NULL),
-       _OMAP3_BALLENTRY(JTAG_RTCK, "aa12", NULL),
-       _OMAP3_BALLENTRY(JTAG_TCK, "aa13", NULL),
-       _OMAP3_BALLENTRY(JTAG_TDI, "aa20", NULL),
-       _OMAP3_BALLENTRY(JTAG_TDO, "aa19", NULL),
-       _OMAP3_BALLENTRY(JTAG_TMS_TMSC, "aa18", NULL),
        _OMAP3_BALLENTRY(MCBSP1_CLKR, "y21", NULL),
        _OMAP3_BALLENTRY(MCBSP1_CLKX, "w21", NULL),
        _OMAP3_BALLENTRY(MCBSP1_DR, "u21", NULL),
@@ -2010,77 +1989,12 @@ struct omap_ball __initdata omap36xx_cbp_ball[] = {
        _OMAP3_BALLENTRY(SDMMC2_DAT5, "ah3", NULL),
        _OMAP3_BALLENTRY(SDMMC2_DAT6, "af3", NULL),
        _OMAP3_BALLENTRY(SDMMC2_DAT7, "ae3", NULL),
-       _OMAP3_BALLENTRY(SDRC_A0, NULL, "n22"),
-       _OMAP3_BALLENTRY(SDRC_A1, NULL, "n23"),
-       _OMAP3_BALLENTRY(SDRC_A10, NULL, "v22"),
-       _OMAP3_BALLENTRY(SDRC_A11, NULL, "v23"),
-       _OMAP3_BALLENTRY(SDRC_A12, NULL, "w22"),
-       _OMAP3_BALLENTRY(SDRC_A13, NULL, "w23"),
-       _OMAP3_BALLENTRY(SDRC_A14, NULL, "y22"),
-       _OMAP3_BALLENTRY(SDRC_A2, NULL, "p22"),
-       _OMAP3_BALLENTRY(SDRC_A3, NULL, "p23"),
-       _OMAP3_BALLENTRY(SDRC_A4, NULL, "r22"),
-       _OMAP3_BALLENTRY(SDRC_A5, NULL, "r23"),
-       _OMAP3_BALLENTRY(SDRC_A6, NULL, "t22"),
-       _OMAP3_BALLENTRY(SDRC_A7, NULL, "t23"),
-       _OMAP3_BALLENTRY(SDRC_A8, NULL, "u22"),
-       _OMAP3_BALLENTRY(SDRC_A9, NULL, "u23"),
-       _OMAP3_BALLENTRY(SDRC_BA0, "h9", "ab21"),
-       _OMAP3_BALLENTRY(SDRC_BA1, "h10", "ac21"),
        _OMAP3_BALLENTRY(SDRC_CKE0, "h16", "j22"),
        _OMAP3_BALLENTRY(SDRC_CKE1, "h17", "j23"),
-       _OMAP3_BALLENTRY(SDRC_CLK, "a13", "a11"),
-       _OMAP3_BALLENTRY(SDRC_D0, NULL, "j2"),
-       _OMAP3_BALLENTRY(SDRC_D1, NULL, "j1"),
-       _OMAP3_BALLENTRY(SDRC_D10, "c15", "b14"),
-       _OMAP3_BALLENTRY(SDRC_D11, "b16", "a14"),
-       _OMAP3_BALLENTRY(SDRC_D12, "d17", "b16"),
-       _OMAP3_BALLENTRY(SDRC_D13, "c17", "a16"),
-       _OMAP3_BALLENTRY(SDRC_D14, "b17", "b19"),
-       _OMAP3_BALLENTRY(SDRC_D15, "d18", "a19"),
-       _OMAP3_BALLENTRY(SDRC_D16, NULL, "b3"),
-       _OMAP3_BALLENTRY(SDRC_D17, NULL, "a3"),
-       _OMAP3_BALLENTRY(SDRC_D18, NULL, "b5"),
-       _OMAP3_BALLENTRY(SDRC_D19, NULL, "a5"),
-       _OMAP3_BALLENTRY(SDRC_D2, NULL, "g2"),
-       _OMAP3_BALLENTRY(SDRC_D20, NULL, "b8"),
-       _OMAP3_BALLENTRY(SDRC_D21, NULL, "a8"),
-       _OMAP3_BALLENTRY(SDRC_D22, NULL, "b9"),
-       _OMAP3_BALLENTRY(SDRC_D23, NULL, "a9"),
-       _OMAP3_BALLENTRY(SDRC_D24, NULL, "b21"),
-       _OMAP3_BALLENTRY(SDRC_D25, NULL, "a21"),
-       _OMAP3_BALLENTRY(SDRC_D26, NULL, "d22"),
-       _OMAP3_BALLENTRY(SDRC_D27, NULL, "d23"),
-       _OMAP3_BALLENTRY(SDRC_D28, NULL, "e22"),
-       _OMAP3_BALLENTRY(SDRC_D29, NULL, "e23"),
-       _OMAP3_BALLENTRY(SDRC_D3, NULL, "g1"),
-       _OMAP3_BALLENTRY(SDRC_D30, NULL, "g22"),
-       _OMAP3_BALLENTRY(SDRC_D31, NULL, "g23"),
-       _OMAP3_BALLENTRY(SDRC_D4, NULL, "f2"),
-       _OMAP3_BALLENTRY(SDRC_D5, NULL, "f1"),
-       _OMAP3_BALLENTRY(SDRC_D6, NULL, "d2"),
-       _OMAP3_BALLENTRY(SDRC_D7, NULL, "d1"),
-       _OMAP3_BALLENTRY(SDRC_D8, "c14", "b13"),
-       _OMAP3_BALLENTRY(SDRC_D9, "b14", "a13"),
-       _OMAP3_BALLENTRY(SDRC_DM0, NULL, "c1"),
-       _OMAP3_BALLENTRY(SDRC_DM1, "a16", "a17"),
-       _OMAP3_BALLENTRY(SDRC_DM2, NULL, "a6"),
-       _OMAP3_BALLENTRY(SDRC_DM3, NULL, "a20"),
-       _OMAP3_BALLENTRY(SDRC_DQS0, NULL, "c2"),
-       _OMAP3_BALLENTRY(SDRC_DQS1, "a17", "b17"),
-       _OMAP3_BALLENTRY(SDRC_DQS2, NULL, "b6"),
-       _OMAP3_BALLENTRY(SDRC_DQS3, NULL, "b20"),
-       _OMAP3_BALLENTRY(SDRC_NCAS, "h13", "l22"),
-       _OMAP3_BALLENTRY(SDRC_NCLK, "a14", "b11"),
-       _OMAP3_BALLENTRY(SDRC_NCS0, "h11", "m22"),
-       _OMAP3_BALLENTRY(SDRC_NCS1, "h12", "m23"),
-       _OMAP3_BALLENTRY(SDRC_NRAS, "h14", "l23"),
-       _OMAP3_BALLENTRY(SDRC_NWE, "h15", "k23"),
        _OMAP3_BALLENTRY(SIM_CLK, "p26", NULL),
        _OMAP3_BALLENTRY(SIM_IO, "p27", NULL),
        _OMAP3_BALLENTRY(SIM_PWRCTRL, "r27", NULL),
        _OMAP3_BALLENTRY(SIM_RST, "r25", NULL),
-       _OMAP3_BALLENTRY(SYS_32K, "ae25", NULL),
        _OMAP3_BALLENTRY(SYS_BOOT0, "ah26", NULL),
        _OMAP3_BALLENTRY(SYS_BOOT1, "ag26", NULL),
        _OMAP3_BALLENTRY(SYS_BOOT2, "ae14", NULL),
diff --git a/arch/arm/mach-omap2/omap-iommu.c b/arch/arm/mach-omap2/omap-iommu.c
new file mode 100644 (file)
index 0000000..eb9bee7
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+ * omap iommu: omap device registration
+ *
+ * Copyright (C) 2008-2009 Nokia Corporation
+ *
+ * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.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/platform_device.h>
+
+#include <plat/iommu.h>
+#include <plat/irqs.h>
+
+struct iommu_device {
+       resource_size_t base;
+       int irq;
+       struct iommu_platform_data pdata;
+       struct resource res[2];
+};
+static struct iommu_device *devices;
+static int num_iommu_devices;
+
+#ifdef CONFIG_ARCH_OMAP3
+static struct iommu_device omap3_devices[] = {
+       {
+               .base = 0x480bd400,
+               .irq = 24,
+               .pdata = {
+                       .name = "isp",
+                       .nr_tlb_entries = 8,
+                       .clk_name = "cam_ick",
+               },
+       },
+#if defined(CONFIG_MPU_BRIDGE_IOMMU)
+       {
+               .base = 0x5d000000,
+               .irq = 28,
+               .pdata = {
+                       .name = "iva2",
+                       .nr_tlb_entries = 32,
+                       .clk_name = "iva2_ck",
+               },
+       },
+#endif
+};
+#define NR_OMAP3_IOMMU_DEVICES ARRAY_SIZE(omap3_devices)
+static struct platform_device *omap3_iommu_pdev[NR_OMAP3_IOMMU_DEVICES];
+#else
+#define omap3_devices          NULL
+#define NR_OMAP3_IOMMU_DEVICES 0
+#define omap3_iommu_pdev       NULL
+#endif
+
+#ifdef CONFIG_ARCH_OMAP4
+static struct iommu_device omap4_devices[] = {
+       {
+               .base = OMAP4_MMU1_BASE,
+               .irq = INT_44XX_DUCATI_MMU_IRQ,
+               .pdata = {
+                       .name = "ducati",
+                       .nr_tlb_entries = 32,
+                       .clk_name = "ducati_ick",
+               },
+       },
+#if defined(CONFIG_MPU_TESLA_IOMMU)
+       {
+               .base = OMAP4_MMU2_BASE,
+               .irq = INT_44XX_DSP_MMU,
+               .pdata = {
+                       .name = "tesla",
+                       .nr_tlb_entries = 32,
+                       .clk_name = "tesla_ick",
+               },
+       },
+#endif
+};
+#define NR_OMAP4_IOMMU_DEVICES ARRAY_SIZE(omap4_devices)
+static struct platform_device *omap4_iommu_pdev[NR_OMAP4_IOMMU_DEVICES];
+#else
+#define omap4_devices          NULL
+#define NR_OMAP4_IOMMU_DEVICES 0
+#define omap4_iommu_pdev       NULL
+#endif
+
+static struct platform_device **omap_iommu_pdev;
+
+static int __init omap_iommu_init(void)
+{
+       int i, err;
+       struct resource res[] = {
+               { .flags = IORESOURCE_MEM },
+               { .flags = IORESOURCE_IRQ },
+       };
+
+       if (cpu_is_omap34xx()) {
+               devices = omap3_devices;
+               omap_iommu_pdev = omap3_iommu_pdev;
+               num_iommu_devices = NR_OMAP3_IOMMU_DEVICES;
+       } else if (cpu_is_omap44xx()) {
+               devices = omap4_devices;
+               omap_iommu_pdev = omap4_iommu_pdev;
+               num_iommu_devices = NR_OMAP4_IOMMU_DEVICES;
+       } else
+               return -ENODEV;
+
+       for (i = 0; i < num_iommu_devices; i++) {
+               struct platform_device *pdev;
+               const struct iommu_device *d = &devices[i];
+
+               pdev = platform_device_alloc("omap-iommu", i);
+               if (!pdev) {
+                       err = -ENOMEM;
+                       goto err_out;
+               }
+
+               res[0].start = d->base;
+               res[0].end = d->base + MMU_REG_SIZE - 1;
+               res[1].start = res[1].end = d->irq;
+
+               err = platform_device_add_resources(pdev, res,
+                                                   ARRAY_SIZE(res));
+               if (err)
+                       goto err_out;
+               err = platform_device_add_data(pdev, &d->pdata,
+                                              sizeof(d->pdata));
+               if (err)
+                       goto err_out;
+               err = platform_device_add(pdev);
+               if (err)
+                       goto err_out;
+               omap_iommu_pdev[i] = pdev;
+       }
+       return 0;
+
+err_out:
+       while (i--)
+               platform_device_put(omap_iommu_pdev[i]);
+       return err;
+}
+module_init(omap_iommu_init);
+
+static void __exit omap_iommu_exit(void)
+{
+       int i;
+
+       for (i = 0; i < num_iommu_devices; i++)
+               platform_device_unregister(omap_iommu_pdev[i]);
+}
+module_exit(omap_iommu_exit);
+
+MODULE_AUTHOR("Hiroshi DOYU");
+MODULE_DESCRIPTION("omap iommu: omap device registration");
+MODULE_LICENSE("GPL v2");
index 38153e5..1cf5231 100644 (file)
@@ -24,7 +24,7 @@
 #include <asm/localtimer.h>
 #include <asm/smp_scu.h>
 #include <mach/hardware.h>
-#include <plat/common.h>
+#include <mach/omap4-common.h>
 
 /* SCU base address */
 static void __iomem *scu_base;
diff --git a/arch/arm/mach-omap2/omap3-iommu.c b/arch/arm/mach-omap2/omap3-iommu.c
deleted file mode 100644 (file)
index fbbcb5c..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * omap iommu: omap3 device registration
- *
- * Copyright (C) 2008-2009 Nokia Corporation
- *
- * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.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/platform_device.h>
-
-#include <plat/iommu.h>
-
-struct iommu_device {
-       resource_size_t base;
-       int irq;
-       struct iommu_platform_data pdata;
-       struct resource res[2];
-};
-
-static struct iommu_device devices[] = {
-       {
-               .base = 0x480bd400,
-               .irq = 24,
-               .pdata = {
-                       .name = "isp",
-                       .nr_tlb_entries = 8,
-                       .clk_name = "cam_ick",
-               },
-       },
-#if defined(CONFIG_MPU_BRIDGE_IOMMU)
-       {
-               .base = 0x5d000000,
-               .irq = 28,
-               .pdata = {
-                       .name = "iva2",
-                       .nr_tlb_entries = 32,
-                       .clk_name = "iva2_ck",
-               },
-       },
-#endif
-};
-#define NR_IOMMU_DEVICES ARRAY_SIZE(devices)
-
-static struct platform_device *omap3_iommu_pdev[NR_IOMMU_DEVICES];
-
-static int __init omap3_iommu_init(void)
-{
-       int i, err;
-       struct resource res[] = {
-               { .flags = IORESOURCE_MEM },
-               { .flags = IORESOURCE_IRQ },
-       };
-
-       for (i = 0; i < NR_IOMMU_DEVICES; i++) {
-               struct platform_device *pdev;
-               const struct iommu_device *d = &devices[i];
-
-               pdev = platform_device_alloc("omap-iommu", i);
-               if (!pdev) {
-                       err = -ENOMEM;
-                       goto err_out;
-               }
-
-               res[0].start = d->base;
-               res[0].end = d->base + MMU_REG_SIZE - 1;
-               res[1].start = res[1].end = d->irq;
-
-               err = platform_device_add_resources(pdev, res,
-                                                   ARRAY_SIZE(res));
-               if (err)
-                       goto err_out;
-               err = platform_device_add_data(pdev, &d->pdata,
-                                              sizeof(d->pdata));
-               if (err)
-                       goto err_out;
-               err = platform_device_add(pdev);
-               if (err)
-                       goto err_out;
-               omap3_iommu_pdev[i] = pdev;
-       }
-       return 0;
-
-err_out:
-       while (i--)
-               platform_device_put(omap3_iommu_pdev[i]);
-       return err;
-}
-module_init(omap3_iommu_init);
-
-static void __exit omap3_iommu_exit(void)
-{
-       int i;
-
-       for (i = 0; i < NR_IOMMU_DEVICES; i++)
-               platform_device_unregister(omap3_iommu_pdev[i]);
-}
-module_exit(omap3_iommu_exit);
-
-MODULE_AUTHOR("Hiroshi DOYU");
-MODULE_DESCRIPTION("omap iommu: omap3 device registration");
-MODULE_LICENSE("GPL v2");
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c
new file mode 100644 (file)
index 0000000..13dc979
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * OMAP4 specific common source file.
+ *
+ * Copyright (C) 2010 Texas Instruments, Inc.
+ * Author:
+ *     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/kernel.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/platform_device.h>
+
+#include <asm/hardware/gic.h>
+#include <asm/hardware/cache-l2x0.h>
+
+#include <mach/hardware.h>
+#include <mach/omap4-common.h>
+
+#ifdef CONFIG_CACHE_L2X0
+void __iomem *l2cache_base;
+#endif
+
+void __iomem *gic_cpu_base_addr;
+void __iomem *gic_dist_base_addr;
+
+
+void __init gic_init_irq(void)
+{
+       /* Static mapping, never released */
+       gic_dist_base_addr = ioremap(OMAP44XX_GIC_DIST_BASE, SZ_4K);
+       BUG_ON(!gic_dist_base_addr);
+       gic_dist_init(0, gic_dist_base_addr, 29);
+
+       /* Static mapping, never released */
+       gic_cpu_base_addr = ioremap(OMAP44XX_GIC_CPU_BASE, SZ_512);
+       BUG_ON(!gic_cpu_base_addr);
+       gic_cpu_init(0, gic_cpu_base_addr);
+}
+
+#ifdef CONFIG_CACHE_L2X0
+static int __init omap_l2_cache_init(void)
+{
+       /*
+        * To avoid code running on other OMAPs in
+        * multi-omap builds
+        */
+       if (!cpu_is_omap44xx())
+               return -ENODEV;
+
+       /* Static mapping, never released */
+       l2cache_base = ioremap(OMAP44XX_L2CACHE_BASE, SZ_4K);
+       BUG_ON(!l2cache_base);
+
+       /* Enable PL310 L2 Cache controller */
+       omap_smc1(0x102, 0x1);
+
+       /*
+        * 32KB way size, 16-way associativity,
+        * parity disabled
+        */
+       l2x0_init(l2cache_base, 0x0e050000, 0xc0000fff);
+
+       return 0;
+}
+early_initcall(omap_l2_cache_init);
+#endif
index 2c12e8c..95c9a5f 100644 (file)
@@ -2,12 +2,12 @@
  * omap_hwmod implementation for OMAP2/3/4
  *
  * Copyright (C) 2009 Nokia Corporation
- * Paul Walmsley
- * With fixes and testing from Kevin Hilman
  *
- * Created in collaboration with (alphabetical order): Benoit Cousson,
- * Kevin Hilman, Tony Lindgren, Rajendra Nayak, Vikram Pandita, Sakari
- * Poussa, Anand Sawant, Santosh Shilimkar, Richard Woodruff
+ * Paul Walmsley, Benoît Cousson, Kevin Hilman
+ *
+ * Created in collaboration with (alphabetical order): Thara Gopinath,
+ * Tony Lindgren, Rajendra Nayak, Vikram Pandita, Sakari Poussa, Anand
+ * Sawant, Santosh Shilimkar, Richard Woodruff
  *
  * 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
@@ -57,7 +57,7 @@
 #define MAX_MODULE_RESET_WAIT          10000
 
 /* Name of the OMAP hwmod for the MPU */
-#define MPU_INITIATOR_NAME             "mpu_hwmod"
+#define MPU_INITIATOR_NAME             "mpu"
 
 /* omap_hwmod_list contains all registered struct omap_hwmods */
 static LIST_HEAD(omap_hwmod_list);
@@ -403,21 +403,20 @@ static int _del_initiator_dep(struct omap_hwmod *oh, struct omap_hwmod *init_oh)
  */
 static int _init_main_clk(struct omap_hwmod *oh)
 {
-       struct clk *c;
        int ret = 0;
 
        if (!oh->main_clk)
                return 0;
 
-       c = omap_clk_get_by_name(oh->main_clk);
-       WARN(IS_ERR(c), "omap_hwmod: %s: cannot clk_get main_clk %s\n",
-            oh->name, oh->main_clk);
-       if (IS_ERR(c))
-               ret = -EINVAL;
-       oh->_clk = c;
+       oh->_clk = omap_clk_get_by_name(oh->main_clk);
+       if (!oh->_clk)
+               pr_warning("omap_hwmod: %s: cannot clk_get main_clk %s\n",
+                          oh->name, oh->main_clk);
+               return -EINVAL;
 
-       WARN(!c->clkdm, "omap_hwmod: %s: missing clockdomain for %s.\n",
-            oh->main_clk, c->name);
+       if (!oh->_clk->clkdm)
+               pr_warning("omap_hwmod: %s: missing clockdomain for %s.\n",
+                          oh->main_clk, oh->_clk->name);
 
        return ret;
 }
@@ -431,7 +430,6 @@ static int _init_main_clk(struct omap_hwmod *oh)
  */
 static int _init_interface_clks(struct omap_hwmod *oh)
 {
-       struct omap_hwmod_ocp_if *os;
        struct clk *c;
        int i;
        int ret = 0;
@@ -439,14 +437,16 @@ static int _init_interface_clks(struct omap_hwmod *oh)
        if (oh->slaves_cnt == 0)
                return 0;
 
-       for (i = 0, os = *oh->slaves; i < oh->slaves_cnt; i++, os++) {
+       for (i = 0; i < oh->slaves_cnt; i++) {
+               struct omap_hwmod_ocp_if *os = oh->slaves[i];
+
                if (!os->clk)
                        continue;
 
                c = omap_clk_get_by_name(os->clk);
-               WARN(IS_ERR(c), "omap_hwmod: %s: cannot clk_get "
-                    "interface_clk %s\n", oh->name, os->clk);
-               if (IS_ERR(c))
+               if (!c)
+                       pr_warning("omap_hwmod: %s: cannot clk_get interface_clk %s\n",
+                                  oh->name, os->clk);
                        ret = -EINVAL;
                os->_clk = c;
        }
@@ -470,9 +470,9 @@ static int _init_opt_clks(struct omap_hwmod *oh)
 
        for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i > 0; i--, oc++) {
                c = omap_clk_get_by_name(oc->clk);
-               WARN(IS_ERR(c), "omap_hwmod: %s: cannot clk_get opt_clk "
-                    "%s\n", oh->name, oc->clk);
-               if (IS_ERR(c))
+               if (!c)
+                       pr_warning("omap_hwmod: %s: cannot clk_get opt_clk %s\n",
+                                  oh->name, oc->clk);
                        ret = -EINVAL;
                oc->_clk = c;
        }
@@ -489,19 +489,19 @@ static int _init_opt_clks(struct omap_hwmod *oh)
  */
 static int _enable_clocks(struct omap_hwmod *oh)
 {
-       struct omap_hwmod_ocp_if *os;
        int i;
 
        pr_debug("omap_hwmod: %s: enabling clocks\n", oh->name);
 
-       if (oh->_clk && !IS_ERR(oh->_clk))
+       if (oh->_clk)
                clk_enable(oh->_clk);
 
        if (oh->slaves_cnt > 0) {
-               for (i = 0, os = *oh->slaves; i < oh->slaves_cnt; i++, os++) {
+               for (i = 0; i < oh->slaves_cnt; i++) {
+                       struct omap_hwmod_ocp_if *os = oh->slaves[i];
                        struct clk *c = os->_clk;
 
-                       if (c && !IS_ERR(c) && (os->flags & OCPIF_SWSUP_IDLE))
+                       if (c && (os->flags & OCPIF_SWSUP_IDLE))
                                clk_enable(c);
                }
        }
@@ -519,19 +519,19 @@ static int _enable_clocks(struct omap_hwmod *oh)
  */
 static int _disable_clocks(struct omap_hwmod *oh)
 {
-       struct omap_hwmod_ocp_if *os;
        int i;
 
        pr_debug("omap_hwmod: %s: disabling clocks\n", oh->name);
 
-       if (oh->_clk && !IS_ERR(oh->_clk))
+       if (oh->_clk)
                clk_disable(oh->_clk);
 
        if (oh->slaves_cnt > 0) {
-               for (i = 0, os = *oh->slaves; i < oh->slaves_cnt; i++, os++) {
+               for (i = 0; i < oh->slaves_cnt; i++) {
+                       struct omap_hwmod_ocp_if *os = oh->slaves[i];
                        struct clk *c = os->_clk;
 
-                       if (c && !IS_ERR(c) && (os->flags & OCPIF_SWSUP_IDLE))
+                       if (c && (os->flags & OCPIF_SWSUP_IDLE))
                                clk_disable(c);
                }
        }
@@ -550,14 +550,15 @@ static int _disable_clocks(struct omap_hwmod *oh)
  */
 static int _find_mpu_port_index(struct omap_hwmod *oh)
 {
-       struct omap_hwmod_ocp_if *os;
        int i;
        int found = 0;
 
        if (!oh || oh->slaves_cnt == 0)
                return -EINVAL;
 
-       for (i = 0, os = *oh->slaves; i < oh->slaves_cnt; i++, os++) {
+       for (i = 0; i < oh->slaves_cnt; i++) {
+               struct omap_hwmod_ocp_if *os = oh->slaves[i];
+
                if (os->user & OCP_USER_MPU) {
                        found = 1;
                        break;
@@ -592,7 +593,7 @@ static void __iomem *_find_mpu_rt_base(struct omap_hwmod *oh, u8 index)
        if (!oh || oh->slaves_cnt == 0)
                return NULL;
 
-       os = *oh->slaves + index;
+       os = oh->slaves[index];
 
        for (i = 0, mem = os->addr; i < os->addr_cnt; i++, mem++) {
                if (mem->flags & ADDR_TYPE_RT) {
@@ -780,9 +781,10 @@ static int _init_clocks(struct omap_hwmod *oh)
        ret |= _init_interface_clks(oh);
        ret |= _init_opt_clks(oh);
 
-       oh->_state = _HWMOD_STATE_CLKS_INITED;
+       if (!ret)
+               oh->_state = _HWMOD_STATE_CLKS_INITED;
 
-       return ret;
+       return 0;
 }
 
 /**
@@ -805,9 +807,9 @@ static int _wait_target_ready(struct omap_hwmod *oh)
        if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
                return 0;
 
-       os = *oh->slaves + oh->_mpu_port_index;
+       os = oh->slaves[oh->_mpu_port_index];
 
-       if (!(os->flags & OCPIF_HAS_IDLEST))
+       if (oh->flags & HWMOD_NO_IDLEST)
                return 0;
 
        /* XXX check module SIDLEMODE */
@@ -818,11 +820,8 @@ static int _wait_target_ready(struct omap_hwmod *oh)
                ret = omap2_cm_wait_module_ready(oh->prcm.omap2.module_offs,
                                                 oh->prcm.omap2.idlest_reg_id,
                                                 oh->prcm.omap2.idlest_idle_bit);
-#if 0
        } else if (cpu_is_omap44xx()) {
-               ret = omap4_cm_wait_module_ready(oh->prcm.omap4.module_offs,
-                                                oh->prcm.omap4.device_offs);
-#endif
+               ret = omap4_cm_wait_module_ready(oh->prcm.omap4.clkctrl_reg);
        } else {
                BUG();
        };
@@ -911,16 +910,21 @@ static int _enable(struct omap_hwmod *oh)
        _add_initiator_dep(oh, mpu_oh);
        _enable_clocks(oh);
 
-       if (oh->class->sysc) {
-               if (!(oh->_int_flags & _HWMOD_SYSCONFIG_LOADED))
-                       _update_sysc_cache(oh);
-               _sysc_enable(oh);
-       }
-
        r = _wait_target_ready(oh);
-       if (!r)
+       if (!r) {
                oh->_state = _HWMOD_STATE_ENABLED;
 
+               /* Access the sysconfig only if the target is ready */
+               if (oh->class->sysc) {
+                       if (!(oh->_int_flags & _HWMOD_SYSCONFIG_LOADED))
+                               _update_sysc_cache(oh);
+                       _sysc_enable(oh);
+               }
+       } else {
+               pr_debug("omap_hwmod: %s: _wait_target_ready: %d\n",
+                        oh->name, r);
+       }
+
        return r;
 }
 
@@ -997,18 +1001,18 @@ static int _shutdown(struct omap_hwmod *oh)
  */
 static int _setup(struct omap_hwmod *oh)
 {
-       struct omap_hwmod_ocp_if *os;
-       int i;
+       int i, r;
 
        if (!oh)
                return -EINVAL;
 
        /* Set iclk autoidle mode */
        if (oh->slaves_cnt > 0) {
-               for (i = 0, os = *oh->slaves; i < oh->slaves_cnt; i++, os++) {
+               for (i = 0; i < oh->slaves_cnt; i++) {
+                       struct omap_hwmod_ocp_if *os = oh->slaves[i];
                        struct clk *c = os->_clk;
 
-                       if (!c || IS_ERR(c))
+                       if (!c)
                                continue;
 
                        if (os->flags & OCPIF_SWSUP_IDLE) {
@@ -1022,7 +1026,12 @@ static int _setup(struct omap_hwmod *oh)
 
        oh->_state = _HWMOD_STATE_INITIALIZED;
 
-       _enable(oh);
+       r = _enable(oh);
+       if (r) {
+               pr_warning("omap_hwmod: %s: cannot be enabled (%d)\n",
+                          oh->name, oh->_state);
+               return 0;
+       }
 
        if (!(oh->flags & HWMOD_INIT_NO_RESET)) {
                /*
@@ -1430,7 +1439,7 @@ int omap_hwmod_count_resources(struct omap_hwmod *oh)
        ret = oh->mpu_irqs_cnt + oh->sdma_chs_cnt;
 
        for (i = 0; i < oh->slaves_cnt; i++)
-               ret += (*oh->slaves + i)->addr_cnt;
+               ret += oh->slaves[i]->addr_cnt;
 
        return ret;
 }
@@ -1471,7 +1480,7 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res)
        for (i = 0; i < oh->slaves_cnt; i++) {
                struct omap_hwmod_ocp_if *os;
 
-               os = *oh->slaves + i;
+               os = oh->slaves[i];
 
                for (j = 0; j < os->addr_cnt; j++) {
                        (res + r)->start = (os->addr + j)->pa_start;
index eb7ee24..e5530c5 100644 (file)
@@ -125,7 +125,7 @@ static struct omap_hwmod_ocp_if *omap2420_mpu_masters[] = {
 
 /* MPU */
 static struct omap_hwmod omap2420_mpu_hwmod = {
-       .name           = "mpu_hwmod",
+       .name           = "mpu",
        .class          = &mpu_hwmod_class,
        .main_clk       = "mpu_ck",
        .masters        = omap2420_mpu_masters,
index 241bd82..0852d95 100644 (file)
@@ -127,7 +127,7 @@ static struct omap_hwmod_ocp_if *omap2430_mpu_masters[] = {
 
 /* MPU */
 static struct omap_hwmod omap2430_mpu_hwmod = {
-       .name           = "mpu_hwmod",
+       .name           = "mpu",
        .class          = &mpu_hwmod_class,
        .main_clk       = "mpu_ck",
        .masters        = omap2430_mpu_masters,
index ed60840..39b0c0e 100644 (file)
@@ -156,7 +156,7 @@ static struct omap_hwmod_ocp_if *omap3xxx_mpu_masters[] = {
 
 /* MPU */
 static struct omap_hwmod omap3xxx_mpu_hwmod = {
-       .name           = "mpu_hwmod",
+       .name           = "mpu",
        .class          = &mpu_hwmod_class,
        .main_clk       = "arm_fck",
        .masters        = omap3xxx_mpu_masters,
index 6cac981..723b44e 100644 (file)
@@ -548,6 +548,9 @@ static int option_set(void *data, u64 val)
 {
        u32 *option = data;
 
+       if (option == &wakeup_timer_milliseconds && val >= 1000)
+               return -EINVAL;
+
        *option = val;
 
        if (option == &enable_off_mode)
index bd6466a..3de6ece 100644 (file)
@@ -43,6 +43,7 @@ extern int omap3_pm_get_suspend_state(struct powerdomain *pwrdm);
 extern int omap3_pm_set_suspend_state(struct powerdomain *pwrdm, int state);
 
 extern u32 wakeup_timer_seconds;
+extern u32 wakeup_timer_milliseconds;
 extern struct omap_dm_timer *gptimer_wakeup;
 
 #ifdef CONFIG_PM_DEBUG
index 374299e..e321281 100644 (file)
@@ -70,8 +70,8 @@ static int omap2_fclks_active(void)
        f2 = cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
 
        /* Ignore UART clocks.  These are handled by UART core (serial.c) */
-       f1 &= ~(OMAP24XX_EN_UART1 | OMAP24XX_EN_UART2);
-       f2 &= ~OMAP24XX_EN_UART3;
+       f1 &= ~(OMAP24XX_EN_UART1_MASK | OMAP24XX_EN_UART2_MASK);
+       f2 &= ~OMAP24XX_EN_UART3_MASK;
 
        if (f1 | f2)
                return 1;
@@ -107,7 +107,7 @@ static void omap2_enter_full_retention(void)
        l = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0) | OMAP24XX_USBSTANDBYCTRL;
        omap_ctrl_writel(l, OMAP2_CONTROL_DEVCONF0);
 
-       omap2_gpio_prepare_for_retention();
+       omap2_gpio_prepare_for_idle(PWRDM_POWER_RET);
 
        if (omap2_pm_debug) {
                omap2_pm_dump(0, 0, 0);
@@ -141,7 +141,7 @@ no_sleep:
                tmp = timespec_to_ns(&ts_idle) * NSEC_PER_USEC;
                omap2_pm_dump(0, 1, tmp);
        }
-       omap2_gpio_resume_after_retention();
+       omap2_gpio_resume_after_idle();
 
        clk_enable(osc_ck);
 
@@ -170,7 +170,7 @@ static int omap2_i2c_active(void)
        u32 l;
 
        l = cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
-       return l & (OMAP2420_EN_I2C2 | OMAP2420_EN_I2C1);
+       return l & (OMAP2420_EN_I2C2_MASK | OMAP2420_EN_I2C1_MASK);
 }
 
 static int sti_console_enabled;
@@ -181,13 +181,13 @@ static int omap2_allow_mpu_retention(void)
 
        /* Check for MMC, UART2, UART1, McSPI2, McSPI1 and DSS1. */
        l = cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
-       if (l & (OMAP2420_EN_MMC | OMAP24XX_EN_UART2 |
-                OMAP24XX_EN_UART1 | OMAP24XX_EN_MCSPI2 |
-                OMAP24XX_EN_MCSPI1 | OMAP24XX_EN_DSS1))
+       if (l & (OMAP2420_EN_MMC_MASK | OMAP24XX_EN_UART2_MASK |
+                OMAP24XX_EN_UART1_MASK | OMAP24XX_EN_MCSPI2_MASK |
+                OMAP24XX_EN_MCSPI1_MASK | OMAP24XX_EN_DSS1_MASK))
                return 0;
        /* Check for UART3. */
        l = cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
-       if (l & OMAP24XX_EN_UART3)
+       if (l & OMAP24XX_EN_UART3_MASK)
                return 0;
        if (sti_console_enabled)
                return 0;
@@ -215,12 +215,12 @@ static void omap2_enter_mpu_retention(void)
 
                /* Try to enter MPU retention */
                prm_write_mod_reg((0x01 << OMAP_POWERSTATE_SHIFT) |
-                                 OMAP_LOGICRETSTATE,
+                                 OMAP_LOGICRETSTATE_MASK,
                                  MPU_MOD, OMAP2_PM_PWSTCTRL);
        } else {
                /* Block MPU retention */
 
-               prm_write_mod_reg(OMAP_LOGICRETSTATE, MPU_MOD,
+               prm_write_mod_reg(OMAP_LOGICRETSTATE_MASK, MPU_MOD,
                                                 OMAP2_PM_PWSTCTRL);
                only_idle = 1;
        }
@@ -288,7 +288,8 @@ static int omap2_pm_suspend(void)
        u32 wken_wkup, mir1;
 
        wken_wkup = prm_read_mod_reg(WKUP_MOD, PM_WKEN);
-       prm_write_mod_reg(wken_wkup & ~OMAP24XX_EN_GPT1, WKUP_MOD, PM_WKEN);
+       wken_wkup &= ~OMAP24XX_EN_GPT1_MASK;
+       prm_write_mod_reg(wken_wkup, WKUP_MOD, PM_WKEN);
 
        /* Mask GPT1 */
        mir1 = omap_readl(0x480fe0a4);
@@ -351,7 +352,7 @@ static void __init prcm_setup_regs(void)
        struct powerdomain *pwrdm;
 
        /* Enable autoidle */
-       prm_write_mod_reg(OMAP24XX_AUTOIDLE, OCP_MOD,
+       prm_write_mod_reg(OMAP24XX_AUTOIDLE_MASK, OCP_MOD,
                          OMAP2_PRCM_SYSCONFIG_OFFSET);
 
        /*
@@ -390,53 +391,54 @@ static void __init prcm_setup_regs(void)
        clkdm_add_wkdep(mpu_clkdm, wkup_clkdm);
 
        /* Enable clock autoidle for all domains */
-       cm_write_mod_reg(OMAP24XX_AUTO_CAM |
-                        OMAP24XX_AUTO_MAILBOXES |
-                        OMAP24XX_AUTO_WDT4 |
-                        OMAP2420_AUTO_WDT3 |
-                        OMAP24XX_AUTO_MSPRO |
-                        OMAP2420_AUTO_MMC |
-                        OMAP24XX_AUTO_FAC |
-                        OMAP2420_AUTO_EAC |
-                        OMAP24XX_AUTO_HDQ |
-                        OMAP24XX_AUTO_UART2 |
-                        OMAP24XX_AUTO_UART1 |
-                        OMAP24XX_AUTO_I2C2 |
-                        OMAP24XX_AUTO_I2C1 |
-                        OMAP24XX_AUTO_MCSPI2 |
-                        OMAP24XX_AUTO_MCSPI1 |
-                        OMAP24XX_AUTO_MCBSP2 |
-                        OMAP24XX_AUTO_MCBSP1 |
-                        OMAP24XX_AUTO_GPT12 |
-                        OMAP24XX_AUTO_GPT11 |
-                        OMAP24XX_AUTO_GPT10 |
-                        OMAP24XX_AUTO_GPT9 |
-                        OMAP24XX_AUTO_GPT8 |
-                        OMAP24XX_AUTO_GPT7 |
-                        OMAP24XX_AUTO_GPT6 |
-                        OMAP24XX_AUTO_GPT5 |
-                        OMAP24XX_AUTO_GPT4 |
-                        OMAP24XX_AUTO_GPT3 |
-                        OMAP24XX_AUTO_GPT2 |
-                        OMAP2420_AUTO_VLYNQ |
-                        OMAP24XX_AUTO_DSS,
+       cm_write_mod_reg(OMAP24XX_AUTO_CAM_MASK |
+                        OMAP24XX_AUTO_MAILBOXES_MASK |
+                        OMAP24XX_AUTO_WDT4_MASK |
+                        OMAP2420_AUTO_WDT3_MASK |
+                        OMAP24XX_AUTO_MSPRO_MASK |
+                        OMAP2420_AUTO_MMC_MASK |
+                        OMAP24XX_AUTO_FAC_MASK |
+                        OMAP2420_AUTO_EAC_MASK |
+                        OMAP24XX_AUTO_HDQ_MASK |
+                        OMAP24XX_AUTO_UART2_MASK |
+                        OMAP24XX_AUTO_UART1_MASK |
+                        OMAP24XX_AUTO_I2C2_MASK |
+                        OMAP24XX_AUTO_I2C1_MASK |
+                        OMAP24XX_AUTO_MCSPI2_MASK |
+                        OMAP24XX_AUTO_MCSPI1_MASK |
+                        OMAP24XX_AUTO_MCBSP2_MASK |
+                        OMAP24XX_AUTO_MCBSP1_MASK |
+                        OMAP24XX_AUTO_GPT12_MASK |
+                        OMAP24XX_AUTO_GPT11_MASK |
+                        OMAP24XX_AUTO_GPT10_MASK |
+                        OMAP24XX_AUTO_GPT9_MASK |
+                        OMAP24XX_AUTO_GPT8_MASK |
+                        OMAP24XX_AUTO_GPT7_MASK |
+                        OMAP24XX_AUTO_GPT6_MASK |
+                        OMAP24XX_AUTO_GPT5_MASK |
+                        OMAP24XX_AUTO_GPT4_MASK |
+                        OMAP24XX_AUTO_GPT3_MASK |
+                        OMAP24XX_AUTO_GPT2_MASK |
+                        OMAP2420_AUTO_VLYNQ_MASK |
+                        OMAP24XX_AUTO_DSS_MASK,
                         CORE_MOD, CM_AUTOIDLE1);
-       cm_write_mod_reg(OMAP24XX_AUTO_UART3 |
-                        OMAP24XX_AUTO_SSI |
-                        OMAP24XX_AUTO_USB,
+       cm_write_mod_reg(OMAP24XX_AUTO_UART3_MASK |
+                        OMAP24XX_AUTO_SSI_MASK |
+                        OMAP24XX_AUTO_USB_MASK,
                         CORE_MOD, CM_AUTOIDLE2);
-       cm_write_mod_reg(OMAP24XX_AUTO_SDRC |
-                        OMAP24XX_AUTO_GPMC |
-                        OMAP24XX_AUTO_SDMA,
+       cm_write_mod_reg(OMAP24XX_AUTO_SDRC_MASK |
+                        OMAP24XX_AUTO_GPMC_MASK |
+                        OMAP24XX_AUTO_SDMA_MASK,
                         CORE_MOD, CM_AUTOIDLE3);
-       cm_write_mod_reg(OMAP24XX_AUTO_PKA |
-                        OMAP24XX_AUTO_AES |
-                        OMAP24XX_AUTO_RNG |
-                        OMAP24XX_AUTO_SHA |
-                        OMAP24XX_AUTO_DES,
+       cm_write_mod_reg(OMAP24XX_AUTO_PKA_MASK |
+                        OMAP24XX_AUTO_AES_MASK |
+                        OMAP24XX_AUTO_RNG_MASK |
+                        OMAP24XX_AUTO_SHA_MASK |
+                        OMAP24XX_AUTO_DES_MASK,
                         CORE_MOD, OMAP24XX_CM_AUTOIDLE4);
 
-       cm_write_mod_reg(OMAP2420_AUTO_DSP_IPI, OMAP24XX_DSP_MOD, CM_AUTOIDLE);
+       cm_write_mod_reg(OMAP2420_AUTO_DSP_IPI_MASK, OMAP24XX_DSP_MOD,
+                        CM_AUTOIDLE);
 
        /* Put DPLL and both APLLs into autoidle mode */
        cm_write_mod_reg((0x03 << OMAP24XX_AUTO_DPLL_SHIFT) |
@@ -444,12 +446,12 @@ static void __init prcm_setup_regs(void)
                         (0x03 << OMAP24XX_AUTO_54M_SHIFT),
                         PLL_MOD, CM_AUTOIDLE);
 
-       cm_write_mod_reg(OMAP24XX_AUTO_OMAPCTRL |
-                        OMAP24XX_AUTO_WDT1 |
-                        OMAP24XX_AUTO_MPU_WDT |
-                        OMAP24XX_AUTO_GPIOS |
-                        OMAP24XX_AUTO_32KSYNC |
-                        OMAP24XX_AUTO_GPT1,
+       cm_write_mod_reg(OMAP24XX_AUTO_OMAPCTRL_MASK |
+                        OMAP24XX_AUTO_WDT1_MASK |
+                        OMAP24XX_AUTO_MPU_WDT_MASK |
+                        OMAP24XX_AUTO_GPIOS_MASK |
+                        OMAP24XX_AUTO_32KSYNC_MASK |
+                        OMAP24XX_AUTO_GPT1_MASK,
                         WKUP_MOD, CM_AUTOIDLE);
 
        /* REVISIT: Configure number of 32 kHz clock cycles for sys_clk
@@ -460,15 +462,15 @@ static void __init prcm_setup_regs(void)
        /* Configure automatic voltage transition */
        prm_write_mod_reg(2 << OMAP_SETUP_TIME_SHIFT, OMAP24XX_GR_MOD,
                          OMAP2_PRCM_VOLTSETUP_OFFSET);
-       prm_write_mod_reg(OMAP24XX_AUTO_EXTVOLT |
+       prm_write_mod_reg(OMAP24XX_AUTO_EXTVOLT_MASK |
                          (0x1 << OMAP24XX_SETOFF_LEVEL_SHIFT) |
-                         OMAP24XX_MEMRETCTRL |
+                         OMAP24XX_MEMRETCTRL_MASK |
                          (0x1 << OMAP24XX_SETRET_LEVEL_SHIFT) |
                          (0x0 << OMAP24XX_VOLT_LEVEL_SHIFT),
                          OMAP24XX_GR_MOD, OMAP2_PRCM_VOLTCTRL_OFFSET);
 
        /* Enable wake-up events */
-       prm_write_mod_reg(OMAP24XX_EN_GPIOS | OMAP24XX_EN_GPT1,
+       prm_write_mod_reg(OMAP24XX_EN_GPIOS_MASK | OMAP24XX_EN_GPT1_MASK,
                          WKUP_MOD, PM_WKEN);
 }
 
index ea0000b..2e96771 100644 (file)
@@ -58,6 +58,7 @@
 u32 enable_off_mode;
 u32 sleep_while_idle;
 u32 wakeup_timer_seconds;
+u32 wakeup_timer_milliseconds;
 
 struct power_state {
        struct powerdomain *pwrdm;
@@ -93,19 +94,20 @@ static void omap3_enable_io_chain(void)
        int timeout = 0;
 
        if (omap_rev() >= OMAP3430_REV_ES3_1) {
-               prm_set_mod_reg_bits(OMAP3430_EN_IO_CHAIN, WKUP_MOD, PM_WKEN);
+               prm_set_mod_reg_bits(OMAP3430_EN_IO_CHAIN_MASK, WKUP_MOD,
+                                    PM_WKEN);
                /* Do a readback to assure write has been done */
                prm_read_mod_reg(WKUP_MOD, PM_WKEN);
 
                while (!(prm_read_mod_reg(WKUP_MOD, PM_WKST) &
-                        OMAP3430_ST_IO_CHAIN)) {
+                        OMAP3430_ST_IO_CHAIN_MASK)) {
                        timeout++;
                        if (timeout > 1000) {
                                printk(KERN_ERR "Wake up daisy chain "
                                       "activation failed.\n");
                                return;
                        }
-                       prm_set_mod_reg_bits(OMAP3430_ST_IO_CHAIN,
+                       prm_set_mod_reg_bits(OMAP3430_ST_IO_CHAIN_MASK,
                                             WKUP_MOD, PM_WKST);
                }
        }
@@ -114,7 +116,8 @@ static void omap3_enable_io_chain(void)
 static void omap3_disable_io_chain(void)
 {
        if (omap_rev() >= OMAP3430_REV_ES3_1)
-               prm_clear_mod_reg_bits(OMAP3430_EN_IO_CHAIN, WKUP_MOD, PM_WKEN);
+               prm_clear_mod_reg_bits(OMAP3430_EN_IO_CHAIN_MASK, WKUP_MOD,
+                                      PM_WKEN);
 }
 
 static void omap3_core_save_context(void)
@@ -267,14 +270,18 @@ static int _prcm_int_handle_wakeup(void)
  */
 static irqreturn_t prcm_interrupt_handler (int irq, void *dev_id)
 {
-       u32 irqstatus_mpu;
+       u32 irqenable_mpu, irqstatus_mpu;
        int c = 0;
 
-       do {
-               irqstatus_mpu = prm_read_mod_reg(OCP_MOD,
-                                       OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
+       irqenable_mpu = prm_read_mod_reg(OCP_MOD,
+                                        OMAP3_PRM_IRQENABLE_MPU_OFFSET);
+       irqstatus_mpu = prm_read_mod_reg(OCP_MOD,
+                                        OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
+       irqstatus_mpu &= irqenable_mpu;
 
-               if (irqstatus_mpu & (OMAP3430_WKUP_ST | OMAP3430_IO_ST)) {
+       do {
+               if (irqstatus_mpu & (OMAP3430_WKUP_ST_MASK |
+                                    OMAP3430_IO_ST_MASK)) {
                        c = _prcm_int_handle_wakeup();
 
                        /*
@@ -292,7 +299,11 @@ static irqreturn_t prcm_interrupt_handler (int irq, void *dev_id)
                prm_write_mod_reg(irqstatus_mpu, OCP_MOD,
                                        OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
 
-       } while (prm_read_mod_reg(OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET));
+               irqstatus_mpu = prm_read_mod_reg(OCP_MOD,
+                                       OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
+               irqstatus_mpu &= irqenable_mpu;
+
+       } while (irqstatus_mpu);
 
        return IRQ_HANDLED;
 }
@@ -371,12 +382,19 @@ void omap_sram_idle(void)
        if (pwrdm_read_pwrst(neon_pwrdm) == PWRDM_POWER_ON)
                pwrdm_set_next_pwrst(neon_pwrdm, mpu_next_state);
 
-       /* PER */
+       /* Enable IO-PAD and IO-CHAIN wakeups */
        per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
        core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
+       if (per_next_state < PWRDM_POWER_ON ||
+                       core_next_state < PWRDM_POWER_ON) {
+               prm_set_mod_reg_bits(OMAP3430_EN_IO_MASK, WKUP_MOD, PM_WKEN);
+               omap3_enable_io_chain();
+       }
+
+       /* PER */
        if (per_next_state < PWRDM_POWER_ON) {
                omap_uart_prepare_idle(2);
-               omap2_gpio_prepare_for_retention();
+               omap2_gpio_prepare_for_idle(per_next_state);
                if (per_next_state == PWRDM_POWER_OFF) {
                        if (core_next_state == PWRDM_POWER_ON) {
                                per_next_state = PWRDM_POWER_RET;
@@ -398,10 +416,8 @@ void omap_sram_idle(void)
                        omap3_core_save_context();
                        omap3_prcm_save_context();
                }
-               /* Enable IO-PAD and IO-CHAIN wakeups */
-               prm_set_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
-               omap3_enable_io_chain();
        }
+
        omap3_intc_prepare_idle();
 
        /*
@@ -445,7 +461,7 @@ void omap_sram_idle(void)
                omap_uart_resume_idle(0);
                omap_uart_resume_idle(1);
                if (core_next_state == PWRDM_POWER_OFF)
-                       prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF,
+                       prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK,
                                               OMAP3430_GR_MOD,
                                               OMAP3_PRM_VOLTCTRL_OFFSET);
        }
@@ -454,9 +470,9 @@ void omap_sram_idle(void)
        /* PER */
        if (per_next_state < PWRDM_POWER_ON) {
                per_prev_state = pwrdm_read_prev_pwrst(per_pwrdm);
+               omap2_gpio_resume_after_idle();
                if (per_prev_state == PWRDM_POWER_OFF)
                        omap3_per_restore_context();
-               omap2_gpio_resume_after_retention();
                omap_uart_resume_idle(2);
                if (per_state_modified)
                        pwrdm_set_next_pwrst(per_pwrdm, PWRDM_POWER_OFF);
@@ -464,7 +480,7 @@ void omap_sram_idle(void)
 
        /* Disable IO-PAD and IO-CHAIN wakeup */
        if (core_next_state < PWRDM_POWER_ON) {
-               prm_clear_mod_reg_bits(OMAP3430_EN_IO, WKUP_MOD, PM_WKEN);
+               prm_clear_mod_reg_bits(OMAP3430_EN_IO_MASK, WKUP_MOD, PM_WKEN);
                omap3_disable_io_chain();
        }
 
@@ -548,20 +564,21 @@ out:
 #ifdef CONFIG_SUSPEND
 static suspend_state_t suspend_state;
 
-static void omap2_pm_wakeup_on_timer(u32 seconds)
+static void omap2_pm_wakeup_on_timer(u32 seconds, u32 milliseconds)
 {
        u32 tick_rate, cycles;
 
-       if (!seconds)
+       if (!seconds && !milliseconds)
                return;
 
        tick_rate = clk_get_rate(omap_dm_timer_get_fclk(gptimer_wakeup));
-       cycles = tick_rate * seconds;
+       cycles = tick_rate * seconds + tick_rate * milliseconds / 1000;
        omap_dm_timer_stop(gptimer_wakeup);
        omap_dm_timer_set_load_start(gptimer_wakeup, 0, 0xffffffff - cycles);
 
-       pr_info("PM: Resume timer in %d secs (%d ticks at %d ticks/sec.)\n",
-               seconds, cycles, tick_rate);
+       pr_info("PM: Resume timer in %u.%03u secs"
+               " (%d ticks at %d ticks/sec.)\n",
+               seconds, milliseconds, cycles, tick_rate);
 }
 
 static int omap3_pm_prepare(void)
@@ -575,8 +592,9 @@ static int omap3_pm_suspend(void)
        struct power_state *pwrst;
        int state, ret = 0;
 
-       if (wakeup_timer_seconds)
-               omap2_pm_wakeup_on_timer(wakeup_timer_seconds);
+       if (wakeup_timer_seconds || wakeup_timer_milliseconds)
+               omap2_pm_wakeup_on_timer(wakeup_timer_seconds,
+                                        wakeup_timer_milliseconds);
 
        /* Read current next_pwrsts */
        list_for_each_entry(pwrst, &pwrst_list, node)
@@ -683,9 +701,9 @@ static void __init omap3_iva_idle(void)
                return;
 
        /* Reset IVA2 */
-       prm_write_mod_reg(OMAP3430_RST1_IVA2 |
-                         OMAP3430_RST2_IVA2 |
-                         OMAP3430_RST3_IVA2,
+       prm_write_mod_reg(OMAP3430_RST1_IVA2_MASK |
+                         OMAP3430_RST2_IVA2_MASK |
+                         OMAP3430_RST3_IVA2_MASK,
                          OMAP3430_IVA2_MOD, OMAP2_RM_RSTCTRL);
 
        /* Enable IVA2 clock */
@@ -703,9 +721,9 @@ static void __init omap3_iva_idle(void)
        cm_write_mod_reg(0, OMAP3430_IVA2_MOD, CM_FCLKEN);
 
        /* Reset IVA2 */
-       prm_write_mod_reg(OMAP3430_RST1_IVA2 |
-                         OMAP3430_RST2_IVA2 |
-                         OMAP3430_RST3_IVA2,
+       prm_write_mod_reg(OMAP3430_RST1_IVA2_MASK |
+                         OMAP3430_RST2_IVA2_MASK |
+                         OMAP3430_RST3_IVA2_MASK,
                          OMAP3430_IVA2_MOD, OMAP2_RM_RSTCTRL);
 }
 
@@ -727,8 +745,8 @@ static void __init omap3_d2d_idle(void)
        omap_ctrl_writew(padconf, OMAP3_PADCONF_SAD2D_IDLEACK);
 
        /* reset modem */
-       prm_write_mod_reg(OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RSTPWRON |
-                         OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RST,
+       prm_write_mod_reg(OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RSTPWRON_MASK |
+                         OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RST_MASK,
                          CORE_MOD, OMAP2_RM_RSTCTRL);
        prm_write_mod_reg(0, CORE_MOD, OMAP2_RM_RSTCTRL);
 }
@@ -754,102 +772,102 @@ static void __init prcm_setup_regs(void)
         * Note that in the long run this should be done by clockfw
         */
        cm_write_mod_reg(
-               OMAP3430_AUTO_MODEM |
-               OMAP3430ES2_AUTO_MMC3 |
-               OMAP3430ES2_AUTO_ICR |
-               OMAP3430_AUTO_AES2 |
-               OMAP3430_AUTO_SHA12 |
-               OMAP3430_AUTO_DES2 |
-               OMAP3430_AUTO_MMC2 |
-               OMAP3430_AUTO_MMC1 |
-               OMAP3430_AUTO_MSPRO |
-               OMAP3430_AUTO_HDQ |
-               OMAP3430_AUTO_MCSPI4 |
-               OMAP3430_AUTO_MCSPI3 |
-               OMAP3430_AUTO_MCSPI2 |
-               OMAP3430_AUTO_MCSPI1 |
-               OMAP3430_AUTO_I2C3 |
-               OMAP3430_AUTO_I2C2 |
-               OMAP3430_AUTO_I2C1 |
-               OMAP3430_AUTO_UART2 |
-               OMAP3430_AUTO_UART1 |
-               OMAP3430_AUTO_GPT11 |
-               OMAP3430_AUTO_GPT10 |
-               OMAP3430_AUTO_MCBSP5 |
-               OMAP3430_AUTO_MCBSP1 |
-               OMAP3430ES1_AUTO_FAC | /* This is es1 only */
-               OMAP3430_AUTO_MAILBOXES |
-               OMAP3430_AUTO_OMAPCTRL |
-               OMAP3430ES1_AUTO_FSHOSTUSB |
-               OMAP3430_AUTO_HSOTGUSB |
-               OMAP3430_AUTO_SAD2D |
-               OMAP3430_AUTO_SSI,
+               OMAP3430_AUTO_MODEM_MASK |
+               OMAP3430ES2_AUTO_MMC3_MASK |
+               OMAP3430ES2_AUTO_ICR_MASK |
+               OMAP3430_AUTO_AES2_MASK |
+               OMAP3430_AUTO_SHA12_MASK |
+               OMAP3430_AUTO_DES2_MASK |
+               OMAP3430_AUTO_MMC2_MASK |
+               OMAP3430_AUTO_MMC1_MASK |
+               OMAP3430_AUTO_MSPRO_MASK |
+               OMAP3430_AUTO_HDQ_MASK |
+               OMAP3430_AUTO_MCSPI4_MASK |
+               OMAP3430_AUTO_MCSPI3_MASK |
+               OMAP3430_AUTO_MCSPI2_MASK |
+               OMAP3430_AUTO_MCSPI1_MASK |
+               OMAP3430_AUTO_I2C3_MASK |
+               OMAP3430_AUTO_I2C2_MASK |
+               OMAP3430_AUTO_I2C1_MASK |
+               OMAP3430_AUTO_UART2_MASK |
+               OMAP3430_AUTO_UART1_MASK |
+               OMAP3430_AUTO_GPT11_MASK |
+               OMAP3430_AUTO_GPT10_MASK |
+               OMAP3430_AUTO_MCBSP5_MASK |
+               OMAP3430_AUTO_MCBSP1_MASK |
+               OMAP3430ES1_AUTO_FAC_MASK | /* This is es1 only */
+               OMAP3430_AUTO_MAILBOXES_MASK |
+               OMAP3430_AUTO_OMAPCTRL_MASK |
+               OMAP3430ES1_AUTO_FSHOSTUSB_MASK |
+               OMAP3430_AUTO_HSOTGUSB_MASK |
+               OMAP3430_AUTO_SAD2D_MASK |
+               OMAP3430_AUTO_SSI_MASK,
                CORE_MOD, CM_AUTOIDLE1);
 
        cm_write_mod_reg(
-               OMAP3430_AUTO_PKA |
-               OMAP3430_AUTO_AES1 |
-               OMAP3430_AUTO_RNG |
-               OMAP3430_AUTO_SHA11 |
-               OMAP3430_AUTO_DES1,
+               OMAP3430_AUTO_PKA_MASK |
+               OMAP3430_AUTO_AES1_MASK |
+               OMAP3430_AUTO_RNG_MASK |
+               OMAP3430_AUTO_SHA11_MASK |
+               OMAP3430_AUTO_DES1_MASK,
                CORE_MOD, CM_AUTOIDLE2);
 
        if (omap_rev() > OMAP3430_REV_ES1_0) {
                cm_write_mod_reg(
-                       OMAP3430_AUTO_MAD2D |
-                       OMAP3430ES2_AUTO_USBTLL,
+                       OMAP3430_AUTO_MAD2D_MASK |
+                       OMAP3430ES2_AUTO_USBTLL_MASK,
                        CORE_MOD, CM_AUTOIDLE3);
        }
 
        cm_write_mod_reg(
-               OMAP3430_AUTO_WDT2 |
-               OMAP3430_AUTO_WDT1 |
-               OMAP3430_AUTO_GPIO1 |
-               OMAP3430_AUTO_32KSYNC |
-               OMAP3430_AUTO_GPT12 |
-               OMAP3430_AUTO_GPT1 ,
+               OMAP3430_AUTO_WDT2_MASK |
+               OMAP3430_AUTO_WDT1_MASK |
+               OMAP3430_AUTO_GPIO1_MASK |
+               OMAP3430_AUTO_32KSYNC_MASK |
+               OMAP3430_AUTO_GPT12_MASK |
+               OMAP3430_AUTO_GPT1_MASK,
                WKUP_MOD, CM_AUTOIDLE);
 
        cm_write_mod_reg(
-               OMAP3430_AUTO_DSS,
+               OMAP3430_AUTO_DSS_MASK,
                OMAP3430_DSS_MOD,
                CM_AUTOIDLE);
 
        cm_write_mod_reg(
-               OMAP3430_AUTO_CAM,
+               OMAP3430_AUTO_CAM_MASK,
                OMAP3430_CAM_MOD,
                CM_AUTOIDLE);
 
        cm_write_mod_reg(
-               OMAP3430_AUTO_GPIO6 |
-               OMAP3430_AUTO_GPIO5 |
-               OMAP3430_AUTO_GPIO4 |
-               OMAP3430_AUTO_GPIO3 |
-               OMAP3430_AUTO_GPIO2 |
-               OMAP3430_AUTO_WDT3 |
-               OMAP3430_AUTO_UART3 |
-               OMAP3430_AUTO_GPT9 |
-               OMAP3430_AUTO_GPT8 |
-               OMAP3430_AUTO_GPT7 |
-               OMAP3430_AUTO_GPT6 |
-               OMAP3430_AUTO_GPT5 |
-               OMAP3430_AUTO_GPT4 |
-               OMAP3430_AUTO_GPT3 |
-               OMAP3430_AUTO_GPT2 |
-               OMAP3430_AUTO_MCBSP4 |
-               OMAP3430_AUTO_MCBSP3 |
-               OMAP3430_AUTO_MCBSP2,
+               OMAP3430_AUTO_GPIO6_MASK |
+               OMAP3430_AUTO_GPIO5_MASK |
+               OMAP3430_AUTO_GPIO4_MASK |
+               OMAP3430_AUTO_GPIO3_MASK |
+               OMAP3430_AUTO_GPIO2_MASK |
+               OMAP3430_AUTO_WDT3_MASK |
+               OMAP3430_AUTO_UART3_MASK |
+               OMAP3430_AUTO_GPT9_MASK |
+               OMAP3430_AUTO_GPT8_MASK |
+               OMAP3430_AUTO_GPT7_MASK |
+               OMAP3430_AUTO_GPT6_MASK |
+               OMAP3430_AUTO_GPT5_MASK |
+               OMAP3430_AUTO_GPT4_MASK |
+               OMAP3430_AUTO_GPT3_MASK |
+               OMAP3430_AUTO_GPT2_MASK |
+               OMAP3430_AUTO_MCBSP4_MASK |
+               OMAP3430_AUTO_MCBSP3_MASK |
+               OMAP3430_AUTO_MCBSP2_MASK,
                OMAP3430_PER_MOD,
                CM_AUTOIDLE);
 
        if (omap_rev() > OMAP3430_REV_ES1_0) {
                cm_write_mod_reg(
-                       OMAP3430ES2_AUTO_USBHOST,
+                       OMAP3430ES2_AUTO_USBHOST_MASK,
                        OMAP3430ES2_USBHOST_MOD,
                        CM_AUTOIDLE);
        }
 
-       omap_ctrl_writel(OMAP3430_AUTOIDLE, OMAP2_CONTROL_SYSCONFIG);
+       omap_ctrl_writel(OMAP3430_AUTOIDLE_MASK, OMAP2_CONTROL_SYSCONFIG);
 
        /*
         * Set all plls to autoidle. This is needed until autoidle is
@@ -879,35 +897,40 @@ static void __init prcm_setup_regs(void)
                             OMAP3_PRM_CLKSRC_CTRL_OFFSET);
 
        /* setup wakup source */
-       prm_write_mod_reg(OMAP3430_EN_IO | OMAP3430_EN_GPIO1 |
-                         OMAP3430_EN_GPT1 | OMAP3430_EN_GPT12,
+       prm_write_mod_reg(OMAP3430_EN_IO_MASK | OMAP3430_EN_GPIO1_MASK |
+                         OMAP3430_EN_GPT1_MASK | OMAP3430_EN_GPT12_MASK,
                          WKUP_MOD, PM_WKEN);
        /* No need to write EN_IO, that is always enabled */
-       prm_write_mod_reg(OMAP3430_EN_GPIO1 | OMAP3430_EN_GPT1 |
-                         OMAP3430_EN_GPT12,
+       prm_write_mod_reg(OMAP3430_GRPSEL_GPIO1_MASK |
+                         OMAP3430_GRPSEL_GPT1_MASK |
+                         OMAP3430_GRPSEL_GPT12_MASK,
                          WKUP_MOD, OMAP3430_PM_MPUGRPSEL);
        /* For some reason IO doesn't generate wakeup event even if
         * it is selected to mpu wakeup goup */
-       prm_write_mod_reg(OMAP3430_IO_EN | OMAP3430_WKUP_EN,
+       prm_write_mod_reg(OMAP3430_IO_EN_MASK | OMAP3430_WKUP_EN_MASK,
                          OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET);
 
        /* Enable PM_WKEN to support DSS LPR */
-       prm_write_mod_reg(OMAP3430_PM_WKEN_DSS_EN_DSS,
+       prm_write_mod_reg(OMAP3430_PM_WKEN_DSS_EN_DSS_MASK,
                                OMAP3430_DSS_MOD, PM_WKEN);
 
        /* Enable wakeups in PER */
-       prm_write_mod_reg(OMAP3430_EN_GPIO2 | OMAP3430_EN_GPIO3 |
-                         OMAP3430_EN_GPIO4 | OMAP3430_EN_GPIO5 |
-                         OMAP3430_EN_GPIO6 | OMAP3430_EN_UART3 |
-                         OMAP3430_EN_MCBSP2 | OMAP3430_EN_MCBSP3 |
-                         OMAP3430_EN_MCBSP4,
+       prm_write_mod_reg(OMAP3430_EN_GPIO2_MASK | OMAP3430_EN_GPIO3_MASK |
+                         OMAP3430_EN_GPIO4_MASK | OMAP3430_EN_GPIO5_MASK |
+                         OMAP3430_EN_GPIO6_MASK | OMAP3430_EN_UART3_MASK |
+                         OMAP3430_EN_MCBSP2_MASK | OMAP3430_EN_MCBSP3_MASK |
+                         OMAP3430_EN_MCBSP4_MASK,
                          OMAP3430_PER_MOD, PM_WKEN);
        /* and allow them to wake up MPU */
-       prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2 | OMAP3430_EN_GPIO3 |
-                         OMAP3430_GRPSEL_GPIO4 | OMAP3430_EN_GPIO5 |
-                         OMAP3430_GRPSEL_GPIO6 | OMAP3430_EN_UART3 |
-                         OMAP3430_EN_MCBSP2 | OMAP3430_EN_MCBSP3 |
-                         OMAP3430_EN_MCBSP4,
+       prm_write_mod_reg(OMAP3430_GRPSEL_GPIO2_MASK |
+                         OMAP3430_GRPSEL_GPIO3_MASK |
+                         OMAP3430_GRPSEL_GPIO4_MASK |
+                         OMAP3430_GRPSEL_GPIO5_MASK |
+                         OMAP3430_GRPSEL_GPIO6_MASK |
+                         OMAP3430_GRPSEL_UART3_MASK |
+                         OMAP3430_GRPSEL_MCBSP2_MASK |
+                         OMAP3430_GRPSEL_MCBSP3_MASK |
+                         OMAP3430_GRPSEL_MCBSP4_MASK,
                          OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL);
 
        /* Don't attach IVA interrupts */
@@ -1080,14 +1103,6 @@ static int __init omap3_pm_init(void)
        omap3_idle_init();
 
        clkdm_add_wkdep(neon_clkdm, mpu_clkdm);
-       /*
-        * REVISIT: This wkdep is only necessary when GPIO2-6 are enabled for
-        * IO-pad wakeup.  Otherwise it will unnecessarily waste power
-        * waking up PER with every CORE wakeup - see
-        * http://marc.info/?l=linux-omap&m=121852150710062&w=2
-       */
-       clkdm_add_wkdep(per_clkdm, core_clkdm);
-
        if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
                omap3_secure_ram_storage =
                        kmalloc(0x803F, GFP_KERNEL);
index ebfce7d..a2904aa 100644 (file)
@@ -5,8 +5,8 @@
  * Copyright (C) 2007-2009 Nokia Corporation
  *
  * Written by Paul Walmsley
- *
  * Added OMAP4 specific support by Abhijit Pagare <abhijitpagare@ti.com>
+ * State counting code by Tero Kristo <tero.kristo@nokia.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
@@ -64,10 +64,10 @@ static u16 pwrstst_reg_offs;
 #define OMAP_MEM4_ONSTATE_MASK OMAP4430_OCP_NRET_BANK_ONSTATE_MASK
 
 /* OMAP3 and OMAP4 Memory Retstate Masks (common across all power domains) */
-#define OMAP_MEM0_RETSTATE_MASK OMAP3430_SHAREDL1CACHEFLATRETSTATE
-#define OMAP_MEM1_RETSTATE_MASK OMAP3430_L1FLATMEMRETSTATE
-#define OMAP_MEM2_RETSTATE_MASK OMAP3430_SHAREDL2CACHEFLATRETSTATE
-#define OMAP_MEM3_RETSTATE_MASK OMAP3430_L2FLATMEMRETSTATE
+#define OMAP_MEM0_RETSTATE_MASK OMAP3430_SHAREDL1CACHEFLATRETSTATE_MASK
+#define OMAP_MEM1_RETSTATE_MASK OMAP3430_L1FLATMEMRETSTATE_MASK
+#define OMAP_MEM2_RETSTATE_MASK OMAP3430_SHAREDL2CACHEFLATRETSTATE_MASK
+#define OMAP_MEM3_RETSTATE_MASK OMAP3430_L2FLATMEMRETSTATE_MASK
 #define OMAP_MEM4_RETSTATE_MASK OMAP4430_OCP_NRET_BANK_RETSTATE_MASK
 
 /* OMAP3 and OMAP4 Memory Status bits */
@@ -511,6 +511,8 @@ int pwrdm_read_prev_pwrst(struct powerdomain *pwrdm)
  */
 int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst)
 {
+       u32 v;
+
        if (!pwrdm)
                return -EINVAL;
 
@@ -526,9 +528,9 @@ int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst)
         * but the type of value returned is the same for each
         * powerdomain.
         */
-       prm_rmw_mod_reg_bits(OMAP3430_LOGICL1CACHERETSTATE,
-                            (pwrst << __ffs(OMAP3430_LOGICL1CACHERETSTATE)),
-                                pwrdm->prcm_offs, pwrstctrl_reg_offs);
+       v = pwrst << __ffs(OMAP3430_LOGICL1CACHERETSTATE_MASK);
+       prm_rmw_mod_reg_bits(OMAP3430_LOGICL1CACHERETSTATE_MASK, v,
+                            pwrdm->prcm_offs, pwrstctrl_reg_offs);
 
        return 0;
 }
@@ -676,8 +678,8 @@ int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm)
        if (!pwrdm)
                return -EINVAL;
 
-       return prm_read_mod_bits_shift(pwrdm->prcm_offs,
-                                pwrstst_reg_offs, OMAP3430_LOGICSTATEST);
+       return prm_read_mod_bits_shift(pwrdm->prcm_offs, pwrstst_reg_offs,
+                                      OMAP3430_LOGICSTATEST_MASK);
 }
 
 /**
@@ -700,7 +702,7 @@ int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm)
         * powerdomain.
         */
        return prm_read_mod_bits_shift(pwrdm->prcm_offs, OMAP3430_PM_PREPWSTST,
-                                       OMAP3430_LASTLOGICSTATEENTERED);
+                                       OMAP3430_LASTLOGICSTATEENTERED_MASK);
 }
 
 /**
@@ -723,7 +725,7 @@ int pwrdm_read_logic_retst(struct powerdomain *pwrdm)
         * powerdomain.
         */
        return prm_read_mod_bits_shift(pwrdm->prcm_offs, pwrstctrl_reg_offs,
-                                       OMAP3430_LOGICSTATEST);
+                                      OMAP3430_LOGICSTATEST_MASK);
 }
 
 /**
@@ -977,6 +979,34 @@ bool pwrdm_has_hdwr_sar(struct powerdomain *pwrdm)
        return (pwrdm && pwrdm->flags & PWRDM_HAS_HDWR_SAR) ? 1 : 0;
 }
 
+/**
+ * pwrdm_set_lowpwrstchange - Request a low power state change
+ * @pwrdm: struct powerdomain *
+ *
+ * Allows a powerdomain to transtion to a lower power sleep state
+ * from an existing sleep state without waking up the powerdomain.
+ * Returns -EINVAL if the powerdomain pointer is null or if the
+ * powerdomain does not support LOWPOWERSTATECHANGE, or returns 0
+ * upon success.
+ */
+int pwrdm_set_lowpwrstchange(struct powerdomain *pwrdm)
+{
+       if (!pwrdm)
+               return -EINVAL;
+
+       if (!(pwrdm->flags & PWRDM_HAS_LOWPOWERSTATECHANGE))
+               return -EINVAL;
+
+       pr_debug("powerdomain: %s: setting LOWPOWERSTATECHANGE bit\n",
+                pwrdm->name);
+
+       prm_rmw_mod_reg_bits(OMAP4430_LOWPOWERSTATECHANGE_MASK,
+                            (1 << OMAP4430_LOWPOWERSTATECHANGE_SHIFT),
+                            pwrdm->prcm_offs, pwrstctrl_reg_offs);
+
+       return 0;
+}
+
 /**
  * pwrdm_wait_transition - wait for powerdomain power transition to finish
  * @pwrdm: struct powerdomain * to wait for
@@ -1002,7 +1032,7 @@ int pwrdm_wait_transition(struct powerdomain *pwrdm)
 
        /* XXX Is this udelay() value meaningful? */
        while ((prm_read_mod_reg(pwrdm->prcm_offs, pwrstst_reg_offs) &
-               OMAP_INTRANSITION) &&
+               OMAP_INTRANSITION_MASK) &&
               (c++ < PWRDM_TRANSITION_BAILOUT))
                        udelay(1);
 
index c101514..c721951 100644 (file)
@@ -1,12 +1,12 @@
 /*
  * OMAP4 Power domains framework
  *
- * Copyright (C) 2009 Texas Instruments, Inc.
- * Copyright (C) 2009 Nokia Corporation
+ * Copyright (C) 2009-2010 Texas Instruments, Inc.
+ * Copyright (C) 2009-2010 Nokia Corporation
  *
  * Abhijit Pagare (abhijitpagare@ti.com)
  * Benoit Cousson (b-cousson@ti.com)
- * Paul Walmsley
+ * Paul Walmsley (paul@pwsan.com)
  *
  * This file is automatically generated from the OMAP hardware databases.
  * We respectfully ask that any modifications to this file be coordinated
@@ -54,6 +54,7 @@ static struct powerdomain core_44xx_pwrdm = {
                [3] = PWRDM_POWER_ON,   /* ducati_l2ram */
                [4] = PWRDM_POWER_ON,   /* ducati_unicache */
        },
+       .flags          = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
 /* gfx_44xx_pwrdm: 3D accelerator power domain */
@@ -69,6 +70,7 @@ static struct powerdomain gfx_44xx_pwrdm = {
        .pwrsts_mem_on  = {
                [0] = PWRDM_POWER_ON,   /* gfx_mem */
        },
+       .flags          = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
 /* abe_44xx_pwrdm: Audio back end power domain */
@@ -87,6 +89,7 @@ static struct powerdomain abe_44xx_pwrdm = {
                [0] = PWRDM_POWER_ON,   /* aessmem */
                [1] = PWRDM_POWER_ON,   /* periphmem */
        },
+       .flags          = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
 /* dss_44xx_pwrdm: Display subsystem power domain */
@@ -103,6 +106,7 @@ static struct powerdomain dss_44xx_pwrdm = {
        .pwrsts_mem_on  = {
                [0] = PWRDM_POWER_ON,   /* dss_mem */
        },
+       .flags          = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
 /* tesla_44xx_pwrdm: Tesla processor power domain */
@@ -123,6 +127,7 @@ static struct powerdomain tesla_44xx_pwrdm = {
                [1] = PWRDM_POWER_ON,   /* tesla_l1 */
                [2] = PWRDM_POWER_ON,   /* tesla_l2 */
        },
+       .flags          = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
 /* wkup_44xx_pwrdm: Wake-up power domain */
@@ -130,7 +135,7 @@ static struct powerdomain wkup_44xx_pwrdm = {
        .name             = "wkup_pwrdm",
        .prcm_offs        = OMAP4430_PRM_WKUP_MOD,
        .omap_chip        = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
-       .pwrsts           = PWRDM_POWER_ON,
+       .pwrsts           = PWRSTS_ON,
        .banks            = 1,
        .pwrsts_mem_ret = {
                [0] = PWRDM_POWER_OFF,  /* wkup_bank */
@@ -143,7 +148,7 @@ static struct powerdomain wkup_44xx_pwrdm = {
 /* cpu0_44xx_pwrdm: MPU0 processor and Neon coprocessor power domain */
 static struct powerdomain cpu0_44xx_pwrdm = {
        .name             = "cpu0_pwrdm",
-       .prcm_offs        = OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD,
+       .prcm_offs        = OMAP4430_PRCM_MPU_CPU0_MOD,
        .omap_chip        = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
        .pwrsts           = PWRSTS_OFF_RET_ON,
        .pwrsts_logic_ret = PWRSTS_OFF_RET,
@@ -159,7 +164,7 @@ static struct powerdomain cpu0_44xx_pwrdm = {
 /* cpu1_44xx_pwrdm: MPU1 processor and Neon coprocessor power domain */
 static struct powerdomain cpu1_44xx_pwrdm = {
        .name             = "cpu1_pwrdm",
-       .prcm_offs        = OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD,
+       .prcm_offs        = OMAP4430_PRCM_MPU_CPU1_MOD,
        .omap_chip        = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
        .pwrsts           = PWRSTS_OFF_RET_ON,
        .pwrsts_logic_ret = PWRSTS_OFF_RET,
@@ -227,6 +232,7 @@ static struct powerdomain ivahd_44xx_pwrdm = {
                [2] = PWRDM_POWER_ON,   /* tcm1_mem */
                [3] = PWRDM_POWER_ON,   /* tcm2_mem */
        },
+       .flags          = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
 /* cam_44xx_pwrdm: Camera subsystem power domain */
@@ -242,6 +248,7 @@ static struct powerdomain cam_44xx_pwrdm = {
        .pwrsts_mem_on  = {
                [0] = PWRDM_POWER_ON,   /* cam_mem */
        },
+       .flags          = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
 /* l3init_44xx_pwrdm: L3 initators pheripherals power domain  */
@@ -258,6 +265,7 @@ static struct powerdomain l3init_44xx_pwrdm = {
        .pwrsts_mem_on  = {
                [0] = PWRDM_POWER_ON,   /* l3init_bank1 */
        },
+       .flags          = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
 /* l4per_44xx_pwrdm: Target peripherals power domain */
@@ -276,6 +284,7 @@ static struct powerdomain l4per_44xx_pwrdm = {
                [0] = PWRDM_POWER_ON,   /* nonretained_bank */
                [1] = PWRDM_POWER_ON,   /* retained_bank */
        },
+       .flags          = PWRDM_HAS_LOWPOWERSTATECHANGE,
 };
 
 /*
@@ -286,7 +295,7 @@ static struct powerdomain always_on_core_44xx_pwrdm = {
        .name             = "always_on_core_pwrdm",
        .prcm_offs        = OMAP4430_PRM_ALWAYS_ON_MOD,
        .omap_chip        = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
-       .pwrsts           = PWRDM_POWER_ON,
+       .pwrsts           = PWRSTS_ON,
 };
 
 /* cefuse_44xx_pwrdm: Customer efuse controller power domain */
index 90f603d..995b7ed 100644 (file)
 
 #define OMAP4430_SCRM_SCRM_MOD 0x0000
 
-/* CHIRONSS instances */
+/* PRCM_MPU instances */
 
-#define OMAP4430_CHIRONSS_CHIRONSS_OCP_SOCKET_PRCM_MOD 0x0000
-#define OMAP4430_CHIRONSS_CHIRONSS_DEVICE_PRM_MOD      0x0200
-#define OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD            0x0400
-#define OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD            0x0800
-
-/* Base Addresses for the OMAP4 */
-
-#define OMAP4430_CM1_BASE              0x4a004000
-#define OMAP4430_CM2_BASE              0x4a008000
-#define OMAP4430_PRM_BASE              0x4a306000
-#define OMAP4430_SCRM_BASE             0x4a30a000
-#define OMAP4430_CHIRONSS_BASE         0x48243000
+#define OMAP4430_PRCM_MPU_OCP_SOCKET_PRCM_MOD  0x0000
+#define OMAP4430_PRCM_MPU_DEVICE_PRM_MOD       0x0200
+#define OMAP4430_PRCM_MPU_CPU0_MOD             0x0400
+#define OMAP4430_PRCM_MPU_CPU1_MOD             0x0800
 
 
 /* 24XX register bits shared between CM & PRM registers */
 
 /* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */
 #define OMAP2420_EN_MMC_SHIFT                          26
-#define OMAP2420_EN_MMC                                        (1 << 26)
+#define OMAP2420_EN_MMC_MASK                           (1 << 26)
 #define OMAP24XX_EN_UART2_SHIFT                                22
-#define OMAP24XX_EN_UART2                              (1 << 22)
+#define OMAP24XX_EN_UART2_MASK                         (1 << 22)
 #define OMAP24XX_EN_UART1_SHIFT                                21
-#define OMAP24XX_EN_UART1                              (1 << 21)
+#define OMAP24XX_EN_UART1_MASK                         (1 << 21)
 #define OMAP24XX_EN_MCSPI2_SHIFT                       18
-#define OMAP24XX_EN_MCSPI2                             (1 << 18)
+#define OMAP24XX_EN_MCSPI2_MASK                                (1 << 18)
 #define OMAP24XX_EN_MCSPI1_SHIFT                       17
-#define OMAP24XX_EN_MCSPI1                             (1 << 17)
+#define OMAP24XX_EN_MCSPI1_MASK                                (1 << 17)
 #define OMAP24XX_EN_MCBSP2_SHIFT                       16
-#define OMAP24XX_EN_MCBSP2                             (1 << 16)
+#define OMAP24XX_EN_MCBSP2_MASK                                (1 << 16)
 #define OMAP24XX_EN_MCBSP1_SHIFT                       15
-#define OMAP24XX_EN_MCBSP1                             (1 << 15)
+#define OMAP24XX_EN_MCBSP1_MASK                                (1 << 15)
 #define OMAP24XX_EN_GPT12_SHIFT                                14
-#define OMAP24XX_EN_GPT12                              (1 << 14)
+#define OMAP24XX_EN_GPT12_MASK                         (1 << 14)
 #define OMAP24XX_EN_GPT11_SHIFT                                13
-#define OMAP24XX_EN_GPT11                              (1 << 13)
+#define OMAP24XX_EN_GPT11_MASK                         (1 << 13)
 #define OMAP24XX_EN_GPT10_SHIFT                                12
-#define OMAP24XX_EN_GPT10                              (1 << 12)
+#define OMAP24XX_EN_GPT10_MASK                         (1 << 12)
 #define OMAP24XX_EN_GPT9_SHIFT                         11
-#define OMAP24XX_EN_GPT9                               (1 << 11)
+#define OMAP24XX_EN_GPT9_MASK                          (1 << 11)
 #define OMAP24XX_EN_GPT8_SHIFT                         10
-#define OMAP24XX_EN_GPT8                               (1 << 10)
+#define OMAP24XX_EN_GPT8_MASK                          (1 << 10)
 #define OMAP24XX_EN_GPT7_SHIFT                         9
-#define OMAP24XX_EN_GPT7                               (1 << 9)
+#define OMAP24XX_EN_GPT7_MASK                          (1 << 9)
 #define OMAP24XX_EN_GPT6_SHIFT                         8
-#define OMAP24XX_EN_GPT6                               (1 << 8)
+#define OMAP24XX_EN_GPT6_MASK                          (1 << 8)
 #define OMAP24XX_EN_GPT5_SHIFT                         7
-#define OMAP24XX_EN_GPT5                               (1 << 7)
+#define OMAP24XX_EN_GPT5_MASK                          (1 << 7)
 #define OMAP24XX_EN_GPT4_SHIFT                         6
-#define OMAP24XX_EN_GPT4                               (1 << 6)
+#define OMAP24XX_EN_GPT4_MASK                          (1 << 6)
 #define OMAP24XX_EN_GPT3_SHIFT                         5
-#define OMAP24XX_EN_GPT3                               (1 << 5)
+#define OMAP24XX_EN_GPT3_MASK                          (1 << 5)
 #define OMAP24XX_EN_GPT2_SHIFT                         4
-#define OMAP24XX_EN_GPT2                               (1 << 4)
+#define OMAP24XX_EN_GPT2_MASK                          (1 << 4)
 #define OMAP2420_EN_VLYNQ_SHIFT                                3
-#define OMAP2420_EN_VLYNQ                              (1 << 3)
+#define OMAP2420_EN_VLYNQ_MASK                         (1 << 3)
 
 /* CM_FCLKEN2_CORE, CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */
 #define OMAP2430_EN_GPIO5_SHIFT                                10
-#define OMAP2430_EN_GPIO5                              (1 << 10)
+#define OMAP2430_EN_GPIO5_MASK                         (1 << 10)
 #define OMAP2430_EN_MCSPI3_SHIFT                       9
-#define OMAP2430_EN_MCSPI3                             (1 << 9)
+#define OMAP2430_EN_MCSPI3_MASK                                (1 << 9)
 #define OMAP2430_EN_MMCHS2_SHIFT                       8
-#define OMAP2430_EN_MMCHS2                             (1 << 8)
+#define OMAP2430_EN_MMCHS2_MASK                                (1 << 8)
 #define OMAP2430_EN_MMCHS1_SHIFT                       7
-#define OMAP2430_EN_MMCHS1                             (1 << 7)
+#define OMAP2430_EN_MMCHS1_MASK                                (1 << 7)
 #define OMAP24XX_EN_UART3_SHIFT                                2
-#define OMAP24XX_EN_UART3                              (1 << 2)
+#define OMAP24XX_EN_UART3_MASK                         (1 << 2)
 #define OMAP24XX_EN_USB_SHIFT                          0
-#define OMAP24XX_EN_USB                                        (1 << 0)
+#define OMAP24XX_EN_USB_MASK                           (1 << 0)
 
 /* CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */
 #define OMAP2430_EN_MDM_INTC_SHIFT                     11
-#define OMAP2430_EN_MDM_INTC                           (1 << 11)
+#define OMAP2430_EN_MDM_INTC_MASK                      (1 << 11)
 #define OMAP2430_EN_USBHS_SHIFT                                6
-#define OMAP2430_EN_USBHS                              (1 << 6)
+#define OMAP2430_EN_USBHS_MASK                         (1 << 6)
 
 /* CM_IDLEST1_CORE, PM_WKST1_CORE shared bits */
 #define OMAP2420_ST_MMC_SHIFT                          26
 
 /* CM_FCLKEN_WKUP, CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */
 #define OMAP24XX_EN_GPIOS_SHIFT                                2
-#define OMAP24XX_EN_GPIOS                              (1 << 2)
+#define OMAP24XX_EN_GPIOS_MASK                         (1 << 2)
 #define OMAP24XX_EN_GPT1_SHIFT                         0
-#define OMAP24XX_EN_GPT1                               (1 << 0)
+#define OMAP24XX_EN_GPT1_MASK                          (1 << 0)
 
 /* PM_WKST_WKUP, CM_IDLEST_WKUP shared bits */
 #define OMAP24XX_ST_GPIOS_SHIFT                                (1 << 2)
 #define OMAP3430_REV_MASK                              (0xff << 0)
 
 /* CM_SYSCONFIG, PRM_SYSCONFIG shared bits */
-#define OMAP3430_AUTOIDLE                              (1 << 0)
+#define OMAP3430_AUTOIDLE_MASK                         (1 << 0)
 
 /* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */
-#define OMAP3430_EN_MMC2                               (1 << 25)
+#define OMAP3430_EN_MMC2_MASK                          (1 << 25)
 #define OMAP3430_EN_MMC2_SHIFT                         25
-#define OMAP3430_EN_MMC1                               (1 << 24)
+#define OMAP3430_EN_MMC1_MASK                          (1 << 24)
 #define OMAP3430_EN_MMC1_SHIFT                         24
-#define OMAP3430_EN_MCSPI4                             (1 << 21)
+#define OMAP3430_EN_MCSPI4_MASK                                (1 << 21)
 #define OMAP3430_EN_MCSPI4_SHIFT                       21
-#define OMAP3430_EN_MCSPI3                             (1 << 20)
+#define OMAP3430_EN_MCSPI3_MASK                                (1 << 20)
 #define OMAP3430_EN_MCSPI3_SHIFT                       20
-#define OMAP3430_EN_MCSPI2                             (1 << 19)
+#define OMAP3430_EN_MCSPI2_MASK                                (1 << 19)
 #define OMAP3430_EN_MCSPI2_SHIFT                       19
-#define OMAP3430_EN_MCSPI1                             (1 << 18)
+#define OMAP3430_EN_MCSPI1_MASK                                (1 << 18)
 #define OMAP3430_EN_MCSPI1_SHIFT                       18
-#define OMAP3430_EN_I2C3                               (1 << 17)
+#define OMAP3430_EN_I2C3_MASK                          (1 << 17)
 #define OMAP3430_EN_I2C3_SHIFT                         17
-#define OMAP3430_EN_I2C2                               (1 << 16)
+#define OMAP3430_EN_I2C2_MASK                          (1 << 16)
 #define OMAP3430_EN_I2C2_SHIFT                         16
-#define OMAP3430_EN_I2C1                               (1 << 15)
+#define OMAP3430_EN_I2C1_MASK                          (1 << 15)
 #define OMAP3430_EN_I2C1_SHIFT                         15
-#define OMAP3430_EN_UART2                              (1 << 14)
+#define OMAP3430_EN_UART2_MASK                         (1 << 14)
 #define OMAP3430_EN_UART2_SHIFT                                14
-#define OMAP3430_EN_UART1                              (1 << 13)
+#define OMAP3430_EN_UART1_MASK                         (1 << 13)
 #define OMAP3430_EN_UART1_SHIFT                                13
-#define OMAP3430_EN_GPT11                              (1 << 12)
+#define OMAP3430_EN_GPT11_MASK                         (1 << 12)
 #define OMAP3430_EN_GPT11_SHIFT                                12
-#define OMAP3430_EN_GPT10                              (1 << 11)
+#define OMAP3430_EN_GPT10_MASK                         (1 << 11)
 #define OMAP3430_EN_GPT10_SHIFT                                11
-#define OMAP3430_EN_MCBSP5                             (1 << 10)
+#define OMAP3430_EN_MCBSP5_MASK                                (1 << 10)
 #define OMAP3430_EN_MCBSP5_SHIFT                       10
-#define OMAP3430_EN_MCBSP1                             (1 << 9)
+#define OMAP3430_EN_MCBSP1_MASK                                (1 << 9)
 #define OMAP3430_EN_MCBSP1_SHIFT                       9
-#define OMAP3430_EN_FSHOSTUSB                          (1 << 5)
+#define OMAP3430_EN_FSHOSTUSB_MASK                     (1 << 5)
 #define OMAP3430_EN_FSHOSTUSB_SHIFT                    5
-#define OMAP3430_EN_D2D                                        (1 << 3)
+#define OMAP3430_EN_D2D_MASK                           (1 << 3)
 #define OMAP3430_EN_D2D_SHIFT                          3
 
 /* CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */
-#define OMAP3430_EN_HSOTGUSB                           (1 << 4)
-#define OMAP3430_EN_HSOTGUSB_SHIFT                             4
+#define OMAP3430_EN_HSOTGUSB_MASK                      (1 << 4)
+#define OMAP3430_EN_HSOTGUSB_SHIFT                     4
 
 /* PM_WKST1_CORE, CM_IDLEST1_CORE shared bits */
 #define OMAP3430_ST_MMC2_SHIFT                         25
 #define OMAP3430_ST_D2D_MASK                           (1 << 3)
 
 /* CM_FCLKEN_WKUP, CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */
-#define OMAP3430_EN_GPIO1                              (1 << 3)
+#define OMAP3430_EN_GPIO1_MASK                         (1 << 3)
 #define OMAP3430_EN_GPIO1_SHIFT                                3
-#define OMAP3430_EN_GPT12                              (1 << 1)
+#define OMAP3430_EN_GPT12_MASK                         (1 << 1)
 #define OMAP3430_EN_GPT12_SHIFT                                1
-#define OMAP3430_EN_GPT1                               (1 << 0)
+#define OMAP3430_EN_GPT1_MASK                          (1 << 0)
 #define OMAP3430_EN_GPT1_SHIFT                         0
 
 /* CM_FCLKEN_WKUP, PM_WKEN_WKUP shared bits */
-#define OMAP3430_EN_SR2                                        (1 << 7)
+#define OMAP3430_EN_SR2_MASK                           (1 << 7)
 #define OMAP3430_EN_SR2_SHIFT                          7
-#define OMAP3430_EN_SR1                                        (1 << 6)
+#define OMAP3430_EN_SR1_MASK                           (1 << 6)
 #define OMAP3430_EN_SR1_SHIFT                          6
 
 /* CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */
-#define OMAP3430_EN_GPT12                              (1 << 1)
+#define OMAP3430_EN_GPT12_MASK                         (1 << 1)
 #define OMAP3430_EN_GPT12_SHIFT                                1
 
 /* CM_IDLEST_WKUP, PM_WKST_WKUP shared bits */
  * CM_SLEEPDEP_PER, PM_WKDEP_IVA2, PM_WKDEP_GFX,
  * PM_WKDEP_DSS, PM_WKDEP_CAM, PM_WKDEP_PER, PM_WKDEP_NEON shared bits
  */
-#define OMAP3430_EN_MPU                                        (1 << 1)
+#define OMAP3430_EN_MPU_MASK                           (1 << 1)
 #define OMAP3430_EN_MPU_SHIFT                          1
 
 /* CM_FCLKEN_PER, CM_ICLKEN_PER, PM_WKEN_PER shared bits */
-#define OMAP3430_EN_GPIO6                              (1 << 17)
+#define OMAP3430_EN_GPIO6_MASK                         (1 << 17)
 #define OMAP3430_EN_GPIO6_SHIFT                                17
-#define OMAP3430_EN_GPIO5                              (1 << 16)
+#define OMAP3430_EN_GPIO5_MASK                         (1 << 16)
 #define OMAP3430_EN_GPIO5_SHIFT                                16
-#define OMAP3430_EN_GPIO4                              (1 << 15)
+#define OMAP3430_EN_GPIO4_MASK                         (1 << 15)
 #define OMAP3430_EN_GPIO4_SHIFT                                15
-#define OMAP3430_EN_GPIO3                              (1 << 14)
+#define OMAP3430_EN_GPIO3_MASK                         (1 << 14)
 #define OMAP3430_EN_GPIO3_SHIFT                                14
-#define OMAP3430_EN_GPIO2                              (1 << 13)
+#define OMAP3430_EN_GPIO2_MASK                         (1 << 13)
 #define OMAP3430_EN_GPIO2_SHIFT                                13
-#define OMAP3430_EN_UART3                              (1 << 11)
+#define OMAP3430_EN_UART3_MASK                         (1 << 11)
 #define OMAP3430_EN_UART3_SHIFT                                11
-#define OMAP3430_EN_GPT9                               (1 << 10)
+#define OMAP3430_EN_GPT9_MASK                          (1 << 10)
 #define OMAP3430_EN_GPT9_SHIFT                         10
-#define OMAP3430_EN_GPT8                               (1 << 9)
+#define OMAP3430_EN_GPT8_MASK                          (1 << 9)
 #define OMAP3430_EN_GPT8_SHIFT                         9
-#define OMAP3430_EN_GPT7                               (1 << 8)
+#define OMAP3430_EN_GPT7_MASK                          (1 << 8)
 #define OMAP3430_EN_GPT7_SHIFT                         8
-#define OMAP3430_EN_GPT6                               (1 << 7)
+#define OMAP3430_EN_GPT6_MASK                          (1 << 7)
 #define OMAP3430_EN_GPT6_SHIFT                         7
-#define OMAP3430_EN_GPT5                               (1 << 6)
+#define OMAP3430_EN_GPT5_MASK                          (1 << 6)
 #define OMAP3430_EN_GPT5_SHIFT                         6
-#define OMAP3430_EN_GPT4                               (1 << 5)
+#define OMAP3430_EN_GPT4_MASK                          (1 << 5)
 #define OMAP3430_EN_GPT4_SHIFT                         5
-#define OMAP3430_EN_GPT3                               (1 << 4)
+#define OMAP3430_EN_GPT3_MASK                          (1 << 4)
 #define OMAP3430_EN_GPT3_SHIFT                         4
-#define OMAP3430_EN_GPT2                               (1 << 3)
+#define OMAP3430_EN_GPT2_MASK                          (1 << 3)
 #define OMAP3430_EN_GPT2_SHIFT                         3
 
 /* CM_FCLKEN_PER, CM_ICLKEN_PER, PM_WKEN_PER, PM_WKST_PER shared bits */
 /* XXX Possible TI documentation bug: should the PM_WKST_PER EN_* bits
  * be ST_* bits instead? */
-#define OMAP3430_EN_MCBSP4                             (1 << 2)
+#define OMAP3430_EN_MCBSP4_MASK                                (1 << 2)
 #define OMAP3430_EN_MCBSP4_SHIFT                       2
-#define OMAP3430_EN_MCBSP3                             (1 << 1)
+#define OMAP3430_EN_MCBSP3_MASK                                (1 << 1)
 #define OMAP3430_EN_MCBSP3_SHIFT                       1
-#define OMAP3430_EN_MCBSP2                             (1 << 0)
+#define OMAP3430_EN_MCBSP2_MASK                                (1 << 0)
 #define OMAP3430_EN_MCBSP2_SHIFT                       0
 
 /* CM_IDLEST_PER, PM_WKST_PER shared bits */
index 07a60f1..c201374 100644 (file)
@@ -158,10 +158,10 @@ void omap_prcm_arch_reset(char mode, const char *cmd)
                WARN_ON(1);
 
        if (cpu_is_omap24xx() || cpu_is_omap34xx())
-               prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs,
+               prm_set_mod_reg_bits(OMAP_RST_DPLL3_MASK, prcm_offs,
                                                 OMAP2_RM_RSTCTRL);
        if (cpu_is_omap44xx())
-               prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs,
+               prm_set_mod_reg_bits(OMAP_RST_DPLL3_MASK, prcm_offs,
                                                 OMAP4_RM_RSTCTRL);
 }
 
index 4002051..0b188ff 100644 (file)
 /* Bits shared between registers */
 
 /* PRCM_IRQSTATUS_MPU, PM_IRQSTATUS_DSP, PRCM_IRQSTATUS_IVA shared bits */
-#define OMAP24XX_VOLTTRANS_ST                          (1 << 2)
-#define OMAP24XX_WKUP2_ST                              (1 << 1)
-#define OMAP24XX_WKUP1_ST                              (1 << 0)
+#define OMAP24XX_VOLTTRANS_ST_MASK                     (1 << 2)
+#define OMAP24XX_WKUP2_ST_MASK                         (1 << 1)
+#define OMAP24XX_WKUP1_ST_MASK                         (1 << 0)
 
 /* PRCM_IRQENABLE_MPU, PM_IRQENABLE_DSP, PRCM_IRQENABLE_IVA shared bits */
-#define OMAP24XX_VOLTTRANS_EN                          (1 << 2)
-#define OMAP24XX_WKUP2_EN                              (1 << 1)
-#define OMAP24XX_WKUP1_EN                              (1 << 0)
+#define OMAP24XX_VOLTTRANS_EN_MASK                     (1 << 2)
+#define OMAP24XX_WKUP2_EN_MASK                         (1 << 1)
+#define OMAP24XX_WKUP1_EN_MASK                         (1 << 0)
 
 /* PM_WKDEP_GFX, PM_WKDEP_MPU, PM_WKDEP_DSP, PM_WKDEP_MDM shared bits */
 #define OMAP24XX_EN_MPU_SHIFT                          1
  */
 #define OMAP24XX_MEMONSTATE_SHIFT                      10
 #define OMAP24XX_MEMONSTATE_MASK                       (0x3 << 10)
-#define OMAP24XX_MEMRETSTATE                           (1 << 3)
+#define OMAP24XX_MEMRETSTATE_MASK                      (1 << 3)
 
 /* PM_PWSTCTRL_GFX, PM_PWSTCTRL_DSP, PM_PWSTCTRL_MDM shared bits */
-#define OMAP24XX_FORCESTATE                            (1 << 18)
+#define OMAP24XX_FORCESTATE_MASK                       (1 << 18)
 
 /*
  * PM_PWSTST_CORE, PM_PWSTST_GFX, PM_PWSTST_MPU, PM_PWSTST_DSP,
  * PM_PWSTST_MDM shared bits
  */
-#define OMAP24XX_CLKACTIVITY                           (1 << 19)
+#define OMAP24XX_CLKACTIVITY_MASK                      (1 << 19)
 
 /* PM_PWSTST_MPU, PM_PWSTST_CORE, PM_PWSTST_DSP shared bits */
 #define OMAP24XX_LASTSTATEENTERED_SHIFT                        4
 #define OMAP24XX_REV_MASK                              (0xff << 0)
 
 /* PRCM_SYSCONFIG */
-#define OMAP24XX_AUTOIDLE                              (1 << 0)
+#define OMAP24XX_AUTOIDLE_MASK                         (1 << 0)
 
 /* PRCM_IRQSTATUS_MPU specific bits */
-#define OMAP2430_DPLL_RECAL_ST                         (1 << 6)
-#define OMAP24XX_TRANSITION_ST                         (1 << 5)
-#define OMAP24XX_EVGENOFF_ST                           (1 << 4)
-#define OMAP24XX_EVGENON_ST                            (1 << 3)
+#define OMAP2430_DPLL_RECAL_ST_MASK                    (1 << 6)
+#define OMAP24XX_TRANSITION_ST_MASK                    (1 << 5)
+#define OMAP24XX_EVGENOFF_ST_MASK                      (1 << 4)
+#define OMAP24XX_EVGENON_ST_MASK                       (1 << 3)
 
 /* PRCM_IRQENABLE_MPU specific bits */
-#define OMAP2430_DPLL_RECAL_EN                         (1 << 6)
-#define OMAP24XX_TRANSITION_EN                         (1 << 5)
-#define OMAP24XX_EVGENOFF_EN                           (1 << 4)
-#define OMAP24XX_EVGENON_EN                            (1 << 3)
+#define OMAP2430_DPLL_RECAL_EN_MASK                    (1 << 6)
+#define OMAP24XX_TRANSITION_EN_MASK                    (1 << 5)
+#define OMAP24XX_EVGENOFF_EN_MASK                      (1 << 4)
+#define OMAP24XX_EVGENON_EN_MASK                       (1 << 3)
 
 /* PRCM_VOLTCTRL */
-#define OMAP24XX_AUTO_EXTVOLT                          (1 << 15)
-#define OMAP24XX_FORCE_EXTVOLT                         (1 << 14)
+#define OMAP24XX_AUTO_EXTVOLT_MASK                     (1 << 15)
+#define OMAP24XX_FORCE_EXTVOLT_MASK                    (1 << 14)
 #define OMAP24XX_SETOFF_LEVEL_SHIFT                    12
 #define OMAP24XX_SETOFF_LEVEL_MASK                     (0x3 << 12)
-#define OMAP24XX_MEMRETCTRL                            (1 << 8)
+#define OMAP24XX_MEMRETCTRL_MASK                       (1 << 8)
 #define OMAP24XX_SETRET_LEVEL_SHIFT                    6
 #define OMAP24XX_SETRET_LEVEL_MASK                     (0x3 << 6)
 #define OMAP24XX_VOLT_LEVEL_SHIFT                      0
 
 /* PRCM_CLKOUT_CTRL */
 #define OMAP2420_CLKOUT2_EN_SHIFT                      15
-#define OMAP2420_CLKOUT2_EN                            (1 << 15)
+#define OMAP2420_CLKOUT2_EN_MASK                       (1 << 15)
 #define OMAP2420_CLKOUT2_DIV_SHIFT                     11
 #define OMAP2420_CLKOUT2_DIV_MASK                      (0x7 << 11)
 #define OMAP2420_CLKOUT2_SOURCE_SHIFT                  8
 #define OMAP2420_CLKOUT2_SOURCE_MASK                   (0x3 << 8)
 #define OMAP24XX_CLKOUT_EN_SHIFT                       7
-#define OMAP24XX_CLKOUT_EN                             (1 << 7)
+#define OMAP24XX_CLKOUT_EN_MASK                                (1 << 7)
 #define OMAP24XX_CLKOUT_DIV_SHIFT                      3
 #define OMAP24XX_CLKOUT_DIV_MASK                       (0x7 << 3)
 #define OMAP24XX_CLKOUT_SOURCE_SHIFT                   0
 
 /* PRCM_CLKEMUL_CTRL */
 #define OMAP24XX_EMULATION_EN_SHIFT                    0
-#define OMAP24XX_EMULATION_EN                          (1 << 0)
+#define OMAP24XX_EMULATION_EN_MASK                     (1 << 0)
 
 /* PRCM_CLKCFG_CTRL */
-#define OMAP24XX_VALID_CONFIG                          (1 << 0)
+#define OMAP24XX_VALID_CONFIG_MASK                     (1 << 0)
 
 /* PRCM_CLKCFG_STATUS */
-#define OMAP24XX_CONFIG_STATUS                         (1 << 0)
+#define OMAP24XX_CONFIG_STATUS_MASK                    (1 << 0)
 
 /* PRCM_VOLTSETUP specific bits */
 
 /* PRCM_CLKSSETUP specific bits */
 
 /* PRCM_POLCTRL */
-#define OMAP2420_CLKOUT2_POL                           (1 << 10)
-#define OMAP24XX_CLKOUT_POL                            (1 << 9)
-#define OMAP24XX_CLKREQ_POL                            (1 << 8)
-#define OMAP2430_USE_POWEROK                           (1 << 2)
-#define OMAP2430_POWEROK_POL                           (1 << 1)
-#define OMAP24XX_EXTVOL_POL                            (1 << 0)
+#define OMAP2420_CLKOUT2_POL_MASK                      (1 << 10)
+#define OMAP24XX_CLKOUT_POL_MASK                       (1 << 9)
+#define OMAP24XX_CLKREQ_POL_MASK                       (1 << 8)
+#define OMAP2430_USE_POWEROK_MASK                      (1 << 2)
+#define OMAP2430_POWEROK_POL_MASK                      (1 << 1)
+#define OMAP24XX_EXTVOL_POL_MASK                       (1 << 0)
 
 /* RM_RSTST_MPU specific bits */
 /* 2430 calls GLOBALWMPU_RST "GLOBALWARM_RST" instead */
 /* PM_EVEGENOFFTIM_MPU specific bits */
 
 /* PM_PWSTCTRL_MPU specific bits */
-#define OMAP2430_FORCESTATE                            (1 << 18)
+#define OMAP2430_FORCESTATE_MASK                       (1 << 18)
 
 /* PM_PWSTST_MPU specific bits */
 /* INTRANSITION, CLKACTIVITY, POWERSTATE, MEMSTATEST are 2430 only */
 /* PM_WKST2_CORE specific bits */
 
 /* PM_WKDEP_CORE specific bits*/
-#define OMAP2430_PM_WKDEP_CORE_EN_MDM                  (1 << 5)
-#define OMAP24XX_PM_WKDEP_CORE_EN_GFX                  (1 << 3)
-#define OMAP24XX_PM_WKDEP_CORE_EN_DSP                  (1 << 2)
+#define OMAP2430_PM_WKDEP_CORE_EN_MDM_MASK             (1 << 5)
+#define OMAP24XX_PM_WKDEP_CORE_EN_GFX_MASK             (1 << 3)
+#define OMAP24XX_PM_WKDEP_CORE_EN_DSP_MASK             (1 << 2)
 
 /* PM_PWSTCTRL_CORE specific bits */
-#define OMAP24XX_MEMORYCHANGE                          (1 << 20)
+#define OMAP24XX_MEMORYCHANGE_MASK                     (1 << 20)
 #define OMAP24XX_MEM3ONSTATE_SHIFT                     14
 #define OMAP24XX_MEM3ONSTATE_MASK                      (0x3 << 14)
 #define OMAP24XX_MEM2ONSTATE_SHIFT                     12
 #define OMAP24XX_MEM2ONSTATE_MASK                      (0x3 << 12)
 #define OMAP24XX_MEM1ONSTATE_SHIFT                     10
 #define OMAP24XX_MEM1ONSTATE_MASK                      (0x3 << 10)
-#define OMAP24XX_MEM3RETSTATE                          (1 << 5)
-#define OMAP24XX_MEM2RETSTATE                          (1 << 4)
-#define OMAP24XX_MEM1RETSTATE                          (1 << 3)
+#define OMAP24XX_MEM3RETSTATE_MASK                     (1 << 5)
+#define OMAP24XX_MEM2RETSTATE_MASK                     (1 << 4)
+#define OMAP24XX_MEM1RETSTATE_MASK                     (1 << 3)
 
 /* PM_PWSTST_CORE specific bits */
 #define OMAP24XX_MEM3STATEST_SHIFT                     14
 #define OMAP24XX_MEM1STATEST_MASK                      (0x3 << 10)
 
 /* RM_RSTCTRL_GFX */
-#define OMAP24XX_GFX_RST                               (1 << 0)
+#define OMAP24XX_GFX_RST_MASK                          (1 << 0)
 
 /* RM_RSTST_GFX specific bits */
-#define OMAP24XX_GFX_SW_RST                            (1 << 4)
+#define OMAP24XX_GFX_SW_RST_MASK                       (1 << 4)
 
 /* PM_PWSTCTRL_GFX specific bits */
 
 
 /* RM_RSTST_WKUP specific bits */
 /* 2430 calls EXTWMPU_RST "EXTWARM_RST" and GLOBALWMPU_RST "GLOBALWARM_RST" */
-#define OMAP24XX_EXTWMPU_RST                           (1 << 6)
-#define OMAP24XX_SECU_WD_RST                           (1 << 5)
-#define OMAP24XX_MPU_WD_RST                            (1 << 4)
-#define OMAP24XX_SECU_VIOL_RST                         (1 << 3)
+#define OMAP24XX_EXTWMPU_RST_MASK                      (1 << 6)
+#define OMAP24XX_SECU_WD_RST_MASK                      (1 << 5)
+#define OMAP24XX_MPU_WD_RST_MASK                       (1 << 4)
+#define OMAP24XX_SECU_VIOL_RST_MASK                    (1 << 3)
 
 /* PM_WKEN_WKUP specific bits */
 
 /* PM_WKST_WKUP specific bits */
 
 /* RM_RSTCTRL_DSP */
-#define OMAP2420_RST_IVA                               (1 << 8)
-#define OMAP24XX_RST2_DSP                              (1 << 1)
-#define OMAP24XX_RST1_DSP                              (1 << 0)
+#define OMAP2420_RST_IVA_MASK                          (1 << 8)
+#define OMAP24XX_RST2_DSP_MASK                         (1 << 1)
+#define OMAP24XX_RST1_DSP_MASK                         (1 << 0)
 
 /* RM_RSTST_DSP specific bits */
 /* 2430 calls GLOBALWMPU_RST "GLOBALWARM_RST" */
-#define OMAP2420_IVA_SW_RST                            (1 << 8)
-#define OMAP24XX_DSP_SW_RST2                           (1 << 5)
-#define OMAP24XX_DSP_SW_RST1                           (1 << 4)
+#define OMAP2420_IVA_SW_RST_MASK                       (1 << 8)
+#define OMAP24XX_DSP_SW_RST2_MASK                      (1 << 5)
+#define OMAP24XX_DSP_SW_RST1_MASK                      (1 << 4)
 
 /* PM_WKDEP_DSP specific bits */
 
 /* 2430 only: MEMONSTATE, MEMRETSTATE */
 #define OMAP2420_MEMIONSTATE_SHIFT                     12
 #define OMAP2420_MEMIONSTATE_MASK                      (0x3 << 12)
-#define OMAP2420_MEMIRETSTATE                          (1 << 4)
+#define OMAP2420_MEMIRETSTATE_MASK                     (1 << 4)
 
 /* PM_PWSTST_DSP specific bits */
 /* MEMSTATEST is 2430 only */
 
 /* RM_RSTCTRL_MDM */
 /* 2430 only */
-#define OMAP2430_PWRON1_MDM                            (1 << 1)
-#define OMAP2430_RST1_MDM                              (1 << 0)
+#define OMAP2430_PWRON1_MDM_MASK                       (1 << 1)
+#define OMAP2430_RST1_MDM_MASK                         (1 << 0)
 
 /* RM_RSTST_MDM specific bits */
 /* 2430 only */
-#define OMAP2430_MDM_SECU_VIOL                         (1 << 6)
-#define OMAP2430_MDM_SW_PWRON1                         (1 << 5)
-#define OMAP2430_MDM_SW_RST1                           (1 << 4)
+#define OMAP2430_MDM_SECU_VIOL_MASK                    (1 << 6)
+#define OMAP2430_MDM_SW_PWRON1_MASK                    (1 << 5)
+#define OMAP2430_MDM_SW_RST1_MASK                      (1 << 4)
 
 /* PM_WKEN_MDM */
 /* 2430 only */
-#define OMAP2430_PM_WKEN_MDM_EN_MDM                    (1 << 0)
+#define OMAP2430_PM_WKEN_MDM_EN_MDM_MASK               (1 << 0)
 
 /* PM_WKST_MDM specific bits */
 /* 2430 only */
 
 /* PM_PWSTCTRL_MDM specific bits */
 /* 2430 only */
-#define OMAP2430_KILLDOMAINWKUP                                (1 << 19)
+#define OMAP2430_KILLDOMAINWKUP_MASK                   (1 << 19)
 
 /* PM_PWSTST_MDM specific bits */
 /* 2430 only */
index 8f21bae..7fd6023 100644 (file)
 #define OMAP3430_ERRORGAIN_MASK                                (0xff << 16)
 #define OMAP3430_INITVOLTAGE_SHIFT                     8
 #define OMAP3430_INITVOLTAGE_MASK                      (0xff << 8)
-#define OMAP3430_TIMEOUTEN                             (1 << 3)
-#define OMAP3430_INITVDD                               (1 << 2)
-#define OMAP3430_FORCEUPDATE                           (1 << 1)
-#define OMAP3430_VPENABLE                              (1 << 0)
+#define OMAP3430_TIMEOUTEN_MASK                                (1 << 3)
+#define OMAP3430_INITVDD_MASK                          (1 << 2)
+#define OMAP3430_FORCEUPDATE_MASK                      (1 << 1)
+#define OMAP3430_VPENABLE_MASK                         (1 << 0)
 
 /* PRM_VP1_VSTEPMIN, PRM_VP2_VSTEPMIN shared bits */
 #define OMAP3430_SMPSWAITTIMEMIN_SHIFT                 8
 #define OMAP3430_VPVOLTAGE_MASK                                (0xff << 0)
 
 /* PRM_VP1_STATUS, PRM_VP2_STATUS shared bits */
-#define OMAP3430_VPINIDLE                              (1 << 0)
+#define OMAP3430_VPINIDLE_MASK                         (1 << 0)
 
 /* PM_WKDEP_IVA2, PM_WKDEP_MPU shared bits */
 #define OMAP3430_EN_PER_SHIFT                          7
 #define OMAP3430_EN_PER_MASK                           (1 << 7)
 
 /* PM_PWSTCTRL_IVA2, PM_PWSTCTRL_MPU, PM_PWSTCTRL_CORE shared bits */
-#define OMAP3430_MEMORYCHANGE                          (1 << 3)
+#define OMAP3430_MEMORYCHANGE_MASK                     (1 << 3)
 
 /* PM_PWSTST_IVA2, PM_PWSTST_CORE shared bits */
-#define OMAP3430_LOGICSTATEST                          (1 << 2)
+#define OMAP3430_LOGICSTATEST_MASK                     (1 << 2)
 
 /* PM_PREPWSTST_IVA2, PM_PREPWSTST_CORE shared bits */
-#define OMAP3430_LASTLOGICSTATEENTERED                 (1 << 2)
+#define OMAP3430_LASTLOGICSTATEENTERED_MASK            (1 << 2)
 
 /*
  * PM_PREPWSTST_IVA2, PM_PREPWSTST_MPU, PM_PREPWSTST_CORE,
  * PM_PREPWSTST_GFX, PM_PREPWSTST_DSS, PM_PREPWSTST_CAM,
  * PM_PREPWSTST_PER, PM_PREPWSTST_NEON shared bits
  */
-#define OMAP3430_LASTPOWERSTATEENTERED_SHIFT                   0
-#define OMAP3430_LASTPOWERSTATEENTERED_MASK                    (0x3 << 0)
+#define OMAP3430_LASTPOWERSTATEENTERED_SHIFT           0
+#define OMAP3430_LASTPOWERSTATEENTERED_MASK            (0x3 << 0)
 
 /* PRM_IRQSTATUS_IVA2, PRM_IRQSTATUS_MPU shared bits */
-#define OMAP3430_WKUP_ST                               (1 << 0)
+#define OMAP3430_WKUP_ST_MASK                          (1 << 0)
 
 /* PRM_IRQENABLE_IVA2, PRM_IRQENABLE_MPU shared bits */
-#define OMAP3430_WKUP_EN                                       (1 << 0)
+#define OMAP3430_WKUP_EN_MASK                          (1 << 0)
 
 /* PM_MPUGRPSEL1_CORE, PM_IVA2GRPSEL1_CORE shared bits */
-#define OMAP3430_GRPSEL_MMC2                           (1 << 25)
-#define OMAP3430_GRPSEL_MMC1                           (1 << 24)
-#define OMAP3430_GRPSEL_MCSPI4                         (1 << 21)
-#define OMAP3430_GRPSEL_MCSPI3                         (1 << 20)
-#define OMAP3430_GRPSEL_MCSPI2                         (1 << 19)
-#define OMAP3430_GRPSEL_MCSPI1                         (1 << 18)
-#define OMAP3430_GRPSEL_I2C3                           (1 << 17)
-#define OMAP3430_GRPSEL_I2C2                           (1 << 16)
-#define OMAP3430_GRPSEL_I2C1                           (1 << 15)
-#define OMAP3430_GRPSEL_UART2                          (1 << 14)
-#define OMAP3430_GRPSEL_UART1                          (1 << 13)
-#define OMAP3430_GRPSEL_GPT11                          (1 << 12)
-#define OMAP3430_GRPSEL_GPT10                          (1 << 11)
-#define OMAP3430_GRPSEL_MCBSP5                         (1 << 10)
-#define OMAP3430_GRPSEL_MCBSP1                         (1 << 9)
-#define OMAP3430_GRPSEL_HSOTGUSB                       (1 << 4)
-#define OMAP3430_GRPSEL_D2D                            (1 << 3)
+#define OMAP3430_GRPSEL_MMC2_MASK                      (1 << 25)
+#define OMAP3430_GRPSEL_MMC1_MASK                      (1 << 24)
+#define OMAP3430_GRPSEL_MCSPI4_MASK                    (1 << 21)
+#define OMAP3430_GRPSEL_MCSPI3_MASK                    (1 << 20)
+#define OMAP3430_GRPSEL_MCSPI2_MASK                    (1 << 19)
+#define OMAP3430_GRPSEL_MCSPI1_MASK                    (1 << 18)
+#define OMAP3430_GRPSEL_I2C3_MASK                      (1 << 17)
+#define OMAP3430_GRPSEL_I2C2_MASK                      (1 << 16)
+#define OMAP3430_GRPSEL_I2C1_MASK                      (1 << 15)
+#define OMAP3430_GRPSEL_UART2_MASK                     (1 << 14)
+#define OMAP3430_GRPSEL_UART1_MASK                     (1 << 13)
+#define OMAP3430_GRPSEL_GPT11_MASK                     (1 << 12)
+#define OMAP3430_GRPSEL_GPT10_MASK                     (1 << 11)
+#define OMAP3430_GRPSEL_MCBSP5_MASK                    (1 << 10)
+#define OMAP3430_GRPSEL_MCBSP1_MASK                    (1 << 9)
+#define OMAP3430_GRPSEL_HSOTGUSB_MASK                  (1 << 4)
+#define OMAP3430_GRPSEL_D2D_MASK                       (1 << 3)
 
 /*
  * PM_PWSTCTRL_GFX, PM_PWSTCTRL_DSS, PM_PWSTCTRL_CAM,
  */
 #define OMAP3430_MEMONSTATE_SHIFT                      16
 #define OMAP3430_MEMONSTATE_MASK                       (0x3 << 16)
-#define OMAP3430_MEMRETSTATE                           (1 << 8)
+#define OMAP3430_MEMRETSTATE_MASK                      (1 << 8)
 
 /* PM_MPUGRPSEL_PER, PM_IVA2GRPSEL_PER shared bits */
-#define OMAP3430_GRPSEL_GPIO6                          (1 << 17)
-#define OMAP3430_GRPSEL_GPIO5                          (1 << 16)
-#define OMAP3430_GRPSEL_GPIO4                          (1 << 15)
-#define OMAP3430_GRPSEL_GPIO3                          (1 << 14)
-#define OMAP3430_GRPSEL_GPIO2                          (1 << 13)
-#define OMAP3430_GRPSEL_UART3                          (1 << 11)
-#define OMAP3430_GRPSEL_GPT9                           (1 << 10)
-#define OMAP3430_GRPSEL_GPT8                           (1 << 9)
-#define OMAP3430_GRPSEL_GPT7                           (1 << 8)
-#define OMAP3430_GRPSEL_GPT6                           (1 << 7)
-#define OMAP3430_GRPSEL_GPT5                           (1 << 6)
-#define OMAP3430_GRPSEL_GPT4                           (1 << 5)
-#define OMAP3430_GRPSEL_GPT3                           (1 << 4)
-#define OMAP3430_GRPSEL_GPT2                           (1 << 3)
-#define OMAP3430_GRPSEL_MCBSP4                         (1 << 2)
-#define OMAP3430_GRPSEL_MCBSP3                         (1 << 1)
-#define OMAP3430_GRPSEL_MCBSP2                         (1 << 0)
+#define OMAP3430_GRPSEL_GPIO6_MASK                     (1 << 17)
+#define OMAP3430_GRPSEL_GPIO5_MASK                     (1 << 16)
+#define OMAP3430_GRPSEL_GPIO4_MASK                     (1 << 15)
+#define OMAP3430_GRPSEL_GPIO3_MASK                     (1 << 14)
+#define OMAP3430_GRPSEL_GPIO2_MASK                     (1 << 13)
+#define OMAP3430_GRPSEL_UART3_MASK                     (1 << 11)
+#define OMAP3430_GRPSEL_GPT9_MASK                      (1 << 10)
+#define OMAP3430_GRPSEL_GPT8_MASK                      (1 << 9)
+#define OMAP3430_GRPSEL_GPT7_MASK                      (1 << 8)
+#define OMAP3430_GRPSEL_GPT6_MASK                      (1 << 7)
+#define OMAP3430_GRPSEL_GPT5_MASK                      (1 << 6)
+#define OMAP3430_GRPSEL_GPT4_MASK                      (1 << 5)
+#define OMAP3430_GRPSEL_GPT3_MASK                      (1 << 4)
+#define OMAP3430_GRPSEL_GPT2_MASK                      (1 << 3)
+#define OMAP3430_GRPSEL_MCBSP4_MASK                    (1 << 2)
+#define OMAP3430_GRPSEL_MCBSP3_MASK                    (1 << 1)
+#define OMAP3430_GRPSEL_MCBSP2_MASK                    (1 << 0)
 
 /* PM_MPUGRPSEL_WKUP, PM_IVA2GRPSEL_WKUP shared bits */
-#define OMAP3430_GRPSEL_IO                             (1 << 8)
-#define OMAP3430_GRPSEL_SR2                            (1 << 7)
-#define OMAP3430_GRPSEL_SR1                            (1 << 6)
-#define OMAP3430_GRPSEL_GPIO1                          (1 << 3)
-#define OMAP3430_GRPSEL_GPT12                          (1 << 1)
-#define OMAP3430_GRPSEL_GPT1                           (1 << 0)
+#define OMAP3430_GRPSEL_IO_MASK                                (1 << 8)
+#define OMAP3430_GRPSEL_SR2_MASK                       (1 << 7)
+#define OMAP3430_GRPSEL_SR1_MASK                       (1 << 6)
+#define OMAP3430_GRPSEL_GPIO1_MASK                     (1 << 3)
+#define OMAP3430_GRPSEL_GPT12_MASK                     (1 << 1)
+#define OMAP3430_GRPSEL_GPT1_MASK                      (1 << 0)
 
 /* Bits specific to each register */
 
 /* RM_RSTCTRL_IVA2 */
-#define OMAP3430_RST3_IVA2                             (1 << 2)
-#define OMAP3430_RST2_IVA2                             (1 << 1)
-#define OMAP3430_RST1_IVA2                             (1 << 0)
+#define OMAP3430_RST3_IVA2_MASK                                (1 << 2)
+#define OMAP3430_RST2_IVA2_MASK                                (1 << 1)
+#define OMAP3430_RST1_IVA2_MASK                                (1 << 0)
 
 /* RM_RSTST_IVA2 specific bits */
-#define OMAP3430_EMULATION_VSEQ_RST                    (1 << 13)
-#define OMAP3430_EMULATION_VHWA_RST                    (1 << 12)
-#define OMAP3430_EMULATION_IVA2_RST                    (1 << 11)
-#define OMAP3430_IVA2_SW_RST3                          (1 << 10)
-#define OMAP3430_IVA2_SW_RST2                          (1 << 9)
-#define OMAP3430_IVA2_SW_RST1                          (1 << 8)
+#define OMAP3430_EMULATION_VSEQ_RST_MASK               (1 << 13)
+#define OMAP3430_EMULATION_VHWA_RST_MASK               (1 << 12)
+#define OMAP3430_EMULATION_IVA2_RST_MASK               (1 << 11)
+#define OMAP3430_IVA2_SW_RST3_MASK                     (1 << 10)
+#define OMAP3430_IVA2_SW_RST2_MASK                     (1 << 9)
+#define OMAP3430_IVA2_SW_RST1_MASK                     (1 << 8)
 
 /* PM_WKDEP_IVA2 specific bits */
 
 #define OMAP3430_L1FLATMEMONSTATE_MASK                 (0x3 << 18)
 #define OMAP3430_SHAREDL1CACHEFLATONSTATE_SHIFT                16
 #define OMAP3430_SHAREDL1CACHEFLATONSTATE_MASK         (0x3 << 16)
-#define OMAP3430_L2FLATMEMRETSTATE                     (1 << 11)
-#define OMAP3430_SHAREDL2CACHEFLATRETSTATE             (1 << 10)
-#define OMAP3430_L1FLATMEMRETSTATE                     (1 << 9)
-#define OMAP3430_SHAREDL1CACHEFLATRETSTATE             (1 << 8)
+#define OMAP3430_L2FLATMEMRETSTATE_MASK                        (1 << 11)
+#define OMAP3430_SHAREDL2CACHEFLATRETSTATE_MASK                (1 << 10)
+#define OMAP3430_L1FLATMEMRETSTATE_MASK                        (1 << 9)
+#define OMAP3430_SHAREDL1CACHEFLATRETSTATE_MASK                (1 << 8)
 
 /* PM_PWSTST_IVA2 specific bits */
 #define OMAP3430_L2FLATMEMSTATEST_SHIFT                        10
 #define OMAP3430_LASTSHAREDL1CACHEFLATSTATEENTERED_MASK                (0x3 << 4)
 
 /* PRM_IRQSTATUS_IVA2 specific bits */
-#define OMAP3430_PRM_IRQSTATUS_IVA2_IVA2_DPLL_ST       (1 << 2)
-#define OMAP3430_FORCEWKUP_ST                          (1 << 1)
+#define OMAP3430_PRM_IRQSTATUS_IVA2_IVA2_DPLL_ST_MASK  (1 << 2)
+#define OMAP3430_FORCEWKUP_ST_MASK                     (1 << 1)
 
 /* PRM_IRQENABLE_IVA2 specific bits */
-#define OMAP3430_PRM_IRQENABLE_IVA2_IVA2_DPLL_RECAL_EN         (1 << 2)
-#define OMAP3430_FORCEWKUP_EN                                  (1 << 1)
+#define OMAP3430_PRM_IRQENABLE_IVA2_IVA2_DPLL_RECAL_EN_MASK    (1 << 2)
+#define OMAP3430_FORCEWKUP_EN_MASK                             (1 << 1)
 
 /* PRM_REVISION specific bits */
 
 
 /* PRM_IRQSTATUS_MPU specific bits */
 #define OMAP3430ES2_SND_PERIPH_DPLL_ST_SHIFT           25
-#define OMAP3430ES2_SND_PERIPH_DPLL_ST                 (1 << 25)
-#define OMAP3430_VC_TIMEOUTERR_ST                      (1 << 24)
-#define OMAP3430_VC_RAERR_ST                           (1 << 23)
-#define OMAP3430_VC_SAERR_ST                           (1 << 22)
-#define OMAP3430_VP2_TRANXDONE_ST                      (1 << 21)
-#define OMAP3430_VP2_EQVALUE_ST                                (1 << 20)
-#define OMAP3430_VP2_NOSMPSACK_ST                      (1 << 19)
-#define OMAP3430_VP2_MAXVDD_ST                         (1 << 18)
-#define OMAP3430_VP2_MINVDD_ST                         (1 << 17)
-#define OMAP3430_VP2_OPPCHANGEDONE_ST                  (1 << 16)
-#define OMAP3430_VP1_TRANXDONE_ST                      (1 << 15)
-#define OMAP3430_VP1_EQVALUE_ST                                (1 << 14)
-#define OMAP3430_VP1_NOSMPSACK_ST                      (1 << 13)
-#define OMAP3430_VP1_MAXVDD_ST                         (1 << 12)
-#define OMAP3430_VP1_MINVDD_ST                         (1 << 11)
-#define OMAP3430_VP1_OPPCHANGEDONE_ST                  (1 << 10)
-#define OMAP3430_IO_ST                                 (1 << 9)
-#define OMAP3430_PRM_IRQSTATUS_MPU_IVA2_DPLL_ST                (1 << 8)
+#define OMAP3430ES2_SND_PERIPH_DPLL_ST_MASK            (1 << 25)
+#define OMAP3430_VC_TIMEOUTERR_ST_MASK                 (1 << 24)
+#define OMAP3430_VC_RAERR_ST_MASK                      (1 << 23)
+#define OMAP3430_VC_SAERR_ST_MASK                      (1 << 22)
+#define OMAP3430_VP2_TRANXDONE_ST_MASK                 (1 << 21)
+#define OMAP3430_VP2_EQVALUE_ST_MASK                   (1 << 20)
+#define OMAP3430_VP2_NOSMPSACK_ST_MASK                 (1 << 19)
+#define OMAP3430_VP2_MAXVDD_ST_MASK                    (1 << 18)
+#define OMAP3430_VP2_MINVDD_ST_MASK                    (1 << 17)
+#define OMAP3430_VP2_OPPCHANGEDONE_ST_MASK             (1 << 16)
+#define OMAP3430_VP1_TRANXDONE_ST_MASK                 (1 << 15)
+#define OMAP3430_VP1_EQVALUE_ST_MASK                   (1 << 14)
+#define OMAP3430_VP1_NOSMPSACK_ST_MASK                 (1 << 13)
+#define OMAP3430_VP1_MAXVDD_ST_MASK                    (1 << 12)
+#define OMAP3430_VP1_MINVDD_ST_MASK                    (1 << 11)
+#define OMAP3430_VP1_OPPCHANGEDONE_ST_MASK             (1 << 10)
+#define OMAP3430_IO_ST_MASK                            (1 << 9)
+#define OMAP3430_PRM_IRQSTATUS_MPU_IVA2_DPLL_ST_MASK   (1 << 8)
 #define OMAP3430_PRM_IRQSTATUS_MPU_IVA2_DPLL_ST_SHIFT  8
-#define OMAP3430_MPU_DPLL_ST                           (1 << 7)
+#define OMAP3430_MPU_DPLL_ST_MASK                      (1 << 7)
 #define OMAP3430_MPU_DPLL_ST_SHIFT                     7
-#define OMAP3430_PERIPH_DPLL_ST                                (1 << 6)
+#define OMAP3430_PERIPH_DPLL_ST_MASK                   (1 << 6)
 #define OMAP3430_PERIPH_DPLL_ST_SHIFT                  6
-#define OMAP3430_CORE_DPLL_ST                          (1 << 5)
+#define OMAP3430_CORE_DPLL_ST_MASK                     (1 << 5)
 #define OMAP3430_CORE_DPLL_ST_SHIFT                    5
-#define OMAP3430_TRANSITION_ST                         (1 << 4)
-#define OMAP3430_EVGENOFF_ST                           (1 << 3)
-#define OMAP3430_EVGENON_ST                            (1 << 2)
-#define OMAP3430_FS_USB_WKUP_ST                                (1 << 1)
+#define OMAP3430_TRANSITION_ST_MASK                    (1 << 4)
+#define OMAP3430_EVGENOFF_ST_MASK                      (1 << 3)
+#define OMAP3430_EVGENON_ST_MASK                       (1 << 2)
+#define OMAP3430_FS_USB_WKUP_ST_MASK                   (1 << 1)
 
 /* PRM_IRQENABLE_MPU specific bits */
 #define OMAP3430ES2_SND_PERIPH_DPLL_RECAL_EN_SHIFT             25
-#define OMAP3430ES2_SND_PERIPH_DPLL_RECAL_EN                   (1 << 25)
-#define OMAP3430_VC_TIMEOUTERR_EN                              (1 << 24)
-#define OMAP3430_VC_RAERR_EN                                   (1 << 23)
-#define OMAP3430_VC_SAERR_EN                                   (1 << 22)
-#define OMAP3430_VP2_TRANXDONE_EN                              (1 << 21)
-#define OMAP3430_VP2_EQVALUE_EN                                        (1 << 20)
-#define OMAP3430_VP2_NOSMPSACK_EN                              (1 << 19)
-#define OMAP3430_VP2_MAXVDD_EN                                 (1 << 18)
-#define OMAP3430_VP2_MINVDD_EN                                 (1 << 17)
-#define OMAP3430_VP2_OPPCHANGEDONE_EN                          (1 << 16)
-#define OMAP3430_VP1_TRANXDONE_EN                              (1 << 15)
-#define OMAP3430_VP1_EQVALUE_EN                                        (1 << 14)
-#define OMAP3430_VP1_NOSMPSACK_EN                              (1 << 13)
-#define OMAP3430_VP1_MAXVDD_EN                                 (1 << 12)
-#define OMAP3430_VP1_MINVDD_EN                                 (1 << 11)
-#define OMAP3430_VP1_OPPCHANGEDONE_EN                          (1 << 10)
-#define OMAP3430_IO_EN                                         (1 << 9)
-#define OMAP3430_PRM_IRQENABLE_MPU_IVA2_DPLL_RECAL_EN          (1 << 8)
+#define OMAP3430ES2_SND_PERIPH_DPLL_RECAL_EN_MASK              (1 << 25)
+#define OMAP3430_VC_TIMEOUTERR_EN_MASK                         (1 << 24)
+#define OMAP3430_VC_RAERR_EN_MASK                              (1 << 23)
+#define OMAP3430_VC_SAERR_EN_MASK                              (1 << 22)
+#define OMAP3430_VP2_TRANXDONE_EN_MASK                         (1 << 21)
+#define OMAP3430_VP2_EQVALUE_EN_MASK                           (1 << 20)
+#define OMAP3430_VP2_NOSMPSACK_EN_MASK                         (1 << 19)
+#define OMAP3430_VP2_MAXVDD_EN_MASK                            (1 << 18)
+#define OMAP3430_VP2_MINVDD_EN_MASK                            (1 << 17)
+#define OMAP3430_VP2_OPPCHANGEDONE_EN_MASK                     (1 << 16)
+#define OMAP3430_VP1_TRANXDONE_EN_MASK                         (1 << 15)
+#define OMAP3430_VP1_EQVALUE_EN_MASK                           (1 << 14)
+#define OMAP3430_VP1_NOSMPSACK_EN_MASK                         (1 << 13)
+#define OMAP3430_VP1_MAXVDD_EN_MASK                            (1 << 12)
+#define OMAP3430_VP1_MINVDD_EN_MASK                            (1 << 11)
+#define OMAP3430_VP1_OPPCHANGEDONE_EN_MASK                     (1 << 10)
+#define OMAP3430_IO_EN_MASK                                    (1 << 9)
+#define OMAP3430_PRM_IRQENABLE_MPU_IVA2_DPLL_RECAL_EN_MASK     (1 << 8)
 #define OMAP3430_PRM_IRQENABLE_MPU_IVA2_DPLL_RECAL_EN_SHIFT    8
-#define OMAP3430_MPU_DPLL_RECAL_EN                             (1 << 7)
+#define OMAP3430_MPU_DPLL_RECAL_EN_MASK                                (1 << 7)
 #define OMAP3430_MPU_DPLL_RECAL_EN_SHIFT                       7
-#define OMAP3430_PERIPH_DPLL_RECAL_EN                          (1 << 6)
+#define OMAP3430_PERIPH_DPLL_RECAL_EN_MASK                     (1 << 6)
 #define OMAP3430_PERIPH_DPLL_RECAL_EN_SHIFT                    6
-#define OMAP3430_CORE_DPLL_RECAL_EN                            (1 << 5)
+#define OMAP3430_CORE_DPLL_RECAL_EN_MASK                       (1 << 5)
 #define OMAP3430_CORE_DPLL_RECAL_EN_SHIFT                      5
-#define OMAP3430_TRANSITION_EN                                 (1 << 4)
-#define OMAP3430_EVGENOFF_EN                                   (1 << 3)
-#define OMAP3430_EVGENON_EN                                    (1 << 2)
-#define OMAP3430_FS_USB_WKUP_EN                                        (1 << 1)
+#define OMAP3430_TRANSITION_EN_MASK                            (1 << 4)
+#define OMAP3430_EVGENOFF_EN_MASK                              (1 << 3)
+#define OMAP3430_EVGENON_EN_MASK                               (1 << 2)
+#define OMAP3430_FS_USB_WKUP_EN_MASK                           (1 << 1)
 
 /* RM_RSTST_MPU specific bits */
-#define OMAP3430_EMULATION_MPU_RST                     (1 << 11)
+#define OMAP3430_EMULATION_MPU_RST_MASK                        (1 << 11)
 
 /* PM_WKDEP_MPU specific bits */
 #define OMAP3430_PM_WKDEP_MPU_EN_DSS_SHIFT             5
 #define OMAP3430_OFFLOADMODE_MASK                      (0x3 << 3)
 #define OMAP3430_ONLOADMODE_SHIFT                      1
 #define OMAP3430_ONLOADMODE_MASK                       (0x3 << 1)
-#define OMAP3430_ENABLE                                        (1 << 0)
+#define OMAP3430_ENABLE_MASK                           (1 << 0)
 
 /* PM_EVGENONTIM_MPU */
 #define OMAP3430_ONTIMEVAL_SHIFT                       0
 /* PM_PWSTCTRL_MPU specific bits */
 #define OMAP3430_L2CACHEONSTATE_SHIFT                  16
 #define OMAP3430_L2CACHEONSTATE_MASK                   (0x3 << 16)
-#define OMAP3430_L2CACHERETSTATE                       (1 << 8)
-#define OMAP3430_LOGICL1CACHERETSTATE                  (1 << 2)
+#define OMAP3430_L2CACHERETSTATE_MASK                  (1 << 8)
+#define OMAP3430_LOGICL1CACHERETSTATE_MASK             (1 << 2)
 
 /* PM_PWSTST_MPU specific bits */
 #define OMAP3430_L2CACHESTATEST_SHIFT                  6
 #define OMAP3430_L2CACHESTATEST_MASK                   (0x3 << 6)
-#define OMAP3430_LOGICL1CACHESTATEST                   (1 << 2)
+#define OMAP3430_LOGICL1CACHESTATEST_MASK              (1 << 2)
 
 /* PM_PREPWSTST_MPU specific bits */
 #define OMAP3430_LASTL2CACHESTATEENTERED_SHIFT         6
 #define OMAP3430_LASTL2CACHESTATEENTERED_MASK          (0x3 << 6)
-#define OMAP3430_LASTLOGICL1CACHESTATEENTERED          (1 << 2)
+#define OMAP3430_LASTLOGICL1CACHESTATEENTERED_MASK     (1 << 2)
 
 /* RM_RSTCTRL_CORE */
-#define OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RSTPWRON             (1 << 1)
-#define OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RST                  (1 << 0)
+#define OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RSTPWRON_MASK                (1 << 1)
+#define OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RST_MASK             (1 << 0)
 
 /* RM_RSTST_CORE specific bits */
-#define OMAP3430_MODEM_SECURITY_VIOL_RST               (1 << 10)
-#define OMAP3430_RM_RSTST_CORE_MODEM_SW_RSTPWRON       (1 << 9)
-#define OMAP3430_RM_RSTST_CORE_MODEM_SW_RST            (1 << 8)
+#define OMAP3430_MODEM_SECURITY_VIOL_RST_MASK          (1 << 10)
+#define OMAP3430_RM_RSTST_CORE_MODEM_SW_RSTPWRON_MASK  (1 << 9)
+#define OMAP3430_RM_RSTST_CORE_MODEM_SW_RST_MASK       (1 << 8)
 
 /* PM_WKEN1_CORE specific bits */
 
 /* PM_MPUGRPSEL1_CORE specific bits */
-#define OMAP3430_GRPSEL_FSHOSTUSB                      (1 << 5)
+#define OMAP3430_GRPSEL_FSHOSTUSB_MASK                 (1 << 5)
 
 /* PM_IVA2GRPSEL1_CORE specific bits */
 
 #define OMAP3430_MEM2ONSTATE_MASK                      (0x3 << 18)
 #define OMAP3430_MEM1ONSTATE_SHIFT                     16
 #define OMAP3430_MEM1ONSTATE_MASK                      (0x3 << 16)
-#define OMAP3430_MEM2RETSTATE                          (1 << 9)
-#define OMAP3430_MEM1RETSTATE                          (1 << 8)
+#define OMAP3430_MEM2RETSTATE_MASK                     (1 << 9)
+#define OMAP3430_MEM1RETSTATE_MASK                     (1 << 8)
 
 /* PM_PWSTST_CORE specific bits */
 #define OMAP3430_MEM2STATEST_SHIFT                     6
 /* RM_RSTST_GFX specific bits */
 
 /* PM_WKDEP_GFX specific bits */
-#define OMAP3430_PM_WKDEP_GFX_EN_IVA2                  (1 << 2)
+#define OMAP3430_PM_WKDEP_GFX_EN_IVA2_MASK             (1 << 2)
 
 /* PM_PWSTCTRL_GFX specific bits */
 
 /* PM_PREPWSTST_GFX specific bits */
 
 /* PM_WKEN_WKUP specific bits */
-#define OMAP3430_EN_IO_CHAIN                           (1 << 16)
-#define OMAP3430_EN_IO                                 (1 << 8)
-#define OMAP3430_EN_GPIO1                              (1 << 3)
+#define OMAP3430_EN_IO_CHAIN_MASK                      (1 << 16)
+#define OMAP3430_EN_IO_MASK                            (1 << 8)
+#define OMAP3430_EN_GPIO1_MASK                         (1 << 3)
 
 /* PM_MPUGRPSEL_WKUP specific bits */
 
 /* PM_IVA2GRPSEL_WKUP specific bits */
 
 /* PM_WKST_WKUP specific bits */
-#define OMAP3430_ST_IO_CHAIN                           (1 << 16)
-#define OMAP3430_ST_IO                                 (1 << 8)
+#define OMAP3430_ST_IO_CHAIN_MASK                      (1 << 16)
+#define OMAP3430_ST_IO_MASK                            (1 << 8)
 
 /* PRM_CLKSEL */
 #define OMAP3430_SYS_CLKIN_SEL_SHIFT                   0
 #define OMAP3430_SYS_CLKIN_SEL_MASK                    (0x7 << 0)
 
 /* PRM_CLKOUT_CTRL */
-#define OMAP3430_CLKOUT_EN                             (1 << 7)
+#define OMAP3430_CLKOUT_EN_MASK                                (1 << 7)
 #define OMAP3430_CLKOUT_EN_SHIFT                       7
 
 /* RM_RSTST_DSS specific bits */
 
 /* PM_WKEN_DSS */
-#define OMAP3430_PM_WKEN_DSS_EN_DSS                    (1 << 0)
+#define OMAP3430_PM_WKEN_DSS_EN_DSS_MASK               (1 << 0)
 
 /* PM_WKDEP_DSS specific bits */
-#define OMAP3430_PM_WKDEP_DSS_EN_IVA2                  (1 << 2)
+#define OMAP3430_PM_WKDEP_DSS_EN_IVA2_MASK             (1 << 2)
 
 /* PM_PWSTCTRL_DSS specific bits */
 
 /* RM_RSTST_CAM specific bits */
 
 /* PM_WKDEP_CAM specific bits */
-#define OMAP3430_PM_WKDEP_CAM_EN_IVA2                  (1 << 2)
+#define OMAP3430_PM_WKDEP_CAM_EN_IVA2_MASK             (1 << 2)
 
 /* PM_PWSTCTRL_CAM specific bits */
 
 /* PM_WKST_PER specific bits */
 
 /* PM_WKDEP_PER specific bits */
-#define OMAP3430_PM_WKDEP_PER_EN_IVA2                  (1 << 2)
+#define OMAP3430_PM_WKDEP_PER_EN_IVA2_MASK             (1 << 2)
 
 /* PM_PWSTCTRL_PER specific bits */
 
 /* PRM_VC_CMD_VAL_1 specific bits */
 
 /* PRM_VC_CH_CONF */
-#define OMAP3430_CMD1                                  (1 << 20)
-#define OMAP3430_RACEN1                                        (1 << 19)
-#define OMAP3430_RAC1                                  (1 << 18)
-#define OMAP3430_RAV1                                  (1 << 17)
-#define OMAP3430_PRM_VC_CH_CONF_SA1                    (1 << 16)
-#define OMAP3430_CMD0                                  (1 << 4)
-#define OMAP3430_RACEN0                                        (1 << 3)
-#define OMAP3430_RAC0                                  (1 << 2)
-#define OMAP3430_RAV0                                  (1 << 1)
-#define OMAP3430_PRM_VC_CH_CONF_SA0                    (1 << 0)
+#define OMAP3430_CMD1_MASK                             (1 << 20)
+#define OMAP3430_RACEN1_MASK                           (1 << 19)
+#define OMAP3430_RAC1_MASK                             (1 << 18)
+#define OMAP3430_RAV1_MASK                             (1 << 17)
+#define OMAP3430_PRM_VC_CH_CONF_SA1_MASK               (1 << 16)
+#define OMAP3430_CMD0_MASK                             (1 << 4)
+#define OMAP3430_RACEN0_MASK                           (1 << 3)
+#define OMAP3430_RAC0_MASK                             (1 << 2)
+#define OMAP3430_RAV0_MASK                             (1 << 1)
+#define OMAP3430_PRM_VC_CH_CONF_SA0_MASK               (1 << 0)
 
 /* PRM_VC_I2C_CFG */
-#define OMAP3430_HSMASTER                              (1 << 5)
-#define OMAP3430_SREN                                  (1 << 4)
-#define OMAP3430_HSEN                                  (1 << 3)
+#define OMAP3430_HSMASTER_MASK                         (1 << 5)
+#define OMAP3430_SREN_MASK                             (1 << 4)
+#define OMAP3430_HSEN_MASK                             (1 << 3)
 #define OMAP3430_MCODE_SHIFT                           0
 #define OMAP3430_MCODE_MASK                            (0x7 << 0)
 
 /* PRM_VC_BYPASS_VAL */
-#define OMAP3430_VALID                                 (1 << 24)
+#define OMAP3430_VALID_MASK                            (1 << 24)
 #define OMAP3430_DATA_SHIFT                            16
 #define OMAP3430_DATA_MASK                             (0xff << 16)
 #define OMAP3430_REGADDR_SHIFT                         8
 #define OMAP3430_SLAVEADDR_MASK                                (0x7f << 0)
 
 /* PRM_RSTCTRL */
-#define OMAP3430_RST_DPLL3                             (1 << 2)
-#define OMAP3430_RST_GS                                        (1 << 1)
+#define OMAP3430_RST_DPLL3_MASK                                (1 << 2)
+#define OMAP3430_RST_GS_MASK                           (1 << 1)
 
 /* PRM_RSTTIME */
 #define OMAP3430_RSTTIME2_SHIFT                                8
 #define OMAP3430_RSTTIME1_MASK                         (0xff << 0)
 
 /* PRM_RSTST */
-#define OMAP3430_ICECRUSHER_RST                                (1 << 10)
-#define OMAP3430_ICEPICK_RST                           (1 << 9)
-#define OMAP3430_VDD2_VOLTAGE_MANAGER_RST              (1 << 8)
-#define OMAP3430_VDD1_VOLTAGE_MANAGER_RST              (1 << 7)
-#define OMAP3430_EXTERNAL_WARM_RST                     (1 << 6)
-#define OMAP3430_SECURE_WD_RST                         (1 << 5)
-#define OMAP3430_MPU_WD_RST                            (1 << 4)
-#define OMAP3430_SECURITY_VIOL_RST                     (1 << 3)
-#define OMAP3430_GLOBAL_SW_RST                         (1 << 1)
-#define OMAP3430_GLOBAL_COLD_RST                       (1 << 0)
+#define OMAP3430_ICECRUSHER_RST_MASK                   (1 << 10)
+#define OMAP3430_ICEPICK_RST_MASK                      (1 << 9)
+#define OMAP3430_VDD2_VOLTAGE_MANAGER_RST_MASK         (1 << 8)
+#define OMAP3430_VDD1_VOLTAGE_MANAGER_RST_MASK         (1 << 7)
+#define OMAP3430_EXTERNAL_WARM_RST_MASK                        (1 << 6)
+#define OMAP3430_SECURE_WD_RST_MASK                    (1 << 5)
+#define OMAP3430_MPU_WD_RST_MASK                       (1 << 4)
+#define OMAP3430_SECURITY_VIOL_RST_MASK                        (1 << 3)
+#define OMAP3430_GLOBAL_SW_RST_MASK                    (1 << 1)
+#define OMAP3430_GLOBAL_COLD_RST_MASK                  (1 << 0)
 
 /* PRM_VOLTCTRL */
-#define OMAP3430_SEL_VMODE                             (1 << 4)
-#define OMAP3430_SEL_OFF                               (1 << 3)
-#define OMAP3430_AUTO_OFF                              (1 << 2)
-#define OMAP3430_AUTO_RET                              (1 << 1)
-#define OMAP3430_AUTO_SLEEP                            (1 << 0)
+#define OMAP3430_SEL_VMODE_MASK                                (1 << 4)
+#define OMAP3430_SEL_OFF_MASK                          (1 << 3)
+#define OMAP3430_AUTO_OFF_MASK                         (1 << 2)
+#define OMAP3430_AUTO_RET_MASK                         (1 << 1)
+#define OMAP3430_AUTO_SLEEP_MASK                       (1 << 0)
 
 /* PRM_SRAM_PCHARGE */
 #define OMAP3430_PCHARGE_TIME_SHIFT                    0
 #define OMAP3430_SETUP_TIME_MASK                       (0xffff << 0)
 
 /* PRM_POLCTRL */
-#define OMAP3430_OFFMODE_POL                           (1 << 3)
-#define OMAP3430_CLKOUT_POL                            (1 << 2)
-#define OMAP3430_CLKREQ_POL                            (1 << 1)
-#define OMAP3430_EXTVOL_POL                            (1 << 0)
+#define OMAP3430_OFFMODE_POL_MASK                      (1 << 3)
+#define OMAP3430_CLKOUT_POL_MASK                       (1 << 2)
+#define OMAP3430_CLKREQ_POL_MASK                       (1 << 1)
+#define OMAP3430_EXTVOL_POL_MASK                       (1 << 0)
 
 /* PRM_VOLTSETUP2 */
 #define OMAP3430_OFFMODESETUPTIME_SHIFT                        0
index 5fba2aa..588873b 100644 (file)
@@ -24,8 +24,8 @@
                OMAP2_L4_IO_ADDRESS(OMAP3430_PRM_BASE + (module) + (reg))
 #define OMAP44XX_PRM_REGADDR(module, reg)                              \
                OMAP2_L4_IO_ADDRESS(OMAP4430_PRM_BASE + (module) + (reg))
-#define OMAP44XX_CHIRONSS_REGADDR(module, reg)                         \
-               OMAP2_L4_IO_ADDRESS(OMAP4430_CHIRONSS_BASE + (module) + (reg))
+#define OMAP44XX_PRCM_MPU_REGADDR(module, reg)                         \
+               OMAP2_L4_IO_ADDRESS(OMAP4430_PRCM_MPU_BASE + (module) + (reg))
 
 #include "prm44xx.h"
 
@@ -284,7 +284,7 @@ static inline u32 prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
 #define OMAP_OFFLOADMODE_MASK                          (0x3 << 3)
 #define OMAP_ONLOADMODE_SHIFT                          1
 #define OMAP_ONLOADMODE_MASK                           (0x3 << 1)
-#define OMAP_ENABLE                                    (1 << 0)
+#define OMAP_ENABLE_MASK                               (1 << 0)
 
 /* PRM_RSTTIME */
 /* Named RM_RSTTIME_WKUP on the 24xx */
@@ -296,8 +296,8 @@ static inline u32 prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
 /* PRM_RSTCTRL */
 /* Named RM_RSTCTRL_WKUP on the 24xx */
 /* 2420 calls RST_DPLL3 'RST_DPLL' */
-#define OMAP_RST_DPLL3                                 (1 << 2)
-#define OMAP_RST_GS                                    (1 << 1)
+#define OMAP_RST_DPLL3_MASK                            (1 << 2)
+#define OMAP_RST_GS_MASK                               (1 << 1)
 
 
 /*
@@ -316,7 +316,7 @@ static inline u32 prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
  *      PM_PWSTST_DSS, PM_PWSTST_CAM, PM_PWSTST_PER, PM_PWSTST_EMU,
  *      PM_PWSTST_NEON
  */
-#define OMAP_INTRANSITION                              (1 << 20)
+#define OMAP_INTRANSITION_MASK                         (1 << 20)
 
 
 /*
@@ -338,7 +338,7 @@ static inline u32 prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
  * 3430: RM_RSTST_IVA2, RM_RSTST_MPU, RM_RSTST_GFX, RM_RSTST_DSS,
  *      RM_RSTST_CAM, RM_RSTST_PER, RM_RSTST_NEON
  */
-#define OMAP_COREDOMAINWKUP_RST                                (1 << 3)
+#define OMAP_COREDOMAINWKUP_RST_MASK                   (1 << 3)
 
 /*
  * 24XX: RM_RSTST_MPU, RM_RSTST_GFX, RM_RSTST_DSP
@@ -347,7 +347,7 @@ static inline u32 prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
  *
  * 3430: RM_RSTST_CORE, RM_RSTST_EMU
  */
-#define OMAP_DOMAINWKUP_RST                            (1 << 2)
+#define OMAP_DOMAINWKUP_RST_MASK                       (1 << 2)
 
 /*
  * 24XX: RM_RSTST_MPU, RM_RSTST_WKUP, RM_RSTST_DSP
@@ -357,8 +357,8 @@ static inline u32 prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
  *
  * 3430: RM_RSTST_CORE, RM_RSTST_EMU
  */
-#define OMAP_GLOBALWARM_RST                            (1 << 1)
-#define OMAP_GLOBALCOLD_RST                            (1 << 0)
+#define OMAP_GLOBALWARM_RST_MASK                       (1 << 1)
+#define OMAP_GLOBALCOLD_RST_MASK                       (1 << 0)
 
 /*
  * 24XX: PM_WKDEP_GFX, PM_WKDEP_MPU, PM_WKDEP_CORE, PM_WKDEP_DSP
@@ -382,7 +382,7 @@ static inline u32 prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
  *      PM_PWSTCTRL_DSS, PM_PWSTCTRL_CAM, PM_PWSTCTRL_PER,
  *      PM_PWSTCTRL_NEON
  */
-#define OMAP_LOGICRETSTATE                             (1 << 2)
+#define OMAP_LOGICRETSTATE_MASK                                (1 << 2)
 
 /*
  * 24XX: PM_PWSTCTRL_MPU, PM_PWSTCTRL_CORE, PM_PWSTCTRL_GFX,
index adb2558..fe8ef26 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * OMAP44xx PRM instance offset macros
  *
- * Copyright (C) 2009 Texas Instruments, Inc.
- * Copyright (C) 2009 Nokia Corporation
+ * Copyright (C) 2009-2010 Texas Instruments, Inc.
+ * Copyright (C) 2009-2010 Nokia Corporation
  *
  * Paul Walmsley (paul@pwsan.com)
  * Rajendra Nayak (rnayak@ti.com)
 
 /* PRM */
 
-
 /* PRM.OCP_SOCKET_PRM register offsets */
+#define OMAP4_REVISION_PRM_OFFSET                      0x0000
 #define OMAP4430_REVISION_PRM                          OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x0000)
+#define OMAP4_PRM_IRQSTATUS_MPU_OFFSET                 0x0010
 #define OMAP4430_PRM_IRQSTATUS_MPU                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x0010)
+#define OMAP4_PRM_IRQSTATUS_MPU_2_OFFSET               0x0014
 #define OMAP4430_PRM_IRQSTATUS_MPU_2                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x0014)
+#define OMAP4_PRM_IRQENABLE_MPU_OFFSET                 0x0018
 #define OMAP4430_PRM_IRQENABLE_MPU                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x0018)
+#define OMAP4_PRM_IRQENABLE_MPU_2_OFFSET               0x001c
 #define OMAP4430_PRM_IRQENABLE_MPU_2                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x001c)
+#define OMAP4_PRM_IRQSTATUS_DUCATI_OFFSET              0x0020
 #define OMAP4430_PRM_IRQSTATUS_DUCATI                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x0020)
+#define OMAP4_PRM_IRQENABLE_DUCATI_OFFSET              0x0028
 #define OMAP4430_PRM_IRQENABLE_DUCATI                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x0028)
+#define OMAP4_PRM_IRQSTATUS_TESLA_OFFSET               0x0030
 #define OMAP4430_PRM_IRQSTATUS_TESLA                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x0030)
+#define OMAP4_PRM_IRQENABLE_TESLA_OFFSET               0x0038
 #define OMAP4430_PRM_IRQENABLE_TESLA                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x0038)
+#define OMAP4_PRM_PRM_PROFILING_CLKCTRL_OFFSET         0x0040
 #define OMAP4430_PRM_PRM_PROFILING_CLKCTRL             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_OCP_SOCKET_MOD, 0x0040)
 
 /* PRM.CKGEN_PRM register offsets */
+#define OMAP4_CM_ABE_DSS_SYS_CLKSEL_OFFSET             0x0000
 #define OMAP4430_CM_ABE_DSS_SYS_CLKSEL                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CKGEN_MOD, 0x0000)
+#define OMAP4_CM_DPLL_SYS_REF_CLKSEL_OFFSET            0x0004
 #define OMAP4430_CM_DPLL_SYS_REF_CLKSEL                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CKGEN_MOD, 0x0004)
+#define OMAP4_CM_L4_WKUP_CLKSEL_OFFSET                 0x0008
 #define OMAP4430_CM_L4_WKUP_CLKSEL                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CKGEN_MOD, 0x0008)
+#define OMAP4_CM_ABE_PLL_REF_CLKSEL_OFFSET             0x000c
 #define OMAP4430_CM_ABE_PLL_REF_CLKSEL                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CKGEN_MOD, 0x000c)
+#define OMAP4_CM_SYS_CLKSEL_OFFSET                     0x0010
 #define OMAP4430_CM_SYS_CLKSEL                         OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CKGEN_MOD, 0x0010)
 
 /* PRM.MPU_PRM register offsets */
+#define OMAP4_PM_MPU_PWRSTCTRL_OFFSET                  0x0000
 #define OMAP4430_PM_MPU_PWRSTCTRL                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_MPU_MOD, 0x0000)
+#define OMAP4_PM_MPU_PWRSTST_OFFSET                    0x0004
 #define OMAP4430_PM_MPU_PWRSTST                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_MPU_MOD, 0x0004)
+#define OMAP4_RM_MPU_RSTST_OFFSET                      0x0014
 #define OMAP4430_RM_MPU_RSTST                          OMAP44XX_PRM_REGADDR(OMAP4430_PRM_MPU_MOD, 0x0014)
+#define OMAP4_RM_MPU_MPU_CONTEXT_OFFSET                        0x0024
 #define OMAP4430_RM_MPU_MPU_CONTEXT                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_MPU_MOD, 0x0024)
 
 /* PRM.TESLA_PRM register offsets */
+#define OMAP4_PM_TESLA_PWRSTCTRL_OFFSET                        0x0000
 #define OMAP4430_PM_TESLA_PWRSTCTRL                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_TESLA_MOD, 0x0000)
+#define OMAP4_PM_TESLA_PWRSTST_OFFSET                  0x0004
 #define OMAP4430_PM_TESLA_PWRSTST                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_TESLA_MOD, 0x0004)
+#define OMAP4_RM_TESLA_RSTCTRL_OFFSET                  0x0010
 #define OMAP4430_RM_TESLA_RSTCTRL                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_TESLA_MOD, 0x0010)
+#define OMAP4_RM_TESLA_RSTST_OFFSET                    0x0014
 #define OMAP4430_RM_TESLA_RSTST                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_TESLA_MOD, 0x0014)
+#define OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET            0x0024
 #define OMAP4430_RM_TESLA_TESLA_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_TESLA_MOD, 0x0024)
 
 /* PRM.ABE_PRM register offsets */
+#define OMAP4_PM_ABE_PWRSTCTRL_OFFSET                  0x0000
 #define OMAP4430_PM_ABE_PWRSTCTRL                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0000)
+#define OMAP4_PM_ABE_PWRSTST_OFFSET                    0x0004
 #define OMAP4430_PM_ABE_PWRSTST                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0004)
+#define OMAP4_RM_ABE_AESS_CONTEXT_OFFSET               0x002c
 #define OMAP4430_RM_ABE_AESS_CONTEXT                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x002c)
+#define OMAP4_PM_ABE_PDM_WKDEP_OFFSET                  0x0030
 #define OMAP4430_PM_ABE_PDM_WKDEP                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0030)
+#define OMAP4_RM_ABE_PDM_CONTEXT_OFFSET                        0x0034
 #define OMAP4430_RM_ABE_PDM_CONTEXT                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0034)
+#define OMAP4_PM_ABE_DMIC_WKDEP_OFFSET                 0x0038
 #define OMAP4430_PM_ABE_DMIC_WKDEP                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0038)
+#define OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET               0x003c
 #define OMAP4430_RM_ABE_DMIC_CONTEXT                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x003c)
+#define OMAP4_PM_ABE_MCASP_WKDEP_OFFSET                        0x0040
 #define OMAP4430_PM_ABE_MCASP_WKDEP                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0040)
+#define OMAP4_RM_ABE_MCASP_CONTEXT_OFFSET              0x0044
 #define OMAP4430_RM_ABE_MCASP_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0044)
+#define OMAP4_PM_ABE_MCBSP1_WKDEP_OFFSET               0x0048
 #define OMAP4430_PM_ABE_MCBSP1_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0048)
+#define OMAP4_RM_ABE_MCBSP1_CONTEXT_OFFSET             0x004c
 #define OMAP4430_RM_ABE_MCBSP1_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x004c)
+#define OMAP4_PM_ABE_MCBSP2_WKDEP_OFFSET               0x0050
 #define OMAP4430_PM_ABE_MCBSP2_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0050)
+#define OMAP4_RM_ABE_MCBSP2_CONTEXT_OFFSET             0x0054
 #define OMAP4430_RM_ABE_MCBSP2_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0054)
+#define OMAP4_PM_ABE_MCBSP3_WKDEP_OFFSET               0x0058
 #define OMAP4430_PM_ABE_MCBSP3_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0058)
+#define OMAP4_RM_ABE_MCBSP3_CONTEXT_OFFSET             0x005c
 #define OMAP4430_RM_ABE_MCBSP3_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x005c)
+#define OMAP4_PM_ABE_SLIMBUS_WKDEP_OFFSET              0x0060
 #define OMAP4430_PM_ABE_SLIMBUS_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0060)
+#define OMAP4_RM_ABE_SLIMBUS_CONTEXT_OFFSET            0x0064
 #define OMAP4430_RM_ABE_SLIMBUS_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0064)
+#define OMAP4_PM_ABE_TIMER5_WKDEP_OFFSET               0x0068
 #define OMAP4430_PM_ABE_TIMER5_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0068)
+#define OMAP4_RM_ABE_TIMER5_CONTEXT_OFFSET             0x006c
 #define OMAP4430_RM_ABE_TIMER5_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x006c)
+#define OMAP4_PM_ABE_TIMER6_WKDEP_OFFSET               0x0070
 #define OMAP4430_PM_ABE_TIMER6_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0070)
+#define OMAP4_RM_ABE_TIMER6_CONTEXT_OFFSET             0x0074
 #define OMAP4430_RM_ABE_TIMER6_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0074)
+#define OMAP4_PM_ABE_TIMER7_WKDEP_OFFSET               0x0078
 #define OMAP4430_PM_ABE_TIMER7_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0078)
+#define OMAP4_RM_ABE_TIMER7_CONTEXT_OFFSET             0x007c
 #define OMAP4430_RM_ABE_TIMER7_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x007c)
+#define OMAP4_PM_ABE_TIMER8_WKDEP_OFFSET               0x0080
 #define OMAP4430_PM_ABE_TIMER8_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0080)
+#define OMAP4_RM_ABE_TIMER8_CONTEXT_OFFSET             0x0084
 #define OMAP4430_RM_ABE_TIMER8_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0084)
+#define OMAP4_PM_ABE_WDT3_WKDEP_OFFSET                 0x0088
 #define OMAP4430_PM_ABE_WDT3_WKDEP                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x0088)
+#define OMAP4_RM_ABE_WDT3_CONTEXT_OFFSET               0x008c
 #define OMAP4430_RM_ABE_WDT3_CONTEXT                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ABE_MOD, 0x008c)
 
 /* PRM.ALWAYS_ON_PRM register offsets */
+#define OMAP4_RM_ALWON_MDMINTC_CONTEXT_OFFSET          0x0024
 #define OMAP4430_RM_ALWON_MDMINTC_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ALWAYS_ON_MOD, 0x0024)
+#define OMAP4_PM_ALWON_SR_MPU_WKDEP_OFFSET             0x0028
 #define OMAP4430_PM_ALWON_SR_MPU_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ALWAYS_ON_MOD, 0x0028)
+#define OMAP4_RM_ALWON_SR_MPU_CONTEXT_OFFSET           0x002c
 #define OMAP4430_RM_ALWON_SR_MPU_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ALWAYS_ON_MOD, 0x002c)
+#define OMAP4_PM_ALWON_SR_IVA_WKDEP_OFFSET             0x0030
 #define OMAP4430_PM_ALWON_SR_IVA_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ALWAYS_ON_MOD, 0x0030)
+#define OMAP4_RM_ALWON_SR_IVA_CONTEXT_OFFSET           0x0034
 #define OMAP4430_RM_ALWON_SR_IVA_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ALWAYS_ON_MOD, 0x0034)
+#define OMAP4_PM_ALWON_SR_CORE_WKDEP_OFFSET            0x0038
 #define OMAP4430_PM_ALWON_SR_CORE_WKDEP                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ALWAYS_ON_MOD, 0x0038)
+#define OMAP4_RM_ALWON_SR_CORE_CONTEXT_OFFSET          0x003c
 #define OMAP4430_RM_ALWON_SR_CORE_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_ALWAYS_ON_MOD, 0x003c)
 
 /* PRM.CORE_PRM register offsets */
+#define OMAP4_PM_CORE_PWRSTCTRL_OFFSET                 0x0000
 #define OMAP4430_PM_CORE_PWRSTCTRL                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0000)
+#define OMAP4_PM_CORE_PWRSTST_OFFSET                   0x0004
 #define OMAP4430_PM_CORE_PWRSTST                       OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0004)
+#define OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET              0x0024
 #define OMAP4430_RM_L3_1_L3_1_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0024)
+#define OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET              0x0124
 #define OMAP4430_RM_L3_2_L3_2_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0124)
+#define OMAP4_RM_L3_2_GPMC_CONTEXT_OFFSET              0x012c
 #define OMAP4430_RM_L3_2_GPMC_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x012c)
+#define OMAP4_RM_L3_2_OCMC_RAM_CONTEXT_OFFSET          0x0134
 #define OMAP4430_RM_L3_2_OCMC_RAM_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0134)
+#define OMAP4_RM_DUCATI_RSTCTRL_OFFSET                 0x0210
 #define OMAP4430_RM_DUCATI_RSTCTRL                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0210)
+#define OMAP4_RM_DUCATI_RSTST_OFFSET                   0x0214
 #define OMAP4430_RM_DUCATI_RSTST                       OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0214)
+#define OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET          0x0224
 #define OMAP4430_RM_DUCATI_DUCATI_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0224)
+#define OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET              0x0324
 #define OMAP4430_RM_SDMA_SDMA_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0324)
+#define OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET              0x0424
 #define OMAP4430_RM_MEMIF_DMM_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0424)
+#define OMAP4_RM_MEMIF_EMIF_FW_CONTEXT_OFFSET          0x042c
 #define OMAP4430_RM_MEMIF_EMIF_FW_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x042c)
+#define OMAP4_RM_MEMIF_EMIF_1_CONTEXT_OFFSET           0x0434
 #define OMAP4430_RM_MEMIF_EMIF_1_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0434)
+#define OMAP4_RM_MEMIF_EMIF_2_CONTEXT_OFFSET           0x043c
 #define OMAP4430_RM_MEMIF_EMIF_2_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x043c)
+#define OMAP4_RM_MEMIF_DLL_CONTEXT_OFFSET              0x0444
 #define OMAP4430_RM_MEMIF_DLL_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0444)
+#define OMAP4_RM_MEMIF_EMIF_H1_CONTEXT_OFFSET          0x0454
 #define OMAP4430_RM_MEMIF_EMIF_H1_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0454)
+#define OMAP4_RM_MEMIF_EMIF_H2_CONTEXT_OFFSET          0x045c
 #define OMAP4430_RM_MEMIF_EMIF_H2_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x045c)
+#define OMAP4_RM_MEMIF_DLL_H_CONTEXT_OFFSET            0x0464
 #define OMAP4430_RM_MEMIF_DLL_H_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0464)
+#define OMAP4_RM_D2D_SAD2D_CONTEXT_OFFSET              0x0524
 #define OMAP4430_RM_D2D_SAD2D_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0524)
+#define OMAP4_RM_D2D_MODEM_ICR_CONTEXT_OFFSET          0x052c
 #define OMAP4430_RM_D2D_MODEM_ICR_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x052c)
+#define OMAP4_RM_D2D_SAD2D_FW_CONTEXT_OFFSET           0x0534
 #define OMAP4430_RM_D2D_SAD2D_FW_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0534)
+#define OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET           0x0624
 #define OMAP4430_RM_L4CFG_L4_CFG_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0624)
+#define OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET           0x062c
 #define OMAP4430_RM_L4CFG_HW_SEM_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x062c)
+#define OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET          0x0634
 #define OMAP4430_RM_L4CFG_MAILBOX_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0634)
+#define OMAP4_RM_L4CFG_SAR_ROM_CONTEXT_OFFSET          0x063c
 #define OMAP4430_RM_L4CFG_SAR_ROM_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x063c)
+#define OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET           0x0724
 #define OMAP4430_RM_L3INSTR_L3_3_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0724)
+#define OMAP4_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET       0x072c
 #define OMAP4430_RM_L3INSTR_L3_INSTR_CONTEXT           OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x072c)
+#define OMAP4_RM_L3INSTR_OCP_WP1_CONTEXT_OFFSET                0x0744
 #define OMAP4430_RM_L3INSTR_OCP_WP1_CONTEXT            OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CORE_MOD, 0x0744)
 
 /* PRM.IVAHD_PRM register offsets */
+#define OMAP4_PM_IVAHD_PWRSTCTRL_OFFSET                        0x0000
 #define OMAP4430_PM_IVAHD_PWRSTCTRL                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_IVAHD_MOD, 0x0000)
+#define OMAP4_PM_IVAHD_PWRSTST_OFFSET                  0x0004
 #define OMAP4430_PM_IVAHD_PWRSTST                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_IVAHD_MOD, 0x0004)
+#define OMAP4_RM_IVAHD_RSTCTRL_OFFSET                  0x0010
 #define OMAP4430_RM_IVAHD_RSTCTRL                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_IVAHD_MOD, 0x0010)
+#define OMAP4_RM_IVAHD_RSTST_OFFSET                    0x0014
 #define OMAP4430_RM_IVAHD_RSTST                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_IVAHD_MOD, 0x0014)
+#define OMAP4_RM_IVAHD_IVAHD_CONTEXT_OFFSET            0x0024
 #define OMAP4430_RM_IVAHD_IVAHD_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_IVAHD_MOD, 0x0024)
+#define OMAP4_RM_IVAHD_SL2_CONTEXT_OFFSET              0x002c
 #define OMAP4430_RM_IVAHD_SL2_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_IVAHD_MOD, 0x002c)
 
 /* PRM.CAM_PRM register offsets */
+#define OMAP4_PM_CAM_PWRSTCTRL_OFFSET                  0x0000
 #define OMAP4430_PM_CAM_PWRSTCTRL                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CAM_MOD, 0x0000)
+#define OMAP4_PM_CAM_PWRSTST_OFFSET                    0x0004
 #define OMAP4430_PM_CAM_PWRSTST                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CAM_MOD, 0x0004)
+#define OMAP4_RM_CAM_ISS_CONTEXT_OFFSET                        0x0024
 #define OMAP4430_RM_CAM_ISS_CONTEXT                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CAM_MOD, 0x0024)
+#define OMAP4_RM_CAM_FDIF_CONTEXT_OFFSET               0x002c
 #define OMAP4430_RM_CAM_FDIF_CONTEXT                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CAM_MOD, 0x002c)
 
 /* PRM.DSS_PRM register offsets */
+#define OMAP4_PM_DSS_PWRSTCTRL_OFFSET                  0x0000
 #define OMAP4430_PM_DSS_PWRSTCTRL                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DSS_MOD, 0x0000)
+#define OMAP4_PM_DSS_PWRSTST_OFFSET                    0x0004
 #define OMAP4430_PM_DSS_PWRSTST                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DSS_MOD, 0x0004)
+#define OMAP4_PM_DSS_DSS_WKDEP_OFFSET                  0x0020
 #define OMAP4430_PM_DSS_DSS_WKDEP                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DSS_MOD, 0x0020)
+#define OMAP4_RM_DSS_DSS_CONTEXT_OFFSET                        0x0024
 #define OMAP4430_RM_DSS_DSS_CONTEXT                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DSS_MOD, 0x0024)
+#define OMAP4_RM_DSS_DEISS_CONTEXT_OFFSET              0x002c
 #define OMAP4430_RM_DSS_DEISS_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DSS_MOD, 0x002c)
 
 /* PRM.GFX_PRM register offsets */
+#define OMAP4_PM_GFX_PWRSTCTRL_OFFSET                  0x0000
 #define OMAP4430_PM_GFX_PWRSTCTRL                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_GFX_MOD, 0x0000)
+#define OMAP4_PM_GFX_PWRSTST_OFFSET                    0x0004
 #define OMAP4430_PM_GFX_PWRSTST                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_GFX_MOD, 0x0004)
+#define OMAP4_RM_GFX_GFX_CONTEXT_OFFSET                        0x0024
 #define OMAP4430_RM_GFX_GFX_CONTEXT                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_GFX_MOD, 0x0024)
 
 /* PRM.L3INIT_PRM register offsets */
+#define OMAP4_PM_L3INIT_PWRSTCTRL_OFFSET               0x0000
 #define OMAP4430_PM_L3INIT_PWRSTCTRL                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0000)
+#define OMAP4_PM_L3INIT_PWRSTST_OFFSET                 0x0004
 #define OMAP4430_PM_L3INIT_PWRSTST                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0004)
+#define OMAP4_PM_L3INIT_MMC1_WKDEP_OFFSET              0x0028
 #define OMAP4430_PM_L3INIT_MMC1_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0028)
+#define OMAP4_RM_L3INIT_MMC1_CONTEXT_OFFSET            0x002c
 #define OMAP4430_RM_L3INIT_MMC1_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x002c)
+#define OMAP4_PM_L3INIT_MMC2_WKDEP_OFFSET              0x0030
 #define OMAP4430_PM_L3INIT_MMC2_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0030)
+#define OMAP4_RM_L3INIT_MMC2_CONTEXT_OFFSET            0x0034
 #define OMAP4430_RM_L3INIT_MMC2_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0034)
+#define OMAP4_PM_L3INIT_HSI_WKDEP_OFFSET               0x0038
 #define OMAP4430_PM_L3INIT_HSI_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0038)
+#define OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET             0x003c
 #define OMAP4430_RM_L3INIT_HSI_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x003c)
+#define OMAP4_PM_L3INIT_UNIPRO1_WKDEP_OFFSET           0x0040
 #define OMAP4430_PM_L3INIT_UNIPRO1_WKDEP               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0040)
+#define OMAP4_RM_L3INIT_UNIPRO1_CONTEXT_OFFSET         0x0044
 #define OMAP4430_RM_L3INIT_UNIPRO1_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0044)
+#define OMAP4_PM_L3INIT_USB_HOST_WKDEP_OFFSET          0x0058
 #define OMAP4430_PM_L3INIT_USB_HOST_WKDEP              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0058)
+#define OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET                0x005c
 #define OMAP4430_RM_L3INIT_USB_HOST_CONTEXT            OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x005c)
+#define OMAP4_PM_L3INIT_USB_OTG_WKDEP_OFFSET           0x0060
 #define OMAP4430_PM_L3INIT_USB_OTG_WKDEP               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0060)
+#define OMAP4_RM_L3INIT_USB_OTG_CONTEXT_OFFSET         0x0064
 #define OMAP4430_RM_L3INIT_USB_OTG_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0064)
+#define OMAP4_PM_L3INIT_USB_TLL_WKDEP_OFFSET           0x0068
 #define OMAP4430_PM_L3INIT_USB_TLL_WKDEP               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0068)
+#define OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET         0x006c
 #define OMAP4430_RM_L3INIT_USB_TLL_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x006c)
+#define OMAP4_RM_L3INIT_P1500_CONTEXT_OFFSET           0x007c
 #define OMAP4430_RM_L3INIT_P1500_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x007c)
+#define OMAP4_RM_L3INIT_EMAC_CONTEXT_OFFSET            0x0084
 #define OMAP4430_RM_L3INIT_EMAC_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0084)
+#define OMAP4_PM_L3INIT_SATA_WKDEP_OFFSET              0x0088
 #define OMAP4430_PM_L3INIT_SATA_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0088)
+#define OMAP4_RM_L3INIT_SATA_CONTEXT_OFFSET            0x008c
 #define OMAP4430_RM_L3INIT_SATA_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x008c)
+#define OMAP4_RM_L3INIT_TPPSS_CONTEXT_OFFSET           0x0094
 #define OMAP4430_RM_L3INIT_TPPSS_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0094)
+#define OMAP4_PM_L3INIT_PCIESS_WKDEP_OFFSET            0x0098
 #define OMAP4430_PM_L3INIT_PCIESS_WKDEP                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x0098)
+#define OMAP4_RM_L3INIT_PCIESS_CONTEXT_OFFSET          0x009c
 #define OMAP4430_RM_L3INIT_PCIESS_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x009c)
+#define OMAP4_RM_L3INIT_CCPTX_CONTEXT_OFFSET           0x00ac
 #define OMAP4430_RM_L3INIT_CCPTX_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x00ac)
+#define OMAP4_PM_L3INIT_XHPI_WKDEP_OFFSET              0x00c0
 #define OMAP4430_PM_L3INIT_XHPI_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x00c0)
+#define OMAP4_RM_L3INIT_XHPI_CONTEXT_OFFSET            0x00c4
 #define OMAP4430_RM_L3INIT_XHPI_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x00c4)
+#define OMAP4_PM_L3INIT_MMC6_WKDEP_OFFSET              0x00c8
 #define OMAP4430_PM_L3INIT_MMC6_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x00c8)
+#define OMAP4_RM_L3INIT_MMC6_CONTEXT_OFFSET            0x00cc
 #define OMAP4430_RM_L3INIT_MMC6_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x00cc)
+#define OMAP4_PM_L3INIT_USB_HOST_FS_WKDEP_OFFSET       0x00d0
 #define OMAP4430_PM_L3INIT_USB_HOST_FS_WKDEP           OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x00d0)
+#define OMAP4_RM_L3INIT_USB_HOST_FS_CONTEXT_OFFSET     0x00d4
 #define OMAP4430_RM_L3INIT_USB_HOST_FS_CONTEXT         OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x00d4)
+#define OMAP4_RM_L3INIT_USBPHYOCP2SCP_CONTEXT_OFFSET   0x00e4
 #define OMAP4430_RM_L3INIT_USBPHYOCP2SCP_CONTEXT       OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L3INIT_MOD, 0x00e4)
 
 /* PRM.L4PER_PRM register offsets */
+#define OMAP4_PM_L4PER_PWRSTCTRL_OFFSET                        0x0000
 #define OMAP4430_PM_L4PER_PWRSTCTRL                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0000)
+#define OMAP4_PM_L4PER_PWRSTST_OFFSET                  0x0004
 #define OMAP4430_PM_L4PER_PWRSTST                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0004)
+#define OMAP4_RM_L4PER_ADC_CONTEXT_OFFSET              0x0024
 #define OMAP4430_RM_L4PER_ADC_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0024)
+#define OMAP4_PM_L4PER_DMTIMER10_WKDEP_OFFSET          0x0028
 #define OMAP4430_PM_L4PER_DMTIMER10_WKDEP              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0028)
+#define OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET                0x002c
 #define OMAP4430_RM_L4PER_DMTIMER10_CONTEXT            OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x002c)
+#define OMAP4_PM_L4PER_DMTIMER11_WKDEP_OFFSET          0x0030
 #define OMAP4430_PM_L4PER_DMTIMER11_WKDEP              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0030)
+#define OMAP4_RM_L4PER_DMTIMER11_CONTEXT_OFFSET                0x0034
 #define OMAP4430_RM_L4PER_DMTIMER11_CONTEXT            OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0034)
+#define OMAP4_PM_L4PER_DMTIMER2_WKDEP_OFFSET           0x0038
 #define OMAP4430_PM_L4PER_DMTIMER2_WKDEP               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0038)
+#define OMAP4_RM_L4PER_DMTIMER2_CONTEXT_OFFSET         0x003c
 #define OMAP4430_RM_L4PER_DMTIMER2_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x003c)
+#define OMAP4_PM_L4PER_DMTIMER3_WKDEP_OFFSET           0x0040
 #define OMAP4430_PM_L4PER_DMTIMER3_WKDEP               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0040)
+#define OMAP4_RM_L4PER_DMTIMER3_CONTEXT_OFFSET         0x0044
 #define OMAP4430_RM_L4PER_DMTIMER3_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0044)
+#define OMAP4_PM_L4PER_DMTIMER4_WKDEP_OFFSET           0x0048
 #define OMAP4430_PM_L4PER_DMTIMER4_WKDEP               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0048)
+#define OMAP4_RM_L4PER_DMTIMER4_CONTEXT_OFFSET         0x004c
 #define OMAP4430_RM_L4PER_DMTIMER4_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x004c)
+#define OMAP4_PM_L4PER_DMTIMER9_WKDEP_OFFSET           0x0050
 #define OMAP4430_PM_L4PER_DMTIMER9_WKDEP               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0050)
+#define OMAP4_RM_L4PER_DMTIMER9_CONTEXT_OFFSET         0x0054
 #define OMAP4430_RM_L4PER_DMTIMER9_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0054)
+#define OMAP4_RM_L4PER_ELM_CONTEXT_OFFSET              0x005c
 #define OMAP4430_RM_L4PER_ELM_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x005c)
+#define OMAP4_PM_L4PER_GPIO2_WKDEP_OFFSET              0x0060
 #define OMAP4430_PM_L4PER_GPIO2_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0060)
+#define OMAP4_RM_L4PER_GPIO2_CONTEXT_OFFSET            0x0064
 #define OMAP4430_RM_L4PER_GPIO2_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0064)
+#define OMAP4_PM_L4PER_GPIO3_WKDEP_OFFSET              0x0068
 #define OMAP4430_PM_L4PER_GPIO3_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0068)
+#define OMAP4_RM_L4PER_GPIO3_CONTEXT_OFFSET            0x006c
 #define OMAP4430_RM_L4PER_GPIO3_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x006c)
+#define OMAP4_PM_L4PER_GPIO4_WKDEP_OFFSET              0x0070
 #define OMAP4430_PM_L4PER_GPIO4_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0070)
+#define OMAP4_RM_L4PER_GPIO4_CONTEXT_OFFSET            0x0074
 #define OMAP4430_RM_L4PER_GPIO4_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0074)
+#define OMAP4_PM_L4PER_GPIO5_WKDEP_OFFSET              0x0078
 #define OMAP4430_PM_L4PER_GPIO5_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0078)
+#define OMAP4_RM_L4PER_GPIO5_CONTEXT_OFFSET            0x007c
 #define OMAP4430_RM_L4PER_GPIO5_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x007c)
+#define OMAP4_PM_L4PER_GPIO6_WKDEP_OFFSET              0x0080
 #define OMAP4430_PM_L4PER_GPIO6_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0080)
+#define OMAP4_RM_L4PER_GPIO6_CONTEXT_OFFSET            0x0084
 #define OMAP4430_RM_L4PER_GPIO6_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0084)
+#define OMAP4_RM_L4PER_HDQ1W_CONTEXT_OFFSET            0x008c
 #define OMAP4430_RM_L4PER_HDQ1W_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x008c)
+#define OMAP4_PM_L4PER_HECC1_WKDEP_OFFSET              0x0090
 #define OMAP4430_PM_L4PER_HECC1_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0090)
+#define OMAP4_RM_L4PER_HECC1_CONTEXT_OFFSET            0x0094
 #define OMAP4430_RM_L4PER_HECC1_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0094)
+#define OMAP4_PM_L4PER_HECC2_WKDEP_OFFSET              0x0098
 #define OMAP4430_PM_L4PER_HECC2_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0098)
+#define OMAP4_RM_L4PER_HECC2_CONTEXT_OFFSET            0x009c
 #define OMAP4430_RM_L4PER_HECC2_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x009c)
+#define OMAP4_PM_L4PER_I2C1_WKDEP_OFFSET               0x00a0
 #define OMAP4430_PM_L4PER_I2C1_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00a0)
+#define OMAP4_RM_L4PER_I2C1_CONTEXT_OFFSET             0x00a4
 #define OMAP4430_RM_L4PER_I2C1_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00a4)
+#define OMAP4_PM_L4PER_I2C2_WKDEP_OFFSET               0x00a8
 #define OMAP4430_PM_L4PER_I2C2_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00a8)
+#define OMAP4_RM_L4PER_I2C2_CONTEXT_OFFSET             0x00ac
 #define OMAP4430_RM_L4PER_I2C2_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00ac)
+#define OMAP4_PM_L4PER_I2C3_WKDEP_OFFSET               0x00b0
 #define OMAP4430_PM_L4PER_I2C3_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00b0)
+#define OMAP4_RM_L4PER_I2C3_CONTEXT_OFFSET             0x00b4
 #define OMAP4430_RM_L4PER_I2C3_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00b4)
+#define OMAP4_PM_L4PER_I2C4_WKDEP_OFFSET               0x00b8
 #define OMAP4430_PM_L4PER_I2C4_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00b8)
+#define OMAP4_RM_L4PER_I2C4_CONTEXT_OFFSET             0x00bc
 #define OMAP4430_RM_L4PER_I2C4_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00bc)
+#define OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET           0x00c0
 #define OMAP4430_RM_L4PER_L4_PER_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00c0)
+#define OMAP4_PM_L4PER_MCASP2_WKDEP_OFFSET             0x00d0
 #define OMAP4430_PM_L4PER_MCASP2_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00d0)
+#define OMAP4_RM_L4PER_MCASP2_CONTEXT_OFFSET           0x00d4
 #define OMAP4430_RM_L4PER_MCASP2_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00d4)
+#define OMAP4_PM_L4PER_MCASP3_WKDEP_OFFSET             0x00d8
 #define OMAP4430_PM_L4PER_MCASP3_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00d8)
+#define OMAP4_RM_L4PER_MCASP3_CONTEXT_OFFSET           0x00dc
 #define OMAP4430_RM_L4PER_MCASP3_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00dc)
+#define OMAP4_PM_L4PER_MCBSP4_WKDEP_OFFSET             0x00e0
 #define OMAP4430_PM_L4PER_MCBSP4_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00e0)
+#define OMAP4_RM_L4PER_MCBSP4_CONTEXT_OFFSET           0x00e4
 #define OMAP4430_RM_L4PER_MCBSP4_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00e4)
+#define OMAP4_RM_L4PER_MGATE_CONTEXT_OFFSET            0x00ec
 #define OMAP4430_RM_L4PER_MGATE_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00ec)
+#define OMAP4_PM_L4PER_MCSPI1_WKDEP_OFFSET             0x00f0
 #define OMAP4430_PM_L4PER_MCSPI1_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00f0)
+#define OMAP4_RM_L4PER_MCSPI1_CONTEXT_OFFSET           0x00f4
 #define OMAP4430_RM_L4PER_MCSPI1_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00f4)
+#define OMAP4_PM_L4PER_MCSPI2_WKDEP_OFFSET             0x00f8
 #define OMAP4430_PM_L4PER_MCSPI2_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00f8)
+#define OMAP4_RM_L4PER_MCSPI2_CONTEXT_OFFSET           0x00fc
 #define OMAP4430_RM_L4PER_MCSPI2_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x00fc)
+#define OMAP4_PM_L4PER_MCSPI3_WKDEP_OFFSET             0x0100
 #define OMAP4430_PM_L4PER_MCSPI3_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0100)
+#define OMAP4_RM_L4PER_MCSPI3_CONTEXT_OFFSET           0x0104
 #define OMAP4430_RM_L4PER_MCSPI3_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0104)
+#define OMAP4_PM_L4PER_MCSPI4_WKDEP_OFFSET             0x0108
 #define OMAP4430_PM_L4PER_MCSPI4_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0108)
+#define OMAP4_RM_L4PER_MCSPI4_CONTEXT_OFFSET           0x010c
 #define OMAP4430_RM_L4PER_MCSPI4_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x010c)
+#define OMAP4_PM_L4PER_MMCSD3_WKDEP_OFFSET             0x0120
 #define OMAP4430_PM_L4PER_MMCSD3_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0120)
+#define OMAP4_RM_L4PER_MMCSD3_CONTEXT_OFFSET           0x0124
 #define OMAP4430_RM_L4PER_MMCSD3_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0124)
+#define OMAP4_PM_L4PER_MMCSD4_WKDEP_OFFSET             0x0128
 #define OMAP4430_PM_L4PER_MMCSD4_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0128)
+#define OMAP4_RM_L4PER_MMCSD4_CONTEXT_OFFSET           0x012c
 #define OMAP4430_RM_L4PER_MMCSD4_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x012c)
+#define OMAP4_RM_L4PER_MSPROHG_CONTEXT_OFFSET          0x0134
 #define OMAP4430_RM_L4PER_MSPROHG_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0134)
+#define OMAP4_PM_L4PER_SLIMBUS2_WKDEP_OFFSET           0x0138
 #define OMAP4430_PM_L4PER_SLIMBUS2_WKDEP               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0138)
+#define OMAP4_RM_L4PER_SLIMBUS2_CONTEXT_OFFSET         0x013c
 #define OMAP4430_RM_L4PER_SLIMBUS2_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x013c)
+#define OMAP4_PM_L4PER_UART1_WKDEP_OFFSET              0x0140
 #define OMAP4430_PM_L4PER_UART1_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0140)
+#define OMAP4_RM_L4PER_UART1_CONTEXT_OFFSET            0x0144
 #define OMAP4430_RM_L4PER_UART1_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0144)
+#define OMAP4_PM_L4PER_UART2_WKDEP_OFFSET              0x0148
 #define OMAP4430_PM_L4PER_UART2_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0148)
+#define OMAP4_RM_L4PER_UART2_CONTEXT_OFFSET            0x014c
 #define OMAP4430_RM_L4PER_UART2_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x014c)
+#define OMAP4_PM_L4PER_UART3_WKDEP_OFFSET              0x0150
 #define OMAP4430_PM_L4PER_UART3_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0150)
+#define OMAP4_RM_L4PER_UART3_CONTEXT_OFFSET            0x0154
 #define OMAP4430_RM_L4PER_UART3_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0154)
+#define OMAP4_PM_L4PER_UART4_WKDEP_OFFSET              0x0158
 #define OMAP4430_PM_L4PER_UART4_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0158)
+#define OMAP4_RM_L4PER_UART4_CONTEXT_OFFSET            0x015c
 #define OMAP4430_RM_L4PER_UART4_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x015c)
+#define OMAP4_PM_L4PER_MMCSD5_WKDEP_OFFSET             0x0160
 #define OMAP4430_PM_L4PER_MMCSD5_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0160)
+#define OMAP4_RM_L4PER_MMCSD5_CONTEXT_OFFSET           0x0164
 #define OMAP4430_RM_L4PER_MMCSD5_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0164)
+#define OMAP4_PM_L4PER_I2C5_WKDEP_OFFSET               0x0168
 #define OMAP4430_PM_L4PER_I2C5_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x0168)
+#define OMAP4_RM_L4PER_I2C5_CONTEXT_OFFSET             0x016c
 #define OMAP4430_RM_L4PER_I2C5_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x016c)
+#define OMAP4_RM_L4SEC_AES1_CONTEXT_OFFSET             0x01a4
 #define OMAP4430_RM_L4SEC_AES1_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x01a4)
+#define OMAP4_RM_L4SEC_AES2_CONTEXT_OFFSET             0x01ac
 #define OMAP4430_RM_L4SEC_AES2_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x01ac)
+#define OMAP4_RM_L4SEC_DES3DES_CONTEXT_OFFSET          0x01b4
 #define OMAP4430_RM_L4SEC_DES3DES_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x01b4)
+#define OMAP4_RM_L4SEC_PKAEIP29_CONTEXT_OFFSET         0x01bc
 #define OMAP4430_RM_L4SEC_PKAEIP29_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x01bc)
+#define OMAP4_RM_L4SEC_RNG_CONTEXT_OFFSET              0x01c4
 #define OMAP4430_RM_L4SEC_RNG_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x01c4)
+#define OMAP4_RM_L4SEC_SHA2MD51_CONTEXT_OFFSET         0x01cc
 #define OMAP4430_RM_L4SEC_SHA2MD51_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x01cc)
+#define OMAP4_RM_L4SEC_CRYPTODMA_CONTEXT_OFFSET                0x01dc
 #define OMAP4430_RM_L4SEC_CRYPTODMA_CONTEXT            OMAP44XX_PRM_REGADDR(OMAP4430_PRM_L4PER_MOD, 0x01dc)
 
 /* PRM.CEFUSE_PRM register offsets */
+#define OMAP4_PM_CEFUSE_PWRSTCTRL_OFFSET               0x0000
 #define OMAP4430_PM_CEFUSE_PWRSTCTRL                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CEFUSE_MOD, 0x0000)
+#define OMAP4_PM_CEFUSE_PWRSTST_OFFSET                 0x0004
 #define OMAP4430_PM_CEFUSE_PWRSTST                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CEFUSE_MOD, 0x0004)
+#define OMAP4_RM_CEFUSE_CEFUSE_CONTEXT_OFFSET          0x0024
 #define OMAP4430_RM_CEFUSE_CEFUSE_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_CEFUSE_MOD, 0x0024)
 
 /* PRM.WKUP_PRM register offsets */
+#define OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET            0x0024
 #define OMAP4430_RM_WKUP_L4WKUP_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0024)
+#define OMAP4_RM_WKUP_WDT1_CONTEXT_OFFSET              0x002c
 #define OMAP4430_RM_WKUP_WDT1_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x002c)
+#define OMAP4_PM_WKUP_WDT2_WKDEP_OFFSET                        0x0030
 #define OMAP4430_PM_WKUP_WDT2_WKDEP                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0030)
+#define OMAP4_RM_WKUP_WDT2_CONTEXT_OFFSET              0x0034
 #define OMAP4430_RM_WKUP_WDT2_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0034)
+#define OMAP4_PM_WKUP_GPIO1_WKDEP_OFFSET               0x0038
 #define OMAP4430_PM_WKUP_GPIO1_WKDEP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0038)
+#define OMAP4_RM_WKUP_GPIO1_CONTEXT_OFFSET             0x003c
 #define OMAP4430_RM_WKUP_GPIO1_CONTEXT                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x003c)
+#define OMAP4_PM_WKUP_TIMER1_WKDEP_OFFSET              0x0040
 #define OMAP4430_PM_WKUP_TIMER1_WKDEP                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0040)
+#define OMAP4_RM_WKUP_TIMER1_CONTEXT_OFFSET            0x0044
 #define OMAP4430_RM_WKUP_TIMER1_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0044)
+#define OMAP4_PM_WKUP_TIMER12_WKDEP_OFFSET             0x0048
 #define OMAP4430_PM_WKUP_TIMER12_WKDEP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0048)
+#define OMAP4_RM_WKUP_TIMER12_CONTEXT_OFFSET           0x004c
 #define OMAP4430_RM_WKUP_TIMER12_CONTEXT               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x004c)
+#define OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET         0x0054
 #define OMAP4430_RM_WKUP_SYNCTIMER_CONTEXT             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0054)
+#define OMAP4_PM_WKUP_USIM_WKDEP_OFFSET                        0x0058
 #define OMAP4430_PM_WKUP_USIM_WKDEP                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0058)
+#define OMAP4_RM_WKUP_USIM_CONTEXT_OFFSET              0x005c
 #define OMAP4430_RM_WKUP_USIM_CONTEXT                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x005c)
+#define OMAP4_RM_WKUP_SARRAM_CONTEXT_OFFSET            0x0064
 #define OMAP4430_RM_WKUP_SARRAM_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0064)
+#define OMAP4_PM_WKUP_KEYBOARD_WKDEP_OFFSET            0x0078
 #define OMAP4430_PM_WKUP_KEYBOARD_WKDEP                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0078)
+#define OMAP4_RM_WKUP_KEYBOARD_CONTEXT_OFFSET          0x007c
 #define OMAP4430_RM_WKUP_KEYBOARD_CONTEXT              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x007c)
+#define OMAP4_PM_WKUP_RTC_WKDEP_OFFSET                 0x0080
 #define OMAP4430_PM_WKUP_RTC_WKDEP                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0080)
+#define OMAP4_RM_WKUP_RTC_CONTEXT_OFFSET               0x0084
 #define OMAP4430_RM_WKUP_RTC_CONTEXT                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_MOD, 0x0084)
 
 /* PRM.WKUP_CM register offsets */
+#define OMAP4_CM_WKUP_CLKSTCTRL_OFFSET                 0x0000
 #define OMAP4430_CM_WKUP_CLKSTCTRL                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0000)
+#define OMAP4_CM_WKUP_L4WKUP_CLKCTRL_OFFSET            0x0020
 #define OMAP4430_CM_WKUP_L4WKUP_CLKCTRL                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0020)
+#define OMAP4_CM_WKUP_WDT1_CLKCTRL_OFFSET              0x0028
 #define OMAP4430_CM_WKUP_WDT1_CLKCTRL                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0028)
+#define OMAP4_CM_WKUP_WDT2_CLKCTRL_OFFSET              0x0030
 #define OMAP4430_CM_WKUP_WDT2_CLKCTRL                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0030)
+#define OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET             0x0038
 #define OMAP4430_CM_WKUP_GPIO1_CLKCTRL                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0038)
+#define OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET            0x0040
 #define OMAP4430_CM_WKUP_TIMER1_CLKCTRL                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0040)
+#define OMAP4_CM_WKUP_TIMER12_CLKCTRL_OFFSET           0x0048
 #define OMAP4430_CM_WKUP_TIMER12_CLKCTRL               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0048)
+#define OMAP4_CM_WKUP_SYNCTIMER_CLKCTRL_OFFSET         0x0050
 #define OMAP4430_CM_WKUP_SYNCTIMER_CLKCTRL             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0050)
+#define OMAP4_CM_WKUP_USIM_CLKCTRL_OFFSET              0x0058
 #define OMAP4430_CM_WKUP_USIM_CLKCTRL                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0058)
+#define OMAP4_CM_WKUP_SARRAM_CLKCTRL_OFFSET            0x0060
 #define OMAP4430_CM_WKUP_SARRAM_CLKCTRL                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0060)
+#define OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET          0x0078
 #define OMAP4430_CM_WKUP_KEYBOARD_CLKCTRL              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0078)
+#define OMAP4_CM_WKUP_RTC_CLKCTRL_OFFSET               0x0080
 #define OMAP4430_CM_WKUP_RTC_CLKCTRL                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0080)
+#define OMAP4_CM_WKUP_BANDGAP_CLKCTRL_OFFSET           0x0088
 #define OMAP4430_CM_WKUP_BANDGAP_CLKCTRL               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_WKUP_CM_MOD, 0x0088)
 
 /* PRM.EMU_PRM register offsets */
+#define OMAP4_PM_EMU_PWRSTCTRL_OFFSET                  0x0000
 #define OMAP4430_PM_EMU_PWRSTCTRL                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_EMU_MOD, 0x0000)
+#define OMAP4_PM_EMU_PWRSTST_OFFSET                    0x0004
 #define OMAP4430_PM_EMU_PWRSTST                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_EMU_MOD, 0x0004)
+#define OMAP4_RM_EMU_DEBUGSS_CONTEXT_OFFSET            0x0024
 #define OMAP4430_RM_EMU_DEBUGSS_CONTEXT                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_EMU_MOD, 0x0024)
 
 /* PRM.EMU_CM register offsets */
+#define OMAP4_CM_EMU_CLKSTCTRL_OFFSET                  0x0000
 #define OMAP4430_CM_EMU_CLKSTCTRL                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_EMU_CM_MOD, 0x0000)
+#define OMAP4_CM_EMU_DYNAMICDEP_OFFSET                 0x0008
 #define OMAP4430_CM_EMU_DYNAMICDEP                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_EMU_CM_MOD, 0x0008)
+#define OMAP4_CM_EMU_DEBUGSS_CLKCTRL_OFFSET            0x0020
 #define OMAP4430_CM_EMU_DEBUGSS_CLKCTRL                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_EMU_CM_MOD, 0x0020)
 
 /* PRM.DEVICE_PRM register offsets */
+#define OMAP4_PRM_RSTCTRL_OFFSET                       0x0000
 #define OMAP4430_PRM_RSTCTRL                           OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0000)
+#define OMAP4_PRM_RSTST_OFFSET                         0x0004
 #define OMAP4430_PRM_RSTST                             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0004)
+#define OMAP4_PRM_RSTTIME_OFFSET                       0x0008
 #define OMAP4430_PRM_RSTTIME                           OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0008)
+#define OMAP4_PRM_CLKREQCTRL_OFFSET                    0x000c
 #define OMAP4430_PRM_CLKREQCTRL                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x000c)
+#define OMAP4_PRM_VOLTCTRL_OFFSET                      0x0010
 #define OMAP4430_PRM_VOLTCTRL                          OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0010)
+#define OMAP4_PRM_PWRREQCTRL_OFFSET                    0x0014
 #define OMAP4430_PRM_PWRREQCTRL                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0014)
+#define OMAP4_PRM_PSCON_COUNT_OFFSET                   0x0018
 #define OMAP4430_PRM_PSCON_COUNT                       OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0018)
+#define OMAP4_PRM_IO_COUNT_OFFSET                      0x001c
 #define OMAP4430_PRM_IO_COUNT                          OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x001c)
+#define OMAP4_PRM_IO_PMCTRL_OFFSET                     0x0020
 #define OMAP4430_PRM_IO_PMCTRL                         OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0020)
+#define OMAP4_PRM_VOLTSETUP_WARMRESET_OFFSET           0x0024
 #define OMAP4430_PRM_VOLTSETUP_WARMRESET               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0024)
+#define OMAP4_PRM_VOLTSETUP_CORE_OFF_OFFSET            0x0028
 #define OMAP4430_PRM_VOLTSETUP_CORE_OFF                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0028)
+#define OMAP4_PRM_VOLTSETUP_MPU_OFF_OFFSET             0x002c
 #define OMAP4430_PRM_VOLTSETUP_MPU_OFF                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x002c)
+#define OMAP4_PRM_VOLTSETUP_IVA_OFF_OFFSET             0x0030
 #define OMAP4430_PRM_VOLTSETUP_IVA_OFF                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0030)
+#define OMAP4_PRM_VOLTSETUP_CORE_RET_SLEEP_OFFSET      0x0034
 #define OMAP4430_PRM_VOLTSETUP_CORE_RET_SLEEP          OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0034)
+#define OMAP4_PRM_VOLTSETUP_MPU_RET_SLEEP_OFFSET       0x0038
 #define OMAP4430_PRM_VOLTSETUP_MPU_RET_SLEEP           OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0038)
+#define OMAP4_PRM_VOLTSETUP_IVA_RET_SLEEP_OFFSET       0x003c
 #define OMAP4430_PRM_VOLTSETUP_IVA_RET_SLEEP           OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x003c)
+#define OMAP4_PRM_VP_CORE_CONFIG_OFFSET                        0x0040
 #define OMAP4430_PRM_VP_CORE_CONFIG                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0040)
+#define OMAP4_PRM_VP_CORE_STATUS_OFFSET                        0x0044
 #define OMAP4430_PRM_VP_CORE_STATUS                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0044)
+#define OMAP4_PRM_VP_CORE_VLIMITTO_OFFSET              0x0048
 #define OMAP4430_PRM_VP_CORE_VLIMITTO                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0048)
+#define OMAP4_PRM_VP_CORE_VOLTAGE_OFFSET               0x004c
 #define OMAP4430_PRM_VP_CORE_VOLTAGE                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x004c)
+#define OMAP4_PRM_VP_CORE_VSTEPMAX_OFFSET              0x0050
 #define OMAP4430_PRM_VP_CORE_VSTEPMAX                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0050)
+#define OMAP4_PRM_VP_CORE_VSTEPMIN_OFFSET              0x0054
 #define OMAP4430_PRM_VP_CORE_VSTEPMIN                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0054)
+#define OMAP4_PRM_VP_MPU_CONFIG_OFFSET                 0x0058
 #define OMAP4430_PRM_VP_MPU_CONFIG                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0058)
+#define OMAP4_PRM_VP_MPU_STATUS_OFFSET                 0x005c
 #define OMAP4430_PRM_VP_MPU_STATUS                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x005c)
+#define OMAP4_PRM_VP_MPU_VLIMITTO_OFFSET               0x0060
 #define OMAP4430_PRM_VP_MPU_VLIMITTO                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0060)
+#define OMAP4_PRM_VP_MPU_VOLTAGE_OFFSET                        0x0064
 #define OMAP4430_PRM_VP_MPU_VOLTAGE                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0064)
+#define OMAP4_PRM_VP_MPU_VSTEPMAX_OFFSET               0x0068
 #define OMAP4430_PRM_VP_MPU_VSTEPMAX                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0068)
+#define OMAP4_PRM_VP_MPU_VSTEPMIN_OFFSET               0x006c
 #define OMAP4430_PRM_VP_MPU_VSTEPMIN                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x006c)
+#define OMAP4_PRM_VP_IVA_CONFIG_OFFSET                 0x0070
 #define OMAP4430_PRM_VP_IVA_CONFIG                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0070)
+#define OMAP4_PRM_VP_IVA_STATUS_OFFSET                 0x0074
 #define OMAP4430_PRM_VP_IVA_STATUS                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0074)
+#define OMAP4_PRM_VP_IVA_VLIMITTO_OFFSET               0x0078
 #define OMAP4430_PRM_VP_IVA_VLIMITTO                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0078)
+#define OMAP4_PRM_VP_IVA_VOLTAGE_OFFSET                        0x007c
 #define OMAP4430_PRM_VP_IVA_VOLTAGE                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x007c)
+#define OMAP4_PRM_VP_IVA_VSTEPMAX_OFFSET               0x0080
 #define OMAP4430_PRM_VP_IVA_VSTEPMAX                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0080)
+#define OMAP4_PRM_VP_IVA_VSTEPMIN_OFFSET               0x0084
 #define OMAP4430_PRM_VP_IVA_VSTEPMIN                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0084)
+#define OMAP4_PRM_VC_SMPS_SA_OFFSET                    0x0088
 #define OMAP4430_PRM_VC_SMPS_SA                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0088)
+#define OMAP4_PRM_VC_VAL_SMPS_RA_VOL_OFFSET            0x008c
 #define OMAP4430_PRM_VC_VAL_SMPS_RA_VOL                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x008c)
+#define OMAP4_PRM_VC_VAL_SMPS_RA_CMD_OFFSET            0x0090
 #define OMAP4430_PRM_VC_VAL_SMPS_RA_CMD                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0090)
+#define OMAP4_PRM_VC_VAL_CMD_VDD_CORE_L_OFFSET         0x0094
 #define OMAP4430_PRM_VC_VAL_CMD_VDD_CORE_L             OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0094)
+#define OMAP4_PRM_VC_VAL_CMD_VDD_MPU_L_OFFSET          0x0098
 #define OMAP4430_PRM_VC_VAL_CMD_VDD_MPU_L              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x0098)
+#define OMAP4_PRM_VC_VAL_CMD_VDD_IVA_L_OFFSET          0x009c
 #define OMAP4430_PRM_VC_VAL_CMD_VDD_IVA_L              OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x009c)
+#define OMAP4_PRM_VC_VAL_BYPASS_OFFSET                 0x00a0
 #define OMAP4430_PRM_VC_VAL_BYPASS                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00a0)
+#define OMAP4_PRM_VC_CFG_CHANNEL_OFFSET                        0x00a4
 #define OMAP4430_PRM_VC_CFG_CHANNEL                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00a4)
+#define OMAP4_PRM_VC_CFG_I2C_MODE_OFFSET               0x00a8
 #define OMAP4430_PRM_VC_CFG_I2C_MODE                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00a8)
+#define OMAP4_PRM_VC_CFG_I2C_CLK_OFFSET                        0x00ac
 #define OMAP4430_PRM_VC_CFG_I2C_CLK                    OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00ac)
+#define OMAP4_PRM_SRAM_COUNT_OFFSET                    0x00b0
 #define OMAP4430_PRM_SRAM_COUNT                                OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00b0)
+#define OMAP4_PRM_SRAM_WKUP_SETUP_OFFSET               0x00b4
 #define OMAP4430_PRM_SRAM_WKUP_SETUP                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00b4)
+#define OMAP4_PRM_LDO_SRAM_CORE_SETUP_OFFSET           0x00b8
 #define OMAP4430_PRM_LDO_SRAM_CORE_SETUP               OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00b8)
+#define OMAP4_PRM_LDO_SRAM_CORE_CTRL_OFFSET            0x00bc
 #define OMAP4430_PRM_LDO_SRAM_CORE_CTRL                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00bc)
+#define OMAP4_PRM_LDO_SRAM_MPU_SETUP_OFFSET            0x00c0
 #define OMAP4430_PRM_LDO_SRAM_MPU_SETUP                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00c0)
+#define OMAP4_PRM_LDO_SRAM_MPU_CTRL_OFFSET             0x00c4
 #define OMAP4430_PRM_LDO_SRAM_MPU_CTRL                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00c4)
+#define OMAP4_PRM_LDO_SRAM_IVA_SETUP_OFFSET            0x00c8
 #define OMAP4430_PRM_LDO_SRAM_IVA_SETUP                        OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00c8)
+#define OMAP4_PRM_LDO_SRAM_IVA_CTRL_OFFSET             0x00cc
 #define OMAP4430_PRM_LDO_SRAM_IVA_CTRL                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00cc)
+#define OMAP4_PRM_LDO_ABB_MPU_SETUP_OFFSET             0x00d0
 #define OMAP4430_PRM_LDO_ABB_MPU_SETUP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00d0)
+#define OMAP4_PRM_LDO_ABB_MPU_CTRL_OFFSET              0x00d4
 #define OMAP4430_PRM_LDO_ABB_MPU_CTRL                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00d4)
+#define OMAP4_PRM_LDO_ABB_IVA_SETUP_OFFSET             0x00d8
 #define OMAP4430_PRM_LDO_ABB_IVA_SETUP                 OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00d8)
+#define OMAP4_PRM_LDO_ABB_IVA_CTRL_OFFSET              0x00dc
 #define OMAP4430_PRM_LDO_ABB_IVA_CTRL                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00dc)
+#define OMAP4_PRM_LDO_BANDGAP_CTRL_OFFSET              0x00e0
 #define OMAP4430_PRM_LDO_BANDGAP_CTRL                  OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00e0)
+#define OMAP4_PRM_DEVICE_OFF_CTRL_OFFSET               0x00e4
 #define OMAP4430_PRM_DEVICE_OFF_CTRL                   OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00e4)
+#define OMAP4_PRM_PHASE1_CNDP_OFFSET                   0x00e8
 #define OMAP4430_PRM_PHASE1_CNDP                       OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00e8)
+#define OMAP4_PRM_PHASE2A_CNDP_OFFSET                  0x00ec
 #define OMAP4430_PRM_PHASE2A_CNDP                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00ec)
+#define OMAP4_PRM_PHASE2B_CNDP_OFFSET                  0x00f0
 #define OMAP4430_PRM_PHASE2B_CNDP                      OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00f0)
+#define OMAP4_PRM_MODEM_IF_CTRL_OFFSET                 0x00f4
 #define OMAP4430_PRM_MODEM_IF_CTRL                     OMAP44XX_PRM_REGADDR(OMAP4430_PRM_DEVICE_MOD, 0x00f4)
 
-/* CHIRON_PRCM */
-
+/*
+ * PRCM_MPU
+ *
+ * The PRCM_MPU is a local PRCM inside the MPU subsystem. For the PRCM (global)
+ * point of view the PRCM_MPU is a single entity. It shares the same
+ * programming model as the global PRCM and thus can be assimilate as two new
+ * MOD inside the PRCM
+ */
 
-/* CHIRON_PRCM.CHIRONSS_OCP_SOCKET_PRCM register offsets */
-#define OMAP4430_REVISION_PRCM                         OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_OCP_SOCKET_PRCM_MOD, 0x0000)
+/* PRCM_MPU.OCP_SOCKET_PRCM register offsets */
+#define OMAP4_REVISION_PRCM_OFFSET                     0x0000
+#define OMAP4430_REVISION_PRCM                         OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_OCP_SOCKET_PRCM_MOD, 0x0000)
 
-/* CHIRON_PRCM.CHIRONSS_DEVICE_PRM register offsets */
-#define OMAP4430_CHIRON_PRCM_PRM_RSTST                 OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_DEVICE_PRM_MOD, 0x0000)
+/* PRCM_MPU.DEVICE_PRM register offsets */
+#define OMAP4_PRCM_MPU_PRM_RSTST_OFFSET                        0x0000
+#define OMAP4430_PRCM_MPU_PRM_RSTST                    OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_DEVICE_PRM_MOD, 0x0000)
 
-/* CHIRON_PRCM.CHIRONSS_CPU0 register offsets */
-#define OMAP4430_PM_PDA_CPU0_PWRSTCTRL                 OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0000)
-#define OMAP4430_PM_PDA_CPU0_PWRSTST                   OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0004)
-#define OMAP4430_RM_PDA_CPU0_CPU0_CONTEXT              OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0008)
-#define OMAP4430_RM_PDA_CPU0_CPU0_RSTCTRL              OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x000c)
-#define OMAP4430_RM_PDA_CPU0_CPU0_RSTST                        OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0010)
-#define OMAP4430_CM_PDA_CPU0_CPU0_CLKCTRL              OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0014)
-#define OMAP4430_CM_PDA_CPU0_CLKSTCTRL                 OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU0_MOD, 0x0018)
+/* PRCM_MPU.CPU0 register offsets */
+#define OMAP4_PM_CPU0_PWRSTCTRL_OFFSET                 0x0000
+#define OMAP4430_PM_CPU0_PWRSTCTRL                     OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU0_MOD, 0x0000)
+#define OMAP4_PM_CPU0_PWRSTST_OFFSET                   0x0004
+#define OMAP4430_PM_CPU0_PWRSTST                       OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU0_MOD, 0x0004)
+#define OMAP4_RM_CPU0_CPU0_CONTEXT_OFFSET              0x0008
+#define OMAP4430_RM_CPU0_CPU0_CONTEXT                  OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU0_MOD, 0x0008)
+#define OMAP4_RM_CPU0_CPU0_RSTCTRL_OFFSET              0x000c
+#define OMAP4430_RM_CPU0_CPU0_RSTCTRL                  OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU0_MOD, 0x000c)
+#define OMAP4_RM_CPU0_CPU0_RSTST_OFFSET                        0x0010
+#define OMAP4430_RM_CPU0_CPU0_RSTST                    OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU0_MOD, 0x0010)
+#define OMAP4_CM_CPU0_CPU0_CLKCTRL_OFFSET              0x0014
+#define OMAP4430_CM_CPU0_CPU0_CLKCTRL                  OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU0_MOD, 0x0014)
+#define OMAP4_CM_CPU0_CLKSTCTRL_OFFSET                 0x0018
+#define OMAP4430_CM_CPU0_CLKSTCTRL                     OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU0_MOD, 0x0018)
 
-/* CHIRON_PRCM.CHIRONSS_CPU1 register offsets */
-#define OMAP4430_PM_PDA_CPU1_PWRSTCTRL                 OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0000)
-#define OMAP4430_PM_PDA_CPU1_PWRSTST                   OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0004)
-#define OMAP4430_RM_PDA_CPU1_CPU1_CONTEXT              OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0008)
-#define OMAP4430_RM_PDA_CPU1_CPU1_RSTCTRL              OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x000c)
-#define OMAP4430_RM_PDA_CPU1_CPU1_RSTST                        OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0010)
-#define OMAP4430_CM_PDA_CPU1_CPU1_CLKCTRL              OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0014)
-#define OMAP4430_CM_PDA_CPU1_CLKSTCTRL                 OMAP44XX_CHIRONSS_REGADDR(OMAP4430_CHIRONSS_CHIRONSS_CPU1_MOD, 0x0018)
+/* PRCM_MPU.CPU1 register offsets */
+#define OMAP4_PM_CPU1_PWRSTCTRL_OFFSET                 0x0000
+#define OMAP4430_PM_CPU1_PWRSTCTRL                     OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU1_MOD, 0x0000)
+#define OMAP4_PM_CPU1_PWRSTST_OFFSET                   0x0004
+#define OMAP4430_PM_CPU1_PWRSTST                       OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU1_MOD, 0x0004)
+#define OMAP4_RM_CPU1_CPU1_CONTEXT_OFFSET              0x0008
+#define OMAP4430_RM_CPU1_CPU1_CONTEXT                  OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU1_MOD, 0x0008)
+#define OMAP4_RM_CPU1_CPU1_RSTCTRL_OFFSET              0x000c
+#define OMAP4430_RM_CPU1_CPU1_RSTCTRL                  OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU1_MOD, 0x000c)
+#define OMAP4_RM_CPU1_CPU1_RSTST_OFFSET                        0x0010
+#define OMAP4430_RM_CPU1_CPU1_RSTST                    OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU1_MOD, 0x0010)
+#define OMAP4_CM_CPU1_CPU1_CLKCTRL_OFFSET              0x0014
+#define OMAP4430_CM_CPU1_CPU1_CLKCTRL                  OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU1_MOD, 0x0014)
+#define OMAP4_CM_CPU1_CLKSTCTRL_OFFSET                 0x0018
+#define OMAP4430_CM_CPU1_CLKSTCTRL                     OMAP44XX_PRCM_MPU_REGADDR(OMAP4430_PRCM_MPU_CPU1_MOD, 0x0018)
 #endif
index 6da796e..78b49a6 100644 (file)
@@ -110,8 +110,13 @@ config OMAP_IOMMU
        tristate
 
 config OMAP_IOMMU_DEBUG
-       depends on OMAP_IOMMU
-       tristate
+       tristate "Export OMAP IOMMU internals in DebugFS"
+       depends on OMAP_IOMMU && DEBUG_FS
+       help
+         Select this to see extensive information about
+         the internal state of OMAP IOMMU in debugfs.
+
+         Say N unless you know you need this.
 
 choice
        prompt "System timer"
index 5261a09..7190cbd 100644 (file)
  */
 #include <linux/kernel.h>
 #include <linux/init.h>
-#include <linux/module.h>
 #include <linux/list.h>
 #include <linux/errno.h>
 #include <linux/err.h>
 #include <linux/string.h>
 #include <linux/clk.h>
 #include <linux/mutex.h>
-#include <linux/platform_device.h>
 #include <linux/cpufreq.h>
 #include <linux/debugfs.h>
 #include <linux/io.h>
@@ -32,9 +30,9 @@ static DEFINE_SPINLOCK(clockfw_lock);
 
 static struct clk_functions *arch_clock;
 
-/*-------------------------------------------------------------------------
+/*
  * Standard clock functions defined in include/linux/clk.h
- *-------------------------------------------------------------------------*/
+ */
 
 int clk_enable(struct clk *clk)
 {
@@ -92,9 +90,9 @@ unsigned long clk_get_rate(struct clk *clk)
 }
 EXPORT_SYMBOL(clk_get_rate);
 
-/*-------------------------------------------------------------------------
+/*
  * Optional clock functions defined in include/linux/clk.h
- *-------------------------------------------------------------------------*/
+ */
 
 long clk_round_rate(struct clk *clk, unsigned long rate)
 {
@@ -140,9 +138,6 @@ int clk_set_parent(struct clk *clk, struct clk *parent)
        unsigned long flags;
        int ret = -EINVAL;
 
-       if (cpu_is_omap44xx())
-       /* OMAP4 clk framework not supported yet */
-               return 0;
        if (clk == NULL || IS_ERR(clk) || parent == NULL || IS_ERR(parent))
                return ret;
 
@@ -169,9 +164,9 @@ struct clk *clk_get_parent(struct clk *clk)
 }
 EXPORT_SYMBOL(clk_get_parent);
 
-/*-------------------------------------------------------------------------
+/*
  * OMAP specific clock functions shared between omap1 and omap2
- *-------------------------------------------------------------------------*/
+ */
 
 int __initdata mpurate;
 
@@ -222,7 +217,7 @@ void clk_reparent(struct clk *child, struct clk *parent)
 }
 
 /* Propagate rate to children */
-void propagate_rate(struct clk * tclk)
+void propagate_rate(struct clk *tclk)
 {
        struct clk *clkp;
 
@@ -389,7 +384,9 @@ void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table)
 }
 #endif
 
-/*-------------------------------------------------------------------------*/
+/*
+ *
+ */
 
 #ifdef CONFIG_OMAP_RESET_CLOCKS
 /*
@@ -404,7 +401,7 @@ static int __init clk_disable_unused(void)
                if (ck->ops == &clkops_null)
                        continue;
 
-               if (ck->usecount > 0 || ck->enable_reg == 0)
+               if (ck->usecount > 0 || !ck->enable_reg)
                        continue;
 
                spin_lock_irqsave(&clockfw_lock, flags);
index f12f0e3..219c01e 100644 (file)
@@ -47,9 +47,6 @@
 struct omap_board_config_kernel *omap_board_config;
 int omap_board_config_size;
 
-/* used by omap-smp.c and board-4430sdp.c */
-void __iomem *gic_cpu_base_addr;
-
 static const void *get_config(u16 tag, size_t len, int skip, size_t *len_out)
 {
        struct omap_board_config_kernel *kinfo = NULL;
index 1d95996..f7f571e 100644 (file)
@@ -501,7 +501,8 @@ void omap_set_dma_src_burst_mode(int lch, enum omap_dma_burst_mode burst_mode)
                        burst = 0x2;
                        break;
                }
-               /* not supported by current hardware on OMAP1
+               /*
+                * not supported by current hardware on OMAP1
                 * w |= (0x03 << 7);
                 * fall through
                 */
@@ -510,7 +511,8 @@ void omap_set_dma_src_burst_mode(int lch, enum omap_dma_burst_mode burst_mode)
                        burst = 0x3;
                        break;
                }
-               /* OMAP1 don't support burst 16
+               /*
+                * OMAP1 don't support burst 16
                 * fall through
                 */
        default:
@@ -604,7 +606,8 @@ void omap_set_dma_dest_burst_mode(int lch, enum omap_dma_burst_mode burst_mode)
                        burst = 0x3;
                        break;
                }
-               /* OMAP1 don't support burst 16
+               /*
+                * OMAP1 don't support burst 16
                 * fall through
                 */
        default:
@@ -709,6 +712,21 @@ static inline void omap2_enable_irq_lch(int lch)
        spin_unlock_irqrestore(&dma_chan_lock, flags);
 }
 
+static inline void omap2_disable_irq_lch(int lch)
+{
+       u32 val;
+       unsigned long flags;
+
+       if (!cpu_class_is_omap2())
+               return;
+
+       spin_lock_irqsave(&dma_chan_lock, flags);
+       val = dma_read(IRQENABLE_L0);
+       val &= ~(1 << lch);
+       dma_write(val, IRQENABLE_L0);
+       spin_unlock_irqrestore(&dma_chan_lock, flags);
+}
+
 int omap_request_dma(int dev_id, const char *dev_name,
                     void (*callback)(int lch, u16 ch_status, void *data),
                     void *data, int *dma_ch_out)
@@ -807,14 +825,7 @@ void omap_free_dma(int lch)
        }
 
        if (cpu_class_is_omap2()) {
-               u32 val;
-
-               spin_lock_irqsave(&dma_chan_lock, flags);
-               /* Disable interrupts */
-               val = dma_read(IRQENABLE_L0);
-               val &= ~(1 << lch);
-               dma_write(val, IRQENABLE_L0);
-               spin_unlock_irqrestore(&dma_chan_lock, flags);
+               omap2_disable_irq_lch(lch);
 
                /* Clear the CSR register and IRQ status register */
                dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR(lch));
@@ -1277,8 +1288,10 @@ int omap_request_dma_chain(int dev_id, const char *dev_name,
                return -EINVAL;
        }
 
-       /* Allocate a queue to maintain the status of the channels
-        * in the chain */
+       /*
+        * Allocate a queue to maintain the status of the channels
+        * in the chain
+        */
        channels = kmalloc(sizeof(*channels) * no_of_chans, GFP_KERNEL);
        if (channels == NULL) {
                printk(KERN_ERR "omap_dma: No memory for channel queue\n");
@@ -1907,7 +1920,8 @@ static int omap2_dma_handle_ch(int ch)
                printk(KERN_INFO "DMA transaction error with device %d\n",
                       dma_chan[ch].dev_id);
                if (cpu_class_is_omap2()) {
-                       /* Errata: sDMA Channel is not disabled
+                       /*
+                        * Errata: sDMA Channel is not disabled
                         * after a transaction error. So we explicitely
                         * disable the channel
                         */
@@ -2107,6 +2121,9 @@ static int __init omap_init_dma(void)
 
        for (ch = 0; ch < dma_chan_count; ch++) {
                omap_clear_dma(ch);
+               if (cpu_class_is_omap2())
+                       omap2_disable_irq_lch(ch);
+
                dma_chan[ch].dev_id = -1;
                dma_chan[ch].next_lch = -1;
 
index 4d99dfb..c64875f 100644 (file)
@@ -264,8 +264,8 @@ static struct omap_dm_timer omap4_dm_timers[] = {
        { .phys_base = 0x4a320000, .irq = OMAP44XX_IRQ_GPT12 },
 };
 static const char *omap4_dm_source_names[] __initdata = {
-       "sys_ck",
-       "omap_32k_fck",
+       "sys_clkin_ck",
+       "sys_32k_ck",
        NULL
 };
 static struct clk *omap4_dm_source_clocks[2];
index 45a225d..dc2ac42 100644 (file)
@@ -27,6 +27,7 @@
 #include <mach/irqs.h>
 #include <mach/gpio.h>
 #include <asm/mach/irq.h>
+#include <plat/powerdomain.h>
 
 /*
  * OMAP1510 GPIO registers
 #define OMAP4_GPIO_IRQSTATUSCLR1       0x0040
 #define OMAP4_GPIO_IRQWAKEN0           0x0044
 #define OMAP4_GPIO_IRQWAKEN1           0x0048
-#define OMAP4_GPIO_SYSSTATUS           0x0104
+#define OMAP4_GPIO_SYSSTATUS           0x0114
+#define OMAP4_GPIO_IRQENABLE1          0x011c
+#define OMAP4_GPIO_WAKE_EN             0x0120
+#define OMAP4_GPIO_IRQSTATUS2          0x0128
+#define OMAP4_GPIO_IRQENABLE2          0x012c
 #define OMAP4_GPIO_CTRL                        0x0130
 #define OMAP4_GPIO_OE                  0x0134
 #define OMAP4_GPIO_DATAIN              0x0138
 #define OMAP4_GPIO_FALLINGDETECT       0x014c
 #define OMAP4_GPIO_DEBOUNCENABLE       0x0150
 #define OMAP4_GPIO_DEBOUNCINGTIME      0x0154
+#define OMAP4_GPIO_CLEARIRQENABLE1     0x0160
+#define OMAP4_GPIO_SETIRQENABLE1       0x0164
+#define OMAP4_GPIO_CLEARWKUENA         0x0180
+#define OMAP4_GPIO_SETWKUENA           0x0184
 #define OMAP4_GPIO_CLEARDATAOUT                0x0190
 #define OMAP4_GPIO_SETDATAOUT          0x0194
 /*
@@ -195,6 +204,7 @@ struct gpio_bank {
        struct gpio_chip chip;
        struct clk *dbck;
        u32 mod_usage;
+       u32 dbck_enable_mask;
 };
 
 #define METHOD_MPUIO           0
@@ -303,8 +313,6 @@ struct omap3_gpio_regs {
        u32 risingdetect;
        u32 fallingdetect;
        u32 dataout;
-       u32 setwkuena;
-       u32 setdataout;
 };
 
 static struct omap3_gpio_regs gpio_context[OMAP34XX_NR_GPIOS];
@@ -591,11 +599,15 @@ static int _get_gpio_dataout(struct gpio_bank *bank, int gpio)
                reg += OMAP7XX_GPIO_DATA_OUTPUT;
                break;
 #endif
-#ifdef CONFIG_ARCH_OMAP2PLUS
+#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
        case METHOD_GPIO_24XX:
-       case METHOD_GPIO_44XX:
                reg += OMAP24XX_GPIO_DATAOUT;
                break;
+#endif
+#ifdef CONFIG_ARCH_OMAP4
+       case METHOD_GPIO_44XX:
+               reg += OMAP4_GPIO_DATAOUT;
+               break;
 #endif
        default:
                return -EINVAL;
@@ -646,6 +658,7 @@ void omap_set_gpio_debounce(int gpio, int enable)
                goto done;
 
        if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
+               bank->dbck_enable_mask = val;
                if (enable)
                        clk_enable(bank->dbck);
                else
@@ -724,15 +737,27 @@ static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio,
                                                         OMAP4_GPIO_IRQWAKEN0);
                        }
                } else {
-                       if (trigger != 0)
+                       /*
+                        * GPIO wakeup request can only be generated on edge
+                        * transitions
+                        */
+                       if (trigger & IRQ_TYPE_EDGE_BOTH)
                                __raw_writel(1 << gpio, bank->base
                                        + OMAP24XX_GPIO_SETWKUENA);
                        else
                                __raw_writel(1 << gpio, bank->base
                                        + OMAP24XX_GPIO_CLEARWKUENA);
                }
-       } else {
-               if (trigger != 0)
+       }
+       /* This part needs to be executed always for OMAP34xx */
+       if (cpu_is_omap34xx() || (bank->non_wakeup_gpios & gpio_bit)) {
+               /*
+                * Log the edge gpio and manually trigger the IRQ
+                * after resume if the input level changes
+                * to avoid irq lost during PER RET/OFF mode
+                * Applies for omap2 non-wakeup gpio and all omap3 gpios
+                */
+               if (trigger & IRQ_TYPE_EDGE_BOTH)
                        bank->enabled_non_wakeup_gpios |= gpio_bit;
                else
                        bank->enabled_non_wakeup_gpios &= ~gpio_bit;
@@ -1200,11 +1225,17 @@ static int omap_gpio_request(struct gpio_chip *chip, unsigned offset)
 #endif
        if (!cpu_class_is_omap1()) {
                if (!bank->mod_usage) {
+                       void __iomem *reg = bank->base;
                        u32 ctrl;
-                       ctrl = __raw_readl(bank->base + OMAP24XX_GPIO_CTRL);
-                       ctrl &= 0xFFFFFFFE;
+
+                       if (cpu_is_omap24xx() || cpu_is_omap34xx())
+                               reg += OMAP24XX_GPIO_CTRL;
+                       else if (cpu_is_omap44xx())
+                               reg += OMAP4_GPIO_CTRL;
+                       ctrl = __raw_readl(reg);
                        /* Module is enabled, clocks are not gated */
-                       __raw_writel(ctrl, bank->base + OMAP24XX_GPIO_CTRL);
+                       ctrl &= 0xFFFFFFFE;
+                       __raw_writel(ctrl, reg);
                }
                bank->mod_usage |= 1 << offset;
        }
@@ -1226,22 +1257,34 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset)
                __raw_writel(1 << offset, reg);
        }
 #endif
-#ifdef CONFIG_ARCH_OMAP2PLUS
-       if ((bank->method == METHOD_GPIO_24XX) ||
-                       (bank->method == METHOD_GPIO_44XX)) {
+#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
+       if (bank->method == METHOD_GPIO_24XX) {
                /* Disable wake-up during idle for dynamic tick */
                void __iomem *reg = bank->base + OMAP24XX_GPIO_CLEARWKUENA;
                __raw_writel(1 << offset, reg);
        }
+#endif
+#ifdef CONFIG_ARCH_OMAP4
+       if (bank->method == METHOD_GPIO_44XX) {
+               /* Disable wake-up during idle for dynamic tick */
+               void __iomem *reg = bank->base + OMAP4_GPIO_IRQWAKEN0;
+               __raw_writel(1 << offset, reg);
+       }
 #endif
        if (!cpu_class_is_omap1()) {
                bank->mod_usage &= ~(1 << offset);
                if (!bank->mod_usage) {
+                       void __iomem *reg = bank->base;
                        u32 ctrl;
-                       ctrl = __raw_readl(bank->base + OMAP24XX_GPIO_CTRL);
+
+                       if (cpu_is_omap24xx() || cpu_is_omap34xx())
+                               reg += OMAP24XX_GPIO_CTRL;
+                       else if (cpu_is_omap44xx())
+                               reg += OMAP4_GPIO_CTRL;
+                       ctrl = __raw_readl(reg);
                        /* Module is disabled, clocks are gated */
                        ctrl |= 1;
-                       __raw_writel(ctrl, bank->base + OMAP24XX_GPIO_CTRL);
+                       __raw_writel(ctrl, reg);
                }
        }
        _reset_gpio(bank, bank->chip.base + offset);
@@ -1570,9 +1613,14 @@ static int gpio_is_input(struct gpio_bank *bank, int mask)
                reg += OMAP7XX_GPIO_DIR_CONTROL;
                break;
        case METHOD_GPIO_24XX:
-       case METHOD_GPIO_44XX:
                reg += OMAP24XX_GPIO_OE;
                break;
+       case METHOD_GPIO_44XX:
+               reg += OMAP4_GPIO_OE;
+               break;
+       default:
+               WARN_ONCE(1, "gpio_is_input: incorrect OMAP GPIO method");
+               return -EINVAL;
        }
        return __raw_readl(reg) & mask;
 }
@@ -1845,7 +1893,8 @@ static int __init _omap_gpio_init(void)
                                __raw_writel(0, bank->base +
                                                OMAP24XX_GPIO_CTRL);
                        }
-                       if (i < ARRAY_SIZE(non_wakeup_gpios))
+                       if (cpu_is_omap24xx() &&
+                           i < ARRAY_SIZE(non_wakeup_gpios))
                                bank->non_wakeup_gpios = non_wakeup_gpios[i];
                        gpio_count = 32;
                }
@@ -2028,16 +2077,27 @@ static struct sys_device omap_gpio_device = {
 
 static int workaround_enabled;
 
-void omap2_gpio_prepare_for_retention(void)
+void omap2_gpio_prepare_for_idle(int power_state)
 {
        int i, c = 0;
+       int min = 0;
 
-       /* Remove triggering for all non-wakeup GPIOs.  Otherwise spurious
-        * IRQs will be generated.  See OMAP2420 Errata item 1.101. */
-       for (i = 0; i < gpio_bank_count; i++) {
+       if (cpu_is_omap34xx())
+               min = 1;
+
+       for (i = min; i < gpio_bank_count; i++) {
                struct gpio_bank *bank = &gpio_bank[i];
                u32 l1, l2;
 
+               if (bank->dbck_enable_mask)
+                       clk_disable(bank->dbck);
+
+               if (power_state > PWRDM_POWER_OFF)
+                       continue;
+
+               /* If going to OFF, remove triggering for all
+                * non-wakeup GPIOs.  Otherwise spurious IRQs will be
+                * generated.  See OMAP2420 Errata item 1.101. */
                if (!(bank->enabled_non_wakeup_gpios))
                        continue;
 
@@ -2085,16 +2145,23 @@ void omap2_gpio_prepare_for_retention(void)
        workaround_enabled = 1;
 }
 
-void omap2_gpio_resume_after_retention(void)
+void omap2_gpio_resume_after_idle(void)
 {
        int i;
+       int min = 0;
 
-       if (!workaround_enabled)
-               return;
-       for (i = 0; i < gpio_bank_count; i++) {
+       if (cpu_is_omap34xx())
+               min = 1;
+       for (i = min; i < gpio_bank_count; i++) {
                struct gpio_bank *bank = &gpio_bank[i];
                u32 l, gen, gen0, gen1;
 
+               if (bank->dbck_enable_mask)
+                       clk_enable(bank->dbck);
+
+               if (!workaround_enabled)
+                       continue;
+
                if (!(bank->enabled_non_wakeup_gpios))
                        continue;
 
@@ -2119,7 +2186,7 @@ void omap2_gpio_resume_after_retention(void)
                 * horribly racy, but it's the best we can do to work around
                 * this silicon bug. */
                l ^= bank->saved_datain;
-               l &= bank->non_wakeup_gpios;
+               l &= bank->enabled_non_wakeup_gpios;
 
                /*
                 * No need to generate IRQs for the rising edge for gpio IRQs
@@ -2207,10 +2274,6 @@ void omap_gpio_save_context(void)
                        __raw_readl(bank->base + OMAP24XX_GPIO_FALLINGDETECT);
                gpio_context[i].dataout =
                        __raw_readl(bank->base + OMAP24XX_GPIO_DATAOUT);
-               gpio_context[i].setwkuena =
-                       __raw_readl(bank->base + OMAP24XX_GPIO_SETWKUENA);
-               gpio_context[i].setdataout =
-                       __raw_readl(bank->base + OMAP24XX_GPIO_SETDATAOUT);
        }
 }
 
@@ -2243,10 +2306,6 @@ void omap_gpio_restore_context(void)
                                bank->base + OMAP24XX_GPIO_FALLINGDETECT);
                __raw_writel(gpio_context[i].dataout,
                                bank->base + OMAP24XX_GPIO_DATAOUT);
-               __raw_writel(gpio_context[i].setwkuena,
-                               bank->base + OMAP24XX_GPIO_SETWKUENA);
-               __raw_writel(gpio_context[i].setdataout,
-                               bank->base + OMAP24XX_GPIO_SETDATAOUT);
        }
 }
 #endif
@@ -2286,110 +2345,3 @@ static int __init omap_gpio_sysinit(void)
 }
 
 arch_initcall(omap_gpio_sysinit);
-
-
-#ifdef CONFIG_DEBUG_FS
-
-#include <linux/debugfs.h>
-#include <linux/seq_file.h>
-
-static int dbg_gpio_show(struct seq_file *s, void *unused)
-{
-       unsigned        i, j, gpio;
-
-       for (i = 0, gpio = 0; i < gpio_bank_count; i++) {
-               struct gpio_bank        *bank = gpio_bank + i;
-               unsigned                bankwidth = 16;
-               u32                     mask = 1;
-
-               if (bank_is_mpuio(bank))
-                       gpio = OMAP_MPUIO(0);
-               else if (cpu_class_is_omap2() || cpu_is_omap7xx())
-                       bankwidth = 32;
-
-               for (j = 0; j < bankwidth; j++, gpio++, mask <<= 1) {
-                       unsigned        irq, value, is_in, irqstat;
-                       const char      *label;
-
-                       label = gpiochip_is_requested(&bank->chip, j);
-                       if (!label)
-                               continue;
-
-                       irq = bank->virtual_irq_start + j;
-                       value = gpio_get_value(gpio);
-                       is_in = gpio_is_input(bank, mask);
-
-                       if (bank_is_mpuio(bank))
-                               seq_printf(s, "MPUIO %2d ", j);
-                       else
-                               seq_printf(s, "GPIO %3d ", gpio);
-                       seq_printf(s, "(%-20.20s): %s %s",
-                                       label,
-                                       is_in ? "in " : "out",
-                                       value ? "hi"  : "lo");
-
-/* FIXME for at least omap2, show pullup/pulldown state */
-
-                       irqstat = irq_desc[irq].status;
-#if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP2PLUS)
-                       if (is_in && ((bank->suspend_wakeup & mask)
-                                       || irqstat & IRQ_TYPE_SENSE_MASK)) {
-                               char    *trigger = NULL;
-
-                               switch (irqstat & IRQ_TYPE_SENSE_MASK) {
-                               case IRQ_TYPE_EDGE_FALLING:
-                                       trigger = "falling";
-                                       break;
-                               case IRQ_TYPE_EDGE_RISING:
-                                       trigger = "rising";
-                                       break;
-                               case IRQ_TYPE_EDGE_BOTH:
-                                       trigger = "bothedge";
-                                       break;
-                               case IRQ_TYPE_LEVEL_LOW:
-                                       trigger = "low";
-                                       break;
-                               case IRQ_TYPE_LEVEL_HIGH:
-                                       trigger = "high";
-                                       break;
-                               case IRQ_TYPE_NONE:
-                                       trigger = "(?)";
-                                       break;
-                               }
-                               seq_printf(s, ", irq-%d %-8s%s",
-                                               irq, trigger,
-                                               (bank->suspend_wakeup & mask)
-                                                       ? " wakeup" : "");
-                       }
-#endif
-                       seq_printf(s, "\n");
-               }
-
-               if (bank_is_mpuio(bank)) {
-                       seq_printf(s, "\n");
-                       gpio = 0;
-               }
-       }
-       return 0;
-}
-
-static int dbg_gpio_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, dbg_gpio_show, &inode->i_private);
-}
-
-static const struct file_operations debug_fops = {
-       .open           = dbg_gpio_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
-
-static int __init omap_gpio_debuginit(void)
-{
-       (void) debugfs_create_file("omap_gpio", S_IRUGO,
-                                       NULL, NULL, &debug_fops);
-       return 0;
-}
-late_initcall(omap_gpio_debuginit);
-#endif
index f044b59..eec2b49 100644 (file)
@@ -38,6 +38,7 @@
 #define OMAP2_I2C_BASE1                0x48070000
 #define OMAP2_I2C_BASE2                0x48072000
 #define OMAP2_I2C_BASE3                0x48060000
+#define OMAP4_I2C_BASE4                0x48350000
 
 static const char name[] = "i2c_omap";
 
@@ -54,11 +55,14 @@ static const char name[] = "i2c_omap";
 
 static struct resource i2c_resources[][2] = {
        { I2C_RESOURCE_BUILDER(0, 0) },
-#if    defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
-       { I2C_RESOURCE_BUILDER(OMAP2_I2C_BASE2, INT_24XX_I2C2_IRQ) },
+#if    defined(CONFIG_ARCH_OMAP2PLUS)
+       { I2C_RESOURCE_BUILDER(OMAP2_I2C_BASE2, 0) },
 #endif
-#if    defined(CONFIG_ARCH_OMAP3)
-       { I2C_RESOURCE_BUILDER(OMAP2_I2C_BASE3, INT_34XX_I2C3_IRQ) },
+#if    defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
+       { I2C_RESOURCE_BUILDER(OMAP2_I2C_BASE3, 0) },
+#endif
+#if    defined(CONFIG_ARCH_OMAP4)
+       { I2C_RESOURCE_BUILDER(OMAP4_I2C_BASE4, 0) },
 #endif
 };
 
@@ -76,12 +80,15 @@ static struct resource i2c_resources[][2] = {
 static struct omap_i2c_bus_platform_data i2c_pdata[ARRAY_SIZE(i2c_resources)];
 static struct platform_device omap_i2c_devices[] = {
        I2C_DEV_BUILDER(1, i2c_resources[0], &i2c_pdata[0]),
-#if    defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
+#if    defined(CONFIG_ARCH_OMAP2PLUS)
        I2C_DEV_BUILDER(2, i2c_resources[1], &i2c_pdata[1]),
 #endif
-#if    defined(CONFIG_ARCH_OMAP3)
+#if    defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
        I2C_DEV_BUILDER(3, i2c_resources[2], &i2c_pdata[2]),
 #endif
+#if    defined(CONFIG_ARCH_OMAP4)
+       I2C_DEV_BUILDER(4, i2c_resources[3], &i2c_pdata[3]),
+#endif
 };
 
 #define OMAP_I2C_CMDLINE_SETUP (BIT(31))
@@ -96,37 +103,60 @@ static int __init omap_i2c_nr_ports(void)
                ports = 2;
        else if (cpu_is_omap34xx())
                ports = 3;
+       else if (cpu_is_omap44xx())
+               ports = 4;
 
        return ports;
 }
 
-static int __init omap_i2c_add_bus(int bus_id)
+/* Shared between omap2 and 3 */
+static resource_size_t omap2_i2c_irq[3] __initdata = {
+       INT_24XX_I2C1_IRQ,
+       INT_24XX_I2C2_IRQ,
+       INT_34XX_I2C3_IRQ,
+};
+
+static resource_size_t omap4_i2c_irq[4] __initdata = {
+       OMAP44XX_IRQ_I2C1,
+       OMAP44XX_IRQ_I2C2,
+       OMAP44XX_IRQ_I2C3,
+       OMAP44XX_IRQ_I2C4,
+};
+
+static inline int omap1_i2c_add_bus(struct platform_device *pdev, int bus_id)
 {
-       struct platform_device *pdev;
        struct omap_i2c_bus_platform_data *pd;
        struct resource *res;
-       resource_size_t base, irq;
 
-       pdev = &omap_i2c_devices[bus_id - 1];
        pd = pdev->dev.platform_data;
+       res = pdev->resource;
+       res[0].start = OMAP1_I2C_BASE;
+       res[0].end = res[0].start + OMAP_I2C_SIZE;
+       res[1].start = INT_I2C;
+       omap1_i2c_mux_pins(bus_id);
+
+       return platform_device_register(pdev);
+}
+
+static inline int omap2_i2c_add_bus(struct platform_device *pdev, int bus_id)
+{
+       struct resource *res;
+       resource_size_t *irq;
+
+       res = pdev->resource;
+
+       if (!cpu_is_omap44xx())
+               irq = omap2_i2c_irq;
+       else
+               irq = omap4_i2c_irq;
+
        if (bus_id == 1) {
-               res = pdev->resource;
-               if (cpu_class_is_omap1()) {
-                       base = OMAP1_I2C_BASE;
-                       irq = INT_I2C;
-               } else {
-                       base = OMAP2_I2C_BASE1;
-                       irq = INT_24XX_I2C1_IRQ;
-               }
-               res[0].start = base;
-               res[0].end = base + OMAP_I2C_SIZE;
-               res[1].start = irq;
+               res[0].start = OMAP2_I2C_BASE1;
+               res[0].end = res[0].start + OMAP_I2C_SIZE;
        }
 
-       if (cpu_class_is_omap1())
-               omap1_i2c_mux_pins(bus_id);
-       if (cpu_class_is_omap2())
-               omap2_i2c_mux_pins(bus_id);
+       res[1].start = irq[bus_id - 1];
+       omap2_i2c_mux_pins(bus_id);
 
        /*
         * When waiting for completion of a i2c transfer, we need to
@@ -134,12 +164,28 @@ static int __init omap_i2c_add_bus(int bus_id)
         * ensure quick enough wakeup from idle, when transfer
         * completes.
         */
-       if (cpu_is_omap34xx())
+       if (cpu_is_omap34xx()) {
+               struct omap_i2c_bus_platform_data *pd;
+
+               pd = pdev->dev.platform_data;
                pd->set_mpu_wkup_lat = omap_pm_set_max_mpu_wakeup_lat;
+       }
 
        return platform_device_register(pdev);
 }
 
+static int __init omap_i2c_add_bus(int bus_id)
+{
+       struct platform_device *pdev;
+
+       pdev = &omap_i2c_devices[bus_id - 1];
+
+       if (cpu_class_is_omap1())
+               return omap1_i2c_add_bus(pdev, bus_id);
+       else
+               return omap2_i2c_add_bus(pdev, bus_id);
+}
+
 /**
  * omap_i2c_bus_setup - Process command line options for the I2C bus speed
  * @str: String of options
index 34f7fa9..dfc472c 100644 (file)
@@ -196,15 +196,15 @@ extern struct clk dummy_ck;
 #define INVERT_ENABLE          (1 << 4)        /* 0 enables, 1 disables */
 
 /* Clksel_rate flags */
-#define DEFAULT_RATE           (1 << 0)
-#define RATE_IN_242X           (1 << 1)
-#define RATE_IN_243X           (1 << 2)
-#define RATE_IN_343X           (1 << 3)        /* rates common to all 343X */
-#define RATE_IN_3430ES2                (1 << 4)        /* 3430ES2 rates only */
-#define RATE_IN_36XX           (1 << 5)
-#define RATE_IN_4430           (1 << 6)
+#define RATE_IN_242X           (1 << 0)
+#define RATE_IN_243X           (1 << 1)
+#define RATE_IN_3XXX           (1 << 2)        /* rates common to all OMAP3 */
+#define RATE_IN_3430ES2                (1 << 3)        /* 3430ES2 rates only */
+#define RATE_IN_36XX           (1 << 4)
+#define RATE_IN_4430           (1 << 5)
 
 #define RATE_IN_24XX           (RATE_IN_242X | RATE_IN_243X)
 
+#define RATE_IN_3430ES2PLUS    (RATE_IN_3430ES2 | RATE_IN_36XX)
 
 #endif
index 7556e27..d265018 100644 (file)
@@ -31,9 +31,6 @@
 
 struct sys_timer;
 
-/* used by omap-smp.c and board-4430sdp.c */
-extern void __iomem *gic_cpu_base_addr;
-
 extern void omap_map_common_io(void);
 extern struct sys_timer omap_timer;
 
index a56deee..131bf40 100644 (file)
 /* 44xx control status register offset */
 #define OMAP44XX_CONTROL_STATUS                0x2c4
 
+/* 44xx-only CONTROL_GENERAL register offsets */
+#define OMAP44XX_CONTROL_MMC1                  0x628
+#define OMAP44XX_CONTROL_PBIAS_LITE            0x600
 /*
  * REVISIT: This list of registers is not comprehensive - there are more
  * that should be added.
 #define OMAP2_PBIASLITEPWRDNZ0         (1 << 1)
 #define OMAP2_PBIASLITEVMODE0          (1 << 0)
 
+/* CONTROL_PBIAS_LITE bits for OMAP4 */
+#define OMAP4_MMC1_PWRDNZ                      (1 << 26)
+#define OMAP4_MMC1_PBIASLITE_HIZ_MODE          (1 << 25)
+#define OMAP4_MMC1_PBIASLITE_SUPPLY_HI_OUT     (1 << 24)
+#define OMAP4_MMC1_PBIASLITE_VMODE_ERROR       (1 << 23)
+#define OMAP4_MMC1_PBIASLITE_PWRDNZ            (1 << 22)
+#define OMAP4_MMC1_PBIASLITE_VMODE             (1 << 21)
+#define OMAP4_USBC1_ICUSB_PWRDNZ               (1 << 20)
+
+#define OMAP4_CONTROL_SDMMC1_PUSTRENGTHGRP0    (1 << 31)
+#define OMAP4_CONTROL_SDMMC1_PUSTRENGTHGRP1    (1 << 30)
+#define OMAP4_CONTROL_SDMMC1_PUSTRENGTHGRP2    (1 << 29)
+#define OMAP4_CONTROL_SDMMC1_PUSTRENGTHGRP3    (1 << 28)
+#define OMAP4_CONTROL_SDMMC1_DR0_SPEEDCTRL     (1 << 27)
+#define OMAP4_CONTROL_SDMMC1_DR1_SPEEDCTRL     (1 << 26)
+#define OMAP4_CONTROL_SDMMC1_DR2_SPEEDCTRL     (1 << 25)
+
 /* CONTROL_PROG_IO1 bits */
 #define OMAP3630_PRG_SDMMC1_SPEEDCTRL  (1 << 20)
 
index de7c547..de1c604 100644 (file)
@@ -72,8 +72,8 @@
                                 IH_GPIO_BASE + (nr))
 
 extern int omap_gpio_init(void);       /* Call from board init only */
-extern void omap2_gpio_prepare_for_retention(void);
-extern void omap2_gpio_resume_after_retention(void);
+extern void omap2_gpio_prepare_for_idle(int power_state);
+extern void omap2_gpio_resume_after_idle(void);
 extern void omap_set_gpio_debounce(int gpio, int enable);
 extern void omap_set_gpio_debounce_time(int gpio, int enable);
 extern void omap_gpio_save_context(void);
index 4017019..c01d9f0 100644 (file)
@@ -428,4 +428,8 @@ void omap3_intc_resume_idle(void);
 
 #include <mach/hardware.h>
 
+#ifdef CONFIG_FIQ
+#define FIQ_START              1024
+#endif
+
 #endif
index a1bac07..c835f1e 100644 (file)
@@ -102,6 +102,10 @@ struct omap_mmc_platform_data {
                /* Regulator off remapped to sleep */
                unsigned vcc_aux_disable_is_sleep:1;
 
+               /* we can put the features above into this variable */
+#define HSMMC_HAS_PBIAS                (1 << 0)
+               unsigned features;
+
                int switch_pin;                 /* gpio (card detect) */
                int gpio_wp;                    /* gpio (write protect) */
 
index f235d32..ffd909f 100644 (file)
@@ -61,9 +61,9 @@
 #  define OMAP_NAME omap16xx
 # endif
 #endif
-#if (defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
+#ifdef CONFIG_ARCH_OMAP2PLUS
 # if (defined(OMAP_NAME) || defined(MULTI_OMAP1))
-#  error "OMAP1 and OMAP2 can't be selected at the same time"
+#  error "OMAP1 and OMAP2PLUS can't be selected at the same time"
 # endif
 #endif
 #ifdef CONFIG_ARCH_OMAP2420
 #  define OMAP_NAME omap2430
 # endif
 #endif
-#ifdef CONFIG_ARCH_OMAP3430
+#ifdef CONFIG_ARCH_OMAP3
 # ifdef OMAP_NAME
 #  undef  MULTI_OMAP2
 #  define MULTI_OMAP2
 # else
-#  define OMAP_NAME omap3430
+#  define OMAP_NAME omap3
+# endif
+#endif
+#ifdef CONFIG_ARCH_OMAP4
+# ifdef OMAP_NAME
+#  undef  MULTI_OMAP2
+#  define MULTI_OMAP2
+# else
+#  define OMAP_NAME omap4
 # endif
 #endif
 
index b3ef1a7..8b3f12f 100644 (file)
@@ -30,6 +30,7 @@
 #define OMAP4430_CM_BASE               OMAP4430_CM1_BASE
 #define OMAP4430_CM2_BASE              0x4a008000
 #define OMAP4430_PRM_BASE              0x4a306000
+#define OMAP4430_PRCM_MPU_BASE         0x48243000
 #define OMAP44XX_GPMC_BASE             0x50000000
 #define OMAP443X_SCM_BASE              0x4a002000
 #define OMAP443X_CTRL_BASE             0x4a100000
@@ -48,5 +49,8 @@
 #define OMAP44XX_MAILBOX_BASE          (L4_44XX_BASE + 0xF4000)
 #define OMAP44XX_HSUSB_OTG_BASE                (L4_44XX_BASE + 0xAB000)
 
+#define OMAP4_MMU1_BASE                        0x55082000
+#define OMAP4_MMU2_BASE                        0x4A066000
+
 #endif /* __ASM_ARCH_OMAP44XX_H */
 
index 36d6ea5..0eccc09 100644 (file)
@@ -176,9 +176,8 @@ struct omap_hwmod_addr_space {
 #define OCP_USER_SDMA                  (1 << 1)
 
 /* omap_hwmod_ocp_if.flags bits */
-#define OCPIF_HAS_IDLEST               (1 << 0)
-#define OCPIF_SWSUP_IDLE               (1 << 1)
-#define OCPIF_CAN_BURST                        (1 << 2)
+#define OCPIF_SWSUP_IDLE               (1 << 0)
+#define OCPIF_CAN_BURST                        (1 << 1)
 
 /**
  * struct omap_hwmod_ocp_if - OCP interface data
@@ -327,14 +326,12 @@ struct omap_hwmod_omap2_prcm {
 
 /**
  * struct omap_hwmod_omap4_prcm - OMAP4-specific PRCM data
- * @module_offs: PRCM submodule offset from the start of the PRM/CM1/CM2
- * @device_offs: device register offset from @module_offs
+ * @clkctrl_reg: PRCM address of the clock control register
  * @submodule_wkdep_bit: bit shift of the WKDEP range
  */
 struct omap_hwmod_omap4_prcm {
-       u32 module_offs;
-       u16 device_offs;
-       u8 submodule_wkdep_bit;
+       void __iomem    *clkctrl_reg;
+       u8              submodule_wkdep_bit;
 };
 
 
@@ -353,6 +350,8 @@ struct omap_hwmod_omap4_prcm {
  *     when module is enabled, rather than the default, which is to
  *     enable autoidle
  * HWMOD_SET_DEFAULT_CLOCKACT: program CLOCKACTIVITY bits at startup
+ * HWMOD_NO_IDLEST : this module does not have idle status - this is the case
+ *     only for few initiator modules on OMAP2 & 3.
  */
 #define HWMOD_SWSUP_SIDLE                      (1 << 0)
 #define HWMOD_SWSUP_MSTANDBY                   (1 << 1)
@@ -360,6 +359,7 @@ struct omap_hwmod_omap4_prcm {
 #define HWMOD_INIT_NO_IDLE                     (1 << 3)
 #define HWMOD_NO_OCP_AUTOIDLE                  (1 << 4)
 #define HWMOD_SET_DEFAULT_CLOCKACT             (1 << 5)
+#define HWMOD_NO_IDLEST                                (1 << 6)
 
 /*
  * omap_hwmod._int_flags definitions
index d82b2c0..fb6ec74 100644 (file)
@@ -31,6 +31,7 @@
 #define PWRDM_MAX_PWRSTS       4
 
 /* Powerdomain allowable state bitfields */
+#define PWRSTS_ON              (1 << PWRDM_POWER_ON)
 #define PWRSTS_OFF_ON          ((1 << PWRDM_POWER_OFF) | \
                                 (1 << PWRDM_POWER_ON))
 
                                          * in MEM bank 1 position. This is
                                          * true for OMAP3430
                                          */
+#define PWRDM_HAS_LOWPOWERSTATECHANGE  (1 << 2) /*
+                                                 * support to transition from a
+                                                 * sleep state to a lower sleep
+                                                 * state without waking up the
+                                                 * powerdomain
+                                                 */
 
 /*
  * Number of memory banks that are power-controllable. On OMAP4430, the
index 83dce4c..19145f5 100644 (file)
 
 #include <linux/init.h>
 
+/*
+ * Memory entry used for the DEBUG_LL UART configuration. See also
+ * uncompress.h and debug-macro.S.
+ *
+ * Note that using a memory location for storing the UART configuration
+ * has at least two limitations:
+ *
+ * 1. Kernel uncompress code cannot overlap OMAP_UART_INFO as the
+ *    uncompress code could then partially overwrite itself
+ * 2. We assume printascii is called at least once before paging_init,
+ *    and addruart has a chance to read OMAP_UART_INFO
+ */
+#define OMAP_UART_INFO         (PHYS_OFFSET + 0x3ffc)
+
 /* OMAP1 serial ports */
 #define OMAP1_UART1_BASE       0xfffb0000
 #define OMAP1_UART2_BASE       0xfffb0800
@@ -39,7 +53,7 @@
 
 /* External port on Zoom2/3 */
 #define ZOOM_UART_BASE         0x10000000
-#define ZOOM_UART_VIRT         0xfb000000
+#define ZOOM_UART_VIRT         0xfa400000
 
 #define OMAP_PORT_SHIFT                2
 #define OMAP7XX_PORT_SHIFT     0
index 81d9ec5..bbedd71 100644 (file)
 #include <linux/types.h>
 #include <linux/serial_reg.h>
 
+#include <asm/memory.h>
 #include <asm/mach-types.h>
 
 #include <plat/serial.h>
 
-static volatile u8 *uart1_base;
-static int uart1_shift;
-
 static volatile u8 *uart_base;
 static int uart_shift;
 
 /*
- * Store the DEBUG_LL uart number into UART1 scratchpad register.
+ * Store the DEBUG_LL uart number into memory.
  * See also debug-macro.S, and serial.c for related code.
- *
- * Please note that we currently assume that:
- * - UART1 clocks are enabled for register access
- * - UART1 scratchpad register can be used
  */
-static void set_uart1_scratchpad(unsigned char port)
+static void set_omap_uart_info(unsigned char port)
 {
-       uart1_base[UART_SCR << uart1_shift] = port;
+       *(volatile u32 *)OMAP_UART_INFO = port;
 }
 
 static void putc(int c)
@@ -60,42 +54,38 @@ static inline void flush(void)
 /*
  * Macros to configure UART1 and debug UART
  */
-#define _DEBUG_LL_ENTRY(mach, uart1_phys, uart1_shft,                  \
-                       dbg_uart, dbg_shft, dbg_id)                     \
+#define _DEBUG_LL_ENTRY(mach, dbg_uart, dbg_shft, dbg_id)              \
        if (machine_is_##mach()) {                                      \
-               uart1_base = (volatile u8 *)(uart1_phys);               \
-               uart1_shift = (uart1_shft);                             \
                uart_base = (volatile u8 *)(dbg_uart);                  \
                uart_shift = (dbg_shft);                                \
                port = (dbg_id);                                        \
-               set_uart1_scratchpad(port);                             \
+               set_omap_uart_info(port);                               \
                break;                                                  \
        }
 
 #define DEBUG_LL_OMAP7XX(p, mach)                                      \
-       _DEBUG_LL_ENTRY(mach, OMAP1_UART1_BASE, OMAP7XX_PORT_SHIFT,     \
-               OMAP1_UART##p##_BASE, OMAP7XX_PORT_SHIFT, OMAP1UART##p)
+       _DEBUG_LL_ENTRY(mach, OMAP1_UART##p##_BASE, OMAP7XX_PORT_SHIFT, \
+               OMAP1UART##p)
 
 #define DEBUG_LL_OMAP1(p, mach)                                                \
-       _DEBUG_LL_ENTRY(mach, OMAP1_UART1_BASE, OMAP_PORT_SHIFT,        \
-               OMAP1_UART##p##_BASE, OMAP_PORT_SHIFT, OMAP1UART##p)
+       _DEBUG_LL_ENTRY(mach, OMAP1_UART##p##_BASE, OMAP_PORT_SHIFT,    \
+               OMAP1UART##p)
 
 #define DEBUG_LL_OMAP2(p, mach)                                                \
-       _DEBUG_LL_ENTRY(mach, OMAP2_UART1_BASE, OMAP_PORT_SHIFT,        \
-               OMAP2_UART##p##_BASE, OMAP_PORT_SHIFT, OMAP2UART##p)
+       _DEBUG_LL_ENTRY(mach, OMAP2_UART##p##_BASE, OMAP_PORT_SHIFT,    \
+               OMAP2UART##p)
 
 #define DEBUG_LL_OMAP3(p, mach)                                                \
-       _DEBUG_LL_ENTRY(mach, OMAP3_UART1_BASE, OMAP_PORT_SHIFT,        \
-               OMAP3_UART##p##_BASE, OMAP_PORT_SHIFT, OMAP3UART##p)
+       _DEBUG_LL_ENTRY(mach, OMAP3_UART##p##_BASE, OMAP_PORT_SHIFT,    \
+               OMAP3UART##p)
 
 #define DEBUG_LL_OMAP4(p, mach)                                                \
-       _DEBUG_LL_ENTRY(mach, OMAP4_UART1_BASE, OMAP_PORT_SHIFT,        \
-               OMAP4_UART##p##_BASE, OMAP_PORT_SHIFT, OMAP4UART##p)
+       _DEBUG_LL_ENTRY(mach, OMAP4_UART##p##_BASE, OMAP_PORT_SHIFT,    \
+               OMAP4UART##p)
 
 /* Zoom2/3 shift is different for UART1 and external port */
 #define DEBUG_LL_ZOOM(mach)                                            \
-       _DEBUG_LL_ENTRY(mach, OMAP2_UART1_BASE, OMAP_PORT_SHIFT,        \
-               ZOOM_UART_BASE, ZOOM_PORT_SHIFT, ZOOM_UART)
+       _DEBUG_LL_ENTRY(mach, ZOOM_UART_BASE, ZOOM_PORT_SHIFT, ZOOM_UART)
 
 static inline void __arch_decomp_setup(unsigned long arch_id)
 {
index 0e13766..bc094db 100644 (file)
 
 #include "iopgtable.h"
 
+#define for_each_iotlb_cr(obj, n, __i, cr)                             \
+       for (__i = 0;                                                   \
+            (__i < (n)) && (cr = __iotlb_read_cr((obj), __i), true);   \
+            __i++)
+
 /* accommodate the difference between omap1 and omap2/3 */
 static const struct iommu_functions *arch_iommu;
 
@@ -172,15 +177,12 @@ static void iotlb_lock_get(struct iommu *obj, struct iotlb_lock *l)
        l->base = MMU_LOCK_BASE(val);
        l->vict = MMU_LOCK_VICT(val);
 
-       BUG_ON(l->base != 0); /* Currently no preservation is used */
 }
 
 static void iotlb_lock_set(struct iommu *obj, struct iotlb_lock *l)
 {
        u32 val;
 
-       BUG_ON(l->base != 0); /* Currently no preservation is used */
-
        val = (l->base << MMU_LOCK_BASE_SHIFT);
        val |= (l->vict << MMU_LOCK_VICT_SHIFT);
 
@@ -214,6 +216,20 @@ static inline ssize_t iotlb_dump_cr(struct iommu *obj, struct cr_regs *cr,
        return arch_iommu->dump_cr(obj, cr, buf);
 }
 
+/* only used in iotlb iteration for-loop */
+static struct cr_regs __iotlb_read_cr(struct iommu *obj, int n)
+{
+       struct cr_regs cr;
+       struct iotlb_lock l;
+
+       iotlb_lock_get(obj, &l);
+       l.vict = n;
+       iotlb_lock_set(obj, &l);
+       iotlb_read_cr(obj, &cr);
+
+       return cr;
+}
+
 /**
  * load_iotlb_entry - Set an iommu tlb entry
  * @obj:       target iommu
@@ -221,7 +237,6 @@ static inline ssize_t iotlb_dump_cr(struct iommu *obj, struct cr_regs *cr,
  **/
 int load_iotlb_entry(struct iommu *obj, struct iotlb_entry *e)
 {
-       int i;
        int err = 0;
        struct iotlb_lock l;
        struct cr_regs *cr;
@@ -231,21 +246,30 @@ int load_iotlb_entry(struct iommu *obj, struct iotlb_entry *e)
 
        clk_enable(obj->clk);
 
-       for (i = 0; i < obj->nr_tlb_entries; i++) {
+       iotlb_lock_get(obj, &l);
+       if (l.base == obj->nr_tlb_entries) {
+               dev_warn(obj->dev, "%s: preserve entries full\n", __func__);
+               err = -EBUSY;
+               goto out;
+       }
+       if (!e->prsvd) {
+               int i;
                struct cr_regs tmp;
 
+               for_each_iotlb_cr(obj, obj->nr_tlb_entries, i, tmp)
+                       if (!iotlb_cr_valid(&tmp))
+                               break;
+
+               if (i == obj->nr_tlb_entries) {
+                       dev_dbg(obj->dev, "%s: full: no entry\n", __func__);
+                       err = -EBUSY;
+                       goto out;
+               }
+
                iotlb_lock_get(obj, &l);
-               l.vict = i;
+       } else {
+               l.vict = l.base;
                iotlb_lock_set(obj, &l);
-               iotlb_read_cr(obj, &tmp);
-               if (!iotlb_cr_valid(&tmp))
-                       break;
-       }
-
-       if (i == obj->nr_tlb_entries) {
-               dev_dbg(obj->dev, "%s: full: no entry\n", __func__);
-               err = -EBUSY;
-               goto out;
        }
 
        cr = iotlb_alloc_cr(obj, e);
@@ -257,9 +281,11 @@ int load_iotlb_entry(struct iommu *obj, struct iotlb_entry *e)
        iotlb_load_cr(obj, cr);
        kfree(cr);
 
+       if (e->prsvd)
+               l.base++;
        /* increment victim for next tlb load */
        if (++l.vict == obj->nr_tlb_entries)
-               l.vict = 0;
+               l.vict = l.base;
        iotlb_lock_set(obj, &l);
 out:
        clk_disable(obj->clk);
@@ -276,20 +302,15 @@ EXPORT_SYMBOL_GPL(load_iotlb_entry);
  **/
 void flush_iotlb_page(struct iommu *obj, u32 da)
 {
-       struct iotlb_lock l;
        int i;
+       struct cr_regs cr;
 
        clk_enable(obj->clk);
 
-       for (i = 0; i < obj->nr_tlb_entries; i++) {
-               struct cr_regs cr;
+       for_each_iotlb_cr(obj, obj->nr_tlb_entries, i, cr) {
                u32 start;
                size_t bytes;
 
-               iotlb_lock_get(obj, &l);
-               l.vict = i;
-               iotlb_lock_set(obj, &l);
-               iotlb_read_cr(obj, &cr);
                if (!iotlb_cr_valid(&cr))
                        continue;
 
@@ -299,7 +320,6 @@ void flush_iotlb_page(struct iommu *obj, u32 da)
                if ((start <= da) && (da < start + bytes)) {
                        dev_dbg(obj->dev, "%s: %08x<=%08x(%x)\n",
                                __func__, start, da, bytes);
-                       iotlb_load_cr(obj, &cr);
                        iommu_write_reg(obj, 1, MMU_FLUSH_ENTRY);
                }
        }
@@ -370,26 +390,19 @@ EXPORT_SYMBOL_GPL(iommu_dump_ctx);
 static int __dump_tlb_entries(struct iommu *obj, struct cr_regs *crs, int num)
 {
        int i;
-       struct iotlb_lock saved, l;
+       struct iotlb_lock saved;
+       struct cr_regs tmp;
        struct cr_regs *p = crs;
 
        clk_enable(obj->clk);
-
        iotlb_lock_get(obj, &saved);
-       memcpy(&l, &saved, sizeof(saved));
 
-       for (i = 0; i < num; i++) {
-               struct cr_regs tmp;
-
-               iotlb_lock_get(obj, &l);
-               l.vict = i;
-               iotlb_lock_set(obj, &l);
-               iotlb_read_cr(obj, &tmp);
+       for_each_iotlb_cr(obj, num, i, tmp) {
                if (!iotlb_cr_valid(&tmp))
                        continue;
-
                *p++ = tmp;
        }
+
        iotlb_lock_set(obj, &saved);
        clk_disable(obj->clk);
 
@@ -503,6 +516,12 @@ static int iopgd_alloc_section(struct iommu *obj, u32 da, u32 pa, u32 prot)
 {
        u32 *iopgd = iopgd_offset(obj, da);
 
+       if ((da | pa) & ~IOSECTION_MASK) {
+               dev_err(obj->dev, "%s: %08x:%08x should aligned on %08lx\n",
+                       __func__, da, pa, IOSECTION_SIZE);
+               return -EINVAL;
+       }
+
        *iopgd = (pa & IOSECTION_MASK) | prot | IOPGD_SECTION;
        flush_iopgd_range(iopgd, iopgd);
        return 0;
@@ -513,6 +532,12 @@ static int iopgd_alloc_super(struct iommu *obj, u32 da, u32 pa, u32 prot)
        u32 *iopgd = iopgd_offset(obj, da);
        int i;
 
+       if ((da | pa) & ~IOSUPER_MASK) {
+               dev_err(obj->dev, "%s: %08x:%08x should aligned on %08lx\n",
+                       __func__, da, pa, IOSUPER_SIZE);
+               return -EINVAL;
+       }
+
        for (i = 0; i < 16; i++)
                *(iopgd + i) = (pa & IOSUPER_MASK) | prot | IOPGD_SUPER;
        flush_iopgd_range(iopgd, iopgd + 15);
@@ -542,6 +567,12 @@ static int iopte_alloc_large(struct iommu *obj, u32 da, u32 pa, u32 prot)
        u32 *iopte = iopte_alloc(obj, iopgd, da);
        int i;
 
+       if ((da | pa) & ~IOLARGE_MASK) {
+               dev_err(obj->dev, "%s: %08x:%08x should aligned on %08lx\n",
+                       __func__, da, pa, IOLARGE_SIZE);
+               return -EINVAL;
+       }
+
        if (IS_ERR(iopte))
                return PTR_ERR(iopte);
 
index 65c6d1f..e43983b 100644 (file)
@@ -287,16 +287,19 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da,
        prev_end = 0;
        list_for_each_entry(tmp, &obj->mmap, list) {
 
-               if ((prev_end <= start) && (start + bytes < tmp->da_start))
+               if (prev_end >= start)
+                       break;
+
+               if (start + bytes < tmp->da_start)
                        goto found;
 
                if (flags & IOVMF_DA_ANON)
-                       start = roundup(tmp->da_end, alignement);
+                       start = roundup(tmp->da_end + 1, alignement);
 
                prev_end = tmp->da_end;
        }
 
-       if ((start >= prev_end) && (ULONG_MAX - start >= bytes))
+       if ((start > prev_end) && (ULONG_MAX - start >= bytes))
                goto found;
 
        dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n",
index 0f51974..f899603 100644 (file)
@@ -2,10 +2,10 @@
  * omap_device implementation
  *
  * Copyright (C) 2009 Nokia Corporation
- * Paul Walmsley
+ * Paul Walmsley, Kevin Hilman
  *
  * Developed in collaboration with (alphabetical order): Benoit
- * Cousson, Kevin Hilman, Tony Lindgren, Rajendra Nayak, Vikram
+ * Cousson, Thara Gopinath, Tony Lindgren, Rajendra Nayak, Vikram
  * Pandita, Sakari Poussa, Anand Sawant, Santosh Shilimkar, Richard
  * Woodruff
  *
index 51f4dfb..226b2e8 100644 (file)
@@ -437,6 +437,20 @@ static inline int omap34xx_sram_init(void)
 }
 #endif
 
+#ifdef CONFIG_ARCH_OMAP4
+int __init omap44xx_sram_init(void)
+{
+       printk(KERN_ERR "FIXME: %s not implemented\n", __func__);
+
+       return -ENODEV;
+}
+#else
+static inline int omap44xx_sram_init(void)
+{
+       return 0;
+}
+#endif
+
 int __init omap_sram_init(void)
 {
        omap_detect_sram();
@@ -451,7 +465,7 @@ int __init omap_sram_init(void)
        else if (cpu_is_omap34xx())
                omap34xx_sram_init();
        else if (cpu_is_omap44xx())
-               omap34xx_sram_init(); /* FIXME: */
+               omap44xx_sram_init();
 
        return 0;
 }
index 7e319d6..f34f1db 100644 (file)
@@ -209,4 +209,20 @@ config SERIO_ALTERA_PS2
          To compile this driver as a module, choose M here: the
          module will be called altera_ps2.
 
+config SERIO_AMS_DELTA
+       tristate "Amstrad Delta (E3) mailboard support"
+       depends on MACH_AMS_DELTA
+       default y
+       select AMS_DELTA_FIQ
+       ---help---
+         Say Y here if you have an E3 and want to use its mailboard,
+         or any standard AT keyboard connected to the mailboard port.
+
+         When used for the E3 mailboard, a non-standard key table
+         must be loaded from userspace, possibly using udev extras
+         provided keymap helper utility.
+
+         To compile this driver as a module, choose M here;
+         the module will be called ams_delta_serio.
+
 endif
index bf945f7..84c80bf 100644 (file)
@@ -21,5 +21,6 @@ obj-$(CONFIG_SERIO_PCIPS2)    += pcips2.o
 obj-$(CONFIG_SERIO_MACEPS2)    += maceps2.o
 obj-$(CONFIG_SERIO_LIBPS2)     += libps2.o
 obj-$(CONFIG_SERIO_RAW)                += serio_raw.o
+obj-$(CONFIG_SERIO_AMS_DELTA)  += ams_delta_serio.o
 obj-$(CONFIG_SERIO_XILINX_XPS_PS2)     += xilinx_ps2.o
 obj-$(CONFIG_SERIO_ALTERA_PS2) += altera_ps2.o
diff --git a/drivers/input/serio/ams_delta_serio.c b/drivers/input/serio/ams_delta_serio.c
new file mode 100644 (file)
index 0000000..8f1770e
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ *  Amstrad E3 (Delta) keyboard port driver
+ *
+ *  Copyright (c) 2006 Matt Callow
+ *  Copyright (c) 2010 Janusz Krzysztofik
+ *
+ * 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.
+ *
+ * Thanks to Cliff Lawson for his help
+ *
+ * The Amstrad Delta keyboard (aka mailboard) uses normal PC-AT style serial
+ * transmission.  The keyboard port is formed of two GPIO lines, for clock
+ * and data.  Due to strict timing requirements of the interface,
+ * the serial data stream is read and processed by a FIQ handler.
+ * The resulting words are fetched by this driver from a circular buffer.
+ *
+ * Standard AT keyboard driver (atkbd) is used for handling the keyboard data.
+ * However, when used with the E3 mailboard that producecs non-standard
+ * scancodes, a custom key table must be prepared and loaded from userspace.
+ */
+#include <linux/gpio.h>
+#include <linux/irq.h>
+#include <linux/serio.h>
+#include <linux/slab.h>
+
+#include <asm/mach-types.h>
+#include <plat/board-ams-delta.h>
+
+#include <mach/ams-delta-fiq.h>
+
+MODULE_AUTHOR("Matt Callow");
+MODULE_DESCRIPTION("AMS Delta (E3) keyboard port driver");
+MODULE_LICENSE("GPL");
+
+static struct serio *ams_delta_serio;
+
+static int check_data(int data)
+{
+       int i, parity = 0;
+
+       /* check valid stop bit */
+       if (!(data & 0x400)) {
+               dev_warn(&ams_delta_serio->dev,
+                               "invalid stop bit, data=0x%X\n",
+                               data);
+               return SERIO_FRAME;
+       }
+       /* calculate the parity */
+       for (i = 1; i < 10; i++) {
+               if (data & (1 << i))
+                       parity++;
+       }
+       /* it should be odd */
+       if (!(parity & 0x01)) {
+               dev_warn(&ams_delta_serio->dev,
+                               "paritiy check failed, data=0x%X parity=0x%X\n",
+                               data, parity);
+               return SERIO_PARITY;
+       }
+       return 0;
+}
+
+static irqreturn_t ams_delta_serio_interrupt(int irq, void *dev_id)
+{
+       int *circ_buff = &fiq_buffer[FIQ_CIRC_BUFF];
+       int data, dfl;
+       u8 scancode;
+
+       fiq_buffer[FIQ_IRQ_PEND] = 0;
+
+       /*
+        * Read data from the circular buffer, check it
+        * and then pass it on the serio
+        */
+       while (fiq_buffer[FIQ_KEYS_CNT] > 0) {
+
+               data = circ_buff[fiq_buffer[FIQ_HEAD_OFFSET]++];
+               fiq_buffer[FIQ_KEYS_CNT]--;
+               if (fiq_buffer[FIQ_HEAD_OFFSET] == fiq_buffer[FIQ_BUF_LEN])
+                       fiq_buffer[FIQ_HEAD_OFFSET] = 0;
+
+               dfl = check_data(data);
+               scancode = (u8) (data >> 1) & 0xFF;
+               serio_interrupt(ams_delta_serio, scancode, dfl);
+       }
+       return IRQ_HANDLED;
+}
+
+static int ams_delta_serio_open(struct serio *serio)
+{
+       /* enable keyboard */
+       ams_delta_latch2_write(AMD_DELTA_LATCH2_KEYBRD_PWR,
+                       AMD_DELTA_LATCH2_KEYBRD_PWR);
+
+       return 0;
+}
+
+static void ams_delta_serio_close(struct serio *serio)
+{
+       /* disable keyboard */
+       ams_delta_latch2_write(AMD_DELTA_LATCH2_KEYBRD_PWR, 0);
+}
+
+static int __init ams_delta_serio_init(void)
+{
+       int err;
+
+       if (!machine_is_ams_delta())
+               return -ENODEV;
+
+       ams_delta_serio = kzalloc(sizeof(struct serio), GFP_KERNEL);
+       if (!ams_delta_serio)
+               return -ENOMEM;
+
+       ams_delta_serio->id.type = SERIO_8042;
+       ams_delta_serio->open = ams_delta_serio_open;
+       ams_delta_serio->close = ams_delta_serio_close;
+       strlcpy(ams_delta_serio->name, "AMS DELTA keyboard adapter",
+                       sizeof(ams_delta_serio->name));
+       strlcpy(ams_delta_serio->phys, "GPIO/serio0",
+                       sizeof(ams_delta_serio->phys));
+
+       err = gpio_request(AMS_DELTA_GPIO_PIN_KEYBRD_DATA, "serio-data");
+       if (err) {
+               pr_err("ams_delta_serio: Couldn't request gpio pin for data\n");
+               goto serio;
+       }
+       gpio_direction_input(AMS_DELTA_GPIO_PIN_KEYBRD_DATA);
+
+       err = gpio_request(AMS_DELTA_GPIO_PIN_KEYBRD_CLK, "serio-clock");
+       if (err) {
+               pr_err("ams_delta_serio: couldn't request gpio pin for clock\n");
+               goto gpio_data;
+       }
+       gpio_direction_input(AMS_DELTA_GPIO_PIN_KEYBRD_CLK);
+
+       err = request_irq(gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK),
+                       ams_delta_serio_interrupt, IRQ_TYPE_EDGE_RISING,
+                       "ams-delta-serio", 0);
+       if (err < 0) {
+               pr_err("ams_delta_serio: couldn't request gpio interrupt %d\n",
+                               gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK));
+               goto gpio_clk;
+       }
+       /*
+        * Since GPIO register handling for keyboard clock pin is performed
+        * at FIQ level, switch back from edge to simple interrupt handler
+        * to avoid bad interaction.
+        */
+       set_irq_handler(gpio_to_irq(AMS_DELTA_GPIO_PIN_KEYBRD_CLK),
+                       handle_simple_irq);
+
+       serio_register_port(ams_delta_serio);
+       dev_info(&ams_delta_serio->dev, "%s\n", ams_delta_serio->name);
+
+       return 0;
+gpio_clk:
+       gpio_free(AMS_DELTA_GPIO_PIN_KEYBRD_CLK);
+gpio_data:
+       gpio_free(AMS_DELTA_GPIO_PIN_KEYBRD_DATA);
+serio:
+       kfree(ams_delta_serio);
+       return err;
+}
+module_init(ams_delta_serio_init);
+
+static void __exit ams_delta_serio_exit(void)
+{
+       serio_unregister_port(ams_delta_serio);
+       free_irq(OMAP_GPIO_IRQ(AMS_DELTA_GPIO_PIN_KEYBRD_CLK), 0);
+       gpio_free(AMS_DELTA_GPIO_PIN_KEYBRD_CLK);
+       gpio_free(AMS_DELTA_GPIO_PIN_KEYBRD_DATA);
+       kfree(ams_delta_serio);
+}
+module_exit(ams_delta_serio_exit);
index a191fa2..f950b63 100644 (file)
@@ -180,10 +180,10 @@ config SPI_OMAP_UWIRE
          This hooks up to the MicroWire controller on OMAP1 chips.
 
 config SPI_OMAP24XX
-       tristate "McSPI driver for OMAP24xx/OMAP34xx"
-       depends on ARCH_OMAP2 || ARCH_OMAP3
+       tristate "McSPI driver for OMAP"
+       depends on ARCH_OMAP2PLUS
        help
-         SPI master controller for OMAP24xx/OMAP34xx Multichannel SPI
+         SPI master controller for OMAP24XX and later Multichannel SPI
          (McSPI) modules.
 
 config SPI_OMAP_100K