#
-# Automatically generated by make menuconfig: don't edit
+# Automatically generated make config: don't edit
#
CONFIG_ARM=y
# CONFIG_EISA is not set
#
# Archimedes/A5000 Implementations
#
+
+#
+# Archimedes/A5000 Implementations (select only ONE)
+#
# CONFIG_ARCH_ARC is not set
# CONFIG_ARCH_A5K is not set
CONFIG_SA1100_BEAGLE=y
CONFIG_SA1100_USB=m
CONFIG_SA1100_USB_NETLINK=m
-CONFIG_SA1100_USB_CHAR=m
+# CONFIG_SA1100_USB_CHAR is not set
#
# Intel PXA250/210 Implementations
# 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_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
+
+#
+# At least one math emulation must be selected
+#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_FASTFPE is not set
CONFIG_KCORE_ELF=y
CONFIG_PM=y
CONFIG_APM=y
# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="root=/dev/mtdblock/1 mem=27M console=ttySA0 noinitrd"
+CONFIG_CMDLINE="root=/dev/mtdblock/1 mem=32M console=ttySA0 noinitrd"
CONFIG_LEDS=y
-CONFIG_LEDS_TIMER=y
+# CONFIG_LEDS_TIMER is not set
# CONFIG_LEDS_CPU is not set
CONFIG_ALIGNMENT_TRAP=y
CONFIG_PREEMPT=y
+# CONFIG_PREEMPT_TIMES is not set
+# CONFIG_LOCK_BREAK is not set
#
# Parallel port support
# 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=m
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD 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_KHTTPD is not set
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
+
+#
+#
+#
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_DECNET is not set
# CONFIG_AIRONET4500_NONCS is not set
# CONFIG_AIRONET4500_PROC is not set
CONFIG_HERMES=m
+
+#
+# Wireless Pcmcia cards support
+#
CONFIG_PCMCIA_HERMES=m
CONFIG_AIRO_CS=m
CONFIG_NET_WIRELESS=y
# IrDA (infrared) support
#
CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
CONFIG_IRLAN=m
CONFIG_IRNET=m
CONFIG_IRCOMM=m
CONFIG_IRDA_ULTRA=y
CONFIG_IRDA_OPTIONS=y
+
+#
+# IrDA options
+#
CONFIG_IRDA_CACHE_LAST_LSAP=y
CONFIG_IRDA_FAST_RR=y
# CONFIG_IRDA_DEBUG is not set
#
# Infrared-port device drivers
#
+
+#
+# SIR device drivers
+#
# CONFIG_IRTTY_SIR is not set
# CONFIG_IRPORT_SIR is not set
+
+#
+# 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
# 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_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_L3=y
CONFIG_L3_ALGOBIT=y
CONFIG_L3_BIT_SA1100_GPIO=y
+
+#
+# Other L3 adapters
+#
# CONFIG_L3_SA1111 is not set
CONFIG_BIT_SA1100_GPIO=y
# Joysticks
#
# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
+
+#
+# Input core support is needed for joysticks
+#
# CONFIG_QIC02_TAPE is not set
#
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_CRAMFS is not set
-# CONFIG_TMPFS is not set
+CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
#
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
+# CONFIG_NFS_FS is not set
+# CONFIG_NFS_V3 is not set
# 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_SUNRPC is not set
+# CONFIG_LOCKD is not set
# CONFIG_SMB_FS is not set
# CONFIG_NCP_FS is not set
# CONFIG_NCPFS_PACKET_SIGNING is not set
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
# CONFIG_USB_UHCI is not set
# CONFIG_USB_UHCI_ALT is not set
# CONFIG_USB_OHCI is not set
# CONFIG_USB_NON_PCI_OHCI is not set
+
+#
+# USB Device Class drivers
+#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
# CONFIG_USB_DC2XX is not set
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_SCANNER is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_CATC is not set
# CONFIG_USB_CDCETHER is not set
# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
# CONFIG_USB_USS720 is not set
#
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
# CONFIG_USB_RIO500 is not set
#
CONFIG_USBD_SERIAL_NUMBER_STR="0123456789"
CONFIG_USBD_SELFPOWERED=y
CONFIG_USBD_MONITOR=m
+
+#
+#
+#
CONFIG_USBD_PROCFS=y
#
+# USB Device functions --
+#
+
+#
# Network Function
#
CONFIG_USBD_NET=m
# CONFIG_USBD_SERIAL_SAFE is not set
#
+# USB Device bus interfaces --
+#
+
+#
# Intel StrongArm SA-1110 Bus Interface Driver
#
CONFIG_USBD_SA1100_BUS=m
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- linux-2.4.17_mvl21/drivers/pcmcia/sa1100_generic.c~pcmcia_preempt.patch
++++ linux-2.4.17_mvl21/drivers/pcmcia/sa1100_generic.c
+@@ -172,7 +172,7 @@
+ struct pcmcia_state state[SA1100_PCMCIA_MAX_SOCK];
+ struct pcmcia_state_array state_array;
+ unsigned int i, clock;
+- unsigned long mecr;
++ unsigned long mecr, irq_flags;
+
+ printk(KERN_INFO "SA-1100 PCMCIA (CS release %s)\n", CS_RELEASE);
+
+@@ -278,10 +278,12 @@
+ return -EIO;
+ }
+
++ preempt_disable();
++
+ /* We initialize the MECR to default values here, because we are
+ * not guaranteed to see a SetIOMap operation at runtime.
+ */
+- mecr=0;
++ mecr=MECR;
+
+ clock = cpufreq_get(0);
+
+@@ -311,11 +313,14 @@
+ sa1100_pcmcia_socket[i].speed_mem=SA1100_PCMCIA_5V_MEM_ACCESS;
+ }
+
++ local_irq_save(irq_flags);
+ MECR=mecr;
++ local_irq_restore(irq_flags);
+
+ #ifdef CONFIG_CPU_FREQ
+ if(cpufreq_register_notifier(&sa1100_pcmcia_notifier_block) < 0){
+ printk(KERN_ERR "Unable to register CPU frequency change notifier\n");
++ preempt_enable();
+ return -ENXIO;
+ }
+ #endif
+@@ -324,12 +329,14 @@
+ if(register_ss_entry(sa1100_pcmcia_socket_count,
+ &sa1100_pcmcia_operations)<0){
+ printk(KERN_ERR "Unable to register socket service routine\n");
++ preempt_enable();
+ return -ENXIO;
+ }
+
+ /* Start the event poll timer. It will reschedule by itself afterwards. */
+ sa1100_pcmcia_poll_event(0);
+
++ preempt_enable();
+ DEBUG(1, "sa1100: initialization complete\n");
+
+ return 0;
+@@ -813,7 +820,7 @@
+ static int sa1100_pcmcia_set_io_map(unsigned int sock,
+ struct pccard_io_map *map){
+ unsigned int clock, speed;
+- unsigned long mecr, start;
++ unsigned long mecr, start, irq_flags;
+
+ DEBUG(4, "%s() for sock %u\n", __FUNCTION__, sock);
+
+@@ -836,7 +843,8 @@
+ }
+
+ if(map->flags&MAP_ACTIVE){
+-
++ preempt_disable();
++
+ speed=(map->speed>0)?map->speed:SA1100_PCMCIA_IO_ACCESS;
+
+ clock = cpufreq_get(0);
+@@ -852,8 +860,10 @@
+ MECR_BSM_GET(mecr, sock), sock, MECR_BSA_GET(mecr, sock),
+ sock, MECR_BSIO_GET(mecr, sock));
+
++ local_irq_save(irq_flags);
+ MECR=mecr;
+-
++ local_irq_restore(irq_flags);
++ preempt_enable();
+ }
+
+ start=map->start;
+@@ -909,8 +919,10 @@
+ static int sa1100_pcmcia_set_mem_map(unsigned int sock,
+ struct pccard_mem_map *map){
+ unsigned int clock, speed;
+- unsigned long mecr, start;
+-
++ unsigned long mecr, start, irq_flags;
++
++ preempt_disable();
++
+ DEBUG(4, "%s() for sock %u\n", __FUNCTION__, sock);
+
+ DEBUG(4, "\tmap %u speed %u\n\tsys_start %#lx\n"
+@@ -929,6 +941,7 @@
+ if(map->map>=MAX_WIN){
+ printk(KERN_ERR "%s(): map (%d) out of range\n", __FUNCTION__,
+ map->map);
++ preempt_enable();
+ return -1;
+ }
+
+@@ -968,9 +981,10 @@
+ __FUNCTION__, sock, MECR_FAST_GET(mecr, sock), sock,
+ MECR_BSM_GET(mecr, sock), sock, MECR_BSA_GET(mecr, sock),
+ sock, MECR_BSIO_GET(mecr, sock));
+-
+- MECR=mecr;
+
++ local_irq_save(irq_flags);
++ MECR=mecr;
++ local_irq_restore(irq_flags);
+ }
+
+ start=map->sys_start;
+@@ -986,6 +1000,8 @@
+
+ sa1100_pcmcia_socket[sock].mem_map[map->map]=*map;
+
++ preempt_enable();
++
+ return 0;
+
+ } /* sa1100_pcmcia_set_mem_map() */
+@@ -1026,8 +1042,13 @@
+ int count, int *eof, void *data){
+ char *p=buf;
+ unsigned int sock=(unsigned int)data;
+- unsigned int clock = cpufreq_get(0);
+- unsigned long mecr = MECR;
++ unsigned int clock;
++ unsigned long mecr;
++
++ preempt_disable();
++ clock = cpufreq_get(0);
++ mecr = MECR;
++ preempt_enable();
+
+ p+=sprintf(p, "k_flags : %s%s%s%s%s%s%s\n",
+ sa1100_pcmcia_socket[sock].k_state.detect?"detect ":"",
+@@ -1101,8 +1122,13 @@
+ void sa1100_pcmcia_update_mecr( void )
+ {
+ unsigned int sock;
+- unsigned long mecr = MECR;
+- unsigned int clock = cpufreq_get(0);
++ unsigned long mecr;
++ unsigned int clock;
++ unsigned long irq_flags;
++
++ preempt_disable();
++ mecr = MECR;
++ clock = cpufreq_get(0);
+
+ if ( clock <= 148000 )
+ clock = 59000;
+@@ -1122,10 +1148,11 @@
+ clock));
+ }
+
+- cli();
++ local_irq_save(irq_flags);
+ MECR = mecr;
+- sti();
++ local_irq_restore(irq_flags);
+
++ preempt_enable();
+ }
+ #endif
+