diff -Nur linux/arch/arm/def-configs/collie-jffs2 /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/arch/arm/def-configs/collie-jffs2
--- linux/arch/arm/def-configs/collie-jffs2 1970-01-01 07:00:00.000000000 +0700
+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/arch/arm/def-configs/collie-jffs2 2003-06-23 01:47:03.000000000 +0700
@@ -0,0 +1,917 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+# CONFIG_SMP is not set
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_ANAKIN is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Archimedes/A5000 Implementations (select only ONE)
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+
+#
+# Footbridge Implementations
+#
+# CONFIG_ARCH_CATS is not set
+# CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+# CONFIG_ARCH_EBSA285_HOST is not set
+# CONFIG_ARCH_NETWINDER is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CERF is not set
+CONFIG_SA1100_COLLIE=y
+CONFIG_LOCOMO=y
+# CONFIG_COLLIE_TS is not set
+# CONFIG_COLLIE_TR0 is not set
+# CONFIG_COLLIE_TR1 is not set
+# CONFIG_COLLIE_DEV is not set
+# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
+# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_PFS168 is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_SA1100_YOPY is not set
+# CONFIG_SA1100_USB is not set
+# CONFIG_SA1100_USB_NETLINK is not set
+# CONFIG_SA1100_USB_CHAR is not set
+
+#
+# LinkUp 7200/7205/7210 Implementations
+#
+# CONFIG_L7205SDB is not set
+# CONFIG_IRIS_16MB is not set
+# CONFIG_IRIS_32MB is not set
+# CONFIG_NO_FLASH_BOOT_PARAM is not set
+# CONFIG_IRIS is not set
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+
+#
+# Processor Type
+#
+# CONFIG_CPU_32v3 is not set
+CONFIG_CPU_32v4=y
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+# CONFIG_CPU_ARM720T is not set
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+CONFIG_CPU_SA1100=y
+CONFIG_DISCONTIGMEM=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+# CONFIG_CPU_FREQ is not set
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=y
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+# CONFIG_PCMCIA_CLPS6700 is not set
+CONFIG_PCMCIA_SA1100=y
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_XIP_ROM is not set
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_PM=y
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+CONFIG_APM_CPU_IDLE=y
+CONFIG_APM_DISPLAY_BLANK=y
+CONFIG_APM_RTC_IS_GMT=y
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="mem=20M root=/dev/mtdblock4"
+# CONFIG_PFS168_CMDLINE is not set
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_FREEPG_SIGNAL=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_BOOTLDR_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
+# CONFIG_MTD_SHARP16 is not set
+CONFIG_MTD_COLLIE=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_JEDEC is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_SUN_UFLASH is not set
+# CONFIG_MTD_NORA is not set
+# CONFIG_MTD_PNC2000 is not set
+# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_SC520CDP is not set
+# CONFIG_MTD_NETSC520 is not set
+# CONFIG_MTD_SBC_GXX is not set
+# CONFIG_MTD_ELAN_104NC is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_L7200 is not set
+# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set
+# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set
+# CONFIG_MTD_DC21285 is not set
+# CONFIG_MTD_IQ80310 is not set
+# CONFIG_MTD_DBOX2 is not set
+# CONFIG_MTD_CSTM_MIPS_IXX is not set
+# CONFIG_MTD_CFI_FLAGADM is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_MIXMEM is not set
+# CONFIG_MTD_OCTAGON is not set
+# CONFIG_MTD_VMAX is not set
+# CONFIG_MTD_OCELOT is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_MTDROM_L7200 is not set
+# CONFIG_MTD_MTDRAM_L7200 is not set
+# CONFIG_MTD_MTDROM_SA1100 is not set
+CONFIG_MTD_MTDRAM_SA1100=y
+CONFIG_MTDRAM_TOTAL_SIZE=12288
+CONFIG_MTDRAM_ERASE_SIZE=1
+CONFIG_MTDRAM_ABS_POS=C1400000
+# CONFIG_MTD_MTDRAM is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_SIZE=1024
+# CONFIG_BLK_DEV_INITRD is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_NETLINK=y
+# CONFIG_RTNETLINK is not set
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=y
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=y
+CONFIG_PPP_BSDCOMP=y
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=y
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_IBMTR is not set
+# CONFIG_NET_PCMCIA_RADIO is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+CONFIG_IRDA=y
+
+#
+# IrDA protocols
+#
+# CONFIG_IRLAN is not set
+# CONFIG_IRNET is not set
+CONFIG_IRCOMM=y
+# CONFIG_IRDA_ULTRA is not set
+# CONFIG_IRDA_OPTIONS is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=y
+CONFIG_IRPORT_SIR=y
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_NSC_FIR is not set
+# CONFIG_WINBOND_FIR is not set
+# CONFIG_TOSHIBA_FIR is not set
+# CONFIG_SMC_IRCC_FIR is not set
+CONFIG_SA1100_FIR=y
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+CONFIG_SERIAL=m
+# CONFIG_SERIAL_FORCE16550A is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_SA1100 is not set
+# CONFIG_SERIAL_SA1100_OLD is not set
+# CONFIG_SERIAL_SA1100_CONSOLE is not set
+CONFIG_SA1100_DEFAULT_BAUDRATE=9600
+CONFIG_SERIAL_COLLIE=y
+# CONFIG_SERIAL_COLLIE_CONSOLE is not set
+CONFIG_COLLIE_DEFAULT_BAUDRATE=9600
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+CONFIG_UCB1200=y
+CONFIG_TOUCHSCREEN_UCB1200=y
+# CONFIG_AUDIO_UCB1200 is not set
+# CONFIG_ADC_UCB1200 is not set
+# CONFIG_TOUCHSCREEN_BITSY is not set
+# CONFIG_PROFILER is not set
+# CONFIG_PFS168_SPI is not set
+# CONFIG_PFS168_DTMF is not set
+# CONFIG_PFS168_MISC is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+CONFIG_PCMCIA_SERIAL_CS=m
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FS_SYNC=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+CONFIG_FAT_FS=m
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+CONFIG_VFAT_FS=m
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_CRAMFS=m
+# CONFIG_TMPFS is not set
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+CONFIG_MINIX_FS=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=m
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_SMB_NLS=y
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_PC_KEYMAP=y
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_L7200 is not set
+# CONFIG_FB_IRIS is not set
+CONFIG_FB_COLLIE=y
+# CONFIG_COLLIE_LOGO_SCREEN is not set
+# CONFIG_FB_ACORN is not set
+# CONFIG_FB_CLPS711X is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_EPSON1356 is not set
+# CONFIG_FB_SA1100 is not set
+# CONFIG_FB_ANAKIN is not set
+# CONFIG_FB_E1355 is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FBCON_ADVANCED=y
+# CONFIG_FBCON_MFB is not set
+# CONFIG_FBCON_CFB2 is not set
+# CONFIG_FBCON_CFB4 is not set
+# CONFIG_FBCON_CFB8 is not set
+CONFIG_FBCON_CFB16=y
+# CONFIG_FBCON_CFB24 is not set
+# CONFIG_FBCON_CFB32 is not set
+# CONFIG_FBCON_AFB is not set
+# CONFIG_FBCON_ILBM is not set
+# CONFIG_FBCON_IPLAN2P2 is not set
+# CONFIG_FBCON_IPLAN2P4 is not set
+# CONFIG_FBCON_IPLAN2P8 is not set
+# CONFIG_FBCON_MAC is not set
+# CONFIG_FBCON_VGA_PLANES is not set
+# CONFIG_FBCON_VGA is not set
+# CONFIG_FBCON_HGA is not set
+CONFIG_FBCON_ROTATE_R=y
+# CONFIG_FBCON_ROTATE_L is not set
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+CONFIG_FBCON_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+# CONFIG_SOUND_ASSABET_UDA1341 is not set
+# CONFIG_SOUND_BITSY_UDA1341 is not set
+# CONFIG_SOUND_SA1111_UDA1341 is not set
+# CONFIG_SOUND_SA1100SSP is not set
+CONFIG_SOUND_COLLIE_SSP=y
+CONFIG_COLLIE_PCM1741=y
+# CONFIG_COLLIE_PCM1717 is not set
+# CONFIG_SOUND_CMPCI is not set
+# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_SOUND_FUSION is not set
+# CONFIG_SOUND_CS4281 is not set
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_ESSSOLO1 is not set
+# CONFIG_SOUND_MAESTRO is not set
+# CONFIG_SOUND_MAESTRO3 is not set
+# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
+# CONFIG_SOUND_OSS is not set
+# CONFIG_SOUND_TVMIXER is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# USB Device Support
+#
+CONFIG_USBD=m
+CONFIG_USBD_VENDORID=4dd
+CONFIG_USBD_PRODUCTID=8002
+CONFIG_USBD_PRODUCT_NAME="SL Series"
+CONFIG_USBD_MANUFACTURER="Sharp"
+CONFIG_USBD_USE_SERIAL_NUMBER=y
+CONFIG_USBD_SERIAL_NUMBER_STR="A01234"
+CONFIG_USBD_SELFPOWERED=y
+CONFIG_USBD_MONITOR=m
+
+#
+#
+#
+CONFIG_USBD_PROCFS=y
+
+#
+# USB Device functions --
+#
+
+#
+# Network Function
+#
+CONFIG_USBD_NET=m
+CONFIG_USBD_NET_VENDORID=4DD
+CONFIG_USBD_NET_PRODUCTID=8004
+CONFIG_USBD_NET_IFNAME="usbd"
+CONFIG_USBD_NET_OUT_ENDPOINT=1
+CONFIG_USBD_NET_OUT_PKTSIZE=64
+CONFIG_USBD_NET_IN_ENDPOINT=2
+CONFIG_USBD_NET_IN_PKTSIZE=64
+# CONFIG_USBD_NET_ALWAYSUP is not set
+CONFIG_USBD_NET_CDC=y
+CONFIG_USBD_NET_REMOTE_MACADDR="400002000001"
+CONFIG_USBD_NET_REMOTE_OUI=400002
+CONFIG_USBD_NET_LOCAL_MACADDR="400001000001"
+CONFIG_USBD_NET_LOCAL_OUI=400001
+
+#
+# Serial Function
+#
+CONFIG_USBD_SERIAL=m
+CONFIG_USBD_SERIAL_VENDORID=4dd
+CONFIG_USBD_SERIAL_PRODUCTID=8002
+# CONFIG_USBD_SERIAL_CDC is not set
+CONFIG_USBD_SERIAL_OUT_ENDPOINT=1
+CONFIG_USBD_SERIAL_IN_PKTSIZE=64
+CONFIG_USBD_SERIAL_IN_ENDPOINT=2
+CONFIG_USBD_SERIAL_OUT_PKTSIZE=64
+# CONFIG_USBD_SERIAL_SAFE is not set
+
+#
+# USB Device bus interfaces --
+#
+
+#
+# Intel StrongArm SA-1110 Bus Interface Driver
+#
+CONFIG_USBD_SA1100_BUS=m
+# CONFIG_SA1100_NEW_DMA_COOPERATION is not set
+CONFIG_USBD_STALL_TIMEOUT=0
+CONFIG_USBD_STALL_DISCONNECT_DURATION=2
+# CONFIG_USBD_TRAFFIC_KEEPAWAKE is not set
+
+#
+# Generic Bus Interface
+#
+# CONFIG_USBD_GENERIC_BUS is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_NO_FRAME_POINTER is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_INFO is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff -Nur linux/drivers/mtd/Config.in /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/Config.in
--- linux/drivers/mtd/Config.in 2003-05-13 16:18:19.000000000 +0700
+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/Config.in 2003-06-23 01:47:03.000000000 +0700
@@ -14,6 +14,7 @@
dep_tristate ' MTD partitioning support' CONFIG_MTD_PARTITIONS $CONFIG_MTD
dep_tristate ' MTD concatenating support' CONFIG_MTD_CONCAT $CONFIG_MTD
dep_tristate ' RedBoot partition table parsing' CONFIG_MTD_REDBOOT_PARTS $CONFIG_MTD_PARTITIONS
+ dep_tristate ' Cacko Hybrid partition table' CONFIG_CACKO_HYBRID_PARTITIONS $CONFIG_MTD_PARTITIONS $CONFIG_SA1100_COLLIE
dep_tristate ' Command line partition table parsing' CONFIG_MTD_CMDLINE_PARTS $CONFIG_MTD_PARTITIONS
if [ "$CONFIG_ARM" = "y" ]; then
dep_tristate ' ARM Firmware Suite partition parsing' CONFIG_MTD_AFS_PARTS $CONFIG_MTD_PARTITIONS
diff -Nur linux/drivers/mtd/chips/Config.in /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/Config.in
--- linux/drivers/mtd/chips/Config.in 2003-05-13 16:18:19.000000000 +0700
+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/Config.in 2003-06-23 01:47:03.000000000 +0700
@@ -49,6 +49,7 @@
dep_tristate ' Support for RAM chips in bus mapping' CONFIG_MTD_RAM $CONFIG_MTD
dep_tristate ' Support for ROM chips in bus mapping' CONFIG_MTD_ROM $CONFIG_MTD
dep_tristate ' Support for absent chips in bus mapping' CONFIG_MTD_ABSENT $CONFIG_MTD
+dep_tristate ' pre-CFI Sharp (32) chip support (Collie)' CONFIG_MTD_COLLIE $CONFIG_MTD
bool ' Older (theoretically obsoleted now) drivers for non-CFI chips' CONFIG_MTD_OBSOLETE_CHIPS
dep_tristate ' AMD compatible flash chip support (non-CFI)' CONFIG_MTD_AMDSTD $CONFIG_MTD $CONFIG_MTD_OBSOLETE_CHIPS
diff -Nur linux/drivers/mtd/chips/Makefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/Makefile
--- linux/drivers/mtd/chips/Makefile 2003-05-13 16:18:19.000000000 +0700
+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/Makefile 2003-06-23 01:47:03.000000000 +0700
@@ -25,6 +25,7 @@
obj-$(CONFIG_MTD_RAM) += map_ram.o
obj-$(CONFIG_MTD_ROM) += map_rom.o
obj-$(CONFIG_MTD_SHARP) += sharp.o
+obj-$(CONFIG_MTD_COLLIE) += collie_sharp.o
obj-$(CONFIG_MTD_ABSENT) += map_absent.o
include $(TOPDIR)/Rules.make
diff -Nur linux/drivers/mtd/chips/collie_sharp.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/collie_sharp.c
--- linux/drivers/mtd/chips/collie_sharp.c 1970-01-01 07:00:00.000000000 +0700
+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/chips/collie_sharp.c 2003-06-23 01:47:03.000000000 +0700
@@ -0,0 +1,731 @@
+/*
+ * MTD chip driver for non-CFI Sharp flash chips
+ *
+ * Copyright 2000,2001 David A. Schleef <ds@schleef.org>
+ * 2000,2001 Lineo, Inc.
+ *
+ * $Id: sharp.c,v 1.4 2001/04/29 16:21:17 dwmw2 Exp $
+ *
+ * Devices supported:
+ * LH28F016SCT Symmetrical block flash memory, 2Mx8
+ * LH28F008SCT Symmetrical block flash memory, 1Mx8
+ *
+ * Documentation:
+ * http://www.sharpmeg.com/datasheets/memic/flashcmp/
+ * http://www.sharpmeg.com/datasheets/memic/flashcmp/01symf/16m/016sctl9.pdf
+ * 016sctl9.pdf
+ *
+ * Limitations:
+ * This driver only supports 4x1 arrangement of chips.
+ * Not tested on anything but PowerPC.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/version.h>
+#include <linux/types.h>
+#include <linux/sched.h>
+#include <linux/errno.h>
+#include <linux/mtd/map.h>
+#include <linux/mtd/cfi.h>
+#include <linux/delay.h>
+#include <asm/hardware.h>
+
+#define CMD_RESET 0xffffffff
+#define CMD_READ_ID 0x90909090
+#define CMD_READ_STATUS 0x70707070
+#define CMD_CLEAR_STATUS 0x50505050
+#define CMD_BLOCK_ERASE_1 0x20202020
+#define CMD_BLOCK_ERASE_2 0xd0d0d0d0
+#define CMD_BYTE_WRITE 0x40404040
+#define CMD_SUSPEND 0xb0b0b0b0
+#define CMD_RESUME 0xd0d0d0d0
+#define CMD_SET_BLOCK_LOCK_1 0x60606060
+#define CMD_SET_BLOCK_LOCK_2 0x01010101
+#define CMD_SET_MASTER_LOCK_1 0x60606060
+#define CMD_SET_MASTER_LOCK_2 0xf1f1f1f1
+#define CMD_CLEAR_BLOCK_LOCKS_1 0x60606060
+#define CMD_CLEAR_BLOCK_LOCKS_2 0xd0d0d0d0
+
+#define SR_READY 0x80808080 // 1 = ready
+#define SR_ERASE_SUSPEND 0x40404040 // 1 = block erase suspended
+#define SR_ERROR_ERASE 0x20202020 // 1 = error in block erase or clear lock bits
+#define SR_ERROR_WRITE 0x10101010 // 1 = error in byte write or set lock bit
+#define SR_VPP 0x08080808 // 1 = Vpp is low
+#define SR_WRITE_SUSPEND 0x04040404 // 1 = byte write suspended
+#define SR_PROTECT 0x02020202 // 1 = lock bit set
+#define SR_RESERVED 0x01010101
+
+#define SR_ERRORS (SR_ERROR_ERASE|SR_ERROR_WRITE|SR_VPP|SR_PROTECT)
+
+#define BLOCK_MASK 0xfffe0000
+/* Configuration options */
+
+//#undef AUTOUNLOCK /* automatically unlocks blocks before erasing */
+#define AUTOUNLOCK
+struct mtd_info *collie_probe(struct map_info *);
+
+static int collie_probe_map(struct map_info *map,struct mtd_info *mtd);
+
+static int collie_read(struct mtd_info *mtd, loff_t from, size_t len,
+ size_t *retlen, u_char *buf);
+static int collie_write(struct mtd_info *mtd, loff_t from, size_t len,
+ size_t *retlen, const u_char *buf);
+static int collie_erase(struct mtd_info *mtd, struct erase_info *instr);
+static void collie_sync(struct mtd_info *mtd);
+static int collie_suspend(struct mtd_info *mtd);
+static void collie_resume(struct mtd_info *mtd);
+static void collie_destroy(struct mtd_info *mtd);
+
+static int collie_write_oneword(struct map_info *map, struct flchip *chip,
+ unsigned long adr, __u32 datum);
+static int collie_erase_oneblock(struct map_info *map, struct flchip *chip,
+ unsigned long adr);
+#ifdef AUTOUNLOCK
+static inline void collie_unlock_oneblock(struct map_info *map, struct flchip *chip,
+ unsigned long adr);
+#endif
+
+
+struct collie_info{
+ struct flchip *chip;
+ int bogus;
+ int chipshift;
+ int numchips;
+ struct flchip chips[1];
+};
+
+struct mtd_info *collie_probe(struct map_info *map);
+static void collie_destroy(struct mtd_info *mtd);
+
+static struct mtd_chip_driver collie_chipdrv = {
+ probe: collie_probe,
+ destroy: collie_destroy,
+ name: "collie",
+ module: THIS_MODULE
+};
+static void collie_udelay(unsigned long i){
+ if (in_interrupt()) {
+ udelay(i);
+ } else {
+ schedule();
+ }
+
+}
+struct mtd_info *collie_probe(struct map_info *map)
+{
+ struct mtd_info *mtd = NULL;
+ struct collie_info *collie = NULL;
+ int width;
+
+ mtd = kmalloc(sizeof(*mtd), GFP_KERNEL);
+ if(!mtd)
+ return NULL;
+
+ collie = kmalloc(sizeof(*collie), GFP_KERNEL);
+ if(!collie)
+ return NULL;
+
+ memset(mtd, 0, sizeof(*mtd));
+
+ width = collie_probe_map(map,mtd);
+ if(!width){
+ kfree(mtd);
+ kfree(collie);
+ return NULL;
+ }
+ //MSC0 = 0xfff8e352;
+ MSC0 = 0xfff8fff8;
+
+ mtd->priv = map;
+ mtd->type = MTD_NORFLASH;
+ mtd->erase = collie_erase;
+ mtd->read = collie_read;
+ mtd->write = collie_write;
+ mtd->sync = collie_sync;
+ mtd->suspend = collie_suspend;
+ mtd->resume = collie_resume;
+ mtd->flags = MTD_CAP_NORFLASH;
+ mtd->name = map->name;
+
+ memset(collie, 0, sizeof(*collie));
+
+ //collie->chipshift = 23;
+ collie->chipshift = 24;
+ collie->numchips = 1;
+ collie->chips[0].start = 0;
+ collie->chips[0].state = FL_READY;
+ collie->chips[0].mutex = &collie->chips[0]._spinlock;
+ collie->chips[0].word_write_time = 0;
+ init_waitqueue_head(&collie->chips[0].wq);
+ spin_lock_init(&collie->chips[0]._spinlock);
+
+ map->fldrv = &collie_chipdrv;
+ map->fldrv_priv = collie;
+
+ MOD_INC_USE_COUNT;
+ return mtd;
+}
+
+static int collie_probe_map(struct map_info *map,struct mtd_info *mtd)
+{
+ unsigned long tmp;
+ unsigned long base = 0;
+ u32 read0, read4;
+ int width = 4;
+
+ tmp = map->read32(map, base+0);
+
+ map->write32(map, CMD_READ_ID, base+0);
+
+ read0=map->read32(map, base+0);
+ read4=map->read32(map, base+4);
+ //if(read0 == 0x89898989){
+ if(read0 == 0x00b000b0){
+ //printk("Looks like collie flash\n");
+ switch(read4){
+ case 0xaaaaaaaa:
+ case 0xa0a0a0a0:
+ /* aa - LH28F016SCT-L95 2Mx8, 32 64k blocks*/
+ /* a0 - LH28F016SCT-Z4 2Mx8, 32 64k blocks*/
+ mtd->erasesize = 0x10000 * width;
+ mtd->size = 0x200000 * width;
+ return width;
+ case 0xa6a6a6a6:
+ /* a6 - LH28F008SCT-L12 1Mx8, 16 64k blocks*/
+ /* a6 - LH28F008SCR-L85 1Mx8, 16 64k blocks*/
+ mtd->erasesize = 0x10000 * width;
+ mtd->size = 0x100000 * width;
+ return width;
+ case 0x00b000b0:
+ /* a6 - LH28F640BFHE 8 64k * 2 chip blocks*/
+ mtd->erasesize = 0x10000 * width / 2;
+ mtd->size = 0x800000 * width / 2;
+ return width;
+#if 0
+ case 0x00000000: /* unknown */
+ /* XX - LH28F004SCT 512kx8, 8 64k blocks*/
+ mtd->erasesize = 0x10000 * width;
+ mtd->size = 0x100000 * width;
+ return width;
+#endif
+ default:
+ printk("Sort-of looks like collie flash, 0x%08x 0x%08x\n",
+ read0,read4);
+ }
+ }else if((map->read32(map, base+0) == CMD_READ_ID)){
+ /* RAM, probably */
+ printk("Looks like RAM\n");
+ map->write32(map, tmp, base+0);
+ }else{
+ printk("Doesn't look like collie flash, 0x%08x 0x%08x\n",
+ read0,read4);
+ }
+
+ return 0;
+}
+
+/* This function returns with the chip->mutex lock held. */
+static inline int collie_wait(struct map_info *map, struct flchip *chip)
+{
+ __u32 status;
+ unsigned long timeo = jiffies + HZ;
+ DECLARE_WAITQUEUE(wait, current);
+ int adr = 0;
+
+ //timeo = jiffies + HZ * 10;
+retry:
+ spin_lock_bh(chip->mutex);
+
+ switch(chip->state){
+ case FL_READY:
+ map->write32(map,CMD_READ_STATUS,adr);
+ chip->state = FL_STATUS;
+ case FL_STATUS:
+ status = map->read32(map,adr);
+ if((status & SR_READY)==SR_READY)
+ break;
+ //printk(".status=%08x\n",status);
+ spin_unlock_bh(chip->mutex);
+ if (time_after(jiffies, timeo)) {
+ printk("Waiting for chip to be ready timed out in erase\n");
+ return -EIO;
+ }
+ collie_udelay(1);
+ goto retry;
+ default:
+ //printk("Waiting for chip\n");
+
+ set_current_state(TASK_INTERRUPTIBLE);
+ add_wait_queue(&chip->wq, &wait);
+
+ spin_unlock_bh(chip->mutex);
+
+ //schedule();
+ collie_udelay(1);
+
+ set_current_state(TASK_RUNNING);
+ remove_wait_queue(&chip->wq, &wait);
+
+ if(signal_pending(current))
+ return -EINTR;
+
+ timeo = jiffies + HZ;
+
+ goto retry;
+ }
+
+ map->write32(map,CMD_RESET, adr);
+
+ chip->state = FL_READY;
+
+ return 0;
+}
+
+static void collie_release(struct flchip *chip)
+{
+ wake_up(&chip->wq);
+ spin_unlock_bh(chip->mutex);
+}
+
+static int collie_read(struct mtd_info *mtd, loff_t from, size_t len,
+ size_t *retlen, u_char *buf)
+{
+ struct map_info *map = mtd->priv;
+ struct collie_info *collie = map->fldrv_priv;
+ int chipnum;
+ int ret = 0;
+ int ofs = 0;
+
+ chipnum = (from >> collie->chipshift);
+ ofs = from & ((1 << collie->chipshift)-1);
+
+ *retlen = 0;
+
+ while(len){
+ unsigned long thislen;
+
+ if(chipnum>=collie->numchips)
+ break;
+
+ thislen = len;
+ if(ofs+thislen >= (1<<collie->chipshift))
+ thislen = (1<<collie->chipshift) - ofs;
+
+ ret = collie_wait(map,&collie->chips[chipnum]);
+ if(ret<0)
+ break;
+
+ map->copy_from(map,buf,ofs,thislen);
+
+ collie_release(&collie->chips[chipnum]);
+
+ *retlen += thislen;
+ len -= thislen;
+ buf += thislen;
+
+ ofs = 0;
+ chipnum++;
+ }
+ return ret;
+}
+
+static int collie_write(struct mtd_info *mtd, loff_t to, size_t len,
+ size_t *retlen, const u_char *buf)
+{
+ struct map_info *map = mtd->priv;
+ struct collie_info *collie = map->fldrv_priv;
+ int ret = 0;
+ int i,j;
+ int chipnum;
+ unsigned long ofs;
+ union { u32 l; unsigned char uc[4]; } tbuf;
+
+ *retlen = 0;
+
+ while(len){
+ tbuf.l = 0xffffffff;
+ chipnum = to >> collie->chipshift;
+ ofs = to & ((1<<collie->chipshift)-1);
+
+ j=0;
+ for(i=ofs&3;i<4 && len;i++){
+ tbuf.uc[i] = *buf;
+ buf++;
+ to++;
+ len--;
+ j++;
+ }
+ collie_write_oneword(map, &collie->chips[chipnum], ofs&~3, tbuf.l);
+ if(ret<0)
+ return ret;
+ (*retlen)+=j;
+ }
+
+ return 0;
+}
+
+static int collie_write_oneword(struct map_info *map, struct flchip *chip,
+ unsigned long adr, __u32 datum)
+{
+ int ret;
+ int try;
+ int i;
+ u32 status = 0;
+
+ ret = collie_wait(map,chip);
+ if(ret<0)
+ return ret;
+
+ for(try=0;try<10;try++){
+ map->write32(map,CMD_BYTE_WRITE,adr);
+ /* cpu_to_le32 -> hack to fix the writel be->le conversion */
+ map->write32(map,cpu_to_le32(datum),adr);
+
+ chip->state = FL_WRITING;
+
+ map->write32(map,CMD_READ_STATUS,adr);
+
+ for(i=0;i<100;i++){
+ status = map->read32(map,adr);
+ if((status & SR_READY)==SR_READY)
+ break;
+ }
+
+#ifdef AUTOUNLOCK
+ if (status & SR_PROTECT){ /* lock block */
+#if 0
+ map->write32(map,CMD_CLEAR_BLOCK_LOCKS_1,adr);
+ map->write32(map,CMD_CLEAR_BLOCK_LOCKS_2,adr);
+#else
+ map->write32(map,CMD_CLEAR_STATUS,adr);
+ //map->write32(map,CMD_RESET,adr);
+
+ collie_unlock_oneblock(map,chip,adr);
+
+ map->write32(map,CMD_CLEAR_STATUS,adr);
+ map->write32(map,CMD_RESET,adr);
+
+#endif
+ continue;
+ }
+#endif
+ if(i==100){
+ printk("collie: timed out writing\n");
+ }
+
+ if(!(status&SR_ERRORS))
+ break;
+
+ printk("collie: error writing byte at addr=%08lx status=%08x\n",adr,status);
+
+ map->write32(map,CMD_CLEAR_STATUS,adr);
+ }
+ map->write32(map,CMD_RESET,adr);
+ chip->state = FL_READY;
+
+ collie_release(chip);
+
+ return 0;
+}
+
+static int collie_erase(struct mtd_info *mtd, struct erase_info *instr)
+{
+ struct map_info *map = mtd->priv;
+ struct collie_info *collie = map->fldrv_priv;
+ unsigned long adr,len;
+ int chipnum, ret=0;
+
+//printk("collie_erase()\n");
+ if(instr->addr & (mtd->erasesize - 1))
+ return -EINVAL;
+ if(instr->len & (mtd->erasesize - 1))
+ return -EINVAL;
+ if(instr->len + instr->addr > mtd->size)
+ return -EINVAL;
+
+ chipnum = instr->addr >> collie->chipshift;
+ adr = instr->addr & ((1<<collie->chipshift)-1);
+ len = instr->len;
+//printk("--+* erase adr %08x [%08x]\n",adr,len);
+ while(len){
+ ret = collie_erase_oneblock(map, &collie->chips[chipnum], adr);
+ if(ret)return ret;
+ if (adr >= 0xfe0000) {
+ adr += mtd->erasesize / 8;
+ len -= mtd->erasesize / 8;
+ } else {
+
+ adr += mtd->erasesize;
+ len -= mtd->erasesize;
+ }
+ if(adr >> collie->chipshift){
+ adr = 0;
+ chipnum++;
+ if(chipnum>=collie->numchips)
+ break;
+ }
+ }
+ instr->state = MTD_ERASE_DONE;
+ if(instr->callback)
+ instr->callback(instr);
+//printk("--+* erase end %08x \n\n",adr);
+
+ return 0;
+}
+
+static inline int collie_do_wait_for_ready(struct map_info *map, struct flchip *chip,
+ unsigned long adr)
+{
+ int ret;
+ int timeo;
+ int status;
+ DECLARE_WAITQUEUE(wait, current);
+
+ map->write32(map,CMD_READ_STATUS,adr);
+ status = map->read32(map,adr);
+
+ timeo = jiffies + HZ * 10;
+
+ while(jiffies<timeo){
+ map->write32(map,CMD_READ_STATUS,adr);
+ status = map->read32(map,adr);
+ if((status & SR_READY)==SR_READY){
+ ret = 0;
+ goto out;
+ }
+ set_current_state(TASK_INTERRUPTIBLE);
+ add_wait_queue(&chip->wq, &wait);
+
+ spin_unlock_bh(chip->mutex);
+
+ schedule_timeout(1);
+ schedule();
+
+ spin_lock_bh(chip->mutex);
+
+ remove_wait_queue(&chip->wq, &wait);
+ set_current_state(TASK_RUNNING);
+#if 0
+ if (signal_pending(current)){
+ ret = -EINTR;
+ goto out;
+ }
+#endif
+
+ }
+ ret = -ETIME;
+out:
+ return ret;
+}
+
+static int collie_erase_oneblock(struct map_info *map, struct flchip *chip,
+ unsigned long adr)
+{
+ int ret;
+ //int timeo;
+ int status;
+ //int i;
+
+ //printk("collie_erase_oneblock()\n");
+
+ ret = collie_wait(map,chip);
+ if (ret <0)
+ return ret;
+#ifdef AUTOUNLOCK
+ /* This seems like a good place to do an unlock */
+ collie_unlock_oneblock(map,chip,adr);
+#endif
+
+ map->write32(map,CMD_BLOCK_ERASE_1,adr);
+ map->write32(map,CMD_BLOCK_ERASE_2,adr);
+
+ chip->state = FL_ERASING;
+
+ ret = collie_do_wait_for_ready(map,chip,adr);
+ if(ret<0){
+ spin_unlock_bh(chip->mutex);
+ return ret;
+ }
+ map->write32(map,CMD_READ_STATUS,adr);
+ status = map->read32(map,adr);
+ if(!(status&SR_ERRORS)){
+ map->write32(map,CMD_RESET,adr);
+ chip->state = FL_READY;
+ spin_unlock_bh(chip->mutex);
+ return 0;
+ }
+
+ printk("collie: error erasing block at addr=%08lx status=%08x\n",adr,status);
+ map->write32(map,CMD_CLEAR_STATUS,adr);
+
+ //wake_up(&chip->wq);
+ //spin_unlock_bh(chip->mutex);
+
+ collie_release(chip);
+
+ return -EIO;
+}
+
+#ifdef AUTOUNLOCK
+static inline void collie_unlock_oneblock(struct map_info *map, struct flchip *chip,
+ unsigned long adr)
+{
+ u32 status;
+
+ map->write32(map,CMD_CLEAR_BLOCK_LOCKS_1,adr & BLOCK_MASK);
+ map->write32(map,CMD_CLEAR_BLOCK_LOCKS_2,adr & BLOCK_MASK);
+
+ collie_do_wait_for_ready(map,chip,adr);
+
+ status = map->read32(map,adr);
+ if(!(status&SR_ERRORS)){
+ map->write32(map,CMD_RESET,adr);
+ chip->state = FL_READY;
+ return;
+ }
+
+ printk("collie: error unlocking block at addr=%08lx status=%08x\n",adr,status);
+ map->write32(map,CMD_CLEAR_STATUS,adr);
+}
+#endif
+
+static void collie_sync(struct mtd_info *mtd)
+{
+ //printk("collie_sync()\n");
+}
+
+static int collie_suspend(struct mtd_info *mtd)
+{
+ struct map_info *map = mtd->priv;
+ struct collie_info *collie = map->fldrv_priv;
+ int i;
+ struct flchip *chip;
+ int ret = 0;
+
+ //printk("collie_suspend()\n");
+#if 1
+ for (i=0; !ret && i<collie->numchips; i++) {
+ chip = &collie->chips[i];
+ ret = collie_wait(map,chip);
+
+
+ if (ret){
+ ret = -EAGAIN;
+ } else {
+ chip->state = FL_PM_SUSPENDED;
+ spin_unlock_bh(chip->mutex);
+ }
+ }
+#else
+ for (i=0; !ret && i<collie->numchips; i++) {
+ chip = &collie->chips[i];
+
+ spin_lock_bh(chip->mutex);
+
+ switch(chip->state) {
+ case FL_READY:
+ case FL_STATUS:
+ chip->oldstate = chip->state;
+ chip->state = FL_PM_SUSPENDED;
+ /* No need to wake_up() on this state change -
+ * as the whole point is that nobody can do anything
+ * with the chip now anyway.
+ */
+ case FL_PM_SUSPENDED:
+ break;
+
+ default:
+ ret = -EAGAIN;
+ break;
+ }
+ spin_unlock_bh(chip->mutex);
+ }
+
+ /* Unlock the chips again */
+ if (ret) {
+ for (i--; i >=0; i--) {
+ chip = &collie->chips[i];
+
+ spin_lock_bh(chip->mutex);
+ if (chip->state == FL_PM_SUSPENDED) {
+ chip->state = chip->oldstate;
+ wake_up(&chip->wq);
+ }
+ spin_unlock_bh(chip->mutex);
+ }
+ }
+#endif
+ return ret;
+
+}
+
+static void collie_resume(struct mtd_info *mtd)
+{
+ struct map_info *map = mtd->priv;
+ struct collie_info *collie = map->fldrv_priv;
+ int i;
+ struct flchip *chip;
+
+ //printk("collie_resume()\n");
+#if 0
+ for (i=0; i<collie->numchips; i++) {
+ chip = &collie->chips[i];
+ if (chip->state == FL_PM_SUSPENDED) {
+ map->write32(map,CMD_RESET,chip->start);
+ chip->state = FL_READY;
+ collie_release(chip);
+ }
+ }
+#else
+ for (i=0; i<collie->numchips; i++) {
+ chip = &collie->chips[i];
+
+ spin_lock_bh(chip->mutex);
+
+ if (chip->state == FL_PM_SUSPENDED) {
+ /* We need to force it back to a known state. */
+ //cfi_write(map, CMD(0xff), 0);
+ map->write32(map,CMD_RESET,chip->start);
+ chip->state = FL_READY;
+ wake_up(&chip->wq);
+ }
+
+ spin_unlock_bh(chip->mutex);
+ }
+#endif
+}
+
+static void collie_destroy(struct mtd_info *mtd)
+{
+ struct map_info *map = mtd->priv;
+ struct collie_info *collie = map->fldrv_priv;
+
+ //printk("collie_destroy()\n");
+ //kfree(collie->cmdset_priv);
+ kfree(collie);
+
+}
+
+#if LINUX_VERSION_CODE < 0x020212 && defined(MODULE)
+#define collie_probe_init init_module
+#define collie_probe_exit cleanup_module
+#endif
+
+int __init collie_probe_init(void)
+{
+ printk("MTD Sharp chip driver <ds@lineo.com>\n");
+
+ register_mtd_chip_driver(&collie_chipdrv);
+
+ return 0;
+}
+
+static void __exit collie_probe_exit(void)
+{
+ unregister_mtd_chip_driver(&collie_chipdrv);
+}
+
+module_init(collie_probe_init);
+module_exit(collie_probe_exit);
+
diff -Nur linux/drivers/mtd/maps/Config.in /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/Config.in
--- linux/drivers/mtd/maps/Config.in 2003-05-13 16:18:19.000000000 +0700
+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/Config.in 2003-06-23 01:47:03.000000000 +0700
@@ -76,7 +76,7 @@
dep_tristate ' CFI Flash device mapped on Nora' CONFIG_MTD_NORA $CONFIG_MTD_CFI
dep_tristate ' CFI Flash device mapped on ARM Integrator/P720T' CONFIG_MTD_ARM_INTEGRATOR $CONFIG_MTD_CFI
dep_tristate ' Cirrus CDB89712 evaluation board mappings' CONFIG_MTD_CDB89712 $CONFIG_MTD_CFI $CONFIG_ARCH_CDB89712
- dep_tristate ' CFI Flash device mapped on StrongARM SA11x0' CONFIG_MTD_SA1100 $CONFIG_MTD_CFI $CONFIG_ARCH_SA1100 $CONFIG_MTD_PARTITIONS
+ dep_tristate ' CFI Flash device mapped on StrongARM SA11x0' CONFIG_MTD_SA1100 $CONFIG_ARCH_SA1100 $CONFIG_MTD_PARTITIONS
dep_tristate ' CFI Flash device mapped on DC21285 Footbridge' CONFIG_MTD_DC21285 $CONFIG_MTD_CFI $CONFIG_ARCH_FOOTBRIDGE $CONFIG_MTD_PARTITIONS
dep_tristate ' CFI Flash device mapped on the XScale IQ80310 board' CONFIG_MTD_IQ80310 $CONFIG_MTD_CFI $CONFIG_ARCH_IQ80310
dep_tristate ' CFI Flash device mapped on the FortuNet board' CONFIG_MTD_FORTUNET $CONFIG_MTD_CFI $CONFIG_MTD_PARTITIONS $CONFIG_ARCH_FORTUNET
diff -Nur linux/drivers/mtd/maps/Makefile /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/Makefile
--- linux/drivers/mtd/maps/Makefile 2003-05-13 16:18:19.000000000 +0700
+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/Makefile 2003-06-23 01:47:03.000000000 +0700
@@ -35,6 +35,7 @@
obj-$(CONFIG_MTD_RPXLITE) += rpxlite.o
obj-$(CONFIG_MTD_TQM8XXL) += tqm8xxl.o
obj-$(CONFIG_MTD_SA1100) += sa1100-flash.o
+obj-$(CONFIG_MTD_COLLIE) += sa1100-flash.o
ifeq ($(CONFIG_ASSABET_NEPONSET),y)
obj-$(CONFIG_MTD_SA1100) += neponset-flash.o
endif
diff -Nur linux/drivers/mtd/maps/sa1100-flash.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/sa1100-flash.c
--- linux/drivers/mtd/maps/sa1100-flash.c 2003-05-13 16:18:19.000000000 +0700
+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/mtd/maps/sa1100-flash.c 2003-06-23 01:47:03.000000000 +0700
@@ -790,6 +790,73 @@
};
#endif
+#ifdef CONFIG_SA1100_COLLIE
+#define COLLIE_FLASH_SIZE 0x01000000
+
+static struct mtd_partition collie_partitions[] = {
+ {
+ name: "Angel Monitor",
+ offset: 0,
+ size: 0x00020000,
+ mask_flags: MTD_WRITEABLE
+ },
+ {
+ name: "CF Updater",
+ offset: MTDPART_OFS_APPEND,
+ size: 0x00020000,
+ mask_flags: MTD_WRITEABLE
+ },
+ {
+ name: "Diagnostics",
+ offset: MTDPART_OFS_APPEND,
+ size: 0x00080000,
+ mask_flags: MTD_WRITEABLE
+ },
+ {
+ name: "kernel",
+ offset: MTDPART_OFS_APPEND,
+ size: 0x00100000,
+ },
+#ifdef CONFIG_CACKO_HYBRID_PARTITIONS
+ {
+ name: "cramfs",
+ offset: MTDPART_OFS_APPEND,
+ size: 0x00500000,
+ },
+ {
+ name: "jffs2",
+ offset: MTDPART_OFS_APPEND,
+ size: 0x00920000,
+ },
+#else
+ {
+ name: "jffs2",
+ offset: MTDPART_OFS_APPEND,
+ size: 0x00e20000,
+ },
+#endif
+ {
+ name: "angel stuff",
+ offset: MTDPART_OFS_APPEND,
+ size: 0x00020000,
+ }
+};
+
+#include <asm/arch/tc35143.h>
+#include <asm/ucb1200.h>
+
+static void collie_set_vpp(int vpp)
+{
+ ucb1200_set_io_direction(TC35143_GPIO_VPEN_ON, TC35143_IODIR_OUTPUT);
+ if (vpp) {
+ ucb1200_set_io(TC35143_GPIO_VPEN_ON, TC35143_IODAT_HIGH);
+ } else {
+ ucb1200_set_io(TC35143_GPIO_VPEN_ON, TC35143_IODAT_LOW);
+ }
+}
+
+#endif
+
extern int parse_redboot_partitions(struct mtd_info *master, struct mtd_partition **pparts);
extern int parse_bootldr_partitions(struct mtd_info *master, struct mtd_partition **pparts);
@@ -965,6 +1032,14 @@
sa1100_map.size = YOPY_FLASH_SIZE;
}
#endif
+#ifdef CONFIG_SA1100_COLLIE
+ if (machine_is_collie()) {
+ parts = collie_partitions;
+ nb_parts = ARRAY_SIZE(collie_partitions);
+ sa1100_map.size = COLLIE_FLASH_SIZE;
+ sa1100_map.set_vpp = collie_set_vpp;
+ }
+#endif
/*
* For simple flash devices, use ioremap to map the flash.
@@ -985,7 +1060,11 @@
* specific machine settings might have been set above.
*/
printk(KERN_NOTICE "SA1100 flash: probing %d-bit flash bus\n", sa1100_map.buswidth*8);
+#ifdef CONFIG_MTD_COLLIE
+ mymtd = do_map_probe("collie", &sa1100_map);
+#else
mymtd = do_map_probe("cfi_probe", &sa1100_map);
+#endif
ret = -ENXIO;
if (!mymtd)
goto out_err;
diff -Nur linux/drivers/s390/block/dasd.c /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/s390/block/dasd.c
--- linux/drivers/s390/block/dasd.c 2003-05-13 16:18:23.000000000 +0700
+++ /home/sash/tmp/oe/buildroot-oz/build/linux-2.4.18/drivers/s390/block/dasd.c 2003-06-23 01:47:03.000000000 +0700
@@ -4290,102 +4290,38 @@
#ifdef CONFIG_DASD_DIAG
dasd_diag_cleanup ();
DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
- "DIAG discipline %s", "success");
- printk (KERN_INFO PRINTK_HEADER
- "De-Registered DIAG discipline successfully\n");
-#endif /* CONFIG_DASD_ECKD_BUILTIN */
- }
-#ifdef CONFIG_DASD_FBA
- dasd_fba_cleanup ();
- DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
- "FBA discipline %s", "success");
- printk (KERN_INFO PRINTK_HEADER
- "De-Registered FBA discipline successfully\n");
-#endif /* CONFIG_DASD_ECKD_BUILTIN */
-#ifdef CONFIG_DASD_ECKD
- dasd_eckd_cleanup ();
- DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
- "ECKD discipline %s", "success");
- printk (KERN_INFO PRINTK_HEADER
- "De-Registered ECKD discipline successfully\n");
-#endif /* CONFIG_DASD_ECKD_BUILTIN */
-
- dasd_proc_cleanup ();
-
- list_for_each_safe (l, n, &dasd_major_info[0].list) {
- major_info = list_entry (l, major_info_t, list);
- for (i = 0; i < DASD_PER_MAJOR; i++) {
- kfree (major_info->dasd_device[i]);
- }
- if ((major_info->flags & DASD_MAJOR_INFO_REGISTERED) &&
- (rc = dasd_unregister_major (major_info)) == 0) {
- DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
- "major %d: success",
- major_info->gendisk.major);
- printk (KERN_INFO PRINTK_HEADER
- "Unregistered successfully from major no %u\n",
- major_info->gendisk.major);
- } else {
- DASD_DRIVER_DEBUG_EVENT (1, "cleanup_dasd",
- "major %d: failed",
- major_info->gendisk.major);
- printk (KERN_WARNING PRINTK_HEADER
- "Couldn't unregister successfully from major no %d rc = %d\n",
- major_info->gendisk.major, rc);
- }
- }
- list_for_each_safe (l, n, &dasd_range_head.list) {
- range = list_entry (l, dasd_range_t, list);
- dasd_remove_range(range);
- }
-
-#ifndef MODULE
- for( i = 0; i < 256; i++ )
- if ( dasd[i] ) {
- kfree(dasd[i]);
- dasd[i] = NULL;
- }
-#endif /* MODULE */
- if (dasd_devfs_handle)
- devfs_unregister(dasd_devfs_handle);
- if (dasd_debug_area != NULL )
- debug_unregister(dasd_debug_area);
- printk (KERN_INFO PRINTK_HEADER "shutdown completed\n");
- DASD_DRIVER_DEBUG_EVENT(0,"cleanup_dasd","%s","LEAVE");
-}
-
-#ifdef MODULE
-int
-init_module (void)
-{
- int rc = 0;
- rc = dasd_init ();
- return rc;
-}
-
-void
-cleanup_module (void)
-{
- cleanup_dasd ();
- return;
-}
-#endif
-
-/*
- * Overrides for Emacs so that we follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only. This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-indent-level: 4
- * c-brace-imaginary-offset: 0
- * c-brace-offset: -4
- * c-argdecl-indent: 4
- * c-label-offset: -4
- * c-continued-statement-offset: 4
- * c-continued-brace-offset: 0
- * indent-tabs-mode: nil
- * tab-width: 8
- * End:
- */
+
|