--- /dev/null
+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