logicpd-pxa270: initial support for Logicpd PXA270, provided by Shane Volpe
authorCliff Brake <cbrake@bec-systems.com>
Mon, 5 Jun 2006 19:16:34 +0000 (19:16 +0000)
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>
Mon, 5 Jun 2006 19:16:34 +0000 (19:16 +0000)
conf/machine/logicpd-pxa270.conf [new file with mode: 0644]
packages/linux/logicpd-pxa270_2.6.17-rc5.bb [new file with mode: 0644]
packages/linux/logicpd-pxa270_2.6.17-rc5/.mtn2git_empty [new file with mode: 0644]
packages/linux/logicpd-pxa270_2.6.17-rc5/linux-2.6.17-rc5.patch [new file with mode: 0644]

diff --git a/conf/machine/logicpd-pxa270.conf b/conf/machine/logicpd-pxa270.conf
new file mode 100644 (file)
index 0000000..1027fe8
--- /dev/null
@@ -0,0 +1,20 @@
+#@TYPE: Machine
+#@Name: LogicPD PXA270 Development Platform
+#@DESCRIPTION: Machine configuration for LogicPD PXA270 Zoom Development Platform
+#OLDEST_KERNEL = "2.6.17-rc5"
+TARGET_ARCH = "arm"
+PREFERRED_VERSION_mainstone-kernel = "2.6.17-rc5"
+GUI_MACHINE_CLASS = "smallscreen"
+IPKG_ARCHS = "all arm armv5te ${MACHINE}"
+
+PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}"
+
+include conf/machine/include/tune-iwmmxt.conf
+
+# used by sysvinit_2
+SERIAL_CONSOLE = "115200 ttyS0"
+
+# used by opie-collections.inc
+ROOT_FLASH_SIZE = "32"
+# EXTRA_IMAGECMD_jffs2 = "--eraseblock=0x40000"
+
diff --git a/packages/linux/logicpd-pxa270_2.6.17-rc5.bb b/packages/linux/logicpd-pxa270_2.6.17-rc5.bb
new file mode 100644 (file)
index 0000000..39557d3
--- /dev/null
@@ -0,0 +1,33 @@
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for the LogicPD Zoom(PXA270 ref design)"
+LICENSE = "GPL"
+MAINTAINER = "Shane Volpe <shane.volpe@gmail.com>"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.17-rc5.tar.bz2 \
+           file://linux-2.6.17-rc5.patch;pnum=0;patch=1"
+
+S = "${WORKDIR}/linux-2.6.17-rc5"
+
+COMPATIBLE_HOST = 'arm.*-linux'
+
+inherit kernel
+inherit package
+
+ARCH = "arm"
+KERNEL_IMAGETYPE = "zImage"
+
+do_configure_prepend() {
+       install -m 0644 ${S}/arch/arm/configs/lpd270_defconfig ${S}/.config
+}
+
+do_deploy() {
+        install -d ${DEPLOY_DIR_IMAGE}
+        install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
+COMPATIBLE_MACHINE = "logicpd-pxa270"
diff --git a/packages/linux/logicpd-pxa270_2.6.17-rc5/.mtn2git_empty b/packages/linux/logicpd-pxa270_2.6.17-rc5/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/linux/logicpd-pxa270_2.6.17-rc5/linux-2.6.17-rc5.patch b/packages/linux/logicpd-pxa270_2.6.17-rc5/linux-2.6.17-rc5.patch
new file mode 100644 (file)
index 0000000..074f6e1
--- /dev/null
@@ -0,0 +1,2183 @@
+Index: arch/arm/configs/lpd270_defconfig\r
+===================================================================\r
+RCS file: arch/arm/configs/lpd270_defconfig\r
+diff -N arch/arm/configs/lpd270_defconfig\r
+*** /dev/null  1 Jan 1970 00:00:00 -0000\r
+--- arch/arm/configs/lpd270_defconfig  1 Jun 2006 17:31:13 -0000       1.3\r
+***************\r
+*** 0 ****\r
+--- 1,926 ----\r
++ #\r
++ # Automatically generated make config: don't edit\r
++ # Linux kernel version: 2.6.17-rc5\r
++ # Tue May 30 12:40:27 2006\r
++ #\r
++ CONFIG_ARM=y\r
++ CONFIG_MMU=y\r
++ CONFIG_RWSEM_GENERIC_SPINLOCK=y\r
++ CONFIG_GENERIC_HWEIGHT=y\r
++ CONFIG_GENERIC_CALIBRATE_DELAY=y\r
++ CONFIG_ARCH_MTD_XIP=y\r
++ CONFIG_VECTORS_BASE=0xffff0000\r
++ \r
++ #\r
++ # Code maturity level options\r
++ #\r
++ CONFIG_EXPERIMENTAL=y\r
++ CONFIG_BROKEN_ON_SMP=y\r
++ CONFIG_INIT_ENV_ARG_LIMIT=32\r
++ \r
++ #\r
++ # General setup\r
++ #\r
++ CONFIG_LOCALVERSION=""\r
++ CONFIG_LOCALVERSION_AUTO=y\r
++ CONFIG_SWAP=y\r
++ CONFIG_SYSVIPC=y\r
++ # CONFIG_POSIX_MQUEUE is not set\r
++ # CONFIG_BSD_PROCESS_ACCT is not set\r
++ CONFIG_SYSCTL=y\r
++ # CONFIG_AUDIT is not set\r
++ # CONFIG_IKCONFIG is not set\r
++ # CONFIG_RELAY is not set\r
++ CONFIG_INITRAMFS_SOURCE=""\r
++ CONFIG_UID16=y\r
++ CONFIG_CC_OPTIMIZE_FOR_SIZE=y\r
++ # CONFIG_EMBEDDED is not set\r
++ CONFIG_KALLSYMS=y\r
++ # CONFIG_KALLSYMS_ALL is not set\r
++ # CONFIG_KALLSYMS_EXTRA_PASS is not set\r
++ CONFIG_HOTPLUG=y\r
++ CONFIG_PRINTK=y\r
++ CONFIG_BUG=y\r
++ CONFIG_ELF_CORE=y\r
++ CONFIG_BASE_FULL=y\r
++ CONFIG_FUTEX=y\r
++ CONFIG_EPOLL=y\r
++ CONFIG_SHMEM=y\r
++ CONFIG_SLAB=y\r
++ # CONFIG_TINY_SHMEM is not set\r
++ CONFIG_BASE_SMALL=0\r
++ # CONFIG_SLOB is not set\r
++ CONFIG_OBSOLETE_INTERMODULE=y\r
++ \r
++ #\r
++ # Loadable module support\r
++ #\r
++ CONFIG_MODULES=y\r
++ # CONFIG_MODULE_UNLOAD is not set\r
++ # CONFIG_MODVERSIONS is not set\r
++ # CONFIG_MODULE_SRCVERSION_ALL is not set\r
++ # CONFIG_KMOD is not set\r
++ \r
++ #\r
++ # Block layer\r
++ #\r
++ # CONFIG_BLK_DEV_IO_TRACE is not set\r
++ \r
++ #\r
++ # IO Schedulers\r
++ #\r
++ CONFIG_IOSCHED_NOOP=y\r
++ CONFIG_IOSCHED_AS=y\r
++ CONFIG_IOSCHED_DEADLINE=y\r
++ CONFIG_IOSCHED_CFQ=y\r
++ CONFIG_DEFAULT_AS=y\r
++ # CONFIG_DEFAULT_DEADLINE is not set\r
++ # CONFIG_DEFAULT_CFQ is not set\r
++ # CONFIG_DEFAULT_NOOP is not set\r
++ CONFIG_DEFAULT_IOSCHED="anticipatory"\r
++ \r
++ #\r
++ # System Type\r
++ #\r
++ # CONFIG_ARCH_CLPS7500 is not set\r
++ # CONFIG_ARCH_CLPS711X is not set\r
++ # CONFIG_ARCH_CO285 is not set\r
++ # CONFIG_ARCH_EBSA110 is not set\r
++ # CONFIG_ARCH_EP93XX is not set\r
++ # CONFIG_ARCH_FOOTBRIDGE is not set\r
++ # CONFIG_ARCH_INTEGRATOR is not set\r
++ # CONFIG_ARCH_IOP3XX is not set\r
++ # CONFIG_ARCH_IXP4XX is not set\r
++ # CONFIG_ARCH_IXP2000 is not set\r
++ # CONFIG_ARCH_IXP23XX is not set\r
++ # CONFIG_ARCH_L7200 is not set\r
++ CONFIG_ARCH_PXA=y\r
++ # CONFIG_ARCH_RPC is not set\r
++ # CONFIG_ARCH_SA1100 is not set\r
++ # CONFIG_ARCH_S3C2410 is not set\r
++ # CONFIG_ARCH_SHARK is not set\r
++ # CONFIG_ARCH_LH7A40X is not set\r
++ # CONFIG_ARCH_OMAP is not set\r
++ # CONFIG_ARCH_VERSATILE is not set\r
++ # CONFIG_ARCH_REALVIEW is not set\r
++ # CONFIG_ARCH_IMX is not set\r
++ # CONFIG_ARCH_H720X is not set\r
++ # CONFIG_ARCH_AAEC2000 is not set\r
++ # CONFIG_ARCH_AT91RM9200 is not set\r
++ \r
++ #\r
++ # Intel PXA2xx Implementations\r
++ #\r
++ # CONFIG_ARCH_LUBBOCK is not set\r
++ CONFIG_MACH_LOGICPD_PXA270=y\r
++ # CONFIG_MACH_MAINSTONE is not set\r
++ # CONFIG_ARCH_PXA_IDP is not set\r
++ # CONFIG_PXA_SHARPSL is not set\r
++ CONFIG_PXA27x=y\r
++ CONFIG_IWMMXT=y\r
++ \r
++ #\r
++ # Processor Type\r
++ #\r
++ CONFIG_CPU_32=y\r
++ CONFIG_CPU_XSCALE=y\r
++ CONFIG_CPU_32v5=y\r
++ CONFIG_CPU_ABRT_EV5T=y\r
++ CONFIG_CPU_CACHE_VIVT=y\r
++ CONFIG_CPU_TLB_V4WBI=y\r
++ \r
++ #\r
++ # Processor Features\r
++ #\r
++ # CONFIG_ARM_THUMB is not set\r
++ CONFIG_XSCALE_PMU=y\r
++ \r
++ #\r
++ # Bus support\r
++ #\r
++ \r
++ #\r
++ # PCCARD (PCMCIA/CardBus) support\r
++ #\r
++ # CONFIG_PCCARD is not set\r
++ \r
++ #\r
++ # Kernel Features\r
++ #\r
++ # CONFIG_PREEMPT is not set\r
++ # CONFIG_NO_IDLE_HZ is not set\r
++ CONFIG_HZ=100\r
++ # CONFIG_AEABI is not set\r
++ # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set\r
++ CONFIG_SELECT_MEMORY_MODEL=y\r
++ CONFIG_FLATMEM_MANUAL=y\r
++ # CONFIG_DISCONTIGMEM_MANUAL is not set\r
++ # CONFIG_SPARSEMEM_MANUAL is not set\r
++ CONFIG_FLATMEM=y\r
++ CONFIG_FLAT_NODE_MEM_MAP=y\r
++ # CONFIG_SPARSEMEM_STATIC is not set\r
++ CONFIG_SPLIT_PTLOCK_CPUS=4096\r
++ CONFIG_ALIGNMENT_TRAP=y\r
++ \r
++ #\r
++ # Boot options\r
++ #\r
++ CONFIG_ZBOOT_ROM_TEXT=0x0\r
++ CONFIG_ZBOOT_ROM_BSS=0x0\r
++ CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 ip=dhcp console=ttyS0,115200 mem=64M"\r
++ #CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.3.5:/opt/nfs-exports/pxa-nfs-root ip=dhcp console=ttyS0,115200 mem=64M"\r
++ # CONFIG_XIP_KERNEL is not set\r
++ \r
++ #\r
++ # Floating point emulation\r
++ #\r
++ \r
++ #\r
++ # At least one emulation must be selected\r
++ #\r
++ CONFIG_FPE_NWFPE=y\r
++ # CONFIG_FPE_NWFPE_XP is not set\r
++ # CONFIG_FPE_FASTFPE is not set\r
++ \r
++ #\r
++ # Userspace binary formats\r
++ #\r
++ CONFIG_BINFMT_ELF=y\r
++ # CONFIG_BINFMT_AOUT is not set\r
++ # CONFIG_BINFMT_MISC is not set\r
++ # CONFIG_ARTHUR is not set\r
++ \r
++ #\r
++ # Power management options\r
++ #\r
++ # CONFIG_PM is not set\r
++ # CONFIG_APM is not set\r
++ \r
++ #\r
++ # Networking\r
++ #\r
++ CONFIG_NET=y\r
++ \r
++ #\r
++ # Networking options\r
++ #\r
++ # CONFIG_NETDEBUG is not set\r
++ # CONFIG_PACKET is not set\r
++ CONFIG_UNIX=y\r
++ # CONFIG_NET_KEY is not set\r
++ CONFIG_INET=y\r
++ # CONFIG_IP_MULTICAST is not set\r
++ # CONFIG_IP_ADVANCED_ROUTER is not set\r
++ CONFIG_IP_FIB_HASH=y\r
++ CONFIG_IP_PNP=y\r
++ CONFIG_IP_PNP_DHCP=y\r
++ # CONFIG_IP_PNP_BOOTP is not set\r
++ # CONFIG_IP_PNP_RARP is not set\r
++ # CONFIG_NET_IPIP is not set\r
++ # CONFIG_NET_IPGRE is not set\r
++ # CONFIG_ARPD is not set\r
++ # CONFIG_SYN_COOKIES is not set\r
++ # CONFIG_INET_AH is not set\r
++ # CONFIG_INET_ESP is not set\r
++ # CONFIG_INET_IPCOMP is not set\r
++ # CONFIG_INET_XFRM_TUNNEL is not set\r
++ # CONFIG_INET_TUNNEL is not set\r
++ CONFIG_INET_DIAG=y\r
++ CONFIG_INET_TCP_DIAG=y\r
++ # CONFIG_TCP_CONG_ADVANCED is not set\r
++ CONFIG_TCP_CONG_BIC=y\r
++ # CONFIG_IPV6 is not set\r
++ # CONFIG_INET6_XFRM_TUNNEL is not set\r
++ # CONFIG_INET6_TUNNEL is not set\r
++ # CONFIG_NETFILTER is not set\r
++ \r
++ #\r
++ # DCCP Configuration (EXPERIMENTAL)\r
++ #\r
++ # CONFIG_IP_DCCP is not set\r
++ \r
++ #\r
++ # SCTP Configuration (EXPERIMENTAL)\r
++ #\r
++ # CONFIG_IP_SCTP is not set\r
++ \r
++ #\r
++ # TIPC Configuration (EXPERIMENTAL)\r
++ #\r
++ # CONFIG_TIPC is not set\r
++ # CONFIG_ATM is not set\r
++ # CONFIG_BRIDGE is not set\r
++ # CONFIG_VLAN_8021Q is not set\r
++ # CONFIG_DECNET is not set\r
++ # CONFIG_LLC2 is not set\r
++ # CONFIG_IPX is not set\r
++ # CONFIG_ATALK is not set\r
++ # CONFIG_X25 is not set\r
++ # CONFIG_LAPB is not set\r
++ # CONFIG_NET_DIVERT is not set\r
++ # CONFIG_ECONET is not set\r
++ # CONFIG_WAN_ROUTER is not set\r
++ \r
++ #\r
++ # QoS and/or fair queueing\r
++ #\r
++ # CONFIG_NET_SCHED is not set\r
++ \r
++ #\r
++ # Network testing\r
++ #\r
++ # CONFIG_NET_PKTGEN is not set\r
++ # CONFIG_HAMRADIO is not set\r
++ # CONFIG_IRDA is not set\r
++ # CONFIG_BT is not set\r
++ # CONFIG_IEEE80211 is not set\r
++ \r
++ #\r
++ # Device Drivers\r
++ #\r
++ \r
++ #\r
++ # Generic Driver Options\r
++ #\r
++ CONFIG_STANDALONE=y\r
++ CONFIG_PREVENT_FIRMWARE_BUILD=y\r
++ # CONFIG_FW_LOADER is not set\r
++ # CONFIG_DEBUG_DRIVER is not set\r
++ \r
++ #\r
++ # Connector - unified userspace <-> kernelspace linker\r
++ #\r
++ # CONFIG_CONNECTOR is not set\r
++ \r
++ #\r
++ # Memory Technology Devices (MTD)\r
++ #\r
++ CONFIG_MTD=y\r
++ # CONFIG_MTD_DEBUG is not set\r
++ # CONFIG_MTD_CONCAT is not set\r
++ CONFIG_MTD_PARTITIONS=y\r
++ CONFIG_MTD_REDBOOT_PARTS=y\r
++ CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1\r
++ # CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set\r
++ # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set\r
++ # CONFIG_MTD_CMDLINE_PARTS is not set\r
++ # CONFIG_MTD_AFS_PARTS is not set\r
++ \r
++ #\r
++ # User Modules And Translation Layers\r
++ #\r
++ CONFIG_MTD_CHAR=y\r
++ CONFIG_MTD_BLOCK=y\r
++ # CONFIG_FTL is not set\r
++ # CONFIG_NFTL is not set\r
++ # CONFIG_INFTL is not set\r
++ # CONFIG_RFD_FTL is not set\r
++ \r
++ #\r
++ # RAM/ROM/Flash chip drivers\r
++ #\r
++ CONFIG_MTD_CFI=y\r
++ # CONFIG_MTD_JEDECPROBE is not set\r
++ CONFIG_MTD_GEN_PROBE=y\r
++ CONFIG_MTD_CFI_ADV_OPTIONS=y\r
++ CONFIG_MTD_CFI_NOSWAP=y\r
++ # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set\r
++ # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set\r
++ CONFIG_MTD_CFI_GEOMETRY=y\r
++ CONFIG_MTD_MAP_BANK_WIDTH_1=y\r
++ CONFIG_MTD_MAP_BANK_WIDTH_2=y\r
++ CONFIG_MTD_MAP_BANK_WIDTH_4=y\r
++ # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set\r
++ # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set\r
++ # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set\r
++ # CONFIG_MTD_CFI_I1 is not set\r
++ CONFIG_MTD_CFI_I2=y\r
++ # CONFIG_MTD_CFI_I4 is not set\r
++ # CONFIG_MTD_CFI_I8 is not set\r
++ # CONFIG_MTD_OTP is not set\r
++ CONFIG_MTD_CFI_INTELEXT=y\r
++ # CONFIG_MTD_CFI_AMDSTD is not set\r
++ # CONFIG_MTD_CFI_STAA is not set\r
++ CONFIG_MTD_CFI_UTIL=y\r
++ # CONFIG_MTD_RAM is not set\r
++ # CONFIG_MTD_ROM is not set\r
++ # CONFIG_MTD_ABSENT is not set\r
++ # CONFIG_MTD_OBSOLETE_CHIPS is not set\r
++ # CONFIG_MTD_XIP is not set\r
++ \r
++ #\r
++ # Mapping drivers for chip access\r
++ #\r
++ # CONFIG_MTD_COMPLEX_MAPPINGS is not set\r
++ # CONFIG_MTD_PHYSMAP is not set\r
++ CONFIG_MTD_LOGICPD_PXA270=y\r
++ # CONFIG_MTD_ARM_INTEGRATOR is not set\r
++ # CONFIG_MTD_SHARP_SL is not set\r
++ # CONFIG_MTD_PLATRAM is not set\r
++ \r
++ #\r
++ # Self-contained MTD device drivers\r
++ #\r
++ # CONFIG_MTD_SLRAM is not set\r
++ # CONFIG_MTD_PHRAM is not set\r
++ # CONFIG_MTD_MTDRAM is not set\r
++ # CONFIG_MTD_BLOCK2MTD is not set\r
++ \r
++ #\r
++ # Disk-On-Chip Device Drivers\r
++ #\r
++ # CONFIG_MTD_DOC2000 is not set\r
++ # CONFIG_MTD_DOC2001 is not set\r
++ # CONFIG_MTD_DOC2001PLUS is not set\r
++ \r
++ #\r
++ # NAND Flash Device Drivers\r
++ #\r
++ # CONFIG_MTD_NAND is not set\r
++ \r
++ #\r
++ # OneNAND Flash Device Drivers\r
++ #\r
++ # CONFIG_MTD_ONENAND is not set\r
++ \r
++ #\r
++ # Parallel port support\r
++ #\r
++ # CONFIG_PARPORT is not set\r
++ \r
++ #\r
++ # Plug and Play support\r
++ #\r
++ \r
++ #\r
++ # Block devices\r
++ #\r
++ CONFIG_BLK_DEV_LOGICPD_CF=y\r
++ # CONFIG_BLK_DEV_COW_COMMON is not set\r
++ # CONFIG_BLK_DEV_LOOP is not set\r
++ # CONFIG_BLK_DEV_NBD is not set\r
++ # CONFIG_BLK_DEV_RAM is not set\r
++ # CONFIG_BLK_DEV_INITRD is not set\r
++ # CONFIG_CDROM_PKTCDVD is not set\r
++ # CONFIG_ATA_OVER_ETH is not set\r
++ \r
++ #\r
++ # ATA/ATAPI/MFM/RLL support\r
++ #\r
++ CONFIG_IDE=y\r
++ CONFIG_BLK_DEV_IDE=y\r
++ \r
++ #\r
++ # Please see Documentation/ide.txt for help/info on IDE drives\r
++ #\r
++ # CONFIG_BLK_DEV_IDE_SATA is not set\r
++ CONFIG_BLK_DEV_IDEDISK=y\r
++ # CONFIG_IDEDISK_MULTI_MODE is not set\r
++ # CONFIG_BLK_DEV_IDECD is not set\r
++ # CONFIG_BLK_DEV_IDETAPE is not set\r
++ # CONFIG_BLK_DEV_IDEFLOPPY is not set\r
++ # CONFIG_IDE_TASK_IOCTL is not set\r
++ \r
++ #\r
++ # IDE chipset support/bugfixes\r
++ #\r
++ # CONFIG_IDE_GENERIC is not set\r
++ # CONFIG_IDE_ARM is not set\r
++ # CONFIG_BLK_DEV_IDEDMA is not set\r
++ # CONFIG_IDEDMA_AUTO is not set\r
++ # CONFIG_BLK_DEV_HD is not set\r
++ \r
++ #\r
++ # SCSI device support\r
++ #\r
++ # CONFIG_RAID_ATTRS is not set\r
++ # CONFIG_SCSI is not set\r
++ \r
++ #\r
++ # Multi-device support (RAID and LVM)\r
++ #\r
++ # CONFIG_MD is not set\r
++ \r
++ #\r
++ # Fusion MPT device support\r
++ #\r
++ # CONFIG_FUSION is not set\r
++ \r
++ #\r
++ # IEEE 1394 (FireWire) support\r
++ #\r
++ \r
++ #\r
++ # I2O device support\r
++ #\r
++ \r
++ #\r
++ # Network device support\r
++ #\r
++ CONFIG_NETDEVICES=y\r
++ # CONFIG_DUMMY is not set\r
++ # CONFIG_BONDING is not set\r
++ # CONFIG_EQUALIZER is not set\r
++ # CONFIG_TUN is not set\r
++ \r
++ #\r
++ # PHY device support\r
++ #\r
++ # CONFIG_PHYLIB is not set\r
++ \r
++ #\r
++ # Ethernet (10 or 100Mbit)\r
++ #\r
++ CONFIG_NET_ETHERNET=y\r
++ CONFIG_MII=y\r
++ CONFIG_SMC91X=y\r
++ # CONFIG_DM9000 is not set\r
++ \r
++ #\r
++ # Ethernet (1000 Mbit)\r
++ #\r
++ \r
++ #\r
++ # Ethernet (10000 Mbit)\r
++ #\r
++ \r
++ #\r
++ # Token Ring devices\r
++ #\r
++ \r
++ #\r
++ # Wireless LAN (non-hamradio)\r
++ #\r
++ # CONFIG_NET_RADIO is not set\r
++ \r
++ #\r
++ # Wan interfaces\r
++ #\r
++ # CONFIG_WAN is not set\r
++ # CONFIG_PPP is not set\r
++ # CONFIG_SLIP is not set\r
++ # CONFIG_SHAPER is not set\r
++ # CONFIG_NETCONSOLE is not set\r
++ # CONFIG_NETPOLL is not set\r
++ # CONFIG_NET_POLL_CONTROLLER is not set\r
++ \r
++ #\r
++ # ISDN subsystem\r
++ #\r
++ # CONFIG_ISDN is not set\r
++ \r
++ #\r
++ # Input device support\r
++ #\r
++ CONFIG_INPUT=y\r
++ \r
++ #\r
++ # Userland interfaces\r
++ #\r
++ CONFIG_INPUT_MOUSEDEV=y\r
++ CONFIG_INPUT_MOUSEDEV_PSAUX=y\r
++ CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024\r
++ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768\r
++ # CONFIG_INPUT_JOYDEV is not set\r
++ # CONFIG_INPUT_TSDEV is not set\r
++ CONFIG_INPUT_EVDEV=y\r
++ # CONFIG_INPUT_EVBUG is not set\r
++ \r
++ #\r
++ # Input Device Drivers\r
++ #\r
++ CONFIG_INPUT_KEYBOARD=y\r
++ CONFIG_KEYBOARD_ATKBD=y\r
++ # CONFIG_KEYBOARD_SUNKBD is not set\r
++ # CONFIG_KEYBOARD_LKKBD is not set\r
++ # CONFIG_KEYBOARD_XTKBD is not set\r
++ # CONFIG_KEYBOARD_NEWTON is not set\r
++ # CONFIG_INPUT_MOUSE is not set\r
++ # CONFIG_INPUT_JOYSTICK is not set\r
++ # CONFIG_INPUT_TOUCHSCREEN is not set\r
++ # CONFIG_INPUT_MISC is not set\r
++ \r
++ #\r
++ # Hardware I/O ports\r
++ #\r
++ CONFIG_SERIO=y\r
++ # CONFIG_SERIO_SERPORT is not set\r
++ CONFIG_SERIO_LIBPS2=y\r
++ # CONFIG_SERIO_RAW is not set\r
++ # CONFIG_GAMEPORT is not set\r
++ \r
++ #\r
++ # Character devices\r
++ #\r
++ CONFIG_VT=y\r
++ CONFIG_VT_CONSOLE=y\r
++ CONFIG_HW_CONSOLE=y\r
++ # CONFIG_SERIAL_NONSTANDARD is not set\r
++ \r
++ #\r
++ # Serial drivers\r
++ #\r
++ # CONFIG_SERIAL_8250 is not set\r
++ \r
++ #\r
++ # Non-8250 serial port support\r
++ #\r
++ CONFIG_SERIAL_PXA=y\r
++ CONFIG_SERIAL_PXA_CONSOLE=y\r
++ CONFIG_SERIAL_CORE=y\r
++ CONFIG_SERIAL_CORE_CONSOLE=y\r
++ CONFIG_UNIX98_PTYS=y\r
++ CONFIG_LEGACY_PTYS=y\r
++ CONFIG_LEGACY_PTY_COUNT=256\r
++ \r
++ #\r
++ # IPMI\r
++ #\r
++ # CONFIG_IPMI_HANDLER is not set\r
++ \r
++ #\r
++ # Watchdog Cards\r
++ #\r
++ # CONFIG_WATCHDOG is not set\r
++ # CONFIG_NVRAM is not set\r
++ # CONFIG_DTLK is not set\r
++ # CONFIG_R3964 is not set\r
++ \r
++ #\r
++ # Ftape, the floppy tape device driver\r
++ #\r
++ # CONFIG_RAW_DRIVER is not set\r
++ \r
++ #\r
++ # TPM devices\r
++ #\r
++ # CONFIG_TCG_TPM is not set\r
++ # CONFIG_TELCLOCK is not set\r
++ \r
++ #\r
++ # I2C support\r
++ #\r
++ # CONFIG_I2C is not set\r
++ \r
++ #\r
++ # SPI support\r
++ #\r
++ # CONFIG_SPI is not set\r
++ # CONFIG_SPI_MASTER is not set\r
++ \r
++ #\r
++ # Dallas's 1-wire bus\r
++ #\r
++ # CONFIG_W1 is not set\r
++ \r
++ #\r
++ # Hardware Monitoring support\r
++ #\r
++ CONFIG_HWMON=y\r
++ # CONFIG_HWMON_VID is not set\r
++ # CONFIG_SENSORS_F71805F is not set\r
++ # CONFIG_HWMON_DEBUG_CHIP is not set\r
++ \r
++ #\r
++ # Misc devices\r
++ #\r
++ \r
++ #\r
++ # LED devices\r
++ #\r
++ # CONFIG_NEW_LEDS is not set\r
++ \r
++ #\r
++ # LED drivers\r
++ #\r
++ \r
++ #\r
++ # LED Triggers\r
++ #\r
++ \r
++ #\r
++ # Multimedia devices\r
++ #\r
++ # CONFIG_VIDEO_DEV is not set\r
++ CONFIG_VIDEO_V4L2=y\r
++ \r
++ #\r
++ # Digital Video Broadcasting Devices\r
++ #\r
++ # CONFIG_DVB is not set\r
++ \r
++ #\r
++ # Graphics support\r
++ #\r
++ CONFIG_FB=y\r
++ CONFIG_FB_CFB_FILLRECT=y\r
++ CONFIG_FB_CFB_COPYAREA=y\r
++ CONFIG_FB_CFB_IMAGEBLIT=y\r
++ # CONFIG_FB_MACMODES is not set\r
++ CONFIG_FB_FIRMWARE_EDID=y\r
++ # CONFIG_FB_MODE_HELPERS is not set\r
++ # CONFIG_FB_TILEBLITTING is not set\r
++ # CONFIG_FB_S1D13XXX is not set\r
++ CONFIG_FB_PXA=y\r
++ # CONFIG_FB_PXA_PARAMETERS is not set\r
++ # CONFIG_FB_PXA_LPD_LQ64D343 is not set\r
++ # CONFIG_FB_PXA_LPD_LQ035Q7DB02 is not set\r
++ # CONFIG_FB_PXA_LPD_LQ057Q3DC02 is not set\r
++ CONFIG_FB_PXA_LPD_LQ10D368=y\r
++ # CONFIG_FB_VIRTUAL is not set\r
++ \r
++ #\r
++ # Console display driver support\r
++ #\r
++ # CONFIG_VGA_CONSOLE is not set\r
++ CONFIG_DUMMY_CONSOLE=y\r
++ CONFIG_FRAMEBUFFER_CONSOLE=y\r
++ # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set\r
++ # CONFIG_FONTS is not set\r
++ CONFIG_FONT_8x8=y\r
++ CONFIG_FONT_8x16=y\r
++ \r
++ #\r
++ # Logo configuration\r
++ #\r
++ CONFIG_LOGO=y\r
++ CONFIG_LOGO_LINUX_MONO=y\r
++ CONFIG_LOGO_LINUX_VGA16=y\r
++ CONFIG_LOGO_LINUX_CLUT224=y\r
++ # CONFIG_BACKLIGHT_LCD_SUPPORT is not set\r
++ \r
++ #\r
++ # Sound\r
++ #\r
++ # CONFIG_SOUND is not set\r
++ \r
++ #\r
++ # USB support\r
++ #\r
++ CONFIG_USB_ARCH_HAS_HCD=y\r
++ CONFIG_USB_ARCH_HAS_OHCI=y\r
++ # CONFIG_USB_ARCH_HAS_EHCI is not set\r
++ # CONFIG_USB is not set\r
++ \r
++ #\r
++ # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'\r
++ #\r
++ \r
++ #\r
++ # USB Gadget Support\r
++ #\r
++ # CONFIG_USB_GADGET is not set\r
++ \r
++ #\r
++ # MMC/SD Card support\r
++ #\r
++ # CONFIG_MMC is not set\r
++ \r
++ #\r
++ # Real Time Clock\r
++ #\r
++ CONFIG_RTC_LIB=y\r
++ # CONFIG_RTC_CLASS is not set\r
++ \r
++ #\r
++ # File systems\r
++ #\r
++ CONFIG_EXT2_FS=y\r
++ # CONFIG_EXT2_FS_XATTR is not set\r
++ # CONFIG_EXT2_FS_XIP is not set\r
++ # CONFIG_EXT3_FS is not set\r
++ # CONFIG_REISERFS_FS is not set\r
++ # CONFIG_JFS_FS is not set\r
++ # CONFIG_FS_POSIX_ACL is not set\r
++ # CONFIG_XFS_FS is not set\r
++ # CONFIG_OCFS2_FS is not set\r
++ # CONFIG_MINIX_FS is not set\r
++ # CONFIG_ROMFS_FS is not set\r
++ CONFIG_INOTIFY=y\r
++ # CONFIG_QUOTA is not set\r
++ CONFIG_DNOTIFY=y\r
++ # CONFIG_AUTOFS_FS is not set\r
++ # CONFIG_AUTOFS4_FS is not set\r
++ # CONFIG_FUSE_FS is not set\r
++ \r
++ #\r
++ # CD-ROM/DVD Filesystems\r
++ #\r
++ # CONFIG_ISO9660_FS is not set\r
++ # CONFIG_UDF_FS is not set\r
++ \r
++ #\r
++ # DOS/FAT/NT Filesystems\r
++ #\r
++ CONFIG_FAT_FS=y\r
++ CONFIG_MSDOS_FS=y\r
++ CONFIG_VFAT_FS=y\r
++ CONFIG_FAT_DEFAULT_CODEPAGE=437\r
++ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"\r
++ # CONFIG_NTFS_FS is not set\r
++ \r
++ #\r
++ # Pseudo filesystems\r
++ #\r
++ CONFIG_PROC_FS=y\r
++ CONFIG_SYSFS=y\r
++ # CONFIG_TMPFS is not set\r
++ # CONFIG_HUGETLB_PAGE is not set\r
++ CONFIG_RAMFS=y\r
++ # CONFIG_CONFIGFS_FS is not set\r
++ \r
++ #\r
++ # Miscellaneous filesystems\r
++ #\r
++ # CONFIG_ADFS_FS is not set\r
++ # CONFIG_AFFS_FS is not set\r
++ # CONFIG_HFS_FS is not set\r
++ # CONFIG_HFSPLUS_FS is not set\r
++ # CONFIG_BEFS_FS is not set\r
++ # CONFIG_BFS_FS is not set\r
++ # CONFIG_EFS_FS is not set\r
++ # CONFIG_JFFS_FS is not set\r
++ CONFIG_JFFS2_FS=y\r
++ CONFIG_JFFS2_FS_DEBUG=0\r
++ CONFIG_JFFS2_FS_WRITEBUFFER=y\r
++ # CONFIG_JFFS2_SUMMARY is not set\r
++ # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set\r
++ CONFIG_JFFS2_ZLIB=y\r
++ CONFIG_JFFS2_RTIME=y\r
++ # CONFIG_JFFS2_RUBIN is not set\r
++ # CONFIG_CRAMFS is not set\r
++ # CONFIG_VXFS_FS is not set\r
++ # CONFIG_HPFS_FS is not set\r
++ # CONFIG_QNX4FS_FS is not set\r
++ # CONFIG_SYSV_FS is not set\r
++ # CONFIG_UFS_FS is not set\r
++ \r
++ #\r
++ # Network File Systems\r
++ #\r
++ CONFIG_NFS_FS=y\r
++ CONFIG_NFS_V3=y\r
++ # CONFIG_NFS_V3_ACL is not set\r
++ # CONFIG_NFS_V4 is not set\r
++ # CONFIG_NFS_DIRECTIO is not set\r
++ # CONFIG_NFSD is not set\r
++ CONFIG_ROOT_NFS=y\r
++ CONFIG_LOCKD=y\r
++ CONFIG_LOCKD_V4=y\r
++ CONFIG_NFS_COMMON=y\r
++ CONFIG_SUNRPC=y\r
++ # CONFIG_RPCSEC_GSS_KRB5 is not set\r
++ # CONFIG_RPCSEC_GSS_SPKM3 is not set\r
++ # CONFIG_SMB_FS is not set\r
++ # CONFIG_CIFS is not set\r
++ # CONFIG_NCP_FS is not set\r
++ # CONFIG_CODA_FS is not set\r
++ # CONFIG_AFS_FS is not set\r
++ # CONFIG_9P_FS is not set\r
++ \r
++ #\r
++ # Partition Types\r
++ #\r
++ # CONFIG_PARTITION_ADVANCED is not set\r
++ CONFIG_MSDOS_PARTITION=y\r
++ \r
++ #\r
++ # Native Language Support\r
++ #\r
++ CONFIG_NLS=y\r
++ CONFIG_NLS_DEFAULT="iso8859-1"\r
++ CONFIG_NLS_CODEPAGE_437=y\r
++ # CONFIG_NLS_CODEPAGE_737 is not set\r
++ # CONFIG_NLS_CODEPAGE_775 is not set\r
++ # CONFIG_NLS_CODEPAGE_850 is not set\r
++ # CONFIG_NLS_CODEPAGE_852 is not set\r
++ # CONFIG_NLS_CODEPAGE_855 is not set\r
++ # CONFIG_NLS_CODEPAGE_857 is not set\r
++ # CONFIG_NLS_CODEPAGE_860 is not set\r
++ # CONFIG_NLS_CODEPAGE_861 is not set\r
++ # CONFIG_NLS_CODEPAGE_862 is not set\r
++ # CONFIG_NLS_CODEPAGE_863 is not set\r
++ # CONFIG_NLS_CODEPAGE_864 is not set\r
++ # CONFIG_NLS_CODEPAGE_865 is not set\r
++ # CONFIG_NLS_CODEPAGE_866 is not set\r
++ # CONFIG_NLS_CODEPAGE_869 is not set\r
++ # CONFIG_NLS_CODEPAGE_936 is not set\r
++ # CONFIG_NLS_CODEPAGE_950 is not set\r
++ # CONFIG_NLS_CODEPAGE_932 is not set\r
++ # CONFIG_NLS_CODEPAGE_949 is not set\r
++ # CONFIG_NLS_CODEPAGE_874 is not set\r
++ # CONFIG_NLS_ISO8859_8 is not set\r
++ # CONFIG_NLS_CODEPAGE_1250 is not set\r
++ # CONFIG_NLS_CODEPAGE_1251 is not set\r
++ # CONFIG_NLS_ASCII is not set\r
++ CONFIG_NLS_ISO8859_1=y\r
++ # CONFIG_NLS_ISO8859_2 is not set\r
++ # CONFIG_NLS_ISO8859_3 is not set\r
++ # CONFIG_NLS_ISO8859_4 is not set\r
++ # CONFIG_NLS_ISO8859_5 is not set\r
++ # CONFIG_NLS_ISO8859_6 is not set\r
++ # CONFIG_NLS_ISO8859_7 is not set\r
++ # CONFIG_NLS_ISO8859_9 is not set\r
++ # CONFIG_NLS_ISO8859_13 is not set\r
++ # CONFIG_NLS_ISO8859_14 is not set\r
++ # CONFIG_NLS_ISO8859_15 is not set\r
++ # CONFIG_NLS_KOI8_R is not set\r
++ # CONFIG_NLS_KOI8_U is not set\r
++ # CONFIG_NLS_UTF8 is not set\r
++ \r
++ #\r
++ # Profiling support\r
++ #\r
++ # CONFIG_PROFILING is not set\r
++ \r
++ #\r
++ # Kernel hacking\r
++ #\r
++ # CONFIG_PRINTK_TIME is not set\r
++ CONFIG_MAGIC_SYSRQ=y\r
++ CONFIG_DEBUG_KERNEL=y\r
++ CONFIG_LOG_BUF_SHIFT=14\r
++ CONFIG_DETECT_SOFTLOCKUP=y\r
++ # CONFIG_SCHEDSTATS is not set\r
++ # CONFIG_DEBUG_SLAB is not set\r
++ # CONFIG_DEBUG_MUTEXES is not set\r
++ # CONFIG_DEBUG_SPINLOCK is not set\r
++ # CONFIG_DEBUG_SPINLOCK_SLEEP is not set\r
++ # CONFIG_DEBUG_KOBJECT is not set\r
++ CONFIG_DEBUG_BUGVERBOSE=y\r
++ CONFIG_DEBUG_INFO=y\r
++ # CONFIG_DEBUG_FS is not set\r
++ # CONFIG_DEBUG_VM is not set\r
++ CONFIG_FRAME_POINTER=y\r
++ # CONFIG_UNWIND_INFO is not set\r
++ CONFIG_FORCED_INLINING=y\r
++ # CONFIG_RCU_TORTURE_TEST is not set\r
++ CONFIG_DEBUG_USER=y\r
++ # CONFIG_DEBUG_WAITQ is not set\r
++ CONFIG_DEBUG_ERRORS=y\r
++ CONFIG_DEBUG_LL=y\r
++ # CONFIG_DEBUG_ICEDCC is not set\r
++ \r
++ #\r
++ # Security options\r
++ #\r
++ # CONFIG_KEYS is not set\r
++ # CONFIG_SECURITY is not set\r
++ \r
++ #\r
++ # Cryptographic options\r
++ #\r
++ # CONFIG_CRYPTO is not set\r
++ \r
++ #\r
++ # Hardware crypto devices\r
++ #\r
++ \r
++ #\r
++ # Library routines\r
++ #\r
++ # CONFIG_CRC_CCITT is not set\r
++ # CONFIG_CRC16 is not set\r
++ CONFIG_CRC32=y\r
++ # CONFIG_LIBCRC32C is not set\r
++ CONFIG_ZLIB_INFLATE=y\r
++ CONFIG_ZLIB_DEFLATE=y\r
+Index: arch/arm/kernel/head.S\r
+===================================================================\r
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/arch/arm/kernel/head.S,v\r
+retrieving revision 1.1.1.1\r
+diff -c -3 -p -r1.1.1.1 head.S\r
+*** arch/arm/kernel/head.S     29 May 2006 00:53:47 -0000      1.1.1.1\r
+--- arch/arm/kernel/head.S     1 Jun 2006 17:37:16 -0000\r
+*************** ENTRY(stext)\r
+*** 74,79 ****\r
+--- 74,93 ----\r
+       msr     cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode\r
+                                               @ and irqs disabled\r
+       mrc     p15, 0, r9, c0, c0              @ get processor id\r
++ \r
++      /* LPD--\r
++       * This fakes out the Linux kernel into believing that it is\r
++       * running on a Mainstone hardware platform. The LogicLoader (LoLo)\r
++       * doesn't currently pass kernel parameters correctly for 2.6 ARM\r
++       * kernels. Therefore, we just hardcode it here.\r
++       *\r
++       * --LPD\r
++       */\r
++      mov     r0, #0\r
++      mov     r1, #0x300\r
++      orr     r1, r1, #0x0a0\r
++      orr     r1, r1, #0x002\r
++ \r
+       bl      __lookup_processor_type         @ r5=procinfo r9=cpuid\r
+       movs    r10, r5                         @ invalid processor (r5=0)?\r
+       beq     __error_p                       @ yes, error 'p'\r
+Index: arch/arm/mach-pxa/lpd270.c\r
+===================================================================\r
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/arch/arm/mach-pxa/lpd270.c,v\r
+retrieving revision 1.1.1.1\r
+retrieving revision 1.2\r
+diff -c -3 -p -r1.1.1.1 -r1.2\r
+*** arch/arm/mach-pxa/lpd270.c 29 May 2006 00:53:55 -0000      1.1.1.1\r
+--- arch/arm/mach-pxa/lpd270.c 1 Jun 2006 17:04:24 -0000       1.2\r
+*************** static void lpd270_backlight_power(int o\r
+*** 246,288 ****\r
+       }\r
+  }\r
+  \r
+! /* 5.7" TFT QVGA (LoLo display number 1) */\r
+! static struct pxafb_mach_info sharp_lq057q3dc02 __initdata = {\r
+!      .pixclock               = 100000,\r
+!      .xres                   = 240,\r
+!      .yres                   = 320,\r
+!      .bpp                    = 16,\r
+!      .hsync_len              = 64,\r
+!      .left_margin            = 0x27,\r
+!      .right_margin           = 0x09,\r
+!      .vsync_len              = 0x04,\r
+!      .upper_margin           = 0x08,\r
+!      .lower_margin           = 0x14,\r
+!      .sync                   = 0,\r
+!      .lccr0                  = 0x07800080,\r
+!      .lccr3                  = 0x04400007,\r
+!      .pxafb_backlight_power  = lpd270_backlight_power,\r
+! };\r
+! \r
+  /* 6.4" TFT VGA (LoLo display number 5) */\r
+  static struct pxafb_mach_info sharp_lq64d343 __initdata = {\r
+       .pixclock               = 20000,\r
+       .xres                   = 640,\r
+       .yres                   = 480,\r
+       .bpp                    = 16,\r
+!      .hsync_len              = 49,\r
+!      .left_margin            = 0x89,\r
+!      .right_margin           = 0x19,\r
+!      .vsync_len              = 18,\r
+       .upper_margin           = 0x22,\r
+       .lower_margin           = 0,\r
+!      .sync                   = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,\r
+!      .lccr0                  = 0x07800080,\r
+       .lccr3                  = 0x04400001,\r
+       .pxafb_backlight_power  = lpd270_backlight_power,\r
+  };\r
+  \r
+! /* 3.5" TFT QVGA (LoLo display number 8) */\r
+  static struct pxafb_mach_info sharp_lq035q7db02_20 __initdata = {\r
+       .pixclock               = 100000,\r
+       .xres                   = 240,\r
+--- 246,273 ----\r
+       }\r
+  }\r
+  \r
+! #ifdef CONFIG_FB_PXA_LPD_LQ64D343\r
+  /* 6.4" TFT VGA (LoLo display number 5) */\r
+  static struct pxafb_mach_info sharp_lq64d343 __initdata = {\r
+       .pixclock               = 20000,\r
+       .xres                   = 640,\r
+       .yres                   = 480,\r
+       .bpp                    = 16,\r
+!      .hsync_len              = 64,\r
+!      .left_margin            = 0x88,\r
+!      .right_margin           = 0x18,\r
+!      .vsync_len              = 64,\r
+       .upper_margin           = 0x22,\r
+       .lower_margin           = 0,\r
+!      .sync                   = 0,\r
+!      .lccr0                  = 0x078000f9,\r
+       .lccr3                  = 0x04400001,\r
+       .pxafb_backlight_power  = lpd270_backlight_power,\r
+  };\r
++ #endif\r
+  \r
+! #ifdef CONFIG_FB_PXA_LPD_LQ035Q7DB02\r
+! /* 3.5" TFT QVGA (LoLo display number 8) */ \r
+  static struct pxafb_mach_info sharp_lq035q7db02_20 __initdata = {\r
+       .pixclock               = 100000,\r
+       .xres                   = 240,\r
+*************** static struct pxafb_mach_info sharp_lq03\r
+*** 299,304 ****\r
+--- 284,330 ----\r
+       .lccr3                  = 0x04400007,\r
+       .pxafb_backlight_power  = lpd270_backlight_power,\r
+  };\r
++ #endif\r
++ \r
++ #ifdef CONFIG_FB_PXA_LPD_LQ057Q3DC02\r
++ /* 5.7" TFT QVGA (LoLo display number 1) */ \r
++ static struct pxafb_mach_info sharp_lq057q3dc02 __initdata = {\r
++      .pixclock               = 100000,\r
++      .xres                   = 240,\r
++      .yres                   = 320,\r
++      .bpp                    = 16,\r
++      .hsync_len              = 64,\r
++      .left_margin            = 0x27,\r
++      .right_margin           = 0x09,\r
++      .vsync_len              = 0x04,\r
++      .upper_margin           = 0x08,\r
++      .lower_margin           = 0x14,\r
++      .sync                   = 0,\r
++      .lccr0                  = 0x07800080,\r
++      .lccr3                  = 0x04400007,\r
++      .pxafb_backlight_power  = lpd270_backlight_power,\r
++ };\r
++ #endif\r
++ \r
++ #ifdef CONFIG_FB_PXA_LPD_LQ10D368\r
++ /* 10.4" TFT QVGA (LoLo display number 7) */ \r
++ static struct pxafb_mach_info sharp_lq10d368 __initdata = {\r
++      .pixclock               = 25000,\r
++      .xres                   = 640,\r
++      .yres                   = 480,\r
++      .bpp                    = 16,\r
++      .hsync_len              = 0x31,\r
++      .left_margin            = 0x89,\r
++      .right_margin           = 0x19,\r
++      .vsync_len              = 0x12,\r
++      .upper_margin           = 0x22,\r
++      .lower_margin           = 0x00,\r
++      .sync                   = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,\r
++      .lccr0                  = 0x078000f8,\r
++      .lccr3                  = 0x04400001,\r
++      .pxafb_backlight_power  = lpd270_backlight_power,\r
++ };\r
++ #endif\r
+  \r
+  static struct platform_device *platform_devices[] __initdata = {\r
+       &smc91x_device,\r
+*************** static void __init lpd270_init(void)\r
+*** 345,353 ****\r
+  \r
+       platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));\r
+  \r
+!      // set_pxa_fb_info(&sharp_lq057q3dc02);\r
+       set_pxa_fb_info(&sharp_lq64d343);\r
+!      // set_pxa_fb_info(&sharp_lq035q7db02_20);\r
+  \r
+       pxa_set_ohci_info(&lpd270_ohci_platform_data);\r
+  }\r
+--- 371,387 ----\r
+  \r
+       platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));\r
+  \r
+! #ifdef CONFIG_FB_PXA_LPD_LQ64D343\r
+       set_pxa_fb_info(&sharp_lq64d343);\r
+! #elif defined(CONFIG_FB_PXA_LPD_LQ045Q7DB02)\r
+!      set_pxa_fb_info(&sharp_lq035q7db02_20);\r
+! #elif defined(CONFIG_FB_PXA_LPD_LQ057Q3DC02)\r
+!      set_pxa_fb_info(&sharp_lq057q3dc02);\r
+! #elif defined(CONFIG_FB_PXA_LPD_LQ10D368)\r
+!      set_pxa_fb_info(&sharp_lq10d368);\r
+! #elif defined(CONFIG_FB_PXA)\r
+!      printk("No Logic LCD panel selected!");\r
+! #endif\r
+  \r
+       pxa_set_ohci_info(&lpd270_ohci_platform_data);\r
+  }\r
+Index: drivers/block/Kconfig\r
+===================================================================\r
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/block/Kconfig,v\r
+retrieving revision 1.1.1.1\r
+retrieving revision 1.2\r
+diff -c -3 -p -r1.1.1.1 -r1.2\r
+*** drivers/block/Kconfig      29 May 2006 00:55:20 -0000      1.1.1.1\r
+--- drivers/block/Kconfig      1 Jun 2006 17:05:41 -0000       1.2\r
+***************\r
+*** 4,9 ****\r
+--- 4,16 ----\r
+  \r
+  menu "Block devices"\r
+  \r
++ config BLK_DEV_LOGICPD_CF\r
++        bool "LogicPD memory-mapped CompactFlash card support"\r
++        depends on MACH_LOGICPD_PXA270\r
++        ---help---\r
++          If you want to use the memory-mapped comapct flash card on\r
++          the LogicPD SDK, say Y.\r
++ \r
+  config BLK_DEV_FD\r
+       tristate "Normal floppy disk support"\r
+       depends on ARCH_MAY_HAVE_PC_FDC\r
+Index: drivers/block/Makefile\r
+===================================================================\r
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/block/Makefile,v\r
+retrieving revision 1.1.1.1\r
+retrieving revision 1.2\r
+diff -c -3 -p -r1.1.1.1 -r1.2\r
+*** drivers/block/Makefile     29 May 2006 00:55:20 -0000      1.1.1.1\r
+--- drivers/block/Makefile     1 Jun 2006 17:05:59 -0000       1.2\r
+***************\r
+*** 5,10 ****\r
+--- 5,12 ----\r
+  # Rewritten to use lists instead of if-statements.\r
+  # \r
+  \r
++ obj-$(CONFIG_BLK_DEV_LOGICPD_CF)+= lpd270-cf.o\r
++ \r
+  obj-$(CONFIG_MAC_FLOPPY)     += swim3.o\r
+  obj-$(CONFIG_BLK_DEV_FD)     += floppy.o\r
+  obj-$(CONFIG_AMIGA_FLOPPY)   += amiflop.o\r
+Index: drivers/block/lpd270-cf.c\r
+===================================================================\r
+RCS file: drivers/block/lpd270-cf.c\r
+diff -N drivers/block/lpd270-cf.c\r
+*** /dev/null  1 Jan 1970 00:00:00 -0000\r
+--- drivers/block/lpd270-cf.c  1 Jun 2006 16:23:35 -0000       1.1\r
+***************\r
+*** 0 ****\r
+--- 1,675 ----\r
++ /*\r
++  * Support for LogicPD SDK Memory-mapped CompactFlash interface\r
++  *\r
++  * Copyright 2006 Logic Product Development <peterb@logicpd.com>\r
++  *\r
++  * This file is subject to the terms and conditions of the GNU General Public\r
++  * License.  See the file COPYING in the main directory of this archive\r
++  * for more details.\r
++  */\r
++ \r
++ \r
++ /* Uncomment the following if you want verbose error reports. */\r
++ /* #define VERBOSE_ERRORS */\r
++ \r
++ #include <linux/blkdev.h>\r
++ #include <linux/errno.h>\r
++ #include <linux/signal.h>\r
++ #include <linux/interrupt.h>\r
++ #include <linux/timer.h>\r
++ #include <linux/fs.h>\r
++ #include <linux/kernel.h>\r
++ #include <linux/genhd.h>\r
++ #include <linux/slab.h>\r
++ #include <linux/string.h>\r
++ #include <linux/ioport.h>\r
++ #include <linux/mc146818rtc.h> /* CMOS defines */\r
++ #include <linux/init.h>\r
++ #include <linux/blkpg.h>\r
++ #include <linux/hdreg.h>\r
++ \r
++ #define REALLY_SLOW_IO\r
++ #include <asm/system.h>\r
++ #include <asm/io.h>\r
++ #include <asm/uaccess.h>\r
++ #include <asm/delay.h>\r
++ \r
++ #ifdef __arm__\r
++ #undef  HD_IRQ\r
++ #endif\r
++ #include <asm/irq.h>\r
++ #ifdef __arm__\r
++ #define HD_IRQ IRQ_HARDDISK\r
++ #endif\r
++ \r
++ #define DEBUG\r
++ \r
++ /* Hd controller regster ports */\r
++ \r
++ #define HD_DATA              0x1f0           /* _CTL when writing */\r
++ #define HD_ERROR     0x1f1           /* see err-bits */\r
++ #define HD_NSECTOR   0x1f2           /* nr of sectors to read/write */\r
++ #define HD_SECTOR    0x1f3           /* starting sector */\r
++ #define HD_LCYL              0x1f4           /* starting cylinder */\r
++ #define HD_HCYL              0x1f5           /* high byte of starting cyl */\r
++ #define HD_CURENT    0x1f6           /* 101dhhhh , d=drive, hhhh=head */\r
++ #define HD_STATUS    0x1f7           /* see status-bits */\r
++ #define HD_FEATURE   HD_ERROR        /* same io address, read=error, write=feature */\r
++ #define HD_PRECOMP   HD_FEATURE      /* obsolete use of this port - predates IDE */\r
++ #define HD_COMMAND   HD_STATUS       /* same io address, read=status, write=cmd */\r
++ \r
++ #define HD_CMD               0x3f6           /* used for resets */\r
++ #define HD_ALTSTATUS 0x3f6           /* same as HD_STATUS but doesn't clear irq */\r
++ \r
++ /* Bits of HD_STATUS */\r
++ #define ERR_STAT             0x01\r
++ #define INDEX_STAT           0x02\r
++ #define ECC_STAT             0x04    /* Corrected error */\r
++ #define DRQ_STAT             0x08\r
++ #define SEEK_STAT            0x10\r
++ #define SERVICE_STAT         SEEK_STAT\r
++ #define WRERR_STAT           0x20\r
++ #define READY_STAT           0x40\r
++ #define BUSY_STAT            0x80\r
++ \r
++ /* Bits for HD_ERROR */\r
++ #define MARK_ERR             0x01    /* Bad address mark */\r
++ #define TRK0_ERR             0x02    /* couldn't find track 0 */\r
++ #define ABRT_ERR             0x04    /* Command aborted */\r
++ #define MCR_ERR                      0x08    /* media change request */\r
++ #define ID_ERR                       0x10    /* ID field not found */\r
++ #define MC_ERR                       0x20    /* media changed */\r
++ #define ECC_ERR                      0x40    /* Uncorrectable ECC error */\r
++ #define BBD_ERR                      0x80    /* pre-EIDE meaning:  block marked bad */\r
++ #define ICRC_ERR             0x80    /* new meaning:  CRC error during transfer */\r
++ \r
++ static DEFINE_SPINLOCK(hd_lock);\r
++ static struct request_queue *hd_queue;\r
++ \r
++ #define MAJOR_NR HD_MAJOR\r
++ #define QUEUE (hd_queue)\r
++ #define CURRENT elv_next_request(hd_queue)\r
++ \r
++ #define TIMEOUT_VALUE        (6*HZ)\r
++ #define      HD_DELAY        0\r
++ \r
++ #define MAX_ERRORS     16    /* Max read/write errors/sector */\r
++ #define RESET_FREQ      8    /* Reset controller every 8th retry */\r
++ #define RECAL_FREQ      4    /* Recalibrate every 4th retry */\r
++ #define MAX_HD               2\r
++ \r
++ #define STAT_OK              (READY_STAT|SEEK_STAT)\r
++ #define OK_STATUS(s) (((s)&(STAT_OK|(BUSY_STAT|WRERR_STAT|ERR_STAT)))==STAT_OK)\r
++ \r
++ static int driveno = 0;\r
++ static int debug = 0;\r
++ \r
++ // Start of CF registers\r
++ #define CPLD_ATA_REG_BASE 0x14001800\r
++ static unsigned char *reg_base;\r
++ \r
++ static inline unsigned int read_reg(unsigned char *base, unsigned int reg)\r
++ {\r
++   volatile unsigned short val;\r
++ \r
++   if (reg & 1)\r
++      val = *((volatile unsigned short *)(base + reg - 1)) >> 8;\r
++   else\r
++      val = *((volatile unsigned short *)(base + reg));\r
++ \r
++   if (debug)\r
++      printk("%s: %02x %04x \n", __FUNCTION__, reg, val);\r
++ \r
++   return val;\r
++ }\r
++ \r
++ static inline void write_reg(unsigned char *base, unsigned int reg, unsigned int val)\r
++ {\r
++   if (debug)\r
++      printk("%s: %02x %04x\n", __FUNCTION__, reg, val);\r
++   if (reg & 1)\r
++      *((volatile unsigned short *)(base + reg - 1)) = (val << 8);\r
++   else\r
++      *((volatile unsigned short *)(base + reg)) = val;\r
++ }\r
++ \r
++ #define CB_DATA              0x08\r
++ #define CB_ERR               0x0d\r
++ #define CB_SC_SN     0x02\r
++ #define CB_CYL               0x04\r
++ #define CB_STAT              0x07\r
++ #define CB_DH_CMD    0x06\r
++ #define CB_ASTAT     0x0e\r
++ #define CB_DC                0x0e\r
++ #define CB_DA                0x0f\r
++ \r
++ #define CB_STAT_BSY 0x80\r
++ #define CB_STAT_DRQ 0x08\r
++ #define CB_STAT_SEEK 0x10\r
++ #define CB_STAT_DF 0x20\r
++ #define CB_STAT_READY 0x40\r
++ #define CB_STAT_ERR 0x01\r
++ #define CB_DC_HD15 0x08\r
++ #define CB_DC_NIEN 0x02\r
++ \r
++ #define CMD_IDENTIFY_DEVICE 0xec\r
++ #define CMD_READ_SECTORS 0x20\r
++ #define CMD_WRITE_SECTORS 0x30\r
++ \r
++ #define TIMEOUT 0x800000\r
++ \r
++ int cfide_card_present(void)\r
++ {\r
++   unsigned char data, data1, data2;\r
++ \r
++   /* Flip Sector Count */\r
++   data = read_reg(reg_base, CB_SC_SN);\r
++   data1 = (~data) & 0xff;\r
++   write_reg(reg_base, CB_SC_SN, data1);\r
++ \r
++   /* write to the data register to waggle the bus */\r
++   write_reg(reg_base, CB_DATA, data);\r
++ \r
++   /* Read back the sector count and if it matches what we put there\r
++       then the CF is present */\r
++   data2 = read_reg(reg_base, CB_SC_SN);\r
++   if (data2 == data1)\r
++      return 1;\r
++   else {\r
++      printk("data %02x data1 %02x data2 %02x\n", data, data1, data2);\r
++      return 0;\r
++   }\r
++ }\r
++ \r
++ /*\r
++  *  This struct defines the HD's and their types.\r
++  */\r
++ struct hd_i_struct {\r
++      unsigned int head,sect,cyl,wpcom,lzone,ctl;\r
++      int unit;\r
++      int recalibrate;\r
++      int special_op;\r
++ };\r
++      \r
++ #ifdef HD_TYPE\r
++ static struct hd_i_struct hd_info[] = { HD_TYPE };\r
++ static int NR_HD = ((sizeof (hd_info))/(sizeof (struct hd_i_struct)));\r
++ #else\r
++ static struct hd_i_struct hd_info[MAX_HD];\r
++ static int NR_HD;\r
++ #endif\r
++ \r
++ static struct gendisk *hd_gendisk[MAX_HD];\r
++ \r
++ \r
++ \r
++ #if (HD_DELAY > 0)\r
++ \r
++ #include <asm/i8253.h>\r
++ \r
++ unsigned long last_req;\r
++ \r
++ unsigned long read_timer(void)\r
++ {\r
++      unsigned long t, flags;\r
++      int i;\r
++ \r
++      spin_lock_irqsave(&i8253_lock, flags);\r
++      t = jiffies * 11932;\r
++      outb_p(0, 0x43);\r
++      i = inb_p(0x40);\r
++      i |= inb(0x40) << 8;\r
++      spin_unlock_irqrestore(&i8253_lock, flags);\r
++      return(t - i);\r
++ }\r
++ #endif\r
++ \r
++ static void __init hd_setup(char *str, int *ints)\r
++ {\r
++      int hdind = 0;\r
++ \r
++      if (ints[0] != 3)\r
++              return;\r
++      if (hd_info[0].head != 0)\r
++              hdind=1;\r
++      hd_info[hdind].head = ints[2];\r
++      hd_info[hdind].sect = ints[3];\r
++      hd_info[hdind].cyl = ints[1];\r
++      hd_info[hdind].wpcom = 0;\r
++      hd_info[hdind].lzone = ints[1];\r
++      hd_info[hdind].ctl = (ints[2] > 8 ? 8 : 0);\r
++      NR_HD = hdind+1;\r
++ }\r
++ \r
++ \r
++ \r
++ void cfide_wait_fin(void)\r
++ {\r
++   unsigned long timer;\r
++ \r
++   // printk("%s:%d\n", __FUNCTION__, __LINE__);\r
++ \r
++   udelay(500);  // wait 500us\r
++ \r
++   for (timer = 0;\r
++         timer < TIMEOUT && (read_reg(reg_base, CB_STAT) & CB_STAT_BSY); ++timer)\r
++      yield();\r
++ \r
++   if (timer == TIMEOUT)\r
++      printk("%s:%d\n", __FUNCTION__, __LINE__);\r
++ }\r
++ \r
++ void cfide_wait_drq(void)\r
++ {\r
++   unsigned long timer;\r
++ \r
++   for (timer = 0;\r
++         timer < TIMEOUT && !(read_reg(reg_base, CB_STAT) & CB_STAT_DRQ); ++timer)\r
++      yield();\r
++ \r
++   if (timer == TIMEOUT)\r
++      printk("%s:%d\n", __FUNCTION__, __LINE__);\r
++ }\r
++ \r
++ static union {\r
++   struct hd_driveid id;\r
++   short sh[512/2];\r
++ } info_buf;\r
++ \r
++ \r
++ /* Read cnt sectors from the flash, starting at lba, storing the data\r
++    at dest */\r
++ static int cfide_read_sectors(uint8_t *dest, uint32_t lba, uint32_t cnt)\r
++ {\r
++   uint8_t sect, head, devHead, status, devCtrl;\r
++   uint16_t cyl;\r
++   uint32_t orig_lba = lba;\r
++   uint32_t i,j;\r
++   uint16_t data;\r
++ \r
++   // printk("%s: dest %p lba %u cnt %u\n", __FUNCTION__, dest, lba, cnt);\r
++ \r
++   if (lba + cnt > info_buf.id.lba_capacity) {\r
++      printk("%s: %u+%u is larger than %u\n", __FUNCTION__, lba, cnt, info_buf.id.lba_capacity);\r
++      return -EINVAL;\r
++   }\r
++ \r
++   if (cnt > 255) {\r
++      printk("%s: cnt %u is too large\n", __FUNCTION__, cnt);\r
++      return -EINVAL;\r
++   }\r
++ \r
++ \r
++   /* translate from LBA */\r
++   sect = lba & 0xff;\r
++   lba >>= 8;\r
++   cyl = lba & 0xffff;\r
++   lba >>= 16;\r
++   head = (lba & 0x0f) | 0x40;\r
++ \r
++   devCtrl = CB_DC_HD15 | CB_DC_NIEN;\r
++   devHead = driveno | head;\r
++ \r
++   write_reg(reg_base, CB_DC, devCtrl);\r
++   write_reg(reg_base, CB_SC_SN, ((uint16_t)cnt & 0xff) | ((uint16_t)sect << 8));\r
++   write_reg(reg_base, CB_CYL, cyl);\r
++ \r
++   write_reg(reg_base, CB_DH_CMD, devHead | (CMD_READ_SECTORS << 8));\r
++ \r
++   for (j=0; j<cnt; ++j) {\r
++      udelay(1);  // spin for a moment to let the controller raise BSY\r
++ \r
++      cfide_wait_fin();\r
++      cfide_wait_drq();\r
++      for (i=0; i<256; ++i) {\r
++        data = read_reg(reg_base, CB_DATA);\r
++ #if 0\r
++        *dest++ = data>>8;\r
++        *dest++ = data;\r
++ #else\r
++        *dest++ = data;\r
++        *dest++ = data>>8;\r
++ #endif\r
++      }\r
++ \r
++ \r
++      cfide_wait_fin();\r
++ \r
++      status = read_reg(reg_base, CB_STAT);\r
++      if (status & (CB_STAT_DF|CB_STAT_ERR)) {\r
++        printk("%s: error at block %d status %#x\n", __FUNCTION__, orig_lba+j, status);\r
++        break;\r
++      }\r
++ \r
++   }\r
++ \r
++   return 0;\r
++ }\r
++ \r
++ /* Write cnt sectors to the flash, starting at lba, reading the data\r
++    from src */\r
++ static int cfide_write_sectors(uint8_t *src, uint32_t lba, uint32_t cnt)\r
++ {\r
++   uint8_t sect, head, devHead, status, devCtrl;\r
++   uint16_t cyl;\r
++   uint32_t orig_lba = lba;\r
++   uint32_t i,j;\r
++   uint16_t data;\r
++ \r
++   if (lba + cnt > info_buf.id.lba_capacity) {\r
++      printk("%s: %u+%u is larger than %u\n", __FUNCTION__, lba, cnt, info_buf.id.lba_capacity);\r
++      return -EINVAL;\r
++   }\r
++ \r
++   if (cnt > 255) {\r
++      printk("%s: cnt %u is too large\n", __FUNCTION__, cnt);\r
++      return -EINVAL;\r
++   }\r
++ \r
++   /* translate from LBA */\r
++   sect = lba & 0xff;\r
++   lba >>= 8;\r
++   cyl = lba & 0xffff;\r
++   lba >>= 16;\r
++   head = (lba & 0x0f) | 0x40;\r
++ \r
++   devCtrl = CB_DC_HD15 | CB_DC_NIEN;\r
++   devHead = driveno | head;\r
++ \r
++   write_reg(reg_base, CB_DC, devCtrl);\r
++   write_reg(reg_base, CB_SC_SN, ((uint16_t)cnt & 0xff) | ((uint16_t)sect << 8));\r
++   write_reg(reg_base, CB_CYL, cyl);\r
++ \r
++   write_reg(reg_base, CB_DH_CMD, devHead | (CMD_WRITE_SECTORS << 8));\r
++ \r
++   for (j=0; j<cnt; ++j) {\r
++      udelay(1);  // spin for a moment to let the controller raise BSY\r
++ \r
++      cfide_wait_fin();\r
++ \r
++      cfide_wait_drq();\r
++ \r
++      for (i=0; i<256; ++i) {\r
++ #if 0\r
++        data = (*src++ << 8);\r
++        data |= *src++;\r
++ #else\r
++        data = *src++;\r
++        data |= (*src++ << 8);\r
++ #endif\r
++        write_reg(reg_base, CB_DATA, data);\r
++      }\r
++      \r
++      cfide_wait_fin();\r
++ \r
++      status = read_reg(reg_base, CB_STAT);\r
++      if (status & (CB_STAT_DF|CB_STAT_ERR)) {\r
++        printk("%s: error at block %d status %#x\n", __FUNCTION__, orig_lba+j, status);\r
++        break;\r
++      }\r
++ \r
++   }\r
++   return 0;\r
++ }\r
++ \r
++ \r
++ static void cfide_transfer(unsigned long sector,\r
++         unsigned long nsect, char *buffer, int write)\r
++ {\r
++   int ret;\r
++     if (write)\r
++        ret = cfide_write_sectors(buffer, sector, nsect);\r
++      else\r
++        ret = cfide_read_sectors(buffer, sector, nsect);\r
++      if (ret)\r
++        printk("%s:%d\n", __FUNCTION__, __LINE__);\r
++        \r
++ }\r
++ \r
++ \r
++ static void do_hd_request (request_queue_t * q)\r
++ {\r
++   struct request *req;\r
++ \r
++   // printk("%s:%d q %p\n", __FUNCTION__, __LINE__, q);\r
++ \r
++   while ((req = elv_next_request(q)) != NULL) {\r
++     if (blk_fs_request(req)) {\r
++        cfide_transfer(req->sector, req->current_nr_sectors,\r
++                                       req->buffer, rq_data_dir(req));\r
++        end_request(req, 1);\r
++      } else {\r
++        printk (KERN_NOTICE "Skip non-fs request\n");\r
++        end_request(req, 0);\r
++        continue;\r
++      }\r
++   }\r
++ }\r
++ \r
++ static int hd_getgeo(struct block_device *bdev, struct hd_geometry *geo)\r
++ {\r
++      struct hd_i_struct *disk = bdev->bd_disk->private_data;\r
++ \r
++      geo->heads = disk->head;\r
++      geo->sectors = disk->sect;\r
++      geo->cylinders = disk->cyl;\r
++      return 0;\r
++ }\r
++ \r
++ \r
++ static struct block_device_operations hd_fops = {\r
++      .getgeo =       hd_getgeo,\r
++ };\r
++ \r
++ void cfide_fetch_info(void)\r
++ {\r
++   int i;\r
++ \r
++   // printk("%s:%d\n", __FUNCTION__, __LINE__);\r
++ \r
++   /* Select the drive and wait for it to finish */\r
++   driveno &= 1;\r
++   write_reg(reg_base, CB_DH_CMD, driveno);\r
++   cfide_wait_fin();\r
++ \r
++   // printk("%s:%d\n", __FUNCTION__, __LINE__);\r
++ \r
++   write_reg(reg_base, CB_DH_CMD, driveno | (CMD_IDENTIFY_DEVICE << 8));\r
++   cfide_wait_fin();\r
++ \r
++   // printk("%s:%d\n", __FUNCTION__, __LINE__);\r
++ \r
++ \r
++   cfide_wait_drq();\r
++ \r
++   // printk("%s:%d\n", __FUNCTION__, __LINE__);\r
++ \r
++   for (i=0; i<512; i+=2)\r
++      info_buf.sh[i/2] = read_reg(reg_base, CB_DATA);\r
++ \r
++   /* Fix lba_capcity */\r
++   info_buf.id.lba_capacity = (info_buf.id.lba_capacity>>16) | (info_buf.id.lba_capacity<<16);\r
++   // printk("%s:%d lba_capacity %#x\n", __FUNCTION__, __LINE__, info_buf.id.lba_capacity);\r
++ }\r
++ \r
++ /*\r
++  * This is the hard disk IRQ description. The SA_INTERRUPT in sa_flags\r
++  * means we run the IRQ-handler with interrupts disabled:  this is bad for\r
++  * interrupt latency, but anything else has led to problems on some\r
++  * machines.\r
++  *\r
++  * We enable interrupts in some of the routines after making sure it's\r
++  * safe.\r
++  */\r
++ \r
++ static int __init hd_init(void)\r
++ {\r
++      int drive;\r
++ \r
++      printk("%s:%d MAJOR_NR %d\n", __FUNCTION__, __LINE__, MAJOR_NR);\r
++ \r
++      if (register_blkdev(MAJOR_NR,"hd"))\r
++              return -1;\r
++ \r
++      reg_base = (unsigned char *) ioremap_nocache(CPLD_ATA_REG_BASE, 0x1000);\r
++      if (!reg_base) {\r
++        printk("%s:%d\n", __FUNCTION__, __LINE__);\r
++        return -ENOMEM;\r
++      }\r
++ \r
++      /* If no card present, return */\r
++      if (!cfide_card_present()) {\r
++        printk("No CompactFlash card detected\n");\r
++        iounmap(reg_base);\r
++        return 0;\r
++      }\r
++ \r
++      /* Fetchthe device info */\r
++      cfide_fetch_info();\r
++ \r
++      hd_queue = blk_init_queue(do_hd_request, &hd_lock);\r
++      printk("%s:%d hd_queue %p\n", __FUNCTION__, __LINE__, hd_queue);\r
++      if (!hd_queue) {\r
++              unregister_blkdev(MAJOR_NR,"hd");\r
++              return -ENOMEM;\r
++      }\r
++ \r
++ \r
++      blk_queue_max_sectors(hd_queue, 255);\r
++      blk_queue_hardsect_size(hd_queue, 512);\r
++ \r
++ #if 1\r
++      hd_info[0].cyl = info_buf.id.cyls;\r
++      hd_info[0].head = info_buf.id.heads;\r
++      hd_info[0].wpcom = 0;\r
++      hd_info[0].ctl = 0;\r
++      hd_info[0].lzone = 0;\r
++      hd_info[0].sect = info_buf.id.sectors;\r
++      NR_HD++;\r
++ \r
++      printk("%s:%d NR_HD %d\n", __FUNCTION__, __LINE__, NR_HD);\r
++ \r
++ #else\r
++ #ifdef __i386__\r
++      if (!NR_HD) {\r
++              extern struct drive_info drive_info;\r
++              unsigned char *BIOS = (unsigned char *) &drive_info;\r
++              unsigned long flags;\r
++              int cmos_disks;\r
++ \r
++              for (drive=0 ; drive<2 ; drive++) {\r
++                      hd_info[drive].cyl = *(unsigned short *) BIOS;\r
++                      hd_info[drive].head = *(2+BIOS);\r
++                      hd_info[drive].wpcom = *(unsigned short *) (5+BIOS);\r
++                      hd_info[drive].ctl = *(8+BIOS);\r
++                      hd_info[drive].lzone = *(unsigned short *) (12+BIOS);\r
++                      hd_info[drive].sect = *(14+BIOS);\r
++ #ifdef does_not_work_for_everybody_with_scsi_but_helps_ibm_vp\r
++                      if (hd_info[drive].cyl && NR_HD == drive)\r
++                              NR_HD++;\r
++ #endif\r
++                      BIOS += 16;\r
++              }\r
++ \r
++      /*\r
++              We query CMOS about hard disks : it could be that \r
++              we have a SCSI/ESDI/etc controller that is BIOS\r
++              compatible with ST-506, and thus showing up in our\r
++              BIOS table, but not register compatible, and therefore\r
++              not present in CMOS.\r
++ \r
++              Furthermore, we will assume that our ST-506 drives\r
++              <if any> are the primary drives in the system, and \r
++              the ones reflected as drive 1 or 2.\r
++ \r
++              The first drive is stored in the high nibble of CMOS\r
++              byte 0x12, the second in the low nibble.  This will be\r
++              either a 4 bit drive type or 0xf indicating use byte 0x19 \r
++              for an 8 bit type, drive 1, 0x1a for drive 2 in CMOS.\r
++ \r
++              Needless to say, a non-zero value means we have \r
++              an AT controller hard disk for that drive.\r
++ \r
++              Currently the rtc_lock is a bit academic since this\r
++              driver is non-modular, but someday... ?         Paul G.\r
++      */\r
++ \r
++              spin_lock_irqsave(&rtc_lock, flags);\r
++              cmos_disks = CMOS_READ(0x12);\r
++              spin_unlock_irqrestore(&rtc_lock, flags);\r
++ \r
++              if (cmos_disks & 0xf0) {\r
++                      if (cmos_disks & 0x0f)\r
++                              NR_HD = 2;\r
++                      else\r
++                              NR_HD = 1;\r
++              }\r
++      }\r
++ #endif /* __i386__ */\r
++ #ifdef __arm__\r
++      if (!NR_HD) {\r
++              /* We don't know anything about the drive.  This means\r
++               * that you *MUST* specify the drive parameters to the\r
++               * kernel yourself.\r
++               */\r
++              printk("hd: no drives specified - use hd=cyl,head,sectors"\r
++                      " on kernel command line\n");\r
++      }\r
++ #endif\r
++ #endif\r
++      if (!NR_HD)\r
++              goto out;\r
++ \r
++      for (drive=0 ; drive < NR_HD ; drive++) {\r
++              struct gendisk *disk = alloc_disk(64);\r
++              struct hd_i_struct *p = &hd_info[drive];\r
++              if (!disk)\r
++                      goto Enomem;\r
++              disk->major = MAJOR_NR;\r
++              disk->first_minor = drive << 6;\r
++              disk->fops = &hd_fops;\r
++              sprintf(disk->disk_name, "hd%c", 'a'+drive);\r
++              disk->private_data = p;\r
++              set_capacity(disk, p->head * p->sect * p->cyl);\r
++              disk->queue = hd_queue;\r
++              p->unit = drive;\r
++              hd_gendisk[drive] = disk;\r
++              printk ("%s: %luMB, CHS=%d/%d/%d\n",\r
++                      disk->disk_name, (unsigned long)get_capacity(disk)/2048,\r
++                      p->cyl, p->head, p->sect);\r
++      }\r
++ \r
++      /* Let them fly */\r
++      for(drive=0; drive < NR_HD; drive++)\r
++              add_disk(hd_gendisk[drive]);\r
++ \r
++      return 0;\r
++ \r
++ out:\r
++      unregister_blkdev(MAJOR_NR,"hd");\r
++      blk_cleanup_queue(hd_queue);\r
++      return -1;\r
++ Enomem:\r
++      while (drive--)\r
++              put_disk(hd_gendisk[drive]);\r
++      goto out;\r
++ }\r
++ \r
++ static int __init parse_hd_setup (char *line) {\r
++      int ints[6];\r
++ \r
++      (void) get_options(line, ARRAY_SIZE(ints), ints);\r
++      hd_setup(NULL, ints);\r
++ \r
++      return 1;\r
++ }\r
++ __setup("hd=", parse_hd_setup);\r
++ \r
++ module_init(hd_init);\r
++ \r
++ /*\r
++  * Local variables:\r
++  *  c-indent-level: 4\r
++  *  tab-width: 4\r
++  * End:\r
++  */\r
+Index: drivers/mtd/maps/Kconfig\r
+===================================================================\r
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/mtd/maps/Kconfig,v\r
+retrieving revision 1.1.1.1\r
+retrieving revision 1.2\r
+diff -c -3 -p -r1.1.1.1 -r1.2\r
+*** drivers/mtd/maps/Kconfig   29 May 2006 00:58:44 -0000      1.1.1.1\r
+--- drivers/mtd/maps/Kconfig   30 May 2006 13:04:33 -0000      1.2\r
+*************** config MTD_MAINSTONE\r
+*** 137,142 ****\r
+--- 137,149 ----\r
+         This provides a driver for the on-board flash of the Intel\r
+         'Mainstone PXA27x evaluation board.\r
+  \r
++ config MTD_LOGICPD_PXA270\r
++      tristate "CFI Flash device mapped on LogicPD PXA270 Card Engine"\r
++      depends on MACH_LOGICPD_PXA270 && MTD_CFI_INTELEXT && MTD_PARTITIONS\r
++      help\r
++        This provides a driver for the on-board flash of the LogicPD\r
++        PXA270 Card Engine.\r
++ \r
+  config MTD_OCTAGON\r
+       tristate "JEDEC Flash device mapped on Octagon 5066 SBC"\r
+       depends on X86 && MTD_JEDEC && MTD_COMPLEX_MAPPINGS\r
+Index: drivers/mtd/maps/Makefile\r
+===================================================================\r
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/mtd/maps/Makefile,v\r
+retrieving revision 1.1.1.1\r
+retrieving revision 1.2\r
+diff -c -3 -p -r1.1.1.1 -r1.2\r
+*** drivers/mtd/maps/Makefile  29 May 2006 00:58:44 -0000      1.1.1.1\r
+--- drivers/mtd/maps/Makefile  30 May 2006 13:04:33 -0000      1.2\r
+*************** obj-$(CONFIG_MTD_ICHXROM)      += ichxrom.o\r
+*** 22,27 ****\r
+--- 22,28 ----\r
+  obj-$(CONFIG_MTD_TSUNAMI)    += tsunami_flash.o\r
+  obj-$(CONFIG_MTD_LUBBOCK)    += lubbock-flash.o\r
+  obj-$(CONFIG_MTD_MAINSTONE)  += mainstone-flash.o\r
++ obj-$(CONFIG_MTD_LOGICPD_PXA270)+= lpd270-flash.o\r
+  obj-$(CONFIG_MTD_MBX860)     += mbx860.o\r
+  obj-$(CONFIG_MTD_CEIVA)              += ceiva.o\r
+  obj-$(CONFIG_MTD_OCTAGON)    += octagon-5066.o\r
+Index: drivers/mtd/maps/lpd270-flash.c\r
+===================================================================\r
+RCS file: drivers/mtd/maps/lpd270-flash.c\r
+diff -N drivers/mtd/maps/lpd270-flash.c\r
+*** /dev/null  1 Jan 1970 00:00:00 -0000\r
+--- drivers/mtd/maps/lpd270-flash.c    30 May 2006 13:03:55 -0000      1.1\r
+***************\r
+*** 0 ****\r
+--- 1,197 ----\r
++ /*\r
++  * $Id: lpd270-flash.c,v 1.1 2006/05/30 13:03:55 LOGIC+peterb Exp $\r
++  *\r
++  * Map driver for the Lpd270 developer platform.\r
++  *\r
++  * Author:   Nicolas Pitre\r
++  * Copyright:        (C) 2001 MontaVista Software Inc.\r
++  *\r
++  * This program is free software; you can redistribute it and/or modify\r
++  * it under the terms of the GNU General Public License version 2 as\r
++  * published by the Free Software Foundation.\r
++  */\r
++ \r
++ #include <linux/module.h>\r
++ #include <linux/types.h>\r
++ #include <linux/kernel.h>\r
++ #include <linux/init.h>\r
++ #include <linux/dma-mapping.h>\r
++ #include <linux/slab.h>\r
++ \r
++ #include <linux/mtd/mtd.h>\r
++ #include <linux/mtd/map.h>\r
++ #include <linux/mtd/partitions.h>\r
++ \r
++ #include <asm/io.h>\r
++ #include <asm/hardware.h>\r
++ #include <asm/arch/pxa-regs.h>\r
++ // #include <asm/arch/lpd270.h>\r
++ \r
++ \r
++ #define ROM_ADDR     0x00000000\r
++ #define FLASH_ADDR   0x04000000\r
++ \r
++ #define WINDOW_SIZE  0x04000000\r
++ \r
++ static void lpd270_map_inval_cache(struct map_info *map, unsigned long from,\r
++                                    ssize_t len)\r
++ {\r
++      consistent_sync((char *)map->cached + from, len, DMA_FROM_DEVICE);\r
++ }\r
++ \r
++ static struct map_info lpd270_maps[2] = { {\r
++      .size =         WINDOW_SIZE,\r
++      .phys =         PXA_CS0_PHYS,\r
++      .inval_cache =  lpd270_map_inval_cache,\r
++ }, {\r
++      .size =         WINDOW_SIZE,\r
++      .phys =         PXA_CS1_PHYS,\r
++      .inval_cache =  lpd270_map_inval_cache,\r
++ } };\r
++ \r
++ static struct mtd_partition lpd270_partitions[] = {\r
++      {\r
++              .name =         "Bootloader",\r
++              .size =         0x000C0000,\r
++              .offset =       0,\r
++              .mask_flags =   MTD_WRITEABLE  /* force read-only */\r
++      },{\r
++              .name =         "YAFFS",\r
++              .size =         0x00F40000,\r
++              .offset =       0x000C0000,\r
++      },{\r
++              .name =         "Filesystem",\r
++              .size =         MTDPART_SIZ_FULL,\r
++              .offset =       0x01000000\r
++      }\r
++ };\r
++ \r
++ static struct mtd_info *mymtds[2];\r
++ static struct mtd_partition *parsed_parts[2];\r
++ static int nr_parsed_parts[2];\r
++ \r
++ static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };\r
++ \r
++ static int __init init_lpd270(void)\r
++ {\r
++      int SW7 = 0;  /* FIXME: get from SCR (Mst doc section 3.2.1.1) */\r
++      int ret = 0, i;\r
++ \r
++      lpd270_maps[0].bankwidth = (BOOT_DEF & 1) ? 2 : 4;\r
++      lpd270_maps[1].bankwidth = 4;\r
++ \r
++      /* Compensate for SW7 which swaps the flash banks */\r
++      lpd270_maps[SW7].name = "processor flash";\r
++      lpd270_maps[SW7 ^ 1].name = "main board flash";\r
++ \r
++      printk(KERN_NOTICE "Lpd270 configured to boot from %s\n",\r
++             lpd270_maps[0].name);\r
++ \r
++      // Set VPP in CPLD to allow writes to the flash\r
++      {\r
++        unsigned short *p;\r
++ \r
++        p = ioremap(0x08000000, PAGE_SIZE);\r
++        if (!p) {\r
++          printk("%s:%d ioremap failed\n", __FUNCTION__, __LINE__);\r
++        } else {\r
++          printk("%s:%d CTRL REG %04x\n", __FUNCTION__, __LINE__, *p);\r
++          *p |= (1<<3); // FL_VPEN\r
++          iounmap(p);\r
++        }\r
++      }\r
++ \r
++      for (i = 0; i < 2; i++) {\r
++              lpd270_maps[i].virt = ioremap_nocache(lpd270_maps[i].phys,\r
++                                               WINDOW_SIZE);\r
++              if (!lpd270_maps[i].virt) {\r
++                      printk(KERN_WARNING "Failed to ioremap %s\n",\r
++                             lpd270_maps[i].name);\r
++                      if (!ret)\r
++                              ret = -ENOMEM;\r
++                      continue;\r
++              }\r
++ #if 0\r
++              lpd270_maps[i].cached =\r
++                      ioremap_cached(lpd270_maps[i].phys, WINDOW_SIZE);\r
++              if (!lpd270_maps[i].cached)\r
++                      printk(KERN_WARNING "Failed to ioremap cached %s\n",\r
++                             lpd270_maps[i].name);\r
++ #endif\r
++              simple_map_init(&lpd270_maps[i]);\r
++ \r
++              printk(KERN_NOTICE\r
++                     "Probing %s at physical address 0x%08lx"\r
++                     " (%d-bit bankwidth)\n",\r
++                     lpd270_maps[i].name, lpd270_maps[i].phys,\r
++                     lpd270_maps[i].bankwidth * 8);\r
++ \r
++              mymtds[i] = do_map_probe("cfi_probe", &lpd270_maps[i]);\r
++ \r
++              if (!mymtds[i]) {\r
++                      iounmap((void *)lpd270_maps[i].virt);\r
++                      if (lpd270_maps[i].cached)\r
++                              iounmap(lpd270_maps[i].cached);\r
++                      if (!ret)\r
++                              ret = -EIO;\r
++                      continue;\r
++              }\r
++              mymtds[i]->owner = THIS_MODULE;\r
++ \r
++              ret = parse_mtd_partitions(mymtds[i], probes,\r
++                                         &parsed_parts[i], 0);\r
++ \r
++              if (ret > 0)\r
++                      nr_parsed_parts[i] = ret;\r
++      }\r
++ \r
++      if (!mymtds[0] && !mymtds[1])\r
++              return ret;\r
++ \r
++      for (i = 0; i < 2; i++) {\r
++              if (!mymtds[i]) {\r
++                      printk(KERN_WARNING "%s is absent. Skipping\n",\r
++                             lpd270_maps[i].name);\r
++              } else if (nr_parsed_parts[i]) {\r
++                      add_mtd_partitions(mymtds[i], parsed_parts[i],\r
++                                         nr_parsed_parts[i]);\r
++              } else if (!i) {\r
++                      printk("Using static partitions on %s\n",\r
++                             lpd270_maps[i].name);\r
++                      add_mtd_partitions(mymtds[i], lpd270_partitions,\r
++                                         ARRAY_SIZE(lpd270_partitions));\r
++              } else {\r
++                      printk("Registering %s as whole device\n",\r
++                             lpd270_maps[i].name);\r
++                      add_mtd_device(mymtds[i]);\r
++              }\r
++      }\r
++      return 0;\r
++ }\r
++ \r
++ static void __exit cleanup_lpd270(void)\r
++ {\r
++      int i;\r
++      for (i = 0; i < 2; i++) {\r
++              if (!mymtds[i])\r
++                      continue;\r
++ \r
++              if (nr_parsed_parts[i] || !i)\r
++                      del_mtd_partitions(mymtds[i]);\r
++              else\r
++                      del_mtd_device(mymtds[i]);\r
++ \r
++              map_destroy(mymtds[i]);\r
++              iounmap((void *)lpd270_maps[i].virt);\r
++              if (lpd270_maps[i].cached)\r
++                      iounmap(lpd270_maps[i].cached);\r
++              kfree(parsed_parts[i]);\r
++      }\r
++ }\r
++ \r
++ module_init(init_lpd270);\r
++ module_exit(cleanup_lpd270);\r
++ \r
++ MODULE_LICENSE("GPL");\r
++ MODULE_AUTHOR("Nicolas Pitre <nico@cam.org>");\r
++ MODULE_DESCRIPTION("MTD map driver for Logic PXA270");\r
+Index: drivers/net/smc91x.h\r
+===================================================================\r
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/net/smc91x.h,v\r
+retrieving revision 1.1.1.1\r
+retrieving revision 1.2\r
+diff -c -3 -p -r1.1.1.1 -r1.2\r
+*** drivers/net/smc91x.h       29 May 2006 00:59:41 -0000      1.1.1.1\r
+--- drivers/net/smc91x.h       29 May 2006 17:42:44 -0000      1.2\r
+***************\r
+*** 129,134 ****\r
+--- 129,152 ----\r
+  #define SMC_insb(a, r, p, l) readsb((a) + (r), p, (l))\r
+  #define SMC_outsb(a, r, p, l)        writesb((a) + (r), p, (l))\r
+  \r
++ #elif        defined(CONFIG_MACH_LOGICPD_PXA270)\r
++ \r
++ #define SMC_CAN_USE_8BIT     0\r
++ #define SMC_CAN_USE_16BIT    1\r
++ #define SMC_CAN_USE_32BIT    0\r
++ #define SMC_IO_SHIFT         0\r
++ #define SMC_NOWAIT           1\r
++ #define SMC_USE_PXA_DMA              1\r
++ \r
++ // #define SMC_inb(a, r)             readb((a) + (r))\r
++ #define SMC_inw(a, r)                readw((a) + (r))\r
++ // #define SMC_inl(a, r)             readl((a) + (r))\r
++ // #define SMC_outb(v, a, r) writeb(v, (a) + (r))\r
++ #define SMC_outw(v, a, r)    writew(v, (a) + (r))\r
++ // #define SMC_outl(v, a, r) writel(v, (a) + (r))\r
++ #define SMC_insw(a, r, p, l) readsw((a) + (r), p, l)\r
++ #define SMC_outsw(a, r, p, l)        writesw((a) + (r), p, l)\r
++ \r
+  #elif        defined(CONFIG_ARCH_INNOKOM) || \\r
+       defined(CONFIG_MACH_MAINSTONE) || \\r
+       defined(CONFIG_ARCH_PXA_IDP) || \\r
+Index: drivers/video/Kconfig\r
+===================================================================\r
+RCS file: /cvs/eps/dev_eng/sw/products/Linux/PXAEngine/pxa/linux-2.6.17-rc5/drivers/video/Kconfig,v\r
+retrieving revision 1.1.1.1\r
+retrieving revision 1.2\r
+diff -c -3 -p -r1.1.1.1 -r1.2\r
+*** drivers/video/Kconfig      29 May 2006 01:04:29 -0000      1.1.1.1\r
+--- drivers/video/Kconfig      1 Jun 2006 17:06:34 -0000       1.2\r
+*************** config FB_PXA_PARAMETERS\r
+*** 1402,1407 ****\r
+--- 1402,1436 ----\r
+  \r
+         <file:Documentation/fb/pxafb.txt> describes the available parameters.\r
+  \r
++ choice\r
++      prompt "Select LogicPD LCD panel type"\r
++ \r
++ config FB_PXA_LPD_LQ64D343\r
++        bool "6.4\" TFT VGA 640x480"\r
++        depends on FB_PXA\r
++        ---help---\r
++          Sharp LQ64D343 LCD panel\r
++ \r
++ config FB_PXA_LPD_LQ035Q7DB02\r
++        bool "3.5\" TFT QVGA 240x320"\r
++        depends on FB_PXA\r
++        ---help---\r
++          Sharp LQ035Q7DB02 LCD panel\r
++ \r
++ config FB_PXA_LPD_LQ057Q3DC02\r
++        bool "5.7\" TFT QVGA 240x320"\r
++        depends on FB_PXA\r
++        ---help---\r
++          Sharp LQ057Q3DC02 LCD panel\r
++ \r
++ config FB_PXA_LPD_LQ10D368\r
++        bool "10.4\" TFT VGA 640x480"\r
++        depends on FB_PXA\r
++        ---help---\r
++          Sharp LQ10D368 LCD panel\r
++ \r
++ endchoice\r
++ \r
+  config FB_W100\r
+       tristate "W100 frame buffer support"\r
+       depends on FB && PXA_SHARPSL\r