diff options
Diffstat (limited to 'packages/linux/linux-smdk2440')
-rw-r--r-- | packages/linux/linux-smdk2440/defconfig-smdk2440 | 203 | ||||
-rw-r--r-- | packages/linux/linux-smdk2440/smdk2440-touchscreen-r3.patch | 529 |
2 files changed, 128 insertions, 604 deletions
diff --git a/packages/linux/linux-smdk2440/defconfig-smdk2440 b/packages/linux/linux-smdk2440/defconfig-smdk2440 index 5bdf67e850..8805af7413 100644 --- a/packages/linux/linux-smdk2440/defconfig-smdk2440 +++ b/packages/linux/linux-smdk2440/defconfig-smdk2440 @@ -1,11 +1,14 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.20-rc2 -# Thu Jan 4 13:31:25 2007 +# Linux kernel version: 2.6.21-rc6 +# Fri Apr 6 15:53:13 2007 # CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y # CONFIG_GENERIC_TIME is not set CONFIG_MMU=y +CONFIG_NO_IOPORT=y CONFIG_GENERIC_HARDIRQS=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_HARDIRQS_SW_RESEND=y @@ -15,6 +18,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y # CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ZONE_DMA=y CONFIG_VECTORS_BASE=0xffff0000 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" @@ -33,6 +37,7 @@ CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_IPC_NS is not set +CONFIG_SYSVIPC_SYSCTL=y # CONFIG_POSIX_MQUEUE is not set # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set @@ -41,6 +46,7 @@ CONFIG_SYSVIPC=y # CONFIG_IKCONFIG is not set CONFIG_SYSFS_DEPRECATED=y # CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y @@ -120,6 +126,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" # CONFIG_ARCH_IXP2000 is not set # CONFIG_ARCH_IXP23XX is not set # CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_NS9XXX is not set # CONFIG_ARCH_PNX4008 is not set # CONFIG_ARCH_PXA is not set # CONFIG_ARCH_RPC is not set @@ -128,55 +135,73 @@ CONFIG_ARCH_S3C2410=y # CONFIG_ARCH_SHARK is not set # CONFIG_ARCH_LH7A40X is not set # CONFIG_ARCH_OMAP is not set +CONFIG_PLAT_S3C24XX=y +CONFIG_CPU_S3C244X=y +CONFIG_PM_SIMTEC=y +# CONFIG_S3C2410_BOOT_WATCHDOG is not set +# CONFIG_S3C2410_BOOT_ERROR_RESET is not set +# CONFIG_S3C2410_PM_DEBUG is not set +# CONFIG_S3C2410_PM_CHECK is not set +CONFIG_S3C2410_LOWLEVEL_UART_PORT=0 +CONFIG_S3C2410_DMA=y +CONFIG_S3C2410_DMA_DEBUG=y +CONFIG_MACH_SMDK=y # -# S3C24XX Implementations +# S3C2400 Machines # -# CONFIG_MACH_AML_M5900 is not set -CONFIG_MACH_ANUBIS=y -CONFIG_MACH_OSIRIS=y -CONFIG_ARCH_BAST=y -CONFIG_BAST_PC104_IRQ=y -CONFIG_PM_H1940=y +CONFIG_CPU_S3C2410=y +CONFIG_CPU_S3C2410_DMA=y +CONFIG_S3C2410_PM=y +CONFIG_S3C2410_GPIO=y +CONFIG_S3C2410_CLOCK=y + +# +# S3C2410 Machines +# +CONFIG_ARCH_SMDK2410=y CONFIG_ARCH_H1940=y +CONFIG_PM_H1940=y CONFIG_MACH_N30=y -CONFIG_MACH_SMDK=y -CONFIG_ARCH_SMDK2410=y -CONFIG_ARCH_S3C2440=y -CONFIG_SMDK2440_CPU2440=y -CONFIG_SMDK2440_CPU2442=y -CONFIG_MACH_S3C2413=y -CONFIG_MACH_SMDK2413=y -CONFIG_MACH_VR1000=y -CONFIG_MACH_RX3715=y +CONFIG_ARCH_BAST=y CONFIG_MACH_OTOM=y -CONFIG_MACH_NEXCODER_2440=y -# CONFIG_MACH_VSTMS is not set -CONFIG_S3C2410_CLOCK=y -CONFIG_S3C2410_PM=y -CONFIG_CPU_S3C2410_DMA=y -CONFIG_CPU_S3C2410=y -CONFIG_S3C2412_PM=y +# CONFIG_MACH_AML_M5900 is not set +CONFIG_BAST_PC104_IRQ=y +CONFIG_MACH_VR1000=y +# CONFIG_MACH_QT2410 is not set CONFIG_CPU_S3C2412=y -CONFIG_CPU_S3C244X=y +CONFIG_S3C2412_DMA=y +CONFIG_S3C2412_PM=y + +# +# S3C2412 Machines +# +CONFIG_MACH_SMDK2413=y +CONFIG_MACH_S3C2413=y +# CONFIG_MACH_VSTMS is not set CONFIG_CPU_S3C2440=y +CONFIG_S3C2440_DMA=y + +# +# S3C2440 Machines +# +CONFIG_MACH_ANUBIS=y +CONFIG_MACH_OSIRIS=y +CONFIG_MACH_RX3715=y +CONFIG_ARCH_S3C2440=y +CONFIG_MACH_NEXCODER_2440=y +CONFIG_SMDK2440_CPU2440=y CONFIG_CPU_S3C2442=y # -# S3C2410 Boot +# S3C2442 Machines # -# CONFIG_S3C2410_BOOT_WATCHDOG is not set -# CONFIG_S3C2410_BOOT_ERROR_RESET is not set +CONFIG_SMDK2440_CPU2442=y # -# S3C2410 Setup +# S3C2443 Machines # -CONFIG_S3C2410_DMA=y -CONFIG_S3C2410_DMA_DEBUG=y -# CONFIG_S3C2410_PM_DEBUG is not set -# CONFIG_S3C2410_PM_CHECK is not set -CONFIG_PM_SIMTEC=y -CONFIG_S3C2410_LOWLEVEL_UART_PORT=0 +# CONFIG_MACH_SMDK2443 is not set # # Processor Type @@ -203,6 +228,7 @@ CONFIG_CPU_CP15_MMU=y # CONFIG_CPU_DCACHE_DISABLE is not set # CONFIG_CPU_DCACHE_WRITETHROUGH is not set # CONFIG_CPU_CACHE_ROUND_ROBIN is not set +# CONFIG_OUTER_CACHE is not set # # Bus support @@ -232,6 +258,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y # CONFIG_SPARSEMEM_STATIC is not set CONFIG_SPLIT_PTLOCK_CPUS=4096 # CONFIG_RESOURCES_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 CONFIG_ALIGNMENT_TRAP=y # @@ -241,6 +268,7 @@ CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_CMDLINE="root=/dev/nfs ip=auto rw init=/bin/bash console=ttySAC0" # CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set # # Floating point emulation @@ -268,7 +296,7 @@ CONFIG_PM=y CONFIG_PM_LEGACY=y # CONFIG_PM_DEBUG is not set # CONFIG_PM_SYSFS_DEPRECATED is not set -CONFIG_APM=y +# CONFIG_APM_EMULATION is not set # # Networking @@ -284,6 +312,7 @@ 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_NET_KEY is not set CONFIG_INET=y # CONFIG_IP_MULTICAST is not set @@ -368,6 +397,7 @@ 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 # @@ -393,6 +423,7 @@ CONFIG_MTD_CMDLINE_PARTS=y # 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 @@ -486,6 +517,7 @@ CONFIG_PARPORT_1284=y # Plug and Play support # # CONFIG_PNP is not set +# CONFIG_PNPACPI is not set # # Block devices @@ -499,7 +531,6 @@ CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 -CONFIG_BLK_DEV_INITRD=y # CONFIG_CDROM_PKTCDVD is not set CONFIG_ATA_OVER_ETH=m @@ -528,7 +559,6 @@ CONFIG_IDE_GENERIC=y CONFIG_BLK_DEV_IDE_BAST=y # CONFIG_IDE_CHIPSETS is not set # CONFIG_BLK_DEV_IDEDMA is not set -# CONFIG_IDEDMA_AUTO is not set # CONFIG_BLK_DEV_HD is not set # @@ -665,6 +695,7 @@ CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_GPIO is not set CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y # CONFIG_MOUSE_SERIAL is not set @@ -675,8 +706,6 @@ CONFIG_MOUSE_PS2=y # CONFIG_INPUT_JOYSTICK is not set CONFIG_INPUT_TOUCHSCREEN=y # CONFIG_TOUCHSCREEN_ADS7846 is not set -CONFIG_TOUCHSCREEN_S3C2410=y -# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set # CONFIG_TOUCHSCREEN_GUNZE is not set # CONFIG_TOUCHSCREEN_ELO is not set # CONFIG_TOUCHSCREEN_MTOUCH is not set @@ -844,12 +873,13 @@ CONFIG_SPI_MASTER=y # CONFIG_SPI_BITBANG=y # CONFIG_SPI_BUTTERFLY is not set -CONFIG_SPI_S3C24XX_GPIO=y # CONFIG_SPI_S3C24XX is not set +CONFIG_SPI_S3C24XX_GPIO=y # # SPI Protocol Masters # +# CONFIG_SPI_AT25 is not set # # Dallas's 1-wire bus @@ -865,6 +895,7 @@ CONFIG_HWMON_VID=m # CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set # CONFIG_SENSORS_ADM1031 is not set # CONFIG_SENSORS_ADM9240 is not set # CONFIG_SENSORS_ASB100 is not set @@ -906,7 +937,11 @@ CONFIG_SENSORS_LM85=m # # Misc devices # -# CONFIG_TIFM_CORE is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_SM501 is not set # # LED devices @@ -935,8 +970,26 @@ CONFIG_SENSORS_LM85=m # # Graphics support # +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +CONFIG_FB=y CONFIG_FIRMWARE_EDID=y -# CONFIG_FB is not set +# CONFIG_FB_DDC is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING is not set + +# +# Frambuffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_S3C2410=y +# CONFIG_FB_S3C2410_DEBUG is not set +# CONFIG_FB_VIRTUAL is not set # # Console display driver support @@ -944,7 +997,19 @@ CONFIG_FIRMWARE_EDID=y # CONFIG_VGA_CONSOLE is not set # CONFIG_MDA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Logo configuration +# +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y # # Sound @@ -978,6 +1043,7 @@ CONFIG_SND_DEBUG_DETECT=y # CONFIG_SND_MTS64 is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set +# CONFIG_SND_PORTMAN2X4 is not set # # ALSA ARM devices @@ -989,16 +1055,12 @@ CONFIG_SND_DEBUG_DETECT=y # CONFIG_SND_USB_AUDIO is not set # -# SoC audio support +# System on Chip audio support # CONFIG_SND_SOC=m # -# Soc Platforms -# - -# -# SoC Audio for the Intel PXA2xx +# SoC Platforms # # @@ -1006,7 +1068,7 @@ CONFIG_SND_SOC=m # # -# SoC Audio for the Freescale i.MX +# SoC Audio for the Intel PXA2xx # # @@ -1015,26 +1077,12 @@ CONFIG_SND_SOC=m CONFIG_SND_S3C24XX_SOC=m CONFIG_SND_S3C24XX_SOC_I2S=m CONFIG_SND_S3C24XX_SOC_SMDK2440=m +# CONFIG_SND_S3C24XX_SOC_SMDK2440_WM8956 is not set # -# Soc Codecs -# -# CONFIG_SND_SOC_AC97_CODEC is not set -CONFIG_SND_SOC_WM8711=m -CONFIG_SND_SOC_WM8510=m -CONFIG_SND_SOC_WM8731=m -CONFIG_SND_SOC_WM8750=m -CONFIG_SND_SOC_WM8753=m -CONFIG_SND_SOC_WM8772=m -CONFIG_SND_SOC_WM8971=m -# CONFIG_SND_SOC_WM8956 is not set -# CONFIG_SND_SOC_WM8976 is not set -CONFIG_SND_SOC_WM8974=m -CONFIG_SND_SOC_WM8980=m -# CONFIG_SND_SOC_WM9713 is not set -# CONFIG_SND_SOC_WM9712 is not set +# SoC Audio for the Freescale i.MX +# CONFIG_SND_SOC_UDA1380=m -CONFIG_SND_SOC_AK4535=m # # Open Sound System @@ -1045,6 +1093,7 @@ CONFIG_SND_SOC_AK4535=m # HID Devices # CONFIG_HID=y +# CONFIG_HID_DEBUG is not set # # USB support @@ -1059,10 +1108,8 @@ CONFIG_USB=y # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_SUSPEND is not set -# CONFIG_USB_MULTITHREAD_PROBE is not set # CONFIG_USB_OTG is not set # @@ -1070,7 +1117,8 @@ CONFIG_USB_DEVICEFS=y # # CONFIG_USB_ISP116X_HCD is not set CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_BIG_ENDIAN is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y # CONFIG_USB_SL811_HCD is not set @@ -1093,7 +1141,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y # USB Input Devices # CONFIG_USB_HID=y -# CONFIG_USB_HID_POWERBOOK is not set +# CONFIG_USB_HIDINPUT_POWERBOOK is not set # CONFIG_HID_FF is not set # CONFIG_USB_HIDDEV is not set # CONFIG_USB_AIPTEK is not set @@ -1108,6 +1156,7 @@ CONFIG_USB_HID=y # CONFIG_USB_ATI_REMOTE2 is not set # CONFIG_USB_KEYSPAN_REMOTE is not set # CONFIG_USB_APPLETOUCH is not set +# CONFIG_USB_GTCO is not set # # USB Imaging devices @@ -1145,6 +1194,7 @@ CONFIG_USB_MON=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 @@ -1154,6 +1204,7 @@ CONFIG_USB_MON=y # CONFIG_USB_APPLEDISPLAY is not set # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # @@ -1368,15 +1419,16 @@ CONFIG_MAGIC_SYSRQ=y # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set CONFIG_LOG_BUF_SHIFT=16 CONFIG_DETECT_SOFTLOCKUP=y # CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set # CONFIG_DEBUG_SLAB 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_RWSEMS is not set # CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_DEBUG_KOBJECT is not set @@ -1387,6 +1439,7 @@ CONFIG_DEBUG_INFO=y CONFIG_FRAME_POINTER=y CONFIG_FORCED_INLINING=y # CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_FAULT_INJECTION is not set CONFIG_DEBUG_USER=y # CONFIG_DEBUG_ERRORS is not set CONFIG_DEBUG_LL=y @@ -1416,4 +1469,4 @@ CONFIG_CRC32=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_PLIST=y -CONFIG_IOMAP_COPY=y +CONFIG_HAS_IOMEM=y diff --git a/packages/linux/linux-smdk2440/smdk2440-touchscreen-r3.patch b/packages/linux/linux-smdk2440/smdk2440-touchscreen-r3.patch deleted file mode 100644 index d03fd94017..0000000000 --- a/packages/linux/linux-smdk2440/smdk2440-touchscreen-r3.patch +++ /dev/null @@ -1,529 +0,0 @@ -Index: linux-2.6.19/arch/arm/mach-s3c2410/devs.c -=================================================================== ---- linux-2.6.19.orig/arch/arm/mach-s3c2410/devs.c -+++ linux-2.6.19/arch/arm/mach-s3c2410/devs.c -@@ -26,6 +26,7 @@ - #include <asm/hardware.h> - #include <asm/io.h> - #include <asm/irq.h> -+#include <asm/arch/ts.h> - - #include <asm/arch/regs-serial.h> - -@@ -204,6 +205,23 @@ struct platform_device s3c_device_nand = - - EXPORT_SYMBOL(s3c_device_nand); - -+/* Touchscreen */ -+struct platform_device s3c_device_ts = { -+ .name = "s3c2410-ts", -+ .id = -1, -+}; -+ -+EXPORT_SYMBOL(s3c_device_ts); -+ -+static struct s3c2410_ts_mach_info s3c2410ts_info; -+ -+void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info) -+{ -+ memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info)); -+ s3c_device_ts.dev.platform_data = &s3c2410ts_info; -+} -+EXPORT_SYMBOL(set_s3c2410ts_info); -+ - /* USB Device (Gadget)*/ - - static struct resource s3c_usbgadget_resource[] = { -Index: linux-2.6.19/arch/arm/mach-s3c2410/devs.h -=================================================================== ---- linux-2.6.19.orig/arch/arm/mach-s3c2410/devs.h -+++ linux-2.6.19/arch/arm/mach-s3c2410/devs.h -@@ -41,6 +41,7 @@ extern struct platform_device s3c_device - extern struct platform_device s3c_device_timer3; - - extern struct platform_device s3c_device_usbgadget; -+extern struct platform_device s3c_device_ts; - - /* s3c2440 specific devices */ - -Index: linux-2.6.19/drivers/input/touchscreen/Kconfig -=================================================================== ---- linux-2.6.19.orig/drivers/input/touchscreen/Kconfig -+++ linux-2.6.19/drivers/input/touchscreen/Kconfig -@@ -49,6 +49,24 @@ config TOUCHSCREEN_CORGI - To compile this driver as a module, choose M here: the - module will be called corgi_ts. - -+config TOUCHSCREEN_S3C2410 -+ tristate "Samsung S3C2410 touchscreen input driver" -+ depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN -+ select SERIO -+ help -+ Say Y here if you have the s3c2410 touchscreen. -+ -+ If unsure, say N. -+ -+ To compile this driver as a module, choose M here: the -+ module will be called s3c2410_ts. -+ -+config TOUCHSCREEN_S3C2410_DEBUG -+ boolean "Samsung S3C2410 touchscreen debug messages" -+ depends on TOUCHSCREEN_S3C2410 -+ help -+ Select this if you want debug messages -+ - config TOUCHSCREEN_GUNZE - tristate "Gunze AHL-51S touchscreen" - select SERIO -Index: linux-2.6.19/drivers/input/touchscreen/Makefile -=================================================================== ---- linux-2.6.19.orig/drivers/input/touchscreen/Makefile -+++ linux-2.6.19/drivers/input/touchscreen/Makefile -@@ -15,3 +15,5 @@ obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680 - obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += penmount.o - obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o - obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o -+obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o -+ -Index: linux-2.6.19/drivers/input/touchscreen/s3c2410_ts.c -=================================================================== ---- /dev/null -+++ linux-2.6.19/drivers/input/touchscreen/s3c2410_ts.c -@@ -0,0 +1,350 @@ -+/* -+ * 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 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 -+ * -+ * Copyright (c) 2004 Arnaud Patard <arnaud.patard@rtp-net.org> -+ * iPAQ H1940 touchscreen support -+ * -+ * ChangeLog -+ * -+ * 2004-09-05: Herbert Pƶtzl <herbert@13thfloor.at> -+ * - added clock (de-)allocation code -+ * -+ * 2005-03-06: Arnaud Patard <arnaud.patard@rtp-net.org> -+ * - h1940_ -> s3c2410 (this driver is now also used on the n30 -+ * machines :P) -+ * - Debug messages are now enabled with the config option -+ * TOUCHSCREEN_S3C2410_DEBUG -+ * - Changed the way the value are read -+ * - Input subsystem should now work -+ * - Use ioremap and readl/writel -+ * -+ * 2005-03-23: Arnaud Patard <arnaud.patard@rtp-net.org> -+ * - Make use of some undocumented features of the touchscreen -+ * controller -+ * -+ */ -+ -+#include <linux/errno.h> -+#include <linux/kernel.h> -+#include <linux/module.h> -+#include <linux/slab.h> -+#include <linux/input.h> -+#include <linux/init.h> -+#include <linux/serio.h> -+#include <linux/delay.h> -+#include <linux/platform_device.h> -+#include <linux/clk.h> -+#include <asm/io.h> -+#include <asm/irq.h> -+ -+#include <asm/arch/regs-adc.h> -+#include <asm/arch/regs-gpio.h> -+#include <asm/arch/ts.h> -+ -+/* For ts.dev.id.version */ -+#define S3C2410TSVERSION 0x0101 -+ -+#define WAIT4INT(x) (((x)<<8) | \ -+ S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \ -+ S3C2410_ADCTSC_XY_PST(3)) -+ -+#define AUTOPST (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | \ -+ S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0)) -+ -+#define DEBUG_LVL KERN_DEBUG -+ -+MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>"); -+MODULE_DESCRIPTION("s3c2410 touchscreen driver"); -+MODULE_LICENSE("GPL"); -+ -+/* -+ * Definitions & global arrays. -+ */ -+ -+ -+static char *s3c2410ts_name = "s3c2410 TouchScreen"; -+ -+/* -+ * Per-touchscreen data. -+ */ -+ -+struct s3c2410ts { -+ struct input_dev *dev; -+ long xp; -+ long yp; -+ int count; -+ int shift; -+}; -+ -+static struct s3c2410ts ts; -+static void __iomem *base_addr; -+ -+static inline void s3c2410_ts_connect(void) -+{ -+ s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON); -+ s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON); -+ s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON); -+ s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON); -+} -+ -+static void touch_timer_fire(unsigned long data) -+{ -+ unsigned long data0; -+ unsigned long data1; -+ int updown; -+ -+ data0 = readl(base_addr+S3C2410_ADCDAT0); -+ data1 = readl(base_addr+S3C2410_ADCDAT1); -+ -+ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN)); -+ -+ if (updown) { -+ if (ts.count != 0) { -+ ts.xp >>= ts.shift; -+ ts.yp >>= ts.shift; -+ -+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG -+ { -+ struct timeval tv; -+ do_gettimeofday(&tv); -+ printk(DEBUG_LVL "T: %06d, X: %03ld, Y: %03ld\n", (int)tv.tv_usec, ts.xp, ts.yp); -+ } -+#endif -+ -+ input_report_abs(ts.dev, ABS_X, ts.xp); -+ input_report_abs(ts.dev, ABS_Y, ts.yp); -+ -+ input_report_key(ts.dev, BTN_TOUCH, 1); -+ input_report_abs(ts.dev, ABS_PRESSURE, 1); -+ input_sync(ts.dev); -+ } -+ -+ ts.xp = 0; -+ ts.yp = 0; -+ ts.count = 0; -+ -+ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC); -+ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON); -+ } else { -+ ts.count = 0; -+ -+ input_report_key(ts.dev, BTN_TOUCH, 0); -+ input_report_abs(ts.dev, ABS_PRESSURE, 0); -+ input_sync(ts.dev); -+ -+ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC); -+ } -+} -+ -+static struct timer_list touch_timer = -+ TIMER_INITIALIZER(touch_timer_fire, 0, 0); -+ -+static irqreturn_t stylus_updown(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ unsigned long data0; -+ unsigned long data1; -+ int updown; -+ -+ data0 = readl(base_addr+S3C2410_ADCDAT0); -+ data1 = readl(base_addr+S3C2410_ADCDAT1); -+ -+ updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN)); -+ -+ /* TODO we should never get an interrupt with updown set while -+ * the timer is running, but maybe we ought to verify that the -+ * timer isn't running anyways. */ -+ -+ if (updown) -+ touch_timer_fire(0); -+ -+ return IRQ_HANDLED; -+} -+ -+ -+static irqreturn_t stylus_action(int irq, void *dev_id, struct pt_regs *regs) -+{ -+ unsigned long data0; -+ unsigned long data1; -+ -+ data0 = readl(base_addr+S3C2410_ADCDAT0); -+ data1 = readl(base_addr+S3C2410_ADCDAT1); -+ -+ ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK; -+ ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK; -+ ts.count++; -+ -+ if (ts.count < (1<<ts.shift)) { -+ writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC); -+ writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON); -+ } else { -+ mod_timer(&touch_timer, jiffies+1); -+ writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC); -+ } -+ -+ return IRQ_HANDLED; -+} -+ -+static struct clk *adc_clock; -+ -+/* -+ * The functions for inserting/removing us as a module. -+ */ -+ -+static int __init s3c2410ts_probe(struct platform_device *pdev) -+{ -+ struct s3c2410_ts_mach_info *info; -+ struct input_dev *input_dev; -+ -+ info = ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data; -+ -+ if (!info) -+ { -+ printk(KERN_ERR "Hm... too bad : no platform data for ts\n"); -+ return -EINVAL; -+ } -+ -+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG -+ printk(DEBUG_LVL "Entering s3c2410ts_init\n"); -+#endif -+ -+ adc_clock = clk_get(NULL, "adc"); -+ if (!adc_clock) { -+ printk(KERN_ERR "failed to get adc clock source\n"); -+ return -ENOENT; -+ } -+ clk_enable(adc_clock); -+ -+#ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG -+ printk(DEBUG_LVL "got and enabled clock\n"); -+#endif -+ -+ base_addr=ioremap(S3C2410_PA_ADC,0x20); -+ if (base_addr == NULL) { -+ printk(KERN_ERR "Failed to remap register block\n"); -+ return -ENOMEM; -+ } -+ -+ -+ /* Configure GPIOs */ -+ s3c2410_ts_connect(); -+ -+ if ((info->presc&0xff) > 0) -+ writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\ -+ base_addr+S3C2410_ADCCON); -+ else -+ writel(0,base_addr+S3C2410_ADCCON); -+ -+ -+ /* Initialise registers */ -+ if ((info->delay&0xffff) > 0) -+ writel(info->delay & 0xffff, base_addr+S3C2410_ADCDLY); -+ -+ writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC); -+ -+ /* Initialise input stuff */ -+ memset(&ts, 0, sizeof(struct s3c2410ts)); -+ input_dev = input_allocate_device(); -+ -+ if (!input_dev) { -+ printk(KERN_ERR "Unable to allocate the input device !!\n"); -+ return -ENOMEM; -+ } -+ -+ ts.dev = input_dev; -+ ts.dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS); -+ ts.dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH); -+ input_set_abs_params(ts.dev, ABS_X, 0, 0x3FF, 0, 0); -+ input_set_abs_params(ts.dev, ABS_Y, 0, 0x3FF, 0, 0); -+ input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0); -+ -+ ts.dev->private = &ts; -+ ts.dev->name = s3c2410ts_name; -+ ts.dev->id.bustype = BUS_RS232; -+ ts.dev->id.vendor = 0xDEAD; -+ ts.dev->id.product = 0xBEEF; -+ ts.dev->id.version = S3C2410TSVERSION; -+ -+ ts.shift = info->oversampling_shift; -+ -+ /* Get irqs */ -+ if (request_irq(IRQ_ADC, stylus_action, SA_SAMPLE_RANDOM, -+ "s3c2410_action", ts.dev)) { -+ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_ADC !\n"); -+ iounmap(base_addr); -+ return -EIO; -+ } -+ if (request_irq(IRQ_TC, stylus_updown, SA_SAMPLE_RANDOM, -+ "s3c2410_action", ts.dev)) { -+ printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_TC !\n"); -+ iounmap(base_addr); -+ return -EIO; -+ } -+ -+ printk(KERN_INFO "%s successfully loaded\n", s3c2410ts_name); -+ -+ /* All went ok, so register to the input system */ -+ input_register_device(ts.dev); -+ -+ return 0; -+} -+ -+static int s3c2410ts_remove(struct platform_device *pdev) -+{ -+ disable_irq(IRQ_ADC); -+ disable_irq(IRQ_TC); -+ free_irq(IRQ_TC,ts.dev); -+ free_irq(IRQ_ADC,ts.dev); -+ -+ if (adc_clock) { -+ clk_disable(adc_clock); -+ clk_put(adc_clock); -+ adc_clock = NULL; -+ } -+ -+ input_unregister_device(ts.dev); -+ iounmap(base_addr); -+ -+ return 0; -+} -+ -+static struct platform_driver s3c2410ts_driver = { -+ .driver = { -+ .name = "s3c2410-ts", -+ .owner = THIS_MODULE, -+ }, -+ .probe = s3c2410ts_probe, -+ .remove = s3c2410ts_remove, -+}; -+ -+ -+static int __init s3c2410ts_init(void) -+{ -+ return platform_driver_register(&s3c2410ts_driver); -+} -+ -+static void __exit s3c2410ts_exit(void) -+{ -+ platform_driver_unregister(&s3c2410ts_driver); -+} -+ -+module_init(s3c2410ts_init); -+module_exit(s3c2410ts_exit); -+ -+/* -+ Local variables: -+ compile-command: "make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux- -k -C ../../.." -+ c-basic-offset: 8 -+ End: -+*/ -Index: linux-2.6.19/include/asm-arm/arch-s3c2410/regs-adc.h -=================================================================== ---- linux-2.6.19.orig/include/asm-arm/arch-s3c2410/regs-adc.h -+++ linux-2.6.19/include/asm-arm/arch-s3c2410/regs-adc.h -@@ -41,7 +41,7 @@ - #define S3C2410_ADCTSC_XP_SEN (1<<4) - #define S3C2410_ADCTSC_PULL_UP_DISABLE (1<<3) - #define S3C2410_ADCTSC_AUTO_PST (1<<2) --#define S3C2410_ADCTSC_XY_PST (0x3<<0) -+#define S3C2410_ADCTSC_XY_PST(x) (((x)&0x3)<<0) - - /* ADCDAT0 Bits */ - #define S3C2410_ADCDAT0_UPDOWN (1<<15) -Index: linux-2.6.19/include/asm-arm/arch-s3c2410/ts.h -=================================================================== ---- /dev/null -+++ linux-2.6.19/include/asm-arm/arch-s3c2410/ts.h -@@ -0,0 +1,28 @@ -+/* linux/include/asm/arch-s3c2410/ts.h -+ * -+ * Copyright (c) 2005 Arnaud Patard <arnaud.patard@rtp-net.org> -+ * -+ * -+ * 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. -+ * -+ * -+ * Changelog: -+ * 24-Mar-2005 RTP Created file -+ * 03-Aug-2005 RTP Renamed to ts.h -+ */ -+ -+#ifndef __ASM_ARM_TS_H -+#define __ASM_ARM_TS_H -+ -+struct s3c2410_ts_mach_info { -+ int delay; -+ int presc; -+ int oversampling_shift; -+}; -+ -+void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info); -+ -+#endif /* __ASM_ARM_TS_H */ -+ -Index: linux-2.6.19/arch/arm/mach-s3c2410/mach-smdk2440.c -=================================================================== ---- linux-2.6.19.orig/arch/arm/mach-s3c2410/mach-smdk2440.c -+++ linux-2.6.19/arch/arm/mach-s3c2410/mach-smdk2440.c -@@ -35,6 +35,7 @@ - #include <asm/arch/regs-serial.h> - #include <asm/arch/regs-gpio.h> - #include <asm/arch/regs-lcd.h> -+#include <asm/arch/ts.h> - - #include <asm/arch/idle.h> - #include <asm/arch/fb.h> -@@ -177,6 +178,7 @@ static struct platform_device *smdk2440_ - &s3c_device_wdt, - &s3c_device_i2c, - &s3c_device_iis, -+ &s3c_device_ts, - }; - - static struct s3c24xx_board smdk2440_board __initdata = { -@@ -184,6 +186,12 @@ static struct s3c24xx_board smdk2440_boa - .devices_count = ARRAY_SIZE(smdk2440_devices) - }; - -+static struct s3c2410_ts_mach_info qt2410_ts_cfg = { -+ .delay = 10000, -+ .presc = 49, -+ .oversampling_shift = 2, -+}; -+ - static void __init smdk2440_map_io(void) - { - s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); -@@ -195,6 +203,7 @@ static void __init smdk2440_map_io(void) - static void __init smdk2440_machine_init(void) - { - s3c24xx_fb_set_platdata(&smdk2440_lcd_cfg); -+ set_s3c2410ts_info(&qt2410_ts_cfg); - - smdk_machine_init(); - } |