aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-jlime-jornada7xx-2.6.18
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/linux/linux-jlime-jornada7xx-2.6.18
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
downloadopenembedded-709c4d66e0b107ca606941b988bad717c0b45d9b.tar.gz
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/linux/linux-jlime-jornada7xx-2.6.18')
-rw-r--r--recipes/linux/linux-jlime-jornada7xx-2.6.18/defconf_jlime1068
-rw-r--r--recipes/linux/linux-jlime-jornada7xx-2.6.18/linux-2.6.18-jornada7xx.patch909
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);