From: Gabor Juhos Date: Sun, 27 May 2012 15:01:07 +0000 (+0000) Subject: omap24xx: remove 3.1 support X-Git-Tag: reboot~13806 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=cead4b47abdebcb8506451b4a3e30028982161a1;p=openwrt%2Fopenwrt.git omap24xx: remove 3.1 support SVN-Revision: 31890 --- diff --git a/target/linux/omap24xx/config-3.1 b/target/linux/omap24xx/config-3.1 deleted file mode 100644 index 7dfc9333b1..0000000000 --- a/target/linux/omap24xx/config-3.1 +++ /dev/null @@ -1,693 +0,0 @@ -# CONFIG_AD2S120X is not set -# CONFIG_AD2S1210 is not set -# CONFIG_AD2S90 is not set -# CONFIG_AD5446 is not set -# CONFIG_AD5504 is not set -# CONFIG_AD5624R_SPI is not set -# CONFIG_AD5686 is not set -# CONFIG_AD5791 is not set -# CONFIG_AD5930 is not set -# CONFIG_AD7150 is not set -# CONFIG_AD7152 is not set -# CONFIG_AD7291 is not set -# CONFIG_AD7298 is not set -# CONFIG_AD7314 is not set -# CONFIG_AD7476 is not set -# CONFIG_AD7606 is not set -# CONFIG_AD7745 is not set -# CONFIG_AD7780 is not set -# CONFIG_AD7793 is not set -# CONFIG_AD7816 is not set -# CONFIG_AD7887 is not set -# CONFIG_AD799X is not set -# CONFIG_AD9832 is not set -# CONFIG_AD9834 is not set -# CONFIG_AD9850 is not set -# CONFIG_AD9852 is not set -# CONFIG_AD9910 is not set -# CONFIG_AD9951 is not set -# CONFIG_ADE7753 is not set -# CONFIG_ADE7754 is not set -# CONFIG_ADE7758 is not set -# CONFIG_ADE7759 is not set -# CONFIG_ADE7854 is not set -# CONFIG_ADIS16060 is not set -# CONFIG_ADIS16080 is not set -# CONFIG_ADIS16130 is not set -CONFIG_ADIS16201=m -CONFIG_ADIS16203=m -CONFIG_ADIS16204=m -# CONFIG_ADIS16209 is not set -# CONFIG_ADIS16220 is not set -# CONFIG_ADIS16240 is not set -# CONFIG_ADIS16260 is not set -# CONFIG_ADIS16400 is not set -# CONFIG_ADT7310 is not set -# CONFIG_ADT7316 is not set -# CONFIG_ADT7410 is not set -# CONFIG_ADT75 is not set -# CONFIG_ADXRS450 is not set -CONFIG_ALIGNMENT_TRAP=y -CONFIG_APM_EMULATION=y -CONFIG_ARCH_HAS_CPUFREQ=y -CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y -CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y -CONFIG_ARCH_OMAP=y -# CONFIG_ARCH_OMAP1 is not set -CONFIG_ARCH_OMAP2=y -CONFIG_ARCH_OMAP2PLUS=y -CONFIG_ARCH_OMAP2PLUS_TYPICAL=y -# CONFIG_ARCH_OMAP3 is not set -# CONFIG_ARCH_OMAP4 is not set -CONFIG_ARCH_OMAP_OTG=y -CONFIG_ARCH_REQUIRE_GPIOLIB=y -# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set -# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set -CONFIG_ARCH_SUSPEND_POSSIBLE=y -# CONFIG_ARCH_USES_GETTIMEOFFSET is not set -CONFIG_ARM=y -CONFIG_ARM_ERRATA_364296=y -CONFIG_ARM_ERRATA_411920=y -CONFIG_ARM_L1_CACHE_SHIFT=5 -CONFIG_ARM_THUMB=y -CONFIG_ARM_UNWIND=y -# CONFIG_ARPD is not set -CONFIG_ATAGS_PROC=y -CONFIG_BCMA_POSSIBLE=y -CONFIG_BINFMT_MISC=y -# CONFIG_BLK_CGROUP is not set -# CONFIG_BLK_DEV_INITRD is not set -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=16 -CONFIG_BLK_DEV_RAM_SIZE=4096 -CONFIG_BLK_DEV_SD=y -# CONFIG_BRCMUTIL is not set -CONFIG_BRIDGE=m -CONFIG_BT=m -# CONFIG_BT_HCIH4P is not set -CONFIG_BT_HCIUART=m -# CONFIG_BT_HCIUART_BCSP is not set -# CONFIG_BT_L2CAP is not set -# CONFIG_BT_SCO is not set -CONFIG_CBUS=y -CONFIG_CBUS_RETU=y -CONFIG_CBUS_RETU_HEADSET=y -CONFIG_CBUS_RETU_POWERBUTTON=y -CONFIG_CBUS_RETU_WDT=y -CONFIG_CBUS_TAHVO=y -CONFIG_CBUS_TAHVO_USB=m -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_CGROUPS=y -# CONFIG_CGROUP_CPUACCT is not set -# CONFIG_CGROUP_DEBUG is not set -# CONFIG_CGROUP_DEVICE is not set -# CONFIG_CGROUP_FREEZER is not set -CONFIG_CGROUP_SCHED=y -CONFIG_CLKDEV_LOOKUP=y -CONFIG_CLKSRC_MMIO=y -CONFIG_CMDLINE="root=/dev/mmcblk0p1 rootfstype=ext4,ext3,ext2,squashfs,jffs2 console=tty0 console=ttyO2,115200n8 earlyprintk" -CONFIG_CMDLINE_FORCE=y -CONFIG_CONSOLE_TRANSLATIONS=y -# CONFIG_CPUSETS is not set -CONFIG_CPU_32v6=y -CONFIG_CPU_ABRT_EV6=y -# CONFIG_CPU_BPREDICT_DISABLE is not set -CONFIG_CPU_CACHE_V6=y -CONFIG_CPU_CACHE_VIPT=y -CONFIG_CPU_COPY_V6=y -CONFIG_CPU_CP15=y -CONFIG_CPU_CP15_MMU=y -CONFIG_CPU_FREQ=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set -# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_STAT=y -# CONFIG_CPU_FREQ_STAT_DETAILS is not set -CONFIG_CPU_FREQ_TABLE=y -CONFIG_CPU_HAS_ASID=y -CONFIG_CPU_HAS_PMU=y -# CONFIG_CPU_ICACHE_DISABLE is not set -CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_GOV_LADDER=y -CONFIG_CPU_IDLE_GOV_MENU=y -CONFIG_CPU_PABRT_V6=y -CONFIG_CPU_TLB_V6=y -CONFIG_CPU_USE_DOMAINS=y -CONFIG_CPU_V6=y -CONFIG_CRC16=y -CONFIG_CRC7=y -CONFIG_CRC_CCITT=y -CONFIG_CRC_ITU_T=y -CONFIG_CRYPTO_AEAD2=y -CONFIG_CRYPTO_AES=y -CONFIG_CRYPTO_ALGAPI=y -CONFIG_CRYPTO_ALGAPI2=y -CONFIG_CRYPTO_ARC4=m -CONFIG_CRYPTO_BLKCIPHER=m -CONFIG_CRYPTO_BLKCIPHER2=y -CONFIG_CRYPTO_CBC=m -CONFIG_CRYPTO_DES=m -CONFIG_CRYPTO_DEV_OMAP_AES=y -CONFIG_CRYPTO_DEV_OMAP_SHAM=y -CONFIG_CRYPTO_ECB=m -CONFIG_CRYPTO_HASH=y -CONFIG_CRYPTO_HASH2=y -CONFIG_CRYPTO_HW=y -CONFIG_CRYPTO_MANAGER=m -CONFIG_CRYPTO_MANAGER2=y -CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_PCOMP2=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_SHA1=y -CONFIG_CRYPTO_WORKQUEUE=y -CONFIG_DEBUG_BUGVERBOSE=y -# CONFIG_DEBUG_FS is not set -# CONFIG_DEBUG_USER is not set -CONFIG_DEFAULT_CFQ=y -CONFIG_DEFAULT_IOSCHED="cfq" -CONFIG_DEFAULT_TCP_CONG="cubic" -CONFIG_DEVKMEM=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_DNOTIFY=y -CONFIG_DNS_RESOLVER=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_DW_WATCHDOG is not set -# CONFIG_ECRYPT_FS is not set -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_EXPORTFS=m -CONFIG_EXT4_FS=y -CONFIG_FAIR_GROUP_SCHED=y -CONFIG_FAT_FS=y -CONFIG_FB=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_OMAP=y -# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set -CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2 -CONFIG_FB_OMAP_LCDC_BLIZZARD=y -CONFIG_FB_OMAP_LCDC_EXTERNAL=y -# CONFIG_FB_OMAP_LCDC_HWA742 is not set -CONFIG_FB_OMAP_LCD_MIPID=y -# CONFIG_FB_OMAP_MANUAL_UPDATE is not set -# CONFIG_FB_SM7XX is not set -# CONFIG_FB_WMT_GE_ROPS is not set -# CONFIG_FIRMWARE_EDID is not set -CONFIG_FIRMWARE_IN_KERNEL=y -CONFIG_FONTS=y -# CONFIG_FONT_10x18 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_7x14 is not set -CONFIG_FONT_8x16=y -CONFIG_FONT_8x8=y -# CONFIG_FONT_ACORN_8x8 is not set -# CONFIG_FONT_MINI_4x6 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_SUN8x16 is not set -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set -CONFIG_FREEZER=y -CONFIG_FS_MBCACHE=y -CONFIG_FS_POSIX_ACL=y -CONFIG_GENERIC_ACL=y -CONFIG_GENERIC_ATOMIC64=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BUILD=y -CONFIG_GENERIC_GPIO=y -CONFIG_GENERIC_IRQ_CHIP=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GPIOLIB=y -CONFIG_GPIO_SYSFS=y -# CONFIG_HAMRADIO is not set -CONFIG_HARDIRQS_SW_RESEND=y -CONFIG_HAS_DMA=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT=y -CONFIG_HAVE_AOUT=y -CONFIG_HAVE_ARCH_KGDB=y -CONFIG_HAVE_ARCH_PFN_VALID=y -CONFIG_HAVE_CLK=y -CONFIG_HAVE_C_RECORDMCOUNT=y -CONFIG_HAVE_DMA_API_DEBUG=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y -CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y -CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_HAVE_GENERIC_DMA_COHERENT=y -CONFIG_HAVE_GENERIC_HARDIRQS=y -CONFIG_HAVE_IDE=y -CONFIG_HAVE_IRQ_WORK=y -CONFIG_HAVE_KERNEL_GZIP=y -CONFIG_HAVE_KERNEL_LZMA=y -CONFIG_HAVE_KERNEL_LZO=y -CONFIG_HAVE_KERNEL_XZ=y -CONFIG_HAVE_LATENCYTOP_SUPPORT=y -CONFIG_HAVE_MEMBLOCK=y -CONFIG_HAVE_MTD_OTP=y -CONFIG_HAVE_OPROFILE=y -CONFIG_HAVE_PERF_EVENTS=y -CONFIG_HAVE_PROC_CPU=y -CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y -CONFIG_HAVE_SCHED_CLOCK=y -CONFIG_HAVE_SPARSE_IRQ=y -CONFIG_HID=y -CONFIG_HID_APPLE=m -CONFIG_HID_SUPPORT=y -CONFIG_HWMON=m -CONFIG_HW_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_HW_RANDOM_OMAP=y -CONFIG_HZ=128 -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_COMPAT=y -CONFIG_I2C_HELPER_AUTO=y -CONFIG_I2C_OMAP=y -CONFIG_IIO=y -# CONFIG_IIO_RING_BUFFER is not set -# CONFIG_IIO_TRIGGER is not set -CONFIG_INET6_XFRM_MODE_BEET=m -CONFIG_INET6_XFRM_MODE_TRANSPORT=m -CONFIG_INET6_XFRM_MODE_TUNNEL=m -CONFIG_INET_DIAG=y -CONFIG_INET_TCP_DIAG=y -CONFIG_INET_TUNNEL=m -# CONFIG_INLINE_READ_UNLOCK is not set -# CONFIG_INLINE_READ_UNLOCK_IRQ is not set -# CONFIG_INLINE_SPIN_UNLOCK is not set -# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set -# CONFIG_INLINE_WRITE_UNLOCK is not set -# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set -CONFIG_INPUT=y -# CONFIG_INPUT_APMPOWER is not set -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_GPIO_BUTTONS is not set -CONFIG_INPUT_JOYSTICK=y -CONFIG_INPUT_KEYBOARD=y -CONFIG_INPUT_MOUSE=y -CONFIG_INPUT_MOUSEDEV=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_MOUSEDEV_SCREEN_X=800 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 -CONFIG_INPUT_TABLET=y -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_IOSCHED_CFQ=y -# CONFIG_IOSCHED_DEADLINE is not set -CONFIG_IPV6=y -CONFIG_IPV6_MIP6=m -CONFIG_IPV6_PRIVACY=y -CONFIG_IPV6_ROUTER_PREF=y -CONFIG_IPV6_SIT=m -# CONFIG_IP_ADVANCED_ROUTER is not set -# CONFIG_IP_MROUTE is not set -CONFIG_IR_LIRC_CODEC=m -CONFIG_IR_MCE_KBD_DECODER=m -CONFIG_IR_RC5_SZ_DECODER=m -# CONFIG_IR_REDRAT3 is not set -# CONFIG_ISDN is not set -# CONFIG_ISP1301_OMAP is not set -CONFIG_JBD2=y -CONFIG_JFFS2_LZO=y -CONFIG_JFFS2_ZLIB=y -# CONFIG_JOYSTICK_A3D is not set -# CONFIG_JOYSTICK_ADI is not set -# CONFIG_JOYSTICK_ANALOG is not set -# CONFIG_JOYSTICK_AS5011 is not set -# CONFIG_JOYSTICK_COBRA is not set -# CONFIG_JOYSTICK_GF2K is not set -# CONFIG_JOYSTICK_GRIP is not set -# CONFIG_JOYSTICK_GRIP_MP is not set -# CONFIG_JOYSTICK_GUILLEMOT is not set -# CONFIG_JOYSTICK_IFORCE is not set -# CONFIG_JOYSTICK_INTERACT is not set -# CONFIG_JOYSTICK_JOYDUMP is not set -# CONFIG_JOYSTICK_MAGELLAN is not set -# CONFIG_JOYSTICK_SIDEWINDER is not set -# CONFIG_JOYSTICK_SPACEBALL is not set -# CONFIG_JOYSTICK_SPACEORB is not set -# CONFIG_JOYSTICK_STINGER is not set -# CONFIG_JOYSTICK_TMDC is not set -# CONFIG_JOYSTICK_TWIDJOY is not set -# CONFIG_JOYSTICK_WARRIOR is not set -# CONFIG_JOYSTICK_XPAD is not set -# CONFIG_JOYSTICK_ZHENHUA is not set -CONFIG_KALLSYMS=y -CONFIG_KALLSYMS_ALL=y -CONFIG_KEXEC=y -# CONFIG_KEYBOARD_GPIO is not set -CONFIG_KEYBOARD_LM8323=y -# CONFIG_KEYBOARD_OMAP is not set -CONFIG_KEYBOARD_TSC2301=y -CONFIG_KEYS=y -# CONFIG_KEYS_DEBUG_PROC_KEYS is not set -CONFIG_KTIME_SCALAR=y -# CONFIG_KXSD9 is not set -# CONFIG_LEDS is not set -# CONFIG_LEDS_REGULATOR is not set -CONFIG_LEDS_TRIGGER_BACKLIGHT=y -CONFIG_LEDS_TRIGGER_GPIO=y -CONFIG_LIRC=m -# CONFIG_LIS3L02DQ is not set -CONFIG_LLC=m -CONFIG_LOCKD=m -CONFIG_LOG_BUF_SHIFT=18 -CONFIG_LZO_COMPRESS=y -CONFIG_LZO_DECOMPRESS=y -CONFIG_MACH_NOKIA_N800=y -CONFIG_MACH_NOKIA_N810=y -CONFIG_MACH_NOKIA_N810_WIMAX=y -CONFIG_MACH_NOKIA_N8X0=y -CONFIG_MACH_OMAP2_TUSB6010=y -# CONFIG_MACH_OMAP_APOLLON is not set -# CONFIG_MACH_OMAP_GENERIC is not set -# CONFIG_MACH_OMAP_H4 is not set -CONFIG_MACVLAN=m -CONFIG_MAC_PARTITION=y -# CONFIG_MAX1363 is not set -# CONFIG_MAX517 is not set -CONFIG_MEDIA_ATTACH=y -CONFIG_MEDIA_SUPPORT=m -CONFIG_MEDIA_TUNER=m -CONFIG_MEDIA_TUNER_MC44S803=m -CONFIG_MEDIA_TUNER_MT20XX=m -CONFIG_MEDIA_TUNER_SIMPLE=m -CONFIG_MEDIA_TUNER_TDA18271=m -CONFIG_MEDIA_TUNER_TDA827X=m -CONFIG_MEDIA_TUNER_TDA8290=m -CONFIG_MEDIA_TUNER_TDA9887=m -CONFIG_MEDIA_TUNER_TEA5761=m -CONFIG_MEDIA_TUNER_TEA5767=m -CONFIG_MEDIA_TUNER_XC2028=m -CONFIG_MEDIA_TUNER_XC4000=m -CONFIG_MEDIA_TUNER_XC5000=m -CONFIG_MENELAUS=y -# CONFIG_MFD_T7L66XB is not set -# CONFIG_MISC_DEVICES is not set -CONFIG_MMC=y -CONFIG_MMC_BLOCK=y -CONFIG_MMC_OMAP=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -# CONFIG_MMC_SDHCI_PXAV2 is not set -# CONFIG_MMC_SDHCI_PXAV3 is not set -CONFIG_MMC_SPI=y -CONFIG_MMC_UNSAFE_RESUME=y -# CONFIG_MOUSE_BCM5974 is not set -CONFIG_MOUSE_PS2=m -# CONFIG_MOUSE_PS2_ALPS is not set -# CONFIG_MOUSE_PS2_ELANTECH is not set -# CONFIG_MOUSE_PS2_LOGIPS2PP is not set -# CONFIG_MOUSE_PS2_SYNAPTICS is not set -# CONFIG_MOUSE_PS2_TOUCHKIT is not set -# CONFIG_MOUSE_PS2_TRACKPOINT is not set -# CONFIG_MOUSE_SERIAL is not set -# CONFIG_MOUSE_VSXXXAA is not set -CONFIG_MSDOS_FS=y -CONFIG_MTD_BLOCK2MTD=y -# CONFIG_MTD_CFI is not set -CONFIG_MTD_CMDLINE_PARTS=y -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -CONFIG_MTD_ONENAND=y -# CONFIG_MTD_ONENAND_2X_PROGRAM is not set -# CONFIG_MTD_ONENAND_GENERIC is not set -CONFIG_MTD_ONENAND_OMAP2=y -CONFIG_MTD_ONENAND_OTP=y -# CONFIG_MTD_ONENAND_SIM is not set -# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set -# CONFIG_MTD_ROOTFS_ROOT_DEV is not set -# CONFIG_MTD_ROOTFS_SPLIT is not set -# CONFIG_MUSB_PIO_ONLY is not set -CONFIG_N810BM=m -CONFIG_NAMESPACES=y -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_NEED_PER_CPU_KM=y -CONFIG_NETDEV_10000=y -# CONFIG_NET_NS is not set -# CONFIG_NET_SCHED is not set -CONFIG_NFSD=m -CONFIG_NFSD_V2_ACL=y -CONFIG_NFSD_V3_ACL=y -CONFIG_NFSD_V4=y -CONFIG_NFS_ACL_SUPPORT=m -CONFIG_NFS_FS=m -CONFIG_NFS_USE_KERNEL_DNS=y -# CONFIG_NFS_USE_LEGACY_DNS is not set -# CONFIG_NFS_USE_NEW_IDMAPPER is not set -CONFIG_NFS_V3_ACL=y -CONFIG_NFS_V4=y -CONFIG_NFS_V4_1=y -CONFIG_NLS=y -CONFIG_NOP_USB_XCEIV=m -CONFIG_NO_HZ=y -# CONFIG_OMAP2_DSS is not set -CONFIG_OMAP_32K_TIMER=y -CONFIG_OMAP_32K_TIMER_HZ=128 -CONFIG_OMAP_BOOT_REASON=y -CONFIG_OMAP_BOOT_TAG=y -CONFIG_OMAP_COMPONENT_VERSION=y -CONFIG_OMAP_DM_TIMER=y -CONFIG_OMAP_GPIO_SWITCH=y -CONFIG_OMAP_MBOX_FWK=y -CONFIG_OMAP_MBOX_KFIFO_SIZE=256 -CONFIG_OMAP_MCBSP=y -CONFIG_OMAP_MUX=y -# CONFIG_OMAP_MUX_DEBUG is not set -CONFIG_OMAP_MUX_WARNINGS=y -CONFIG_OMAP_PACKAGE_ZAC=y -CONFIG_OMAP_PM_NOOP=y -CONFIG_OMAP_RESET_CLOCKS=y -# CONFIG_OMAP_WATCHDOG is not set -CONFIG_PAGEFLAGS_EXTENDED=y -CONFIG_PAGE_OFFSET=0xC0000000 -# CONFIG_PCI_SYSCALL is not set -CONFIG_PERF_USE_VMALLOC=y -CONFIG_PM=y -CONFIG_PM_CLK=y -# CONFIG_PM_DEBUG is not set -CONFIG_PM_RUNTIME=y -CONFIG_PM_SLEEP=y -CONFIG_PNFS_FILE_LAYOUT=m -CONFIG_POSIX_MQUEUE=y -CONFIG_POSIX_MQUEUE_SYSCTL=y -CONFIG_PPP=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_MPPE=m -# CONFIG_PPP_MULTILINK is not set -CONFIG_PPP_SYNC_TTY=m -CONFIG_PREEMPT=y -CONFIG_PREEMPT_COUNT=y -# CONFIG_PREEMPT_NONE is not set -CONFIG_PREEMPT_RCU=y -CONFIG_PRINTK_TIME=y -CONFIG_PROC_PAGE_MONITOR=y -CONFIG_RCU_BOOST=y -CONFIG_RCU_BOOST_DELAY=500 -CONFIG_RCU_BOOST_PRIO=1 -CONFIG_RC_CORE=m -# CONFIG_RC_LOOPBACK is not set -CONFIG_REGULATOR=y -# CONFIG_REGULATOR_AD5398 is not set -# CONFIG_REGULATOR_DEBUG is not set -# CONFIG_REGULATOR_DUMMY is not set -# CONFIG_REGULATOR_ISL6271A is not set -# CONFIG_REGULATOR_LP3971 is not set -# CONFIG_REGULATOR_LP3972 is not set -# CONFIG_REGULATOR_MAX1586 is not set -# CONFIG_REGULATOR_MAX8649 is not set -# CONFIG_REGULATOR_MAX8660 is not set -# CONFIG_REGULATOR_MAX8952 is not set -# CONFIG_REGULATOR_TPS65023 is not set -# CONFIG_REGULATOR_TPS6507X is not set -# CONFIG_REGULATOR_TPS6524X is not set -# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set -# CONFIG_RESOURCE_COUNTERS is not set -# CONFIG_RFKILL_REGULATOR is not set -# CONFIG_RT_GROUP_SCHED is not set -CONFIG_SCHED_AUTOGROUP=y -CONFIG_SCSI=y -# CONFIG_SCSI_LOWLEVEL is not set -# CONFIG_SENSORS_AK8975 is not set -# CONFIG_SENSORS_HMC5843 is not set -# CONFIG_SENSORS_ISL29018 is not set -CONFIG_SENSORS_LM75=m -CONFIG_SENSORS_TSL2563=m -CONFIG_SERIAL_8250_NR_UARTS=4 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 -CONFIG_SERIAL_OMAP=y -CONFIG_SERIAL_OMAP_CONSOLE=y -CONFIG_SERIO=y -CONFIG_SERIO_LIBPS2=y -CONFIG_SERIO_SERPORT=y -# CONFIG_SLAB is not set -CONFIG_SLHC=m -CONFIG_SLUB=y -CONFIG_SND=m -CONFIG_SND_ARM=y -# CONFIG_SND_EMU10K1_SEQ is not set -CONFIG_SND_JACK=y -CONFIG_SND_MIXER_OSS=m -CONFIG_SND_OMAP_SOC=m -CONFIG_SND_OMAP_SOC_MCBSP=m -CONFIG_SND_OMAP_SOC_N810=m -# CONFIG_SND_OPL3_LIB_SEQ is not set -# CONFIG_SND_OPL4_LIB_SEQ is not set -CONFIG_SND_PCM=m -CONFIG_SND_PCM_OSS=m -# CONFIG_SND_RAWMIDI_SEQ is not set -# CONFIG_SND_SBAWE_SEQ is not set -CONFIG_SND_SOC=m -# CONFIG_SND_SOC_ALL_CODECS is not set -CONFIG_SND_SOC_CACHE_LZO=y -CONFIG_SND_SOC_I2C_AND_SPI=m -CONFIG_SND_SOC_TLV320AIC3X=m -CONFIG_SND_SPI=y -CONFIG_SND_SUPPORT_OLD_API=y -CONFIG_SND_TIMER=m -CONFIG_SOC_OMAP2420=y -# CONFIG_SOC_OMAP2430 is not set -CONFIG_SOUND=m -CONFIG_SOUND_OSS_CORE=y -CONFIG_SOUND_OSS_CORE_PRECLAIM=y -CONFIG_SPARSE_IRQ=y -CONFIG_SPEAKUP=m -CONFIG_SPEAKUP_SYNTH_ACNTPC=m -CONFIG_SPEAKUP_SYNTH_ACNTSA=m -CONFIG_SPEAKUP_SYNTH_APOLLO=m -CONFIG_SPEAKUP_SYNTH_AUDPTR=m -CONFIG_SPEAKUP_SYNTH_BNS=m -CONFIG_SPEAKUP_SYNTH_DECEXT=m -CONFIG_SPEAKUP_SYNTH_DECPC=m -CONFIG_SPEAKUP_SYNTH_DECTLK=m -CONFIG_SPEAKUP_SYNTH_DTLK=m -CONFIG_SPEAKUP_SYNTH_DUMMY=m -CONFIG_SPEAKUP_SYNTH_KEYPC=m -CONFIG_SPEAKUP_SYNTH_LTLK=m -CONFIG_SPEAKUP_SYNTH_SOFT=m -CONFIG_SPEAKUP_SYNTH_SPKOUT=m -CONFIG_SPEAKUP_SYNTH_TXPRT=m -CONFIG_SPI=y -CONFIG_SPI_MASTER=y -CONFIG_SPI_OMAP24XX=y -CONFIG_SPI_TSC2301=y -# CONFIG_SPI_TSC2301_AUDIO is not set -CONFIG_STP=m -# CONFIG_STRIP_ASM_SYMS is not set -CONFIG_SUNRPC=m -CONFIG_SUNRPC_BACKCHANNEL=y -CONFIG_SUNRPC_GSS=m -CONFIG_SUSPEND=y -CONFIG_SUSPEND_FREEZER=y -# CONFIG_SYN_COOKIES is not set -CONFIG_SYS_SUPPORTS_APM_EMULATION=y -# CONFIG_TABLET_USB_ACECAD is not set -# CONFIG_TABLET_USB_AIPTEK is not set -# CONFIG_TABLET_USB_GTCO is not set -# CONFIG_TABLET_USB_HANWANG is not set -# CONFIG_TABLET_USB_KBTAB is not set -# CONFIG_TABLET_USB_WACOM is not set -# CONFIG_TCP_CONG_ADVANCED is not set -CONFIG_TCP_CONG_CUBIC=y -CONFIG_TINY_PREEMPT_RCU=y -# CONFIG_TINY_RCU is not set -CONFIG_TMPFS_POSIX_ACL=y -# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set -# CONFIG_TOUCHSCREEN_BU21013 is not set -# CONFIG_TOUCHSCREEN_DYNAPRO is not set -# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set -# CONFIG_TOUCHSCREEN_MAX11801 is not set -# CONFIG_TOUCHSCREEN_ST1232 is not set -CONFIG_TOUCHSCREEN_TSC2005=y -CONFIG_TOUCHSCREEN_TSC2301=y -# CONFIG_TSL2583 is not set -CONFIG_TUN=m -CONFIG_UACCESS_WITH_MEMCPY=y -CONFIG_UID16=y -CONFIG_USB=m -# CONFIG_USB_ARCH_HAS_EHCI is not set -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_CDC_COMPOSITE is not set -# CONFIG_USB_DUMMY_HCD is not set -CONFIG_USB_ETH=m -# CONFIG_USB_ETH_EEM is not set -# CONFIG_USB_ETH_RNDIS is not set -# CONFIG_USB_FILE_STORAGE is not set -# CONFIG_USB_FUNCTIONFS is not set -# CONFIG_USB_FUSB300 is not set -CONFIG_USB_GADGET=m -# CONFIG_USB_GADGETFS is not set -# CONFIG_USB_GADGET_DEBUG_FILES is not set -CONFIG_USB_GADGET_DUALSPEED=y -CONFIG_USB_GADGET_MUSB_HDRC=m -CONFIG_USB_GADGET_VBUS_DRAW=100 -CONFIG_USB_GSPCA=m -# CONFIG_USB_G_DBGP is not set -# CONFIG_USB_G_HID is not set -CONFIG_USB_G_NCM=m -# CONFIG_USB_G_PRINTER is not set -# CONFIG_USB_G_SERIAL is not set -# CONFIG_USB_G_WEBCAM is not set -CONFIG_USB_HID=m -# CONFIG_USB_INVENTRA_DMA is not set -# CONFIG_USB_M66592 is not set -# CONFIG_USB_MIDI_GADGET is not set -# CONFIG_USB_MUSB_AM35X is not set -CONFIG_USB_MUSB_HDRC=m -# CONFIG_USB_MUSB_OMAP2PLUS is not set -CONFIG_USB_MUSB_TUSB6010=m -# CONFIG_USB_NET2272 is not set -CONFIG_USB_NET_CDC_NCM=m -# CONFIG_USB_OMAP is not set -CONFIG_USB_OTG_UTILS=y -# CONFIG_USB_PWC is not set -# CONFIG_USB_R8A66597 is not set -CONFIG_USB_SERIAL=m -CONFIG_USB_SUPPORT=y -# CONFIG_USB_TI_CPPI_DMA is not set -CONFIG_USB_TUSB_OMAP_DMA=y -CONFIG_USB_USBNET=m -# CONFIG_USB_UX500_DMA is not set -# CONFIG_USB_ZERO is not set -# CONFIG_USER_NS is not set -CONFIG_V4L_USB_DRIVERS=y -CONFIG_VECTORS_BASE=0xffff0000 -CONFIG_VFAT_FS=y -CONFIG_VFP=y -CONFIG_VIDEO_CAPTURE_DRIVERS=y -# CONFIG_VIDEO_CPIA2 is not set -CONFIG_VIDEO_DEV=m -CONFIG_VIDEO_IR_I2C=m -CONFIG_VIDEO_MEDIA=m -# CONFIG_VIDEO_OMAP2 is not set -# CONFIG_VIDEO_OMAP2_VOUT is not set -CONFIG_VIDEO_TCM825X=m -CONFIG_VIDEO_V4L2=m -CONFIG_VIDEO_V4L2_COMMON=m -CONFIG_VLAN_8021Q=m -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -# CONFIG_VT_HW_CONSOLE_BINDING is not set -CONFIG_WATCHDOG_NOWAYOUT=y -# CONFIG_WEXT_PRIV is not set -# CONFIG_WEXT_SPY is not set -CONFIG_XZ_DEC=y -CONFIG_XZ_DEC_ARM=y -CONFIG_XZ_DEC_ARMTHUMB=y -CONFIG_XZ_DEC_BCJ=y -# CONFIG_ZBOOT_ROM is not set -CONFIG_ZBOOT_ROM_BSS=0x10200000 -CONFIG_ZBOOT_ROM_TEXT=0x10C08000 -CONFIG_ZONE_DMA_FLAG=0 diff --git a/target/linux/omap24xx/patches-3.1/200-omap-platform.patch b/target/linux/omap24xx/patches-3.1/200-omap-platform.patch deleted file mode 100644 index 9a2e9436fa..0000000000 --- a/target/linux/omap24xx/patches-3.1/200-omap-platform.patch +++ /dev/null @@ -1,897 +0,0 @@ ---- /dev/null -+++ b/arch/arm/plat-omap/bootreason.c -@@ -0,0 +1,79 @@ -+/* -+ * linux/arch/arm/plat-omap/bootreason.c -+ * -+ * OMAP Bootreason passing -+ * -+ * Copyright (c) 2004 Nokia -+ * -+ * Written by David Weinehall -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2 of the License, or (at your -+ * option) any later version. -+ * -+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED -+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN -+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with this program; if not, write to the Free Software Foundation, Inc., -+ * 675 Mass Ave, Cambridge, MA 02139, USA. -+ */ -+#include -+#include -+#include -+ -+static char boot_reason[16]; -+ -+static int omap_bootreason_read_proc(char *page, char **start, off_t off, -+ int count, int *eof, void *data) -+{ -+ int len = 0; -+ -+ len += sprintf(page + len, "%s\n", boot_reason); -+ -+ *start = page + off; -+ -+ if (len > off) -+ len -= off; -+ else -+ len = 0; -+ -+ return len < count ? len : count; -+} -+ -+static int __init bootreason_init(void) -+{ -+ const struct omap_boot_reason_config *cfg; -+ int reason_valid = 0; -+ -+ cfg = omap_get_config(OMAP_TAG_BOOT_REASON, struct omap_boot_reason_config); -+ if (cfg != NULL) { -+ strncpy(boot_reason, cfg->reason_str, sizeof(cfg->reason_str)); -+ boot_reason[sizeof(cfg->reason_str)] = 0; -+ reason_valid = 1; -+ } else { -+ /* Read the boot reason from the OMAP registers */ -+ } -+ -+ if (!reason_valid) -+ return -ENOENT; -+ -+ printk(KERN_INFO "Bootup reason: %s\n", boot_reason); -+ -+ if (!create_proc_read_entry("bootreason", S_IRUGO, NULL, -+ omap_bootreason_read_proc, NULL)) -+ return -ENOMEM; -+ -+ return 0; -+} -+ -+late_initcall(bootreason_init); ---- a/arch/arm/plat-omap/common.c -+++ b/arch/arm/plat-omap/common.c -@@ -21,18 +21,90 @@ - #include - #include - -+#include -+ - - #define NO_LENGTH_CHECK 0xffffffff - - struct omap_board_config_kernel *omap_board_config __initdata; - int omap_board_config_size; - -+unsigned char omap_bootloader_tag[1024]; -+int omap_bootloader_tag_len; -+ -+/* used by omap-smp.c and board-4430sdp.c */ -+void __iomem *gic_cpu_base_addr; -+ -+#ifdef CONFIG_OMAP_BOOT_TAG -+ -+static int __init parse_tag_omap(const struct tag *tag) -+{ -+ u32 size = tag->hdr.size - (sizeof(tag->hdr) >> 2); -+ -+ size <<= 2; -+ if (size > sizeof(omap_bootloader_tag)) -+ return -1; -+ -+ memcpy(omap_bootloader_tag, tag->u.omap.data, size); -+ omap_bootloader_tag_len = size; -+ -+ return 0; -+} -+ -+__tagtable(ATAG_BOARD, parse_tag_omap); -+ -+#endif -+ - static const void *__init get_config(u16 tag, size_t len, - int skip, size_t *len_out) - { - struct omap_board_config_kernel *kinfo = NULL; - int i; - -+#ifdef CONFIG_OMAP_BOOT_TAG -+ struct omap_board_config_entry *info = NULL; -+ -+ if (omap_bootloader_tag_len > 4) -+ info = (struct omap_board_config_entry *) omap_bootloader_tag; -+ while (info != NULL) { -+ u8 *next; -+ -+ if (info->tag == tag) { -+ if (skip == 0) -+ break; -+ skip--; -+ } -+ -+ if ((info->len & 0x03) != 0) { -+ /* We bail out to avoid an alignment fault */ -+ printk(KERN_ERR "OMAP peripheral config: Length (%d) not word-aligned (tag %04x)\n", -+ info->len, info->tag); -+ return NULL; -+ } -+ next = (u8 *) info + sizeof(*info) + info->len; -+ if (next >= omap_bootloader_tag + omap_bootloader_tag_len) -+ info = NULL; -+ else -+ info = (struct omap_board_config_entry *) next; -+ } -+ if (info != NULL) { -+ /* Check the length as a lame attempt to check for -+ * binary inconsistency. */ -+ if (len != NO_LENGTH_CHECK) { -+ /* Word-align len */ -+ if (len & 0x03) -+ len = (len + 3) & ~0x03; -+ if (info->len != len) { -+ printk(KERN_ERR "OMAP peripheral config: Length mismatch with tag %x (want %d, got %d)\n", -+ tag, len, info->len); -+ return NULL; -+ } -+ } -+ if (len_out != NULL) -+ *len_out = info->len; -+ return info->data; -+ } -+#endif - /* Try to find the config from the board-specific structures - * in the kernel. */ - for (i = 0; i < omap_board_config_size; i++) { ---- /dev/null -+++ b/arch/arm/plat-omap/component-version.c -@@ -0,0 +1,64 @@ -+/* -+ * linux/arch/arm/plat-omap/component-version.c -+ * -+ * Copyright (C) 2005 Nokia Corporation -+ * Written by Juha Yrjölä -+ * -+ * 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 -+#include -+#include -+#include -+#include -+ -+static int component_version_read_proc(char *page, char **start, off_t off, -+ int count, int *eof, void *data) -+{ -+ int len, i; -+ const struct omap_version_config *ver; -+ char *p; -+ -+ i = 0; -+ p = page; -+ while ((ver = omap_get_nr_config(OMAP_TAG_VERSION_STR, -+ struct omap_version_config, i)) != NULL) { -+ p += sprintf(p, "%-12s%s\n", ver->component, ver->version); -+ i++; -+ } -+ -+ len = (p - page) - off; -+ if (len < 0) -+ len = 0; -+ -+ *eof = (len <= count) ? 1 : 0; -+ *start = page + off; -+ -+ return len; -+} -+ -+static int __init component_version_init(void) -+{ -+ if (omap_get_config(OMAP_TAG_VERSION_STR, struct omap_version_config) == NULL) -+ return -ENODEV; -+ if (!create_proc_read_entry("component_version", S_IRUGO, NULL, -+ component_version_read_proc, NULL)) -+ return -ENOMEM; -+ -+ return 0; -+} -+ -+static void __exit component_version_exit(void) -+{ -+ remove_proc_entry("component_version", NULL); -+} -+ -+late_initcall(component_version_init); -+module_exit(component_version_exit); -+ -+MODULE_AUTHOR("Juha Yrjölä "); -+MODULE_DESCRIPTION("Component version driver"); -+MODULE_LICENSE("GPL"); ---- a/arch/arm/plat-omap/Kconfig -+++ b/arch/arm/plat-omap/Kconfig -@@ -82,6 +82,38 @@ config OMAP_RESET_CLOCKS - probably do not want this option enabled until your - device drivers work properly. - -+config OMAP_BOOT_TAG -+ bool "OMAP bootloader information passing" -+ depends on ARCH_OMAP -+ default n -+ help -+ Say Y, if you have a bootloader which passes information -+ about your board and its peripheral configuration. -+ -+config OMAP_BOOT_REASON -+ bool "Support for boot reason" -+ depends on OMAP_BOOT_TAG -+ default n -+ help -+ Say Y, if you want to have a procfs entry for reading the boot -+ reason in user-space. -+ -+config OMAP_COMPONENT_VERSION -+ bool "Support for component version display" -+ depends on OMAP_BOOT_TAG && PROC_FS -+ default n -+ help -+ Say Y, if you want to have a procfs entry for reading component -+ versions (supplied by the bootloader) in user-space. -+ -+config OMAP_GPIO_SWITCH -+ bool "GPIO switch support" -+ help -+ Say Y, if you want to have support for reporting of GPIO -+ switches (e.g. cover switches) via sysfs. Your bootloader has -+ to provide information about the switches to the kernel via the -+ ATAG_BOARD mechanism if they're not defined by the board config. -+ - config OMAP_MUX - bool "OMAP multiplexing support" - depends on ARCH_OMAP ---- a/arch/arm/plat-omap/Makefile -+++ b/arch/arm/plat-omap/Makefile -@@ -23,6 +23,9 @@ obj-$(CONFIG_OMAP_IOMMU_DEBUG) += iommu- - - obj-$(CONFIG_CPU_FREQ) += cpu-omap.o - obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o -+obj-$(CONFIG_OMAP_BOOT_REASON) += bootreason.o -+obj-$(CONFIG_OMAP_COMPONENT_VERSION) += component-version.o -+obj-$(CONFIG_OMAP_GPIO_SWITCH) += gpio-switch.o - obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o - obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o - i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o ---- a/arch/arm/include/asm/setup.h -+++ b/arch/arm/include/asm/setup.h -@@ -136,6 +136,13 @@ struct tag_acorn { - __u8 adfsdrives; - }; - -+/* TI OMAP specific information */ -+#define ATAG_BOARD 0x414f4d50 -+ -+struct tag_omap { -+ u8 data[0]; -+}; -+ - /* footbridge memory clock, see arch/arm/mach-footbridge/arch.c */ - #define ATAG_MEMCLK 0x41000402 - -@@ -162,6 +169,11 @@ struct tag { - struct tag_acorn acorn; - - /* -+ * OMAP specific -+ */ -+ struct tag_omap omap; -+ -+ /* - * DC21285 specific - */ - struct tag_memclk memclk; ---- /dev/null -+++ b/arch/arm/plat-omap/gpio-switch.c -@@ -0,0 +1,554 @@ -+/* -+ * linux/arch/arm/plat-omap/gpio-switch.c -+ * -+ * Copyright (C) 2004-2006 Nokia Corporation -+ * Written by Juha Yrjölä -+ * and Paul Mundt -+ * -+ * 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 -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+struct gpio_switch { -+ char name[14]; -+ u16 gpio; -+ unsigned flags:4; -+ unsigned type:4; -+ unsigned state:1; -+ unsigned both_edges:1; -+ -+ u16 debounce_rising; -+ u16 debounce_falling; -+ -+ void (* notify)(void *data, int state); -+ void *notify_data; -+ -+ struct work_struct work; -+ struct timer_list timer; -+ struct platform_device pdev; -+ -+ struct list_head node; -+}; -+ -+static LIST_HEAD(gpio_switches); -+static struct platform_device *gpio_sw_platform_dev; -+static struct platform_driver gpio_sw_driver; -+ -+static const struct omap_gpio_switch *board_gpio_sw_table; -+static int board_gpio_sw_count; -+ -+static const char *cover_str[2] = { "open", "closed" }; -+static const char *connection_str[2] = { "disconnected", "connected" }; -+static const char *activity_str[2] = { "inactive", "active" }; -+ -+/* -+ * GPIO switch state default debounce delay in ms -+ */ -+#define OMAP_GPIO_SW_DEFAULT_DEBOUNCE 10 -+ -+static const char **get_sw_str(struct gpio_switch *sw) -+{ -+ switch (sw->type) { -+ case OMAP_GPIO_SWITCH_TYPE_COVER: -+ return cover_str; -+ case OMAP_GPIO_SWITCH_TYPE_CONNECTION: -+ return connection_str; -+ case OMAP_GPIO_SWITCH_TYPE_ACTIVITY: -+ return activity_str; -+ default: -+ BUG(); -+ return NULL; -+ } -+} -+ -+static const char *get_sw_type(struct gpio_switch *sw) -+{ -+ switch (sw->type) { -+ case OMAP_GPIO_SWITCH_TYPE_COVER: -+ return "cover"; -+ case OMAP_GPIO_SWITCH_TYPE_CONNECTION: -+ return "connection"; -+ case OMAP_GPIO_SWITCH_TYPE_ACTIVITY: -+ return "activity"; -+ default: -+ BUG(); -+ return NULL; -+ } -+} -+ -+static void print_sw_state(struct gpio_switch *sw, int state) -+{ -+ const char **str; -+ -+ str = get_sw_str(sw); -+ if (str != NULL) -+ printk(KERN_INFO "%s (GPIO %d) is now %s\n", sw->name, sw->gpio, str[state]); -+} -+ -+static int gpio_sw_get_state(struct gpio_switch *sw) -+{ -+ int state; -+ -+ state = gpio_get_value(sw->gpio); -+ if (sw->flags & OMAP_GPIO_SWITCH_FLAG_INVERTED) -+ state = !state; -+ -+ return state; -+} -+ -+static ssize_t gpio_sw_state_store(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, -+ size_t count) -+{ -+ struct gpio_switch *sw = dev_get_drvdata(dev); -+ const char **str; -+ char state[16]; -+ int enable; -+ -+ if (!(sw->flags & OMAP_GPIO_SWITCH_FLAG_OUTPUT)) -+ return -EPERM; -+ -+ if (sscanf(buf, "%15s", state) != 1) -+ return -EINVAL; -+ -+ str = get_sw_str(sw); -+ if (strcmp(state, str[0]) == 0) -+ sw->state = enable = 0; -+ else if (strcmp(state, str[1]) == 0) -+ sw->state = enable = 1; -+ else -+ return -EINVAL; -+ -+ if (sw->flags & OMAP_GPIO_SWITCH_FLAG_INVERTED) -+ enable = !enable; -+ gpio_set_value(sw->gpio, enable); -+ -+ return count; -+} -+ -+static ssize_t gpio_sw_state_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct gpio_switch *sw = dev_get_drvdata(dev); -+ const char **str; -+ -+ str = get_sw_str(sw); -+ return sprintf(buf, "%s\n", str[sw->state]); -+} -+ -+static DEVICE_ATTR(state, S_IRUGO | S_IWUSR, gpio_sw_state_show, -+ gpio_sw_state_store); -+ -+static ssize_t gpio_sw_type_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct gpio_switch *sw = dev_get_drvdata(dev); -+ -+ return sprintf(buf, "%s\n", get_sw_type(sw)); -+} -+ -+static DEVICE_ATTR(type, S_IRUGO, gpio_sw_type_show, NULL); -+ -+static ssize_t gpio_sw_direction_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct gpio_switch *sw = dev_get_drvdata(dev); -+ int is_output; -+ -+ is_output = sw->flags & OMAP_GPIO_SWITCH_FLAG_OUTPUT; -+ return sprintf(buf, "%s\n", is_output ? "output" : "input"); -+} -+ -+static DEVICE_ATTR(direction, S_IRUGO, gpio_sw_direction_show, NULL); -+ -+ -+static irqreturn_t gpio_sw_irq_handler(int irq, void *arg) -+{ -+ struct gpio_switch *sw = arg; -+ unsigned long timeout; -+ int state; -+ -+ if (!sw->both_edges) { -+ if (gpio_get_value(sw->gpio)) -+ irq_set_irq_type(OMAP_GPIO_IRQ(sw->gpio), IRQ_TYPE_EDGE_FALLING); -+ else -+ irq_set_irq_type(OMAP_GPIO_IRQ(sw->gpio), IRQ_TYPE_EDGE_RISING); -+ } -+ -+ state = gpio_sw_get_state(sw); -+ if (sw->state == state) -+ return IRQ_HANDLED; -+ -+ if (state) -+ timeout = sw->debounce_rising; -+ else -+ timeout = sw->debounce_falling; -+ if (!timeout) -+ schedule_work(&sw->work); -+ else -+ mod_timer(&sw->timer, jiffies + msecs_to_jiffies(timeout)); -+ -+ return IRQ_HANDLED; -+} -+ -+static void gpio_sw_timer(unsigned long arg) -+{ -+ struct gpio_switch *sw = (struct gpio_switch *) arg; -+ -+ schedule_work(&sw->work); -+} -+ -+static void gpio_sw_handler(struct work_struct *work) -+{ -+ struct gpio_switch *sw = container_of(work, struct gpio_switch, work); -+ int state; -+ -+ state = gpio_sw_get_state(sw); -+ if (sw->state == state) -+ return; -+ -+ sw->state = state; -+ if (sw->notify != NULL) -+ sw->notify(sw->notify_data, state); -+ sysfs_notify(&sw->pdev.dev.kobj, NULL, "state"); -+ print_sw_state(sw, state); -+} -+ -+static int __init can_do_both_edges(struct gpio_switch *sw) -+{ -+ if (!cpu_class_is_omap1()) -+ return 1; -+ if (OMAP_GPIO_IS_MPUIO(sw->gpio)) -+ return 0; -+ else -+ return 1; -+} -+ -+static void gpio_sw_release(struct device *dev) -+{ -+} -+ -+static int __init new_switch(struct gpio_switch *sw) -+{ -+ int r, direction, trigger; -+ -+ switch (sw->type) { -+ case OMAP_GPIO_SWITCH_TYPE_COVER: -+ case OMAP_GPIO_SWITCH_TYPE_CONNECTION: -+ case OMAP_GPIO_SWITCH_TYPE_ACTIVITY: -+ break; -+ default: -+ printk(KERN_ERR "invalid GPIO switch type: %d\n", sw->type); -+ return -EINVAL; -+ } -+ -+ sw->pdev.name = sw->name; -+ sw->pdev.id = -1; -+ -+ sw->pdev.dev.parent = &gpio_sw_platform_dev->dev; -+ sw->pdev.dev.driver = &gpio_sw_driver.driver; -+ sw->pdev.dev.release = gpio_sw_release; -+ -+ r = platform_device_register(&sw->pdev); -+ if (r) { -+ printk(KERN_ERR "gpio-switch: platform device registration " -+ "failed for %s", sw->name); -+ return r; -+ } -+ dev_set_drvdata(&sw->pdev.dev, sw); -+ -+ r = gpio_request(sw->gpio, "gpio-switch"); -+ if (r < 0) { -+ platform_device_unregister(&sw->pdev); -+ return r; -+ } -+ -+ /* input: 1, output: 0 */ -+ direction = !(sw->flags & OMAP_GPIO_SWITCH_FLAG_OUTPUT); -+ if (direction) -+ gpio_direction_input(sw->gpio); -+ else -+ gpio_direction_output(sw->gpio, 0); -+ -+ sw->state = gpio_sw_get_state(sw); -+ -+ r = 0; -+ r |= device_create_file(&sw->pdev.dev, &dev_attr_state); -+ r |= device_create_file(&sw->pdev.dev, &dev_attr_type); -+ r |= device_create_file(&sw->pdev.dev, &dev_attr_direction); -+ if (r) -+ printk(KERN_ERR "gpio-switch: attribute file creation " -+ "failed for %s\n", sw->name); -+ -+ if (!direction) -+ return 0; -+ -+ if (can_do_both_edges(sw)) { -+ trigger = IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING; -+ sw->both_edges = 1; -+ } else { -+ if (gpio_get_value(sw->gpio)) -+ trigger = IRQF_TRIGGER_FALLING; -+ else -+ trigger = IRQF_TRIGGER_RISING; -+ } -+ r = request_irq(OMAP_GPIO_IRQ(sw->gpio), gpio_sw_irq_handler, -+ IRQF_SHARED | trigger, sw->name, sw); -+ if (r < 0) { -+ printk(KERN_ERR "gpio-switch: request_irq() failed " -+ "for GPIO %d\n", sw->gpio); -+ platform_device_unregister(&sw->pdev); -+ gpio_free(sw->gpio); -+ return r; -+ } -+ -+ INIT_WORK(&sw->work, gpio_sw_handler); -+ init_timer(&sw->timer); -+ -+ sw->timer.function = gpio_sw_timer; -+ sw->timer.data = (unsigned long)sw; -+ -+ list_add(&sw->node, &gpio_switches); -+ -+ return 0; -+} -+ -+static int __init add_atag_switches(void) -+{ -+ const struct omap_gpio_switch_config *cfg; -+ struct gpio_switch *sw; -+ int i, r; -+ -+ for (i = 0; ; i++) { -+ cfg = omap_get_nr_config(OMAP_TAG_GPIO_SWITCH, -+ struct omap_gpio_switch_config, i); -+ if (cfg == NULL) -+ break; -+ sw = kzalloc(sizeof(*sw), GFP_KERNEL); -+ if (sw == NULL) { -+ printk(KERN_ERR "gpio-switch: kmalloc failed\n"); -+ return -ENOMEM; -+ } -+ strncpy(sw->name, cfg->name, sizeof(cfg->name)); -+ sw->gpio = cfg->gpio; -+ sw->flags = cfg->flags; -+ sw->type = cfg->type; -+ sw->debounce_rising = OMAP_GPIO_SW_DEFAULT_DEBOUNCE; -+ sw->debounce_falling = OMAP_GPIO_SW_DEFAULT_DEBOUNCE; -+ if ((r = new_switch(sw)) < 0) { -+ kfree(sw); -+ return r; -+ } -+ } -+ return 0; -+} -+ -+static struct gpio_switch * __init find_switch(int gpio, const char *name) -+{ -+ struct gpio_switch *sw; -+ -+ list_for_each_entry(sw, &gpio_switches, node) { -+ if ((gpio < 0 || sw->gpio != gpio) && -+ (name == NULL || strcmp(sw->name, name) != 0)) -+ continue; -+ -+ if (gpio < 0 || name == NULL) -+ goto no_check; -+ -+ if (strcmp(sw->name, name) != 0) -+ printk("gpio-switch: name mismatch for %d (%s, %s)\n", -+ gpio, name, sw->name); -+ else if (sw->gpio != gpio) -+ printk("gpio-switch: GPIO mismatch for %s (%d, %d)\n", -+ name, gpio, sw->gpio); -+no_check: -+ return sw; -+ } -+ return NULL; -+} -+ -+static int __init add_board_switches(void) -+{ -+ int i; -+ -+ for (i = 0; i < board_gpio_sw_count; i++) { -+ const struct omap_gpio_switch *cfg; -+ struct gpio_switch *sw; -+ int r; -+ -+ cfg = board_gpio_sw_table + i; -+ if (strlen(cfg->name) > sizeof(sw->name) - 1) -+ return -EINVAL; -+ /* Check whether we only update an existing switch -+ * or add a new switch. */ -+ sw = find_switch(cfg->gpio, cfg->name); -+ if (sw != NULL) { -+ sw->debounce_rising = cfg->debounce_rising; -+ sw->debounce_falling = cfg->debounce_falling; -+ sw->notify = cfg->notify; -+ sw->notify_data = cfg->notify_data; -+ continue; -+ } else { -+ if (cfg->gpio < 0 || cfg->name == NULL) { -+ printk("gpio-switch: required switch not " -+ "found (%d, %s)\n", cfg->gpio, -+ cfg->name); -+ continue; -+ } -+ } -+ sw = kzalloc(sizeof(*sw), GFP_KERNEL); -+ if (sw == NULL) { -+ printk(KERN_ERR "gpio-switch: kmalloc failed\n"); -+ return -ENOMEM; -+ } -+ strlcpy(sw->name, cfg->name, sizeof(sw->name)); -+ sw->gpio = cfg->gpio; -+ sw->flags = cfg->flags; -+ sw->type = cfg->type; -+ sw->debounce_rising = cfg->debounce_rising; -+ sw->debounce_falling = cfg->debounce_falling; -+ sw->notify = cfg->notify; -+ sw->notify_data = cfg->notify_data; -+ if ((r = new_switch(sw)) < 0) { -+ kfree(sw); -+ return r; -+ } -+ } -+ return 0; -+} -+ -+static void gpio_sw_cleanup(void) -+{ -+ struct gpio_switch *sw = NULL, *old = NULL; -+ -+ list_for_each_entry(sw, &gpio_switches, node) { -+ if (old != NULL) -+ kfree(old); -+ flush_scheduled_work(); -+ del_timer_sync(&sw->timer); -+ -+ free_irq(OMAP_GPIO_IRQ(sw->gpio), sw); -+ -+ device_remove_file(&sw->pdev.dev, &dev_attr_state); -+ device_remove_file(&sw->pdev.dev, &dev_attr_type); -+ device_remove_file(&sw->pdev.dev, &dev_attr_direction); -+ -+ platform_device_unregister(&sw->pdev); -+ gpio_free(sw->gpio); -+ old = sw; -+ } -+ kfree(old); -+} -+ -+static void __init report_initial_state(void) -+{ -+ struct gpio_switch *sw; -+ -+ list_for_each_entry(sw, &gpio_switches, node) { -+ int state; -+ -+ state = gpio_get_value(sw->gpio); -+ if (sw->flags & OMAP_GPIO_SWITCH_FLAG_INVERTED) -+ state = !state; -+ if (sw->notify != NULL) -+ sw->notify(sw->notify_data, state); -+ print_sw_state(sw, state); -+ } -+} -+ -+static int gpio_sw_remove(struct platform_device *dev) -+{ -+ return 0; -+} -+ -+static struct platform_driver gpio_sw_driver = { -+ .remove = gpio_sw_remove, -+ .driver = { -+ .name = "gpio-switch", -+ }, -+}; -+ -+void __init omap_register_gpio_switches(const struct omap_gpio_switch *tbl, -+ int count) -+{ -+ BUG_ON(board_gpio_sw_table != NULL); -+ -+ board_gpio_sw_table = tbl; -+ board_gpio_sw_count = count; -+} -+ -+static int __init gpio_sw_init(void) -+{ -+ int r; -+ -+ printk(KERN_INFO "OMAP GPIO switch handler initializing\n"); -+ -+ r = platform_driver_register(&gpio_sw_driver); -+ if (r) -+ return r; -+ -+ gpio_sw_platform_dev = platform_device_register_simple("gpio-switch", -+ -1, NULL, 0); -+ if (IS_ERR(gpio_sw_platform_dev)) { -+ r = PTR_ERR(gpio_sw_platform_dev); -+ goto err1; -+ } -+ -+ r = add_atag_switches(); -+ if (r < 0) -+ goto err2; -+ -+ r = add_board_switches(); -+ if (r < 0) -+ goto err2; -+ -+ report_initial_state(); -+ -+ return 0; -+err2: -+ gpio_sw_cleanup(); -+ platform_device_unregister(gpio_sw_platform_dev); -+err1: -+ platform_driver_unregister(&gpio_sw_driver); -+ return r; -+} -+ -+static void __exit gpio_sw_exit(void) -+{ -+ gpio_sw_cleanup(); -+ platform_device_unregister(gpio_sw_platform_dev); -+ platform_driver_unregister(&gpio_sw_driver); -+} -+ -+#ifndef MODULE -+late_initcall(gpio_sw_init); -+#else -+module_init(gpio_sw_init); -+#endif -+module_exit(gpio_sw_exit); -+ -+MODULE_AUTHOR("Juha Yrjölä , Paul Mundt -+ -+/* Tag a function as requiring to be executed via an identity mapping. */ -+#define __idmap __section(.idmap.text) noinline notrace -+ -+void setup_mm_for_reboot(void); -+ -+#endif /* __ASM_IDMAP_H */ ---- a/arch/arm/include/asm/mach/arch.h -+++ b/arch/arm/include/asm/mach/arch.h -@@ -30,10 +30,10 @@ struct machine_desc { - unsigned int video_start; /* start of video RAM */ - unsigned int video_end; /* end of video RAM */ - -- unsigned int reserve_lp0 :1; /* never has lp0 */ -- unsigned int reserve_lp1 :1; /* never has lp1 */ -- unsigned int reserve_lp2 :1; /* never has lp2 */ -- unsigned int soft_reboot :1; /* soft reboot */ -+ unsigned char reserve_lp0 :1; /* never has lp0 */ -+ unsigned char reserve_lp1 :1; /* never has lp1 */ -+ unsigned char reserve_lp2 :1; /* never has lp2 */ -+ char restart_mode; /* default restart mode */ - void (*fixup)(struct machine_desc *, - struct tag *, char **, - struct meminfo *); -@@ -46,6 +46,7 @@ struct machine_desc { - #ifdef CONFIG_MULTI_IRQ_HANDLER - void (*handle_irq)(struct pt_regs *); - #endif -+ void (*restart)(char, const char *); - }; - - /* ---- a/arch/arm/include/asm/system.h -+++ b/arch/arm/include/asm/system.h -@@ -107,7 +107,7 @@ extern void __show_regs(struct pt_regs * - extern int cpu_architecture(void); - extern void cpu_init(void); - --void arm_machine_restart(char mode, const char *cmd); -+void soft_restart(unsigned long); - extern void (*arm_pm_restart)(char str, const char *cmd); - - #define UDBG_UNDEFINED (1 << 0) ---- a/arch/arm/kernel/machine_kexec.c -+++ b/arch/arm/kernel/machine_kexec.c -@@ -12,12 +12,11 @@ - #include - #include - #include -+#include - - extern const unsigned char relocate_new_kernel[]; - extern const unsigned int relocate_new_kernel_size; - --extern void setup_mm_for_reboot(char mode); -- - extern unsigned long kexec_start_address; - extern unsigned long kexec_indirection_page; - extern unsigned long kexec_mach_type; -@@ -111,14 +110,6 @@ void machine_kexec(struct kimage *image) - - if (kexec_reinit) - kexec_reinit(); -- local_irq_disable(); -- local_fiq_disable(); -- setup_mm_for_reboot(0); /* mode is not used, so just pass 0*/ -- flush_cache_all(); -- outer_flush_all(); -- outer_disable(); -- cpu_proc_fin(); -- outer_inv_all(); -- flush_cache_all(); -- cpu_reset(reboot_code_buffer_phys); -+ -+ soft_restart(reboot_code_buffer_phys); - } ---- a/arch/arm/kernel/process.c -+++ b/arch/arm/kernel/process.c -@@ -57,7 +57,7 @@ static const char *isa_modes[] = { - "ARM" , "Thumb" , "Jazelle", "ThumbEE" - }; - --extern void setup_mm_for_reboot(char mode); -+extern void setup_mm_for_reboot(void); - - static volatile int hlt_counter; - -@@ -92,40 +92,64 @@ static int __init hlt_setup(char *__unus - __setup("nohlt", nohlt_setup); - __setup("hlt", hlt_setup); - --void arm_machine_restart(char mode, const char *cmd) -+extern void call_with_stack(void (*fn)(void *), void *arg, void *sp); -+typedef void (*phys_reset_t)(unsigned long); -+ -+/* -+ * A temporary stack to use for CPU reset. This is static so that we -+ * don't clobber it with the identity mapping. When running with this -+ * stack, any references to the current task *will not work* so you -+ * should really do as little as possible before jumping to your reset -+ * code. -+ */ -+#define SOFT_RESTART_STACK_WORDS 32 -+static u32 soft_restart_stack[SOFT_RESTART_STACK_WORDS]; -+ -+static void __soft_restart(void *addr) - { -- /* Disable interrupts first */ -- local_irq_disable(); -- local_fiq_disable(); -+ phys_reset_t phys_reset; - -- /* -- * Tell the mm system that we are going to reboot - -- * we may need it to insert some 1:1 mappings so that -- * soft boot works. -- */ -- setup_mm_for_reboot(mode); -+ /* Take out a flat memory mapping. */ -+ setup_mm_for_reboot(); - -- /* Clean and invalidate caches */ -+ /* Clean and invalidate caches. */ - flush_cache_all(); - -- /* Turn off caching */ -+ /* Turn off caching. */ - cpu_proc_fin(); - - /* Push out any further dirty data, and ensure cache is empty */ - flush_cache_all(); - -- /* -- * Now call the architecture specific reboot code. -- */ -- arch_reset(mode, cmd); -- -- /* -- * Whoops - the architecture was unable to reboot. -- * Tell the user! -- */ -- mdelay(1000); -- printk("Reboot failed -- System halted\n"); -- while (1); -+ /* Switch to the identity mapping. */ -+ phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset); -+ phys_reset((unsigned long)addr); -+ -+ /* Should never get here. */ -+ BUG(); -+} -+ -+void soft_restart(unsigned long addr) -+{ -+ u32 *stack = soft_restart_stack + SOFT_RESTART_STACK_WORDS; -+ -+ /* Disable interrupts first */ -+ local_irq_disable(); -+ local_fiq_disable(); -+ -+ /* Disable the L2 if we're the last man standing. */ -+ if (num_online_cpus() == 1) -+ outer_disable(); -+ -+ /* Change to the new stack and continue with the reset. */ -+ call_with_stack(__soft_restart, (void *)addr, (void *)stack); -+ -+ /* Should never get here. */ -+ BUG(); -+} -+ -+static void null_restart(char mode, const char *cmd) -+{ - } - - /* -@@ -134,7 +158,7 @@ void arm_machine_restart(char mode, cons - void (*pm_power_off)(void); - EXPORT_SYMBOL(pm_power_off); - --void (*arm_pm_restart)(char str, const char *cmd) = arm_machine_restart; -+void (*arm_pm_restart)(char str, const char *cmd) = null_restart; - EXPORT_SYMBOL_GPL(arm_pm_restart); - - static void do_nothing(void *unused) -@@ -253,7 +277,15 @@ void machine_power_off(void) - void machine_restart(char *cmd) - { - machine_shutdown(); -+ - arm_pm_restart(reboot_mode, cmd); -+ -+ /* Give a grace period for failure to restart of 1s */ -+ mdelay(1000); -+ -+ /* Whoops - the platform was unable to reboot. Tell the user! */ -+ printk("Reboot failed -- System halted\n"); -+ while (1); - } - - void __show_regs(struct pt_regs *regs) ---- a/arch/arm/kernel/setup.c -+++ b/arch/arm/kernel/setup.c -@@ -896,8 +896,8 @@ void __init setup_arch(char **cmdline_p) - arm_dma_zone_size = mdesc->dma_zone_size; - } - #endif -- if (mdesc->soft_reboot) -- reboot_setup("s"); -+ if (mdesc->restart_mode) -+ reboot_setup(&mdesc->restart_mode); - - init_mm.start_code = (unsigned long) _text; - init_mm.end_code = (unsigned long) _etext; -@@ -916,6 +916,9 @@ void __init setup_arch(char **cmdline_p) - paging_init(mdesc); - request_standard_resources(mdesc); - -+ if (mdesc->restart) -+ arm_pm_restart = mdesc->restart; -+ - unflatten_device_tree(); - - #ifdef CONFIG_SMP ---- a/arch/arm/kernel/smp.c -+++ b/arch/arm/kernel/smp.c -@@ -558,6 +558,10 @@ static void ipi_cpu_stop(unsigned int cp - local_fiq_disable(); - local_irq_disable(); - -+#ifdef CONFIG_HOTPLUG_CPU -+ platform_cpu_kill(cpu); -+#endif -+ - while (1) - cpu_relax(); - } ---- a/arch/arm/kernel/vmlinux.lds.S -+++ b/arch/arm/kernel/vmlinux.lds.S -@@ -91,6 +91,7 @@ SECTIONS - SCHED_TEXT - LOCK_TEXT - KPROBES_TEXT -+ IDMAP_TEXT - #ifdef CONFIG_MMU - *(.fixup) - #endif ---- a/arch/arm/lib/Makefile -+++ b/arch/arm/lib/Makefile -@@ -13,7 +13,8 @@ lib-y := backtrace.o changebit.o csumip - testchangebit.o testclearbit.o testsetbit.o \ - ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \ - ucmpdi2.o lib1funcs.o div64.o \ -- io-readsb.o io-writesb.o io-readsl.o io-writesl.o -+ io-readsb.o io-writesb.o io-readsl.o io-writesl.o \ -+ call_with_stack.o - - mmu-y := clear_user.o copy_page.o getuser.o putuser.o - ---- /dev/null -+++ b/arch/arm/lib/call_with_stack.S -@@ -0,0 +1,44 @@ -+/* -+ * arch/arm/lib/call_with_stack.S -+ * -+ * Copyright (C) 2011 ARM Ltd. -+ * Written by Will Deacon -+ * -+ * 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. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ */ -+ -+#include -+#include -+ -+/* -+ * void call_with_stack(void (*fn)(void *), void *arg, void *sp) -+ * -+ * Change the stack to that pointed at by sp, then invoke fn(arg) with -+ * the new stack. -+ */ -+ENTRY(call_with_stack) -+ str sp, [r2, #-4]! -+ str lr, [r2, #-4]! -+ -+ mov sp, r2 -+ mov r2, r0 -+ mov r0, r1 -+ -+ adr lr, BSYM(1f) -+ mov pc, r2 -+ -+1: ldr lr, [sp] -+ ldr sp, [sp, #4] -+ mov pc, lr -+ENDPROC(call_with_stack) ---- a/arch/arm/mach-omap2/board-2430sdp.c -+++ b/arch/arm/mach-omap2/board-2430sdp.c -@@ -34,7 +34,7 @@ - #include - - #include --#include -+#include "common.h" - #include - #include - #include -@@ -264,4 +264,5 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sd - .init_irq = omap2_init_irq, - .init_machine = omap_2430sdp_init, - .timer = &omap2_timer, -+ .restart = omap_prcm_restart, - MACHINE_END ---- a/arch/arm/mach-omap2/board-3430sdp.c -+++ b/arch/arm/mach-omap2/board-3430sdp.c -@@ -33,7 +33,7 @@ - #include - #include - #include --#include -+#include "common.h" - #include - #include - #include