diff options
Diffstat (limited to 'recipes/linux/linux-jlime-jornada7xx-2.6.18')
-rw-r--r-- | recipes/linux/linux-jlime-jornada7xx-2.6.18/defconf_jlime | 1068 | ||||
-rw-r--r-- | recipes/linux/linux-jlime-jornada7xx-2.6.18/linux-2.6.18-jornada7xx.patch | 909 |
2 files changed, 1977 insertions, 0 deletions
diff --git a/recipes/linux/linux-jlime-jornada7xx-2.6.18/defconf_jlime b/recipes/linux/linux-jlime-jornada7xx-2.6.18/defconf_jlime new file mode 100644 index 0000000000..6ad17ec1b4 --- /dev/null +++ b/recipes/linux/linux-jlime-jornada7xx-2.6.18/defconf_jlime @@ -0,0 +1,1068 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.18 +# Tue Oct 3 22:34:12 2006 +# +CONFIG_ARM=y +CONFIG_MMU=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_MTD_XIP=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 + +# +# General setup +# +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=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 +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_RELAY is not set +CONFIG_INITRAMFS_SOURCE="" +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_EMBEDDED is not set +CONFIG_UID16=y +CONFIG_SYSCTL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SHMEM=y +CONFIG_SLAB=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_RT_MUTEXES=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +# CONFIG_SLOB is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_KMOD=y + +# +# Block layer +# +# CONFIG_BLK_DEV_IO_TRACE is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +# CONFIG_IOSCHED_AS is not set +# CONFIG_IOSCHED_DEADLINE is not set +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" + +# +# System Type +# +# 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_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_IMX is not set +# CONFIG_ARCH_IOP3XX is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_SA1100=y +# CONFIG_ARCH_S3C2410 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_LH7A40X is not set +# CONFIG_ARCH_OMAP is not set +CONFIG_DMABOUNCE=y + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_COLLIE is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_BADGE4 is not set +CONFIG_SA1100_JORNADA720=y +# CONFIG_SA1100_HACKKIT is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_SSP is not set + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_SA1100=y +CONFIG_CPU_32v4=y +CONFIG_CPU_ABRT_EV4=y +CONFIG_CPU_CACHE_V4WB=y +CONFIG_CPU_CACHE_VIVT=y +CONFIG_CPU_TLB_V4WB=y + +# +# Processor Features +# +CONFIG_SA1111=y +CONFIG_FORCE_MAX_ZONEORDER=9 + +# +# Bus support +# +CONFIG_ISA=y + +# +# PCCARD (PCMCIA/CardBus) support +# +CONFIG_PCCARD=y +CONFIG_PCMCIA_DEBUG=y +CONFIG_PCMCIA=y +CONFIG_PCMCIA_LOAD_CIS=y +# CONFIG_PCMCIA_IOCTL is not set + +# +# PC-card bridges +# +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_SA1100 is not set +CONFIG_PCMCIA_SA1111=y + +# +# Kernel Features +# +# CONFIG_PREEMPT is not set +# CONFIG_NO_IDLE_HZ is not set +CONFIG_HZ=100 +# CONFIG_AEABI is not set +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_NODES_SHIFT=2 +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_DISCONTIGMEM_MANUAL=y +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_DISCONTIGMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_NEED_MULTIPLE_NODES=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4096 +# CONFIG_RESOURCES_64BIT is not set +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="" +# CONFIG_XIP_KERNEL is not set + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ 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 + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_AOUT is not set +# CONFIG_BINFMT_MISC is not set +# CONFIG_ARTHUR is not set + +# +# Power management options +# +CONFIG_PM=y +# CONFIG_PM_LEGACY is not set +# CONFIG_PM_DEBUG is not set +CONFIG_APM=m + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +# CONFIG_NETDEBUG is not set +CONFIG_PACKET=m +# CONFIG_PACKET_MMAP is not set +CONFIG_UNIX=m +CONFIG_XFRM=y +# CONFIG_XFRM_USER 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 is not set +# 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_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +# CONFIG_IPV6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set + +# +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set + +# +# TIPC Configuration (EXPERIMENTAL) +# +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE 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 + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +CONFIG_IEEE80211=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IEEE80211_CRYPT_CCMP is not set +# CONFIG_IEEE80211_CRYPT_TKIP is not set +# CONFIG_IEEE80211_SOFTMAC is not set +CONFIG_WIRELESS_EXT=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +# CONFIG_SYS_HYPERVISOR is not set + +# +# Connector - unified userspace <-> kernelspace linker +# +# CONFIG_CONNECTOR is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play support +# +# CONFIG_PNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +# CONFIG_IDE_ARM is not set +# 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 + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# I2O device support +# + +# +# Network device support +# +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=m + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set + +# +# PHY device support +# +# CONFIG_PHYLIB is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set + +# +# Ethernet (1000 Mbit) +# + +# +# Ethernet (10000 Mbit) +# + +# +# Token Ring devices +# +# CONFIG_TR is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_NET_WIRELESS_RTNETLINK is not set + +# +# Obsolete Wireless cards support (pre-802.11) +# +# CONFIG_STRIP is not set +CONFIG_ARLAN=m +CONFIG_WAVELAN=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_NETWAVE=m + +# +# Wireless 802.11 Frequency Hopping cards support +# +CONFIG_PCMCIA_RAYCS=m + +# +# Wireless 802.11b ISA/PCI cards support +# +CONFIG_HERMES=m +CONFIG_ATMEL=m + +# +# Wireless 802.11b Pcmcia/Cardbus cards support +# +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_AIRO_CS=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_WL3501=m +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_CS=m +CONFIG_NET_WIRELESS=y + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m + +# +# Wan interfaces +# +# CONFIG_WAN is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +# CONFIG_PPP_SYNC_TTY is not set +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +# CONFIG_PPPOE is not set +CONFIG_SLIP=m +# CONFIG_SLIP_COMPRESSED is not set +# CONFIG_SLIP_SMART is not set +# CONFIG_SLIP_MODE_SLIP6 is not set +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_TSDEV=y +CONFIG_INPUT_TSDEV_SCREEN_X=640 +CONFIG_INPUT_TSDEV_SCREEN_Y=240 +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +CONFIG_KEYBOARD_JORNADA720=y +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +CONFIG_TOUCHSCREEN_JORNADA720=y +# 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_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=8 + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +CONFIG_HW_RANDOM=y +# CONFIG_NVRAM is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set + +# +# Ftape, the floppy tape device driver +# + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set +# CONFIG_RAW_DRIVER is not set + +# +# TPM devices +# +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# SPI support +# +# CONFIG_SPI is not set +# CONFIG_SPI_MASTER is not set + +# +# Dallas's 1-wire bus +# + +# +# Hardware Monitoring support +# +# CONFIG_HWMON is not set +# CONFIG_HWMON_VID is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP_SA11X0 is not set + +# +# LED devices +# +# CONFIG_NEW_LEDS is not set + +# +# LED drivers +# + +# +# LED Triggers +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set +CONFIG_VIDEO_V4L2=y + +# +# Digital Video Broadcasting Devices +# +# CONFIG_DVB is not set + +# +# Graphics support +# +CONFIG_FIRMWARE_EDID=y +CONFIG_FB=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FB_SA1100 is not set +CONFIG_FB_EPSON1356=y +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +# CONFIG_MDA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_10x18 is not set + +# +# Logo configuration +# +# CONFIG_LOGO is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_DEVICE=y +CONFIG_LCD_CLASS_DEVICE=y +CONFIG_LCD_DEVICE=y + +# +# Sound +# +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +# CONFIG_SND_SEQUENCER is not set +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_PCM_OSS is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# ALSA ARM devices +# + +# +# PCMCIA devices +# +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_PDAUDIOCF is not set + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set + +# +# USB support +# +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +# CONFIG_USB_ARCH_HAS_EHCI is not set +# CONFIG_USB is not set + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# +# Real Time Clock +# +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" + +# +# 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 + +# +# RTC drivers +# +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_M48T86 is not set +CONFIG_RTC_DRV_SA1100=y +# CONFIG_RTC_DRV_TEST is not set +# CONFIG_RTC_DRV_V3020 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_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +# 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_OCFS2_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +CONFIG_DNOTIFY=y +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS 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=852 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-2" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# 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_CRAMFS=y +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_DIRECTIO is not set +CONFIG_NFSD=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +# CONFIG_NFSD_V4 is not set +CONFIG_NFSD_TCP=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RPCSEC_GSS_SPKM3 is not set +# CONFIG_SMB_FS is not set +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_WEAK_PW_HASH is not set +# CONFIG_CIFS_XATTR is not set +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_EXPERIMENTAL is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +# CONFIG_9P_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-2" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=y +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_2=y +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=y + +# +# Profiling support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_KERNEL is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_FS is not set +CONFIG_FRAME_POINTER=y +# CONFIG_UNWIND_INFO is not set +# CONFIG_DEBUG_USER is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +CONFIG_CRYPTO_SHA1=m +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_TGR192 is not set +CONFIG_CRYPTO_DES=m +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +CONFIG_CRYPTO_AES=m +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Hardware crypto devices +# + +# +# Library routines +# +CONFIG_CRC_CCITT=m +# CONFIG_CRC16 is not set +CONFIG_CRC32=y +# CONFIG_LIBCRC32C is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_PLIST=y diff --git a/recipes/linux/linux-jlime-jornada7xx-2.6.18/linux-2.6.18-jornada7xx.patch b/recipes/linux/linux-jlime-jornada7xx-2.6.18/linux-2.6.18-jornada7xx.patch new file mode 100644 index 0000000000..69decb5b9b --- /dev/null +++ b/recipes/linux/linux-jlime-jornada7xx-2.6.18/linux-2.6.18-jornada7xx.patch @@ -0,0 +1,909 @@ +diff -ruN linux-2.6.18-vanilla/arch/arm/mach-sa1100/cpu-sa1110.c linux-2.6.18/arch/arm/mach-sa1100/cpu-sa1110.c +--- linux-2.6.18-vanilla/arch/arm/mach-sa1100/cpu-sa1110.c 2006-09-20 03:42:06.000000000 +0000 ++++ linux-2.6.18/arch/arm/mach-sa1100/cpu-sa1110.c 2006-10-03 22:58:39.000000000 +0000 +@@ -82,6 +82,14 @@ + .twr = 9, + .refresh = 64000, + .cas_latency = 3, ++ }, { /* Samsung K4s281632b-1h */ ++ .name = "K4S281632B-1H", ++ .rows = 12, ++ .tck = 10, ++ .trp = 20, ++ .twr = 10, ++ .refresh = 64000, ++ .cas_latency = 3, + }, { /* Samsung KM416S4030CT */ + .name = "KM416S4030CT", + .rows = 13, +@@ -366,6 +374,9 @@ + + if (machine_is_h3100()) + name = "KM416S4030CT"; ++ ++ if (machine_is_jornada720()) ++ name = "K4S281632B-1H"; + } + + sdram = sa1110_find_sdram(name); +diff -ruN linux-2.6.18-vanilla/arch/arm/mach-sa1100/jornada720.c linux-2.6.18/arch/arm/mach-sa1100/jornada720.c +--- linux-2.6.18-vanilla/arch/arm/mach-sa1100/jornada720.c 2006-09-20 03:42:06.000000000 +0000 ++++ linux-2.6.18/arch/arm/mach-sa1100/jornada720.c 2006-10-03 22:58:39.000000000 +0000 +@@ -22,11 +22,170 @@ + #include <asm/mach/map.h> + #include <asm/mach/serial_sa1100.h> + ++#include <asm/arch/jornada720.h> ++ ++#include <linux/lcd.h> ++#include <linux/backlight.h> ++#include <linux/fb.h> + #include "generic.h" + + + #define JORTUCR_VAL 0x20000400 + ++/* Jornada 720 MCU functions */ ++#define MCU_REVERSE(i) ((unsigned char)(((0x80 & i) >> 7) | ((0x40 & i) >> 5) \ ++ | ((0x20 & i) >> 3) | ((0x10 & i) >> 1) | ((0x08 & i) << 1) \ ++ | ((0x04 & i) << 3) | ((0x02 & i) << 5) | ((0x01 & i) << 7))) ++ ++void jornada720_init_ser(void) ++{ ++ int i; ++ ++ GPSR = GPIO_GPIO25; ++ Ser4SSCR0 = 0x0307; ++ Ser4MCCR0 = 0; ++ Ser4SSCR1 = 0x18; ++ Ser4SSCR0 = 0x0387; ++ while (Ser4SSSR & SSSR_RNE) ++ i = Ser4SSDR; ++} ++ ++int jornada720_mcu_byte(int arg_data) ++{ ++ int i; ++ ++ while ((Ser4SSSR & SSSR_TNF) == 0); ++ i = 0; ++ while ((GPLR & 0x400) && i++ < 400000); ++ /* wait for MCU */ ++ ++ if (i >= 400000) { ++ printk("jornada 720_mcu_byte: timed out\n"); ++ return -1; ++ } ++ Ser4SSDR = MCU_REVERSE(arg_data) << 8; ++ udelay(100); ++ while ((Ser4SSSR & SSSR_RNE) == 0); ++ i = Ser4SSDR; ++ if (i > 0xff) ++ printk("jornada720 mcu_byte: read %x\n", i); ++ return MCU_REVERSE(i & 0xff) & 0xff; ++} ++ ++ ++int jornada720_mcu_start(int arg_data) ++{ ++ int i; ++ ++ GPCR = GPIO_GPIO25; /* clear -> enable */ ++ udelay(100); ++ i = jornada720_mcu_byte(arg_data); ++ if (i != MCU_TxDummy) ++ { ++ printk("jornada720_mcu_start: sent %x got %x\n", arg_data, i); ++ for (i = 0; i < 256; i++) ++ if (jornada720_mcu_read() == -1) ++ break; ++ ++ jornada720_init_ser(); ++ return -1; ++ } ++ ++ return 0; ++} ++ ++ ++void jornada720_mcu_end(void) ++{ ++ udelay(100); ++ GPSR = GPIO_GPIO25; /* set */ ++} ++ ++void jornada720_mcu_init(void) ++{ ++ ++ /*int i; ++ ++ if (state) { ++ PPSR &= ~PPC_LDD1; ++ PPDR &= PPC_LDD1; ++ } ++ else { */ ++ PPSR |= PPC_LDD1; ++ /*} ++ return 0;*/ ++} ++ ++/*static int jornada720_backlight_get_power(struct backlight_device *bd) ++{ ++ ++ return ~(PPSR&PPC_LDD1); ++}*/ ++ ++static int jornada720_backlight_get_brightness(struct backlight_device *bd) ++{ ++ int brightness; ++ jornada720_mcu_start(MCU_GetBrightness); ++ brightness = jornada720_mcu_read(); ++ jornada720_mcu_end(); ++ return brightness; ++} ++ ++static int jornada720_backlight_set_brightness(struct backlight_device *bd) ++{ ++ /* TODO: should it be substracted? */ ++ int brightness = 255 - bd->props->brightness; ++ jornada720_mcu_start(MCU_SetBrightness); ++ jornada720_mcu_byte(brightness); ++ jornada720_mcu_end(); ++ return 0; ++} ++ ++static struct backlight_properties jornada720_backlight_properties = { ++ .owner = THIS_MODULE, ++ .get_brightness = jornada720_backlight_get_brightness, ++ .update_status = jornada720_backlight_set_brightness, ++ .max_brightness = 255, ++}; ++ ++static int jornada720_lcd_set_power(struct lcd_device *ld, int power) ++{ ++ return 0; ++} ++ ++static int jornada720_lcd_get_power(struct lcd_device *ld) ++{ ++ return 1; ++} ++ ++static int jornada720_lcd_get_contrast(struct lcd_device *ld) ++{ ++ int contrast; ++ ++ jornada720_mcu_start(MCU_GetContrast); ++ contrast = jornada720_mcu_read(); ++ jornada720_mcu_end(); ++ ++ return contrast; ++} ++ ++static int jornada720_lcd_set_contrast(struct lcd_device *ld, int contrast) ++{ ++ jornada720_mcu_start(MCU_SetContrast); ++ jornada720_mcu_byte(contrast); ++ jornada720_mcu_end(); ++ return 0; ++} ++ ++static struct lcd_properties jornada720_lcd_properties = { ++ .owner = THIS_MODULE, ++ .set_power = jornada720_lcd_set_power, ++ .get_power = jornada720_lcd_get_power, ++ .set_contrast = jornada720_lcd_set_contrast, ++ .get_contrast = jornada720_lcd_get_contrast, ++ .max_contrast = 255, ++}; ++ + static struct resource sa1111_resources[] = { + [0] = { + .start = 0x40000000, +@@ -77,6 +236,10 @@ + PPDR |= PPC_LDD3 | PPC_LDD4; + + ret = platform_add_devices(devices, ARRAY_SIZE(devices)); ++ ++ jornada720_mcu_init(); ++ backlight_device_register("e1356fb", 0, &jornada720_backlight_properties); ++ lcd_device_register("e1356fb", 0, &jornada720_lcd_properties); + } + return ret; + } +diff -ruN linux-2.6.18-vanilla/drivers/input/keyboard/Kconfig linux-2.6.18/drivers/input/keyboard/Kconfig +--- linux-2.6.18-vanilla/drivers/input/keyboard/Kconfig 2006-09-20 03:42:06.000000000 +0000 ++++ linux-2.6.18/drivers/input/keyboard/Kconfig 2006-10-03 22:58:39.000000000 +0000 +@@ -183,4 +183,11 @@ + This driver implements support for HIL-keyboards attached + to your machine, so normally you should say Y here. + ++config KEYBOARD_JORNADA720 ++ tristate "HP Jornada 720 Keyboard Support" ++ depends on SA1100_JORNADA720 ++ default y ++ help ++ Say Y to enable keyboard on the Hewlett Packard Jornada ++ 7xx(710/720/728) series of PDAs. + endif +diff -ruN linux-2.6.18-vanilla/drivers/input/keyboard/Makefile linux-2.6.18/drivers/input/keyboard/Makefile +--- linux-2.6.18-vanilla/drivers/input/keyboard/Makefile 2006-09-20 03:42:06.000000000 +0000 ++++ linux-2.6.18/drivers/input/keyboard/Makefile 2006-10-03 22:58:39.000000000 +0000 +@@ -15,4 +15,4 @@ + obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o + obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o + obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o +- ++obj-$(CONFIG_KEYBOARD_JORNADA720) += jornada720_kbd.o +diff -ruN linux-2.6.18-vanilla/drivers/input/keyboard/jornada720_kbd.c linux-2.6.18/drivers/input/keyboard/jornada720_kbd.c +--- linux-2.6.18-vanilla/drivers/input/keyboard/jornada720_kbd.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.18/drivers/input/keyboard/jornada720_kbd.c 2006-10-03 23:05:54.000000000 +0000 +@@ -0,0 +1,102 @@ ++/* ++ * Jornada 720 keyboard interface ++ */ ++ ++#include <linux/input.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++#include <linux/slab.h> ++#include <linux/errno.h> ++#include <linux/interrupt.h> ++ ++#include <asm/hardware.h> ++#include <asm/arch/jornada720.h> ++#include <asm/irq.h> ++ ++MODULE_AUTHOR("Alex Lange <chicken@handhelds.org>"); ++MODULE_DESCRIPTION("Jornada 720 keyboard driver"); ++MODULE_LICENSE("GPL"); ++ ++static char jornada720_kbd_name[] = "Jornada 720 keyboard"; ++ ++static struct input_dev *dev; ++ ++static unsigned char jornada720_normal_keymap[128] = { ++ 0, 1, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 87, KEY_VOLUMEUP, KEY_VOLUMEDOWN, KEY_MUTE, ++ 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, ++ 0, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 43, 14, 0, 0, 0, ++ 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, KEY_LEFTBRACE, KEY_RIGHTBRACE, 0, 0, 0, ++ 0, 44, 45, 46, 47, 48, 49, 50, 51, 52, KEY_KPMINUS, 40, 28, 0, 0, 0, ++ 0, 15, 0, 42, 0, 40, 0, 0, 0, 0, 103, 0, 54, 0, 0, 0, ++ 0, 0, 0, 0, 0, 56, KEY_GRAVE, 0, 0, 105, 108, 106, 0, 0, 0, 0, ++ 0, 55, 29, 0, 57, 0, 0, 0, 53, 111, 0, 0, 0, 0, 0, 116, ++}; ++ ++static irqreturn_t jornada720_keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs) ++{ ++ int key, keycode; ++ int count, mcu_data=0; ++ ++ jornada720_mcu_start(MCU_GetScanKeyCode); ++ count = jornada720_mcu_read(); ++ ++ while (count-- > 0) { ++ key = mcu_data = jornada720_mcu_read(); ++ ++ if (key > 128) ++ key = key - 128; ++ ++ keycode = jornada720_normal_keymap[key]; ++ ++ if (mcu_data < 128) { ++ input_report_key(dev, keycode, 1); ++ input_sync(dev); ++ } ++ else { ++ input_report_key(dev, keycode, 0); ++ input_sync(dev); ++ } ++ } ++ ++ jornada720_mcu_end(); ++ ++ return IRQ_HANDLED; ++} ++ ++static int __init jornada720_kbd_init(void) ++{ ++ int i,ret; ++ printk("jorada720_kbd: Jornada 720 keyboard\n"); ++ ++ /*init_input_dev(&dev);*/ ++ dev = input_allocate_device(); ++ dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP); ++ dev->keybit[LONG(KEY_SUSPEND)] |= BIT(KEY_SUSPEND); ++ ++ for ( i=0 ; i<=128 ; i++ ) { ++ if (!(jornada720_normal_keymap[i])) { ++ } ++ else ++ set_bit(jornada720_normal_keymap[i], dev->keybit); ++ } ++ ++ dev->name = jornada720_kbd_name; ++ ++ ret = request_irq(GPIO_JORNADA720_KEYBOARD_IRQ, ++ jornada720_keyboard_interrupt, ++ IRQF_DISABLED | IRQF_TRIGGER_FALLING, ++ "Jornada720 Keyboard",NULL); ++ if (ret) { ++ printk("Unable to grab Jornada 720 keyboard IRQ: %d\n", ret); ++ input_free_device(dev); ++ return ret; ++ } ++ ++ input_register_device(dev); ++ ++ return 0; ++} ++ ++module_init(jornada720_kbd_init); +diff -ruN linux-2.6.18-vanilla/drivers/input/touchscreen/Kconfig linux-2.6.18/drivers/input/touchscreen/Kconfig +--- linux-2.6.18-vanilla/drivers/input/touchscreen/Kconfig 2006-09-20 03:42:06.000000000 +0000 ++++ linux-2.6.18/drivers/input/touchscreen/Kconfig 2006-10-03 22:58:39.000000000 +0000 +@@ -108,4 +108,11 @@ + To compile this driver as a module, choose M here: the + module will be called hp680_ts_input. + ++config TOUCHSCREEN_JORNADA720 ++ tristate "HP Jornada 720 touchscreen support" ++ depends on SA1100_JORNADA720 ++ help ++ Say Y here if you are using a HP Jornada 710/720/728 handheld ++ and want to use the touchscreen. ++ + endif +diff -ruN linux-2.6.18-vanilla/drivers/input/touchscreen/Makefile linux-2.6.18/drivers/input/touchscreen/Makefile +--- linux-2.6.18-vanilla/drivers/input/touchscreen/Makefile 2006-09-20 03:42:06.000000000 +0000 ++++ linux-2.6.18/drivers/input/touchscreen/Makefile 2006-10-03 22:58:39.000000000 +0000 +@@ -12,3 +12,4 @@ + obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o + obj-$(CONFIG_TOUCHSCREEN_MK712) += mk712.o + obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680_ts_input.o ++obj-$(CONFIG_TOUCHSCREEN_JORNADA720) += jornada720_ts.o +diff -ruN linux-2.6.18-vanilla/drivers/input/touchscreen/jornada720_ts.c linux-2.6.18/drivers/input/touchscreen/jornada720_ts.c +--- linux-2.6.18-vanilla/drivers/input/touchscreen/jornada720_ts.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.18/drivers/input/touchscreen/jornada720_ts.c 2006-10-03 23:07:32.000000000 +0000 +@@ -0,0 +1,108 @@ ++/* ++ * Jornada 720 touchscreen interface based on Jornada 56x interface ++ */ ++ ++#include <linux/input.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++#include <linux/slab.h> ++#include <linux/errno.h> ++#include <linux/interrupt.h> ++ ++#include <asm/hardware.h> ++#include <asm/arch/jornada720.h> ++#include <asm/irq.h> ++ ++MODULE_AUTHOR("Alex Lange <chicken@handhelds.org>"); ++MODULE_DESCRIPTION("Jornada 720 touchscreen driver"); ++MODULE_LICENSE("GPL"); ++ ++static char jornada720_ts_name[] = "Jornada 720 touchscreen"; ++ ++static struct input_dev *dev; ++ ++static irqreturn_t jornada720_mouse_interrupt(int irq, void *dev_id, struct pt_regs *regs) ++{ ++ int down; ++ int X[3], Y[3], high_x, high_y, x, y; ++ ++ udelay(1); ++ ++ down = ( (GPLR & GPIO_JORNADA720_MOUSE) == 0); ++ ++ if(!down) { ++ input_report_key(dev, BTN_TOUCH, down); /* report a pen up */ ++ input_report_abs(dev, ABS_PRESSURE, 0); ++ input_sync(dev); ++ return IRQ_HANDLED; ++ } ++ ++ /* read x & y data from mcu interface and pass it on */ ++ ++ jornada720_mcu_start(MCU_GetTouchSamples); ++ X[0] = jornada720_mcu_read(); ++ X[1] = jornada720_mcu_read(); ++ X[2] = jornada720_mcu_read(); ++ Y[0] = jornada720_mcu_read(); ++ Y[1] = jornada720_mcu_read(); ++ Y[2] = jornada720_mcu_read(); ++ high_x = jornada720_mcu_read(); /* msbs of samples */ ++ high_y = jornada720_mcu_read(); ++ jornada720_mcu_end(); ++ ++ X[0] |= (high_x & 3) << 8; ++ X[1] |= (high_x & 0xc) << 6; ++ X[2] |= (high_x & 0x30) << 4; ++ ++ Y[0] |= (high_y & 3) << 8; ++ Y[1] |= (high_y & 0xc) << 6; ++ Y[2] |= (high_y & 0x30) << 4; ++ ++ /* simple averaging filter */ ++ x = (X[0] + X[1] + X[2])/3; ++ y = (Y[0] + Y[1] + Y[2])/3; ++ ++ input_report_key(dev, BTN_TOUCH, down); ++ input_report_abs(dev, ABS_X, x); ++ input_report_abs(dev, ABS_Y, y); ++ input_report_abs(dev, ABS_PRESSURE, 1); ++ input_sync(dev); ++ ++ return IRQ_HANDLED; ++ ++} ++ ++static int __init jornada720_ts_init(void) ++{ ++ int ret; ++ printk("jornada720_ts: Jornada 720 touchscreen\n"); ++ ++ dev = input_allocate_device(); ++ dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS); ++ dev->absbit[0] = BIT(ABS_X) | BIT(ABS_Y) | BIT(ABS_PRESSURE); ++ dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH); ++ ++ dev->absmin[ABS_X] = 270; dev->absmin[ABS_Y] = 180; ++ dev->absmax[ABS_X] = 3900; dev->absmax[ABS_Y] = 3700; ++ ++ dev->name = jornada720_ts_name; ++ ++ ret = request_irq(GPIO_JORNADA720_MOUSE_IRQ, ++ jornada720_mouse_interrupt, ++ IRQF_DISABLED | IRQF_TRIGGER_FALLING, ++ "Jornada720 Mouse",NULL); ++ if (ret) { ++ printk("Unable to grab Jornada 720 Mouse/Touchscreen IRQ: %d\n", ret); ++ input_free_device(dev); ++ return ret; ++ } ++ ++ input_register_device(dev); ++ ++ return 0; ++} ++ ++module_init(jornada720_ts_init); ++ +diff -ruN linux-2.6.18-vanilla/drivers/video/Kconfig linux-2.6.18/drivers/video/Kconfig +--- linux-2.6.18-vanilla/drivers/video/Kconfig 2006-09-20 03:42:06.000000000 +0000 ++++ linux-2.6.18/drivers/video/Kconfig 2006-10-03 22:58:39.000000000 +0000 +@@ -680,6 +680,16 @@ + framebuffer. Product specs at + <http://www.erd.epson.com/vdc/html/products.htm>. + ++config FB_EPSON1356 ++ bool "Epson 1356 framebuffer support" ++ depends on FB && ARM && SA1100_JORNADA720 ++ select FB_CFB_FILLRECT ++ select FB_CFB_COPYAREA ++ select FB_CFB_IMAGEBLIT ++ help ++ Support for the 1356 framebuffer device on the HP Jornada ++ 710/720/728 hanheld pc. ++ + config FB_S1D13XXX + tristate "Epson S1D13XXX framebuffer support" + depends on FB +diff -ruN linux-2.6.18-vanilla/drivers/video/Makefile linux-2.6.18/drivers/video/Makefile +--- linux-2.6.18-vanilla/drivers/video/Makefile 2006-09-20 03:42:06.000000000 +0000 ++++ linux-2.6.18/drivers/video/Makefile 2006-10-03 22:58:39.000000000 +0000 +@@ -77,6 +77,7 @@ + obj-$(CONFIG_FB_SUN3) += sun3fb.o + obj-$(CONFIG_FB_HIT) += hitfb.o + obj-$(CONFIG_FB_EPSON1355) += epson1355fb.o ++obj-$(CONFIG_FB_EPSON1356) += epson1356fb.o + obj-$(CONFIG_FB_PVR2) += pvr2fb.o + obj-$(CONFIG_FB_VOODOO1) += sstfb.o + obj-$(CONFIG_FB_ARMCLCD) += amba-clcd.o +diff -ruN linux-2.6.18-vanilla/drivers/video/epson1356fb.c linux-2.6.18/drivers/video/epson1356fb.c +--- linux-2.6.18-vanilla/drivers/video/epson1356fb.c 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.18/drivers/video/epson1356fb.c 2006-10-03 22:58:39.000000000 +0000 +@@ -0,0 +1,345 @@ ++/* ++ * linux/drivers/video/epson1356fb.c -- Epson 1356 LCD Controller Frame Buffer Device ++ * ++ * Copyright (C) 2001 MIT ++ * ++ * Edited from sa1100fb.c ++ * Copyright (C) 1999 Eric A. Thomas ++ * Based on acornfb.c Copyright (C) Russell King. ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive ++ * for more details. ++ * ++ * 20050203: Ported to kernel 2.6. Very basic interface for the Jornada 720 (C) Alex Lange (chicken@handhelds.org) ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/sched.h> ++#include <linux/errno.h> ++#include <linux/string.h> ++#include <linux/interrupt.h> ++#include <linux/slab.h> ++#include <linux/fb.h> ++#include <linux/delay.h> ++#include <linux/init.h> ++#include <linux/ioport.h> ++#include <linux/device.h> ++#include <linux/dma-mapping.h> ++ ++#include <asm/uaccess.h> ++#include <asm/hardware.h> ++ ++#include <asm/arch/jornada720.h> ++ ++#include "console/fbcon.h" ++ ++u32 pseudo_pal[16]; ++ ++struct fb_info fb_info; ++ ++static int e1356fb_setcolreg(unsigned regno, unsigned red, unsigned green, ++ unsigned blue, unsigned transp, ++ struct fb_info *fb_info) ++{ ++ int bpp, m = 0; ++ ++ bpp = fb_info->var.bits_per_pixel; ++ m = (bpp <= 8) ? (1 << bpp) : 256; ++ if (regno >= m) { ++ printk("regno %d out of range (max %d)\n", regno, m); ++ return -EINVAL; ++ } ++ switch (bpp) { ++ case 8: ++ break; ++ case 16: ++ /* RGB 565 */ ++ pseudo_pal[regno] = ((red & 0xF800) | ++ ((green & 0xFC00) >> 5) | ++ ((blue & 0xF800) >> 11)); ++ break; ++ } ++ ++ return 0; ++} ++ ++static int e1356fb_blank(int blank, struct fb_info *info) ++{ ++ switch (blank) { ++ case FB_BLANK_POWERDOWN: ++ case FB_BLANK_VSYNC_SUSPEND: ++ case FB_BLANK_HSYNC_SUSPEND: ++ case FB_BLANK_NORMAL: ++ PPSR &= ~PPC_LDD1; ++ PPDR |= PPC_LDD1; ++ break; ++ ++ case FB_BLANK_UNBLANK: ++ PPSR |= PPC_LDD1; ++ mdelay(100); ++ } ++ return 0; ++} ++ ++static struct fb_var_screeninfo e1356fb_screeninfo = { ++ .xres = 640, ++ .yres = 240, ++ .xres_virtual = 640, ++ .yres_virtual = 240, ++ .bits_per_pixel = 16, ++ .red.length = 5, ++ .green.length = 6, ++ .blue.length = 5, ++ .transp.length = 0, ++ .red.offset = 11, ++ .green.offset = 5, ++ .blue.offset = 0, ++ .transp.offset = 0, ++ .activate = FB_ACTIVATE_NOW, ++ .height = -1, ++ .width = -1, ++ .vmode = FB_VMODE_NONINTERLACED, ++ .accel_flags = 0, ++ .nonstd = 0, ++}; ++ ++static struct fb_ops e1356fb_ops = { ++ .owner = THIS_MODULE, ++ .fb_setcolreg = e1356fb_setcolreg, ++ .fb_fillrect = cfb_fillrect, ++ .fb_copyarea = cfb_copyarea, ++ .fb_imageblit = cfb_imageblit, ++ .fb_cursor = soft_cursor, ++ .fb_blank = e1356fb_blank, ++}; ++ ++static struct fb_fix_screeninfo e1356fb_fix = { ++ .id = "e1356fb", ++ .smem_len = (MAX_XRES * MAX_YRES * MAX_BPP)/8, ++ .smem_start = (unsigned long)DISP_MEM_OFFSET_PHYS, ++ .type = FB_TYPE_PACKED_PIXELS, ++ .visual = FB_VISUAL_TRUECOLOR, ++ .line_length = (640 * 16) / 8, ++ .accel = FB_ACCEL_NONE, ++ .type_aux = 0, ++ .ypanstep = 0, ++ .ywrapstep = 0, ++}; ++ ++unsigned char LUT8[256*3] = { ++ /* Primary and secondary colors */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0xA0, ++ 0xA0, 0x00, 0x00, 0xA0, 0x00, 0xA0, 0xA0, 0xA0, 0x00, 0xA0, 0xA0, 0xA0, ++ 0x50, 0x50, 0x50, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0xF0, ++ 0xF0, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0xF0, 0xF0, 0xF0 ++}; ++ ++static char lut_base[] = { ++ /*red green blue rinc ginc binc */ ++ 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, /* Gray shades */ ++ 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, /* Black to red */ ++ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, /* Black to green */ ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* Black to blue */ ++ 0x00, 0x00, 0xF0, 0x00, 0x10, 0x00, /* Blue to cyan (blue and green) */ ++ 0x00, 0xf0, 0xf0, 0x00, 0x00, -0x10, /* Cyan (blue and green) to green */ ++ 0x00, 0xf0, 0x00, 0x10, 0x00, 0x00, /* Green to yellow (red and green)*/ ++ 0xf0, 0xf0, 0x00, 0x00, -0x10, 0x00, /* Yellow (red and green) to red */ ++ 0xf0, 0x00, 0x00, 0x00, 0x00, 0x10, /* Red to magenta (blue and red) */ ++ 0xf0, 0x00, 0xf0, -0x10, 0x00, 0x00, /* Magenta (blue and red) to blue */ ++ 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, /* Black to magenta (blue and red)*/ ++ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, /* Black to cyan (blue and green) */ ++ 0xf0, 0x00, 0x00, 0x00, 0x10, 0x10, /* Red to white */ ++ 0x00, 0xf0, 0x00, 0x10, 0x00, 0x10, /* Green to white */ ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x00, /* Blue to white */ ++}; ++ ++void e1356fb_init_hardware(void) ++{ ++ unsigned char *pRegs = REGISTER_OFFSET; ++ unsigned char *pLUT = LUT8; ++ unsigned char *pseed = lut_base; ++ unsigned char plast[3]; ++ int i, j, rgb; ++ ++ /* Enable access to SED1356 by setting memory/register select bit to 0. */ ++ pRegs[0x001] = 0; ++ udelay(2); ++ /* Disable display outputs during initialization) */ ++ pRegs[0x1FC] = 0; ++ ++ /* Set the GPIOs to input. Should GPIO bits in register [004] get switched ++ then the GPIO outputs, according to register [008], are driven low. */ ++ pRegs[0x004] = 0; ++ pRegs[0x008] = 0; ++ ++ /* Program the LCD panel type and panel timing registers. ++ * The horizontal and vertical non-display times have been ++ * calculated for a 78 Hz frame rate. ++ * LCD PCLK ++ * FrameRate = ----------------------------- ++ * (HDP + HNDP) * (VDP/2 + VNDP) ++ * ++ * 20,000,000 ++ * = ---------------------------- = 78 Hz ++ * (640 + 256) * (480 / 2 + 45) ++ */ ++ ++ pRegs[0x10] = 0x1; /* Memory Clock Configuration Register */ ++ pRegs[0x14] = 0x11; /* LCD Pixel Clock Configuration Register */ ++ pRegs[0x18] = 0x1; /* CRT/TV Pixel Clock Configuration Register */ ++ pRegs[0x1c] = 0x1; /* MediaPlug Clock Configuration Register */ ++ pRegs[0x1e] = 0x1; /* CPU To Memory Wait State Select Register */ ++ pRegs[0x20] = 0; /* Memory Configuration Register */ ++ pRegs[0x21] = 0x45; /* DRAM Refresh Rate Register */ ++ pRegs[0x2a] = 0x1; /* DRAM Timings Control Register 0 */ ++ pRegs[0x2b] = 0x1; /* DRAM Timings Control Register 1 */ ++ pRegs[0x30] = 0x1c; /* Panel Type Register */ ++ pRegs[0x31] = 0; /* MOD Rate Register */ ++ pRegs[0x32] = 0x4f; /* LCD Horizontal Display Width Register */ ++ pRegs[0x34] = 0x7; /* LCD Horizontal Non-Display Period Register */ ++ pRegs[0x35] = 0x1; /* TFT FPLINE Start Position Register */ ++ pRegs[0x36] = 0xb; /* TFT FPLINE Pulse Width Register */ ++ pRegs[0x38] = 0xef; /* LCD Vertical Display Height Register 0 */ ++ pRegs[0x39] = 0; /* LCD Vertical Display Height Register 1 */ ++ pRegs[0x3a] = 0x13; /* LCD Vertical Non-Display Period Register */ ++ pRegs[0x3b] = 0xb; /* TFT FPFRAME Start Position Register */ ++ pRegs[0x3c] = 0x1; /* TFT FPFRAME Pulse Width Register */ ++ pRegs[0x40] = 0x5; /* LCD Display Mode Register */ ++ pRegs[0x41] = 0; /* LCD Miscellaneous Register */ ++ pRegs[0x42] = 0; /* LCD Display Start Address Register 0 */ ++ pRegs[0x43] = 0; /* LCD Display Start Address Register 1 */ ++ pRegs[0x44] = 0; /* LCD Display Start Address Register 2 */ ++ pRegs[0x46] = 0x80; /* LCD Memory Address Offset Register 0 */ ++ pRegs[0x47] = 0x2; /* LCD Memory Address Offset Register 1 */ ++ pRegs[0x48] = 0; /* LCD Pixel Panning Register */ ++ pRegs[0x4a] = 0; /* LCD Display FIFO High Threshold Control Register */ ++ pRegs[0x4b] = 0; /* LCD Display FIFO Low Threshold Control Register */ ++ pRegs[0x50] = 0x4f; /* CRT/TV Horizontal Display Width Register */ ++ pRegs[0x52] = 0x13; /* CRT/TV Horizontal Non-Display Period Register */ ++ pRegs[0x53] = 0x1; /* CRT/TV HRTC Start Position Register */ ++ pRegs[0x54] = 0xb; /* CRT/TV HRTC Pulse Width Register */ ++ pRegs[0x56] = 0xdf; /* CRT/TV Vertical Display Height Register 0 */ ++ pRegs[0x57] = 0x1; /* CRT/TV Vertical Display Height Register 1 */ ++ pRegs[0x58] = 0x2b; /* CRT/TV Vertical Non-Display Period Register */ ++ pRegs[0x59] = 0x9; /* CRT/TV VRTC Start Position Register */ ++ pRegs[0x5a] = 0x1; /* CRT/TV VRTC Pulse Width Register */ ++ pRegs[0x5b] = 0x10; /* TV Output Control Register */ ++ pRegs[0x60] = 0x3; /* CRT/TV Display Mode Register */ ++ pRegs[0x62] = 0; /* CRT/TV Display Start Address Register 0 */ ++ pRegs[0x63] = 0; /* CRT/TV Display Start Address Register 1 */ ++ pRegs[0x64] = 0; /* CRT/TV Display Start Address Register 2 */ ++ pRegs[0x66] = 0x40; /* CRT/TV Memory Address Offset Register 0 */ ++ pRegs[0x67] = 0x1; /* CRT/TV Memory Address Offset Register 1 */ ++ pRegs[0x68] = 0; /* CRT/TV Pixel Panning Register */ ++ pRegs[0x6a] = 0; /* CRT/TV Display FIFO High Threshold Control Register */ ++ pRegs[0x6b] = 0; /* CRT/TV Display FIFO Low Threshold Control Register */ ++ pRegs[0x70] = 0; /* LCD Ink/Cursor Control Register */ ++ pRegs[0x71] = 0x1; /* LCD Ink/Cursor Start Address Register */ ++ pRegs[0x72] = 0; /* LCD Cursor X Position Register 0 */ ++ pRegs[0x73] = 0; /* LCD Cursor X Position Register 1 */ ++ pRegs[0x74] = 0; /* LCD Cursor Y Position Register 0 */ ++ pRegs[0x75] = 0; /* LCD Cursor Y Position Register 1 */ ++ pRegs[0x76] = 0; /* LCD Ink/Cursor Blue Color 0 Register */ ++ pRegs[0x77] = 0; /* LCD Ink/Cursor Green Color 0 Register */ ++ pRegs[0x78] = 0; /* LCD Ink/Cursor Red Color 0 Register */ ++ pRegs[0x7a] = 0x1f; /* LCD Ink/Cursor Blue Color 1 Register */ ++ pRegs[0x7b] = 0x3f; /* LCD Ink/Cursor Green Color 1 Register */ ++ pRegs[0x7c] = 0x1f; /* LCD Ink/Cursor Red Color 1 Register */ ++ pRegs[0x7e] = 0; /* LCD Ink/Cursor FIFO Threshold Register */ ++ pRegs[0x80] = 0; /* CRT/TV Ink/Cursor Control Register */ ++ pRegs[0x81] = 0x1; /* CRT/TV Ink/Cursor Start Address Register */ ++ pRegs[0x82] = 0; /* CRT/TV Cursor X Position Register 0 */ ++ pRegs[0x83] = 0; /* CRT/TV Cursor X Position Register 1 */ ++ pRegs[0x84] = 0; /* CRT/TV Cursor Y Position Register 0 */ ++ pRegs[0x85] = 0; /* CRT/TV Cursor Y Position Register 1 */ ++ pRegs[0x86] = 0; /* CRT/TV Ink/Cursor Blue Color 0 Register */ ++ pRegs[0x87] = 0; /* CRT/TV Ink/Cursor Green Color 0 Register */ ++ pRegs[0x88] = 0; /* CRT/TV Ink/Cursor Red Color 0 Register */ ++ pRegs[0x8a] = 0x1f; /* CRT/TV Ink/Cursor Blue Color 1 Register */ ++ pRegs[0x8b] = 0x3f; /* CRT/TV Ink/Cursor Green Color 1 Register */ ++ pRegs[0x8c] = 0x1f; /* CRT/TV Ink/Cursor Red Color 1 Register */ ++ pRegs[0x8e] = 0; /* CRT/TV Ink/Cursor FIFO Threshold Register */ ++ ++ /* Set the 2D acceleration (BitBLT) registers to a known state */ ++ for (i = 0x100; i <= 0x119; i++) ++ if (i != 0x107 && i != 0x10b && i != 0x10e && i != 0x10f && i != 0x117) ++ pRegs[i] = 0x00; ++ ++ /* Program the look-up table to a known state. */ ++ pRegs[0x1E0] = 0x01; /* Enable the LCD LUT for read/write. */ ++ pRegs[0x1E2] = 0; /* Reset the LUT address. */ ++ for (i = 0; i < 16 * 3; i++) ++ pRegs[0x1E4] = *pLUT++; /* non-regular color template */ ++ ++ for (i = 0; i < 15; i++) { ++ for (rgb = 0; rgb < 3; rgb++) { ++ plast[rgb] = *pseed++; /* base color value */ ++ pRegs[0x1E4] = plast[rgb]; ++ } ++ for (j = 0; j < 15; j++) ++ for (rgb = 0; rgb < 3; rgb++) { ++ plast[rgb] += pseed[rgb]; /* increment through color values*/ ++ pRegs[0x1E4] = plast[rgb]; ++ } ++ pseed += 3; ++ } ++ ++ pRegs[0x1e4] = 0; /* Look-Up Table Data Register */ ++ pRegs[0x1f0] = 0; /* Power Save Configuration Register */ ++ pRegs[0x1f1] = 0; /* Power Save Status Register */ ++ pRegs[0x1f4] = 0; /* CPU-to-Memory Access Watchdog Timer Register */ ++ ++ PPSR |= PPC_LDD0; ++ ++ mdelay(100); /* Wait for 100ms */ ++ pRegs[0x1F0] = 0; /* Turn off power save mode */ ++ pRegs[0x1F4] = 0; /* Disable the watchdog timer */ ++ pRegs[0x1FC] = 0x01; /* Disable power save mode, enable display */ ++} ++ ++int __init e1356fb_init(void) ++{ ++ if (fb_get_options("e1356fb", NULL)) ++ return -ENODEV; ++ ++ printk("Configuring the Jornada 720 screen...\n"); ++ ++ fb_info.screen_base = (u_char *) DISP_MEM_OFFSET; ++ fb_info.screen_size = ALLOCATED_FB_MEM_SIZE; ++ memset(&fb_info.var, 0, sizeof(fb_info.var)); ++ ++ PPSR &= ~(PPC_LDD0 | PPC_LDD1 | PPC_LDD2); ++ PPDR |= PPC_LDD0 | PPC_LDD1 | PPC_LDD2; ++ LCCR3 = 0; ++ LCCR2 = 0; ++ LCCR1 = 0; ++ LCCR0 = 0; ++ DBAR1 = 0; ++ DBAR2 = 0; ++ ++ e1356fb_init_hardware(); ++ memset ((unsigned char *)DISP_MEM_OFFSET, 0, ALLOCATED_FB_MEM_SIZE); ++ ++ PPSR |= PPC_LDD1; ++ mdelay(100); /* delay again */ ++ PPSR |= PPC_LDD2; ++ ++ fb_info.fbops = &e1356fb_ops; ++ fb_info.var = e1356fb_screeninfo; ++ fb_info.fix = e1356fb_fix; ++ fb_info.flags = FBINFO_DEFAULT; ++ ++ fb_info.pseudo_palette = &pseudo_pal; ++ ++ if (register_framebuffer(&fb_info) < 0) ++ return 1; ++ ++ return 0; ++} ++ ++module_init(e1356fb_init); ++ +diff -ruN linux-2.6.18-vanilla/include/asm-arm/arch-sa1100/jornada720.h linux-2.6.18/include/asm-arm/arch-sa1100/jornada720.h +--- linux-2.6.18-vanilla/include/asm-arm/arch-sa1100/jornada720.h 2006-09-20 03:42:06.000000000 +0000 ++++ linux-2.6.18/include/asm-arm/arch-sa1100/jornada720.h 2006-10-03 22:58:39.000000000 +0000 +@@ -11,6 +11,8 @@ + #error "include <asm/hardware.h> instead" + #endif + ++#define jornada720_mcu_read() jornada720_mcu_byte(MCU_TxDummy) ++ + #define SA1111_BASE (0x40000000) + + #define GPIO_JORNADA720_KEYBOARD GPIO_GPIO(0) +@@ -19,9 +21,38 @@ + #define GPIO_JORNADA720_KEYBOARD_IRQ IRQ_GPIO0 + #define GPIO_JORNADA720_MOUSE_IRQ IRQ_GPIO9 + ++/* Epson 1356 LCD controll parameters */ ++#define REGISTER_OFFSET ((unsigned char *) 0xf0000000/* 0 */) ++#define DISP_MEM_OFFSET ((unsigned char *) 0xf1000000/* 0 */) ++#define DISP_MEM_OFFSET_PHYS ((unsigned char *) 0x48200000/* 0 filip wtf? */) ++#define ALLOCATED_FB_MEM_SIZE 0x80000 /* display memory size (512kb) */ ++ ++#define MAX_BPP 16 ++#define MAX_XRES 640 ++#define MAX_YRES 240 ++#define MIN_XRES 64 ++#define MIN_YRES 64 ++ ++/* MCU COMMANDS */ ++#define MCU_GetBatteryData 0xc0 ++#define MCU_GetScanKeyCode 0x90 ++#define MCU_GetTouchSamples 0xa0 ++#define MCU_GetContrast 0xD0 ++#define MCU_SetContrast 0xD1 ++#define MCU_GetBrightness 0xD2 ++#define MCU_SetBrightness 0xD3 ++#define MCU_ContrastOff 0xD8 ++#define MCU_BrightnessOff 0xD9 ++#define MCU_PWMOFF 0xDF ++#define MCU_TxDummy 0x11 ++#define MCU_ErrorCode 0x00 ++ + #ifndef __ASSEMBLY__ + + void jornada720_mcu_init(void); ++int jornada720_mcu_byte(int arg_data); ++int jornada720_mcu_start(int arg_data); ++void jornada720_mcu_end(void); + void jornada_contrast(int arg_contrast); + void jornada720_battery(void); + int jornada720_getkey(unsigned char *data, int size); |