Index: Makefile
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/Makefile,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- Makefile	13 Jul 2005 05:24:37 -0000	1.1.1.2
+++ Makefile	13 Jul 2005 05:45:11 -0000	1.1.1.3
@@ -1,11 +1,12 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 18
-EXTRAVERSION = -rmk3
+EXTRAVERSION = -phatbox
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
-ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
+#ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
+ARCH = arm
 KERNELPATH=kernel-$(shell echo $(KERNELRELEASE) | sed -e "s/-//g")
 
 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -19,7 +20,7 @@
 HOSTCC  	= gcc
 HOSTCFLAGS	= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
 
-CROSS_COMPILE 	=
+CROSS_COMPILE 	= arm-linux-
 
 #
 # Include the make variables (CC, etc...)
@@ -137,8 +138,7 @@
 	drivers/char/char.o \
 	drivers/block/block.o \
 	drivers/misc/misc.o \
-	drivers/net/net.o \
-	drivers/media/media.o
+	drivers/net/net.o
 DRIVERS-$(CONFIG_AGP) += drivers/char/agp/agp.o
 DRIVERS-$(CONFIG_DRM_NEW) += drivers/char/drm/drm.o
 DRIVERS-$(CONFIG_DRM_OLD) += drivers/char/drm-4.0/drm.o
@@ -266,6 +266,8 @@
 		--end-group \
 		-o vmlinux
 	$(NM) vmlinux | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map
+	$(OBJCOPY) -O binary vmlinux linux
+
 
 symlinks:
 	rm -f include/asm
Index: README.PhatNoise
===================================================================
RCS file: README.PhatNoise
diff -N README.PhatNoise
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ README.PhatNoise	13 Jul 2005 05:45:11 -0000	1.1.1.1
@@ -0,0 +1,46 @@
+Building for Phatnoise Car Audio System version 1.0 and 1.1.  
+
+Environment:
+A gcc 2.95.3 cross-compiler is needed.  arm-linux-gcc should be in your PATH.
+
+You need to configure/build the kernels individually.  It is 
+unfortunately impossible to build one kernel which will work 
+on either board.  We screwed that one up.  
+
+In other words, CONFIG_ARCH_PHATNOISE10 and 
+CONFIG_ARCH_PHATNOISE11 should be mutually exclusive.
+CONFIG_ARCH_PHATNOISE should be defined in either case.  
+
+
+
+Instructions:
+
+1.  Copy either config.phatnoise10 or config.phatnoise11 to 
+a file named .config.  
+
+2.  Run "make menuconfig".  Exit.  
+
+3.  "make dep"
+
+4.  "make"
+
+You now have a file called "linux".  This is the binary kernel image
+which gets loaded into memory by the boot loader.  On 1.0 boards,
+you need to rename this file "RoyalLin.ux" because that is the file
+name that the boot loader looks for.  On 1.1 boards, the file is named
+"linux", but you also need a signature file called "linux.sig".
+
+
+
+Cirrus Logic DAI Device Driver:
+
+The driver is in the files linux/drivers/misc/cirrus_dai.c and 
+linux/drivers/misc/cirrus_dai_fiq.S (ARM assembly FIQ handler).
+
+
+
+
+Brendan Dowling
+Phatnoise, Inc.
+
+
Index: config.phatnoise10
===================================================================
RCS file: config.phatnoise10
diff -N config.phatnoise10
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ config.phatnoise10	13 Jul 2005 05:45:11 -0000	1.1.1.1
@@ -0,0 +1,619 @@
+#
+# Automatically generated by make menuconfig: 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_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+# CONFIG_GENERIC_BUST_SPINLOCK is not set
+# CONFIG_GENERIC_ISA_DMA is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+# CONFIG_MODULES is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+CONFIG_LOLAT=y
+# CONFIG_LOLAT_SYSCTL is not set
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+CONFIG_ARCH_CLPS711X=y
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_MX1ADS is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_SHARK is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+# 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_ADSBITSY is not set
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+# CONFIG_SA1100_H3XXX is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_FRODO is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+# CONFIG_SA1100_BADGE4 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_PT_SYSTEM3 is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD 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
+# CONFIG_H3600_SLEEVE is not set
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_AUTCPU12 is not set
+# CONFIG_ARCH_CDB89712 is not set
+CONFIG_ARCH_PHATNOISE=y
+CONFIG_ARCH_PHATNOISE10=y
+# CONFIG_ARCH_PHATNOISE11 is not set
+CONFIG_ARCH_EP7212=y
+CONFIG_ARCH_EP7312=y
+CONFIG_ARCH_EDB7211=y
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_FORTUNET is not set
+CONFIG_ARCH_EP7211=y
+# CONFIG_EP72XX_ROM_BOOT 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
+# 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=y
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM922T is not set
+# CONFIG_CPU_ARM926T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+# CONFIG_CPU_SA1100 is not set
+# CONFIG_ARM_THUMB is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_PREEMPT=y
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+CONFIG_ISA=y
+# CONFIG_ISA_DMA is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
+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 is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="root=/dev/ram"
+# CONFIG_ALIGNMENT_TRAP is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT 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 is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# 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_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+# CONFIG_INET 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_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_AUNUDP is not set
+# CONFIG_ECONET_NATIVE 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 is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+# 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 is not set
+# 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
+# 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
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Synchronous Serial Interface
+#
+# CONFIG_SSI is not set
+# CONFIG_SSI_CLPS711X is not set
+# CONFIG_SSI_JUNO 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
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_AUDIO_EP7x12=y
+# CONFIG_VT is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+CONFIG_SERIAL_CLPS711X=y
+CONFIG_SERIAL_CLPS711X_CONSOLE=y
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_UART00 is not set
+# CONFIG_SERIAL_UART00_CONSOLE is not set
+# CONFIG_SERIAL_SA1100 is not set
+# CONFIG_SERIAL_SA1100_CONSOLE is not set
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+# CONFIG_L3_ALGOBIT is not set
+# CONFIG_L3_BIT_SA1100_GPIO is not set
+# CONFIG_L3_SA1111 is not set
+# CONFIG_BIT_SA1100_GPIO is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+# 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_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
+
+#
+# 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_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO 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_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+CONFIG_VFAT_FS=y
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_TMPFS is not set
+# CONFIG_RAMFS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_MINIX_FS is not set
+# 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_INTERMEZZO_FS is not set
+# 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 is not set
+# CONFIG_LOCKD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_ZISOFS_FS is not set
+# CONFIG_ZLIB_FS_INFLATE is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+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_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ISO8859_1=y
+# 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
+CONFIG_CIRRUS_DAI=y
+CONFIG_PHATNOISE_BOARD=y
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_MCP_SA1100 is not set
+# CONFIG_MCP_UCB1200 is not set
+# CONFIG_MCP_UCB1200_AUDIO is not set
+# CONFIG_MCP_UCB1200_TS is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+# CONFIG_USB_OHCI_SA1111 is not set
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# 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
+# 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
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_RIO500 is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_NO_FRAME_POINTER is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_WAITQ is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
Index: config.phatnoise11
===================================================================
RCS file: config.phatnoise11
diff -N config.phatnoise11
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ config.phatnoise11	13 Jul 2005 05:45:11 -0000	1.1.1.1
@@ -0,0 +1,619 @@
+#
+# Automatically generated by make menuconfig: 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_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+# CONFIG_GENERIC_BUST_SPINLOCK is not set
+# CONFIG_GENERIC_ISA_DMA is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+# CONFIG_MODULES is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+CONFIG_LOLAT=y
+# CONFIG_LOLAT_SYSCTL is not set
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+CONFIG_ARCH_CLPS711X=y
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_MX1ADS is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_SHARK is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+# 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_ADSBITSY is not set
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+# CONFIG_SA1100_H3XXX is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_FRODO is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+# CONFIG_SA1100_BADGE4 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_PT_SYSTEM3 is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD 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
+# CONFIG_H3600_SLEEVE is not set
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_AUTCPU12 is not set
+# CONFIG_ARCH_CDB89712 is not set
+CONFIG_ARCH_PHATNOISE=y
+# CONFIG_ARCH_PHATNOISE10 is not set
+CONFIG_ARCH_PHATNOISE11=y
+CONFIG_ARCH_EP7212=y
+CONFIG_ARCH_EP7312=y
+CONFIG_ARCH_EDB7211=y
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_FORTUNET is not set
+CONFIG_ARCH_EP7211=y
+# CONFIG_EP72XX_ROM_BOOT 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
+# 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=y
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM922T is not set
+# CONFIG_CPU_ARM926T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+# CONFIG_CPU_SA1100 is not set
+# CONFIG_ARM_THUMB is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_PREEMPT=y
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+CONFIG_ISA=y
+# CONFIG_ISA_DMA is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
+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 is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="root=/dev/ram"
+# CONFIG_ALIGNMENT_TRAP is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT 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 is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# 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_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+# CONFIG_INET 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_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_AUNUDP is not set
+# CONFIG_ECONET_NATIVE 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 is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+# 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 is not set
+# 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
+# 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
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Synchronous Serial Interface
+#
+# CONFIG_SSI is not set
+# CONFIG_SSI_CLPS711X is not set
+# CONFIG_SSI_JUNO 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
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_AUDIO_EP7x12=y
+# CONFIG_VT is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+CONFIG_SERIAL_CLPS711X=y
+CONFIG_SERIAL_CLPS711X_CONSOLE=y
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_UART00 is not set
+# CONFIG_SERIAL_UART00_CONSOLE is not set
+# CONFIG_SERIAL_SA1100 is not set
+# CONFIG_SERIAL_SA1100_CONSOLE is not set
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+# CONFIG_L3_ALGOBIT is not set
+# CONFIG_L3_BIT_SA1100_GPIO is not set
+# CONFIG_L3_SA1111 is not set
+# CONFIG_BIT_SA1100_GPIO is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+# 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_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
+
+#
+# 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_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO 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_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+CONFIG_VFAT_FS=y
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_TMPFS is not set
+# CONFIG_RAMFS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_MINIX_FS is not set
+# 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_INTERMEZZO_FS is not set
+# 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 is not set
+# CONFIG_LOCKD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_ZISOFS_FS is not set
+# CONFIG_ZLIB_FS_INFLATE is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+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_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ISO8859_1=y
+# 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
+CONFIG_CIRRUS_DAI=y
+CONFIG_PHATNOISE_BOARD=y
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_MCP_SA1100 is not set
+# CONFIG_MCP_UCB1200 is not set
+# CONFIG_MCP_UCB1200_AUDIO is not set
+# CONFIG_MCP_UCB1200_TS is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+# CONFIG_USB_OHCI_SA1111 is not set
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# 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
+# 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
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_RIO500 is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_NO_FRAME_POINTER is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_WAITQ is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
Index: arch/arm/Makefile
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/Makefile,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- arch/arm/Makefile	13 Jul 2005 05:24:58 -0000	1.1.1.2
+++ arch/arm/Makefile	13 Jul 2005 05:45:42 -0000	1.1.1.3
@@ -134,8 +134,11 @@
 endif
 
 ifeq ($(CONFIG_ARCH_CLPS711X),y)
-TEXTADDR	 = 0xc0028000
-MACHINE		 = clps711x
+	TEXTADDR	 = 0xc0028000
+	ifeq ($(CONFIG_ARCH_PHATNOISE),y)
+		TEXTADDR	 = 0xc0038000
+	endif
+	MACHINE		 = clps711x
 endif
 
 ifeq ($(CONFIG_ARCH_FORTUNET),y)
Index: arch/arm/config.in
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/config.in,v
retrieving revision 1.1.1.3
retrieving revision 1.1.1.4
diff -u -r1.1.1.3 -r1.1.1.4
--- arch/arm/config.in	13 Jul 2005 05:29:05 -0000	1.1.1.3
+++ arch/arm/config.in	13 Jul 2005 05:45:42 -0000	1.1.1.4
@@ -32,6 +32,9 @@
 mainmenu_option next_comment
 comment 'System Type'
 
+bool 'Low latency scheduling' CONFIG_LOLAT
+dep_bool 'Control low latency with sysctl' CONFIG_LOLAT_SYSCTL $CONFIG_LOLAT
+
 choice 'ARM system type' \
 	"Anakin			CONFIG_ARCH_ANAKIN \
 	 Archimedes/A5000	CONFIG_ARCH_ARCA5K \
@@ -146,7 +149,11 @@
 comment 'CLPS711X/EP721X Implementations'
 dep_bool '  AUTCPU12' CONFIG_ARCH_AUTCPU12 $CONFIG_ARCH_CLPS711X
 dep_bool '  CDB89712' CONFIG_ARCH_CDB89712 $CONFIG_ARCH_CLPS711X
-dep_bool '  CLEP7312' CONFIG_ARCH_CLEP7312 $CONFIG_ARCH_CLPS711X
+dep_bool '  PhatNoise' CONFIG_ARCH_PHATNOISE $CONFIG_ARCH_CLPS711X
+dep_bool '    PhatNoise 1.0 (select one)' CONFIG_ARCH_PHATNOISE10 $CONFIG_ARCH_PHATNOISE
+dep_bool '    PhatNoise 1.1 (select one)' CONFIG_ARCH_PHATNOISE11 $CONFIG_ARCH_PHATNOISE
+dep_bool '  Cirrus Logic EP7212' CONFIG_ARCH_EP7212 $CONFIG_ARCH_CLPS711X
+dep_bool '  Cirrus Logic EP7312' CONFIG_ARCH_EP7312 $CONFIG_ARCH_CLPS711X
 dep_bool '  EDB7211' CONFIG_ARCH_EDB7211 $CONFIG_ARCH_CLPS711X
 dep_bool '  P720T' CONFIG_ARCH_P720T $CONFIG_ARCH_CLPS711X
 dep_bool '  FORTUNET' CONFIG_ARCH_FORTUNET $CONFIG_ARCH_CLPS711X
@@ -160,8 +167,8 @@
 fi
 if [ "$CONFIG_ARCH_P720T" = "y" ]; then
    define_bool CONFIG_ARCH_EP7212 y
-else
-   define_bool CONFIG_ARCH_EP7212 n
+# else
+#   define_bool CONFIG_ARCH_EP7212 n
 fi
 
 if [ "$CONFIG_ARCH_EP7211" = "y" -o \
@@ -442,6 +449,7 @@
 if [ "$CONFIG_ARCH_EBSA110" = "y" -o         \
      "$CONFIG_ARCH_SA1100" = "y" -o          \
      "$CONFIG_ARCH_CLPS7500" = "y" -o        \
+     "$CONFIG_ARCH_CLPS711X" = "y" -o        \
      "$CONFIG_ARCH_PERSONAL_SERVER" = "y" -o \
      "$CONFIG_ARCH_CATS" = "y" -o            \
      "$CONFIG_ARCH_P720T" = "y" -o	     \
Index: arch/arm/kernel/Makefile
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/kernel/Makefile,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- arch/arm/kernel/Makefile	13 Jul 2005 05:25:00 -0000	1.1.1.2
+++ arch/arm/kernel/Makefile	13 Jul 2005 05:45:45 -0000	1.1.1.3
@@ -51,6 +51,7 @@
 
 obj-$(CONFIG_ARCH_ACORN) += ecard.o fiq.o time-acorn.o
 obj-$(CONFIG_ARCH_CLPS7500) += time-acorn.o
+obj-$(CONFIG_ARCH_CLPS711X) += fiq.o
 obj-$(CONFIG_DEBUG_LL)	+= debug-$(PROCESSOR).o
 obj-$(CONFIG_MODULES)	+= armksyms.o
 obj-$(CONFIG_ARTHUR)	+= arthur.o
Index: arch/arm/kernel/arch.c
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/kernel/arch.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- arch/arm/kernel/arch.c	13 Jul 2005 05:20:07 -0000	1.1.1.1
+++ arch/arm/kernel/arch.c	13 Jul 2005 05:45:46 -0000	1.1.1.2
@@ -149,6 +149,7 @@
 #ifdef CONFIG_ARCH_CLPS7110
 MACHINE_START(CLPS7110, "CL-PS7110")
 	MAINTAINER("Werner Almesberger")
+	BOOT_PARAMS(0xC0023000)
 	INITIRQ(genarch_init_irq)
 MACHINE_END
 #endif
Index: arch/arm/kernel/head-armv.S
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/kernel/head-armv.S,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- arch/arm/kernel/head-armv.S	13 Jul 2005 05:20:07 -0000	1.1.1.1
+++ arch/arm/kernel/head-armv.S	13 Jul 2005 05:45:46 -0000	1.1.1.2
@@ -67,6 +67,156 @@
 		.section ".text.init",#alloc,#execinstr
 		.type	stext, #function
 ENTRY(stext)
+
+	/*
+	 * Begin Phatnoise debug hack stuff...
+	 */
+#if 1
+		.equ    HwBaseAddress,          0x80000000
+		.equ    HwControl,              0x00000100
+		.equ    HwControl2,             0x00001100
+		.equ    HwControlUartEnable,    0x00000100
+		.equ    HwStatus,               0x00000140
+		.equ    HwStatus2,              0x00001140
+		.equ    HwStatusUartRxFifoEmpty,0x00400000
+		.equ    HwUartData,             0x00000480
+		.equ    HwUartData2,            0x00001480
+		.equ    HwUartDataFrameErr,     0x0100
+		.equ    HwUartDataParityErr,    0x0200
+		.equ    HwUartDataOverrunErr,   0x0400
+		.equ    HwUartControl,          0x000004C0
+		.equ    HwUartControl2,         0x000014C0
+		.equ    HwUartControlRate,      0x00000FFF
+		.equ    HwUartControlRate115200,        0x001
+		.equ    HwUartControlRate57600,         0x003
+		.equ    HwUartControlRate38400,         0x005
+		.equ    HwUartControlRate19200,         0x00B
+		.equ    HwUartControlRate9600,          0x017
+		.equ    HwUartControlRate115200_13,     0x000
+		.equ    HwUartControlRate57600_13,      0x001
+		.equ    HwUartControlRate38400_13,      0x002
+		.equ    HwUartControlRate19200_13,      0x005
+		.equ    HwUartControlRate9600_13,       0x00B
+
+		.equ    HwUartControlBreak,             0x00001000
+		.equ    HwUartControlParityEnable,      0x00002000
+		.equ    HwUartControlParityEvenOrOdd,   0x00004000
+		.equ    HwUartControlTwoStopBits,       0x00008000
+		.equ    HwUartControlFifoEnable,        0x00010000
+		.equ    HwUartControlDataLength,        0x00060000
+		.equ    HwUartControlDataLength5,       0x00000000
+		.equ    HwUartControlDataLength6,       0x00020000
+		.equ    HwUartControlDataLength7,       0x00040000
+		.equ    HwUartControlDataLength8,       0x00060000
+
+		.equ    UartValue,HwUartControlRate115200+HwUartControlDataLength8
+		.equ    UartValue_13,HwUartControlRate115200_13+HwUartControlDataLength8
+		.equ    CLKMOD, 0x40
+
+		/*
+		 *      set up the serial port
+		 */
+		mov     r12, #0x80000000
+		mov     r0, #HwControlUartEnable
+
+		/* port 1 */
+		mov	r1,#HwControl
+		str     r0,[r12, r1]
+		/* port 2 */
+		mov	r1,#HwControl2
+		str     r0,[r12, r1]
+
+		ldr     r1,=HwStatus2
+		add     r1,r1,r12
+
+
+		/*
+		 * read system flag 2
+		 */
+        	ldr     r2,[r1]
+	        tst     r2, #CLKMOD
+
+		mov	r0, #0
+		orr	r0, r0, #HwUartControlDataLength8
+
+		/*
+		 * this is 18MHz value
+		 */
+		orreq	r0, r0, #HwUartControlRate115200
+		/*
+		 * this is 13MHz value
+		 */
+		orrne	r0, r0, #HwUartControlRate115200_13
+
+		/*
+		 * write it.
+		 */
+		str     r0,[r12,#HwUartControl]
+
+		/*
+		 * print a debug message
+		 */
+#if 0
+  		mov r0, #'s'
+		str r0, [r12, #HwUartData]
+  		mov r0, #'t'
+		str r0, [r12, #HwUartData]
+  		mov r0, #'e'
+		str r0, [r12, #HwUartData]
+  		mov r0, #'x'
+		str r0, [r12, #HwUartData]
+  		mov r0, #'t'
+		str r0, [r12, #HwUartData]
+  		mov r0, #' '
+		str r0, [r12, #HwUartData]
+  		mov r0, #'0'
+		str r0, [r12, #HwUartData]
+  		mov r0, #'x'
+		str r0, [r12, #HwUartData]
+#endif
+#endif /* DEBUG */
+
+#ifdef CONFIG_ARCH_PHATNOISE10
+		mov	r1, #91			/* 91 == CLEP-7212*/
+#endif
+#ifdef CONFIG_ARCH_PHATNOISE11
+		mov	r1, #170		/* 170 == CLEP-7312*/
+#endif
+
+  		mov r0, r1 
+		mov r0, r0, lsr #4
+
+#if 0
+		cmp     r0, #10
+		addlt   r0, r0, #'0'
+		addge   r0, r0, #'A' - 10
+		str r0, [r12, #HwUartData]
+  		
+		mov r0, r1 
+		and r0, r0, #0x0F
+                cmp     r0, #10
+		addlt   r0, r0, #'0'
+		addge   r0, r0, #'A' - 10
+
+		str r0, [r12, #HwUartData]
+
+  		mov r0, #'\r'
+		str r0, [r12, #HwUartData]
+  		mov r0, #'\n'
+		str r0, [r12, #HwUartData]
+#endif /* DEBUG */
+		mov 	r0, #0
+#ifdef CONFIG_ARCH_PHATNOISE10
+		mov	r1, #91			/* 91 == CLEP-7212*/
+#endif
+#ifdef CONFIG_ARCH_PHATNOISE11
+		mov	r1, #170		/* 170 == CLEP-7312*/
+#endif
+
+	/*
+	 * End Phatnoise debug hack stuff...
+	 */
+
 		mov	r12, r0
 /*
  * NOTE!  Any code which is placed here should be done for one of
@@ -132,10 +282,33 @@
 		teq	r10, #0				@ invalid processor?
 		moveq	r0, #'p'			@ yes, error 'p'
 		beq	__error
+
+
+		/* begin phatnoise hack... */
+#if 0		
 		bl	__lookup_architecture_type
 		teq	r7, #0				@ invalid architecture?
 		moveq	r0, #'a'			@ yes, error 'a'
 		beq	__error
+#endif
+		/* 
+		 * set up registers how lookup_architecture_type would have done...
+ 		 *	r5, r6, r7 corrupted
+ 		 *	r8  = page table flags
+ 		 *	r9  = processor ID
+ 		 *	r10 = pointer to processor structure
+		 */
+
+ 		/* r5 = physical address of start of RAM
+ 		 * r6 = physical IO address
+ 		 * r7 = byte offset into page tables for IO
+ 		 * r8 = page table flags
+		 */
+
+		/* end phatnoise hack */
+
+
+
 		bl	__create_page_tables
 		adr	lr, __ret			@ return address
 		add	pc, r10, #12			@ initialise processor
@@ -322,6 +495,26 @@
  * Generally, only serious errors cause this.
  */
 __error:
+		mov r12, #0x80000000
+		mov r1, #'E'
+		str r1, [r12, #HwUartData]
+		mov r1, #'r'
+		str r1, [r12, #HwUartData]
+		mov r1, #'r'
+		str r1, [r12, #HwUartData]
+		mov r1, #'o'
+		str r1, [r12, #HwUartData]
+		mov r1, #'r'
+		str r1, [r12, #HwUartData]
+		mov r1, #' '
+		str r1, [r12, #HwUartData]
+		str r0, [r12, #HwUartData]
+		mov r1, #'\r'
+		str r1, [r12, #HwUartData]
+		mov r1, #'\n'
+		str r1, [r12, #HwUartData]
+
+
 #ifdef CONFIG_DEBUG_LL
 		mov	r8, r0				@ preserve r0
 		adr	r0, err_str
@@ -419,3 +612,6 @@
 		mov	pc, lr
 2:		ldmib	r4, {r5, r6, r7}		@ found, get results
 		mov	pc, lr
+
+
+
Index: arch/arm/kernel/setup.c
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/kernel/setup.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- arch/arm/kernel/setup.c	13 Jul 2005 05:20:07 -0000	1.1.1.1
+++ arch/arm/kernel/setup.c	13 Jul 2005 05:45:45 -0000	1.1.1.2
@@ -457,19 +457,44 @@
 	struct tag *tags = NULL;
 	struct machine_desc *mdesc;
 	char *from = default_command_line;
-
+#if CONFIG_ARCH_PHATNOISE
+	struct param_struct *p;
+#endif
 	ROOT_DEV = MKDEV(0, 255);
 
 	setup_processor();
 	mdesc = setup_architecture(machine_arch_type);
 	machine_name = mdesc->name;
 
+	printk("Machine name is: %s\n", machine_name);
+
 	if (mdesc->soft_reboot)
 		reboot_setup("s");
 
 	if (mdesc->param_offset)
 		tags = phys_to_virt(mdesc->param_offset);
 
+	printk("Param offset is: 0x%08X\n", mdesc->param_offset);
+	printk("Tags  offset is: 0x%08X\n", (unsigned int) tags);
+
+#if CONFIG_ARCH_PHATNOISE
+	p = (struct param_struct *) mdesc->param_offset;
+	p->u1.s.page_size=4096;
+	p->u1.s.nr_pages=4096;
+	p->u1.s.ramdisk_size=1024*1024;  
+	p->u1.s.flags=0;
+	p->u1.s.rootdev=0x100;
+#if CONFIG_ARCH_PHATNOISE10
+	p->u1.s.initrd_start=0xC1200000;
+#endif
+#if CONFIG_ARCH_PHATNOISE11
+	p->u1.s.initrd_start=0xC0C00000;
+#endif
+	p->u1.s.initrd_size=1024*1024;
+#endif
+
+
+
 	/*
 	 * Do the machine-specific fixups before we parse the
 	 * parameters or tags.
Index: arch/arm/mach-clps711x/Makefile
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/mach-clps711x/Makefile,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- arch/arm/mach-clps711x/Makefile	13 Jul 2005 05:25:00 -0000	1.1.1.1
+++ arch/arm/mach-clps711x/Makefile	13 Jul 2005 05:45:47 -0000	1.1.1.2
@@ -20,7 +20,7 @@
 
 obj-$(CONFIG_ARCH_AUTCPU12) += autcpu12.o
 obj-$(CONFIG_ARCH_CDB89712) += cdb89712.o
-obj-$(CONFIG_ARCH_CLEP7312) += clep7312.o
+obj-$(CONFIG_ARCH_EP7312) += clep7312.o
 obj-$(CONFIG_ARCH_EDB7211) += edb7211-arch.o edb7211-mm.o
 obj-$(CONFIG_ARCH_P720T) += p720t.o
 obj-$(CONFIG_ARCH_FORTUNET) += fortunet.o
Index: arch/arm/mach-clps711x/clep7312.c
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/mach-clps711x/clep7312.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- arch/arm/mach-clps711x/clep7312.c	13 Jul 2005 05:25:00 -0000	1.1.1.1
+++ arch/arm/mach-clps711x/clep7312.c	13 Jul 2005 05:45:47 -0000	1.1.1.2
@@ -30,6 +30,7 @@
 fixup_clep7312(struct machine_desc *desc, struct param_struct *params,
 	    char **cmdline, struct meminfo *mi)
 {
+	printk("fixup_clep7312()\n");
 	mi->nr_banks=1;
 	mi->end = 0xc0FFFFFF;
 	mi->bank[0].start = 0xc0000000;
@@ -38,10 +39,10 @@
 }
 
 
-MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312")
+MACHINE_START(CLEP7312, "Cirrus Logic 7312")
 	MAINTAINER("Nobody")
         BOOT_MEM(0xc0000000, 0x80000000, 0xff000000)
-	BOOT_PARAMS(0xc0000100)
+	BOOT_PARAMS(0xC0023000)
 	FIXUP(fixup_clep7312)
 	MAPIO(clps711x_map_io)
 	INITIRQ(clps711x_init_irq)
Index: arch/arm/mach-clps711x/edb7211-arch.c
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/mach-clps711x/edb7211-arch.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- arch/arm/mach-clps711x/edb7211-arch.c	13 Jul 2005 05:25:00 -0000	1.1.1.1
+++ arch/arm/mach-clps711x/edb7211-arch.c	13 Jul 2005 05:45:47 -0000	1.1.1.2
@@ -28,6 +28,22 @@
 extern void clps711x_init_irq(void);
 extern void edb7211_map_io(void);
 
+
+static void __init
+fixup_clep7312(struct machine_desc *desc, struct param_struct *params,
+		            char **cmdline, struct meminfo *mi)
+{
+	printk("fixup_clep7312()\n");
+	mi->nr_banks=1;
+	mi->end = 0xc0FFFFFF;
+	mi->bank[0].start = 0xc0000000;
+	mi->bank[0].size = 0x01000000;
+	mi->bank[0].node = 0;
+}
+
+
+
+
 static void __init
 fixup_edb7211(struct machine_desc *desc, struct param_struct *params,
 	      char **cmdline, struct meminfo *mi)
@@ -49,11 +65,31 @@
 	mi->nr_banks = 2;
 }
 
-MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")
-	MAINTAINER("Jon McClintock")
+#ifdef CONFIG_ARCH_PHATNOISE10
+
+MACHINE_START(EDB7211, "CL-7212 (Phatnoise v1.0)")
+	MAINTAINER("Unknown")
 	BOOT_MEM(0xc0000000, 0x80000000, 0xff000000)
-	BOOT_PARAMS(0xc0020100)	/* 0xc0000000 - 0xc001ffff can be video RAM */
+	BOOT_PARAMS(0xC0023000)	/* 0xc0000000 - 0xc001ffff can be video RAM */
 	FIXUP(fixup_edb7211)
 	MAPIO(edb7211_map_io)
 	INITIRQ(clps711x_init_irq)
 MACHINE_END
+
+#else
+
+#ifdef CONFIG_ARCH_PHATNOISE11
+
+
+MACHINE_START(EDB7211, "CL-7312 (Phatnoise v1.1)")
+	MAINTAINER("Unknown")
+	BOOT_MEM(0xc0000000, 0x80000000, 0xff000000)
+	BOOT_PARAMS(0xC0023000)	/* 0xc0000000 - 0xc001ffff can be video RAM */
+	FIXUP(fixup_clep7312)
+	MAPIO(edb7211_map_io)
+	INITIRQ(clps711x_init_irq)
+MACHINE_END
+
+
+#endif
+#endif
Index: arch/arm/mach-clps711x/edb7211-mm.c
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/mach-clps711x/edb7211-mm.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- arch/arm/mach-clps711x/edb7211-mm.c	13 Jul 2005 05:25:00 -0000	1.1.1.1
+++ arch/arm/mach-clps711x/edb7211-mm.c	13 Jul 2005 05:45:47 -0000	1.1.1.2
@@ -31,6 +31,7 @@
 
 #define MB1 1048576	/* one megabyte == size of an MMU section */
 
+
 extern void clps711x_map_io(void);
 
 /*
@@ -55,20 +56,30 @@
 static struct map_desc edb7211_io_desc[] __initdata = {
  /* virtual, physical, length, domain, r, w, c, b */
 
+#ifdef CONFIG_ARCH_7211_KEYBOARD
  /* memory-mapped extra keyboard row and CS8900A Ethernet chip */
  { EP7211_VIRT_EXTKBD, EP7211_PHYS_EXTKBD, MB1, DOMAIN_IO, 1, 1, 0, 0 }, 
  { EP7211_VIRT_CS8900A, EP7211_PHYS_CS8900A, MB1, DOMAIN_IO, 1, 1, 0, 0 },
+#endif
+
+#ifdef CONFIG_ARCH_PHATNOISE
+ { PHAT_VIRT_IDE, PHAT_PHYS_IDE, MB1, DOMAIN_IO, 0, 1, 0, 0,},
+#endif
 
+#ifdef CONFIG_ARCH_7211_FLASH
  /* flash banks */
  { EP7211_VIRT_FLASH1, EP7211_PHYS_FLASH1, MB1 * 8, DOMAIN_KERNEL, 1, 1, 0, 0 },
  { EP7211_VIRT_FLASH2, EP7211_PHYS_FLASH2, MB1 * 8, DOMAIN_KERNEL, 1, 1, 0, 0 },
+#endif
 
  LAST_DESC
 };
 
 void __init edb7211_map_io(void)
 {
+	printk(KERN_WARNING "edb7211_map_io()\n");
         clps711x_map_io();
         iotable_init(edb7211_io_desc);
 }
 
+
Index: arch/arm/mach-clps711x/irq.c
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/mach-clps711x/irq.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- arch/arm/mach-clps711x/irq.c	13 Jul 2005 05:25:00 -0000	1.1.1.1
+++ arch/arm/mach-clps711x/irq.c	13 Jul 2005 05:45:47 -0000	1.1.1.2
@@ -24,6 +24,8 @@
 #include <asm/io.h>
 #include <asm/irq.h>
 
+
+
 #include <asm/hardware/clps7111.h>
 
 static void mask_irq_int1(unsigned int irq)
@@ -44,6 +46,12 @@
 	clps_writel(intmr1, INTMR1);
 
 	switch (irq) {
+		/* fiq's */
+	case IRQ_EXTFIQ: break;
+	case IRQ_BLINT:	 clps_writel(0, BLEOI);  break;
+	case IRQ_WEINT:	 break;
+	case IRQ_MCINT:  clps_writel(0, MCEOI);  break;
+		/* irq's */
 	case IRQ_CSINT:  clps_writel(0, COEOI);  break;
 	case IRQ_TC1OI:  clps_writel(0, TC1EOI); break;
 	case IRQ_TC2OI:  clps_writel(0, TC2EOI); break;
@@ -87,16 +95,56 @@
 static void unmask_irq_int2(unsigned int irq)
 {
 	u32 intmr2;
-
 	intmr2 = clps_readl(INTMR2);
 	intmr2 |= 1 << (irq - 16);
 	clps_writel(intmr2, INTMR2);
 }
 
+static void mask_fiq(unsigned int irq)
+{
+	u32 intmr3;
+	intmr3 = clps_readl(INTMR3);
+	intmr3 &= ~1;
+	clps_writel(intmr3, INTMR3);
+}
+
+static void mask_ack_fiq(unsigned int irq)
+{
+	u32 intmr3;
+#if CONFIG_ARCH_EP7212
+	u32 daisr;
+#endif
+	
+	intmr3 = clps_readl(INTMR3);
+	intmr3 &= ~1;
+	clps_writel(intmr3, INTMR3);
+
+
+#if CONFIG_ARCH_EP7212
+	/*
+	 * Read DAI status register.
+	 */
+	daisr = clps_readl(DAISR);
+#endif
+}
+
+static void unmask_fiq(unsigned int irq)
+{
+	u32 intmr3;
+	intmr3 = clps_readl(INTMR3);
+	intmr3 |= 1;
+	clps_writel(intmr3, INTMR3);
+}
+
+extern void init_FIQ(void);
+
 void __init clps711x_init_irq(void)
 {
 	unsigned int i;
 
+	printk("clps711x_init_irq() begin NR_IRQS = %d\n", NR_IRQS);
+
+
 	for (i = 0; i < NR_IRQS; i++) {
 	        if (INT1_IRQS & (1 << i)) {
 		        irq_desc[i].valid	= 1;
@@ -116,6 +164,13 @@
 			irq_desc[i].mask	= mask_irq_int2;
 			irq_desc[i].unmask	= unmask_irq_int2;
 		}			
+		if (i >= FIQ_START) {
+			irq_desc[i].valid = 1;
+			irq_desc[i].probe_ok = 1;
+			irq_desc[i].mask_ack	= mask_ack_fiq;
+			irq_desc[i].mask	= mask_fiq;
+			irq_desc[i].unmask	= unmask_fiq;
+		}
 	}
 
 	/*
@@ -123,6 +178,7 @@
 	 */
 	clps_writel(0, INTMR1);
 	clps_writel(0, INTMR2);
+	clps_writel(0, INTMR3);
 
 	/*
 	 * Clear down any pending interrupts
@@ -131,8 +187,20 @@
 	clps_writel(0, TC1EOI);
 	clps_writel(0, TC2EOI);
 	clps_writel(0, RTCEOI);
+	clps_writel(0, BLEOI);
+	clps_writel(0, MCEOI);
 	clps_writel(0, TEOI);
 	clps_writel(0, UMSEOI);
 	clps_writel(0, SYNCIO);
 	clps_writel(0, KBDEOI);
+
+	clps_writel(0xFFFFFFFF, DAISR);
+
+	/*
+	 * init FIQ
+	 */
+	init_FIQ();
+	
+	printk("clps711x_init_irq() end\n");
 }
+
Index: arch/arm/mach-clps711x/time.c
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/mach-clps711x/time.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- arch/arm/mach-clps711x/time.c	13 Jul 2005 05:25:00 -0000	1.1.1.1
+++ arch/arm/mach-clps711x/time.c	13 Jul 2005 05:45:47 -0000	1.1.1.2
@@ -22,6 +22,7 @@
 #include <asm/hardware.h>
 #include <asm/io.h>
 #include <asm/hardware/clps7111.h>
+#include <asm/hardware/ep7212.h>
 
 extern unsigned long (*gettimeoffset)(void);
 
@@ -29,6 +30,11 @@
  * gettimeoffset() returns time since last timer tick, in usecs.
  *
  * 'LATCH' is hwclock ticks (see CLOCK_TICK_RATE in timex.h) per jiffy.
+ *
+ *
+ *  actually, LATCH == ((CLOCK_TICK_RATE + HZ/2) / HZ)
+ *
+ *
  * 'tick' is usecs per jiffy.
  */
 static unsigned long clps711x_gettimeoffset(void)
@@ -40,15 +46,24 @@
 
 void __init clps711x_setup_timer(void)
 {
-	unsigned int syscon;
+	unsigned int syscon1;
 
 	gettimeoffset = clps711x_gettimeoffset;
 
-	syscon = clps_readl(SYSCON1);
-	syscon |= SYSCON1_TC2S | SYSCON1_TC2M;
-	clps_writel(syscon, SYSCON1);
+	printk("clps711x_setup_timer() SYSCON1 = 0x%08x adding TC2S and TC2M bits\n", 
+			(unsigned) IO_SYSCON1);
+
+	syscon1 = clps_readl(SYSCON1);
+	syscon1 |= SYSCON1_TC2S | SYSCON1_TC2M;
+	clps_writel(syscon1, SYSCON1);
+
+	printk("clps711x_setup_timer() SYSCON1 = 0x%08x\n", (unsigned) IO_SYSCON1);
+	printk("clps711x_setup_timer() SYSCON2 = 0x%08x\n", (unsigned) IO_SYSCON2);
+	printk("clps711x_setup_timer() SYSCON3 = 0x%08x\n", (unsigned) IO_SYSCON3);
 
 	clps_writel(LATCH-1, TC2D); /* 512kHz / 100Hz - 1 */
 
 	xtime.tv_sec = clps_readl(RTCDR);
 }
+
+
Index: arch/arm/tools/mach-types
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/arch/arm/tools/mach-types,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- arch/arm/tools/mach-types	13 Jul 2005 05:24:59 -0000	1.1.1.2
+++ arch/arm/tools/mach-types	13 Jul 2005 05:45:44 -0000	1.1.1.3
@@ -178,3 +178,4 @@
 jornada56x		ARCH_JORNADA56X		JORNADA56X		167
 active			SA1100_ACTIVE		ACTIVE			168
 iq80321			ARCH_IQ80321		IQ80321			169
+clep7312		ARCH_CLEP7312		CLEP7312		170
Index: drivers/Makefile
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/drivers/Makefile,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- drivers/Makefile	13 Jul 2005 05:25:31 -0000	1.1.1.2
+++ drivers/Makefile	13 Jul 2005 05:46:30 -0000	1.1.1.3
@@ -10,7 +10,7 @@
 		message/i2o message/fusion scsi md ieee1394 pnp isdn atm \
 		fc4 net/hamradio i2c l3 acpi bluetooth serial
 
-subdir-y :=	parport serial char block net sound misc media cdrom hotplug
+subdir-y :=	parport serial char block net sound misc cdrom hotplug
 subdir-m :=	$(subdir-y)
 
 
Index: drivers/char/Config.in
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/drivers/char/Config.in,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- drivers/char/Config.in	13 Jul 2005 05:26:01 -0000	1.1.1.2
+++ drivers/char/Config.in	13 Jul 2005 05:47:14 -0000	1.1.1.3
@@ -4,6 +4,9 @@
 mainmenu_option next_comment
 comment 'Character devices'
 
+bool 'Cirrus Logic EP7x12 Audio Driver' CONFIG_AUDIO_EP7x12
+
+
 bool 'Virtual terminal' CONFIG_VT
 if [ "$CONFIG_VT" = "y" ]; then
    bool '  Support for console on virtual terminal' CONFIG_VT_CONSOLE
Index: drivers/ide/ide.c
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/drivers/ide/ide.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- drivers/ide/ide.c	13 Jul 2005 05:25:33 -0000	1.1.1.2
+++ drivers/ide/ide.c	13 Jul 2005 05:46:34 -0000	1.1.1.3
@@ -146,7 +146,6 @@
 #endif /* MODULE */
 #include <linux/pci.h>
 #include <linux/delay.h>
-#include <linux/ide.h>
 #include <linux/devfs_fs_kernel.h>
 #include <linux/completion.h>
 
@@ -162,7 +161,21 @@
 #include <linux/kmod.h>
 #endif /* CONFIG_KMOD */
 
-/* default maximum number of failures */
+#include <linux/ide.h>
+
+#define IDE_PROBE_DEBUG 0
+#if IDE_PROBE_DEBUG
+#define PRINTK(format, args...) \
+	do {\
+		printf(format , ## args);\
+	} while (0)
+#else
+#define PRINTK(format, args...) do { } while (0)
+#endif
+
+ 
+ 
+ /* default maximum number of failures */
 #define IDE_DEFAULT_MAX_FAILURES 	1
 
 static const byte ide_hwif_to_major[] = { IDE0_MAJOR, IDE1_MAJOR, IDE2_MAJOR, IDE3_MAJOR, IDE4_MAJOR, IDE5_MAJOR, IDE6_MAJOR, IDE7_MAJOR, IDE8_MAJOR, IDE9_MAJOR };
@@ -238,6 +251,10 @@
 	/* fill in any non-zero initial values */
 	hwif->index     = index;
 	hwif->noprobe	= 1;
+#if 0 && CONFIG_ARCH_PHATNOISE
+	/* Phatnoise has only one hwif */
+	hwif->noprobe	= 0;
+#endif
 	hwif->major	= ide_hwif_to_major[index];
 	hwif->name[0]	= 'i';
 	hwif->name[1]	= 'd';
@@ -246,7 +263,9 @@
 	hwif->bus_state = BUSSTATE_ON;
 	for (unit = 0; unit < MAX_DRIVES; ++unit) {
 		ide_drive_t *drive = &hwif->drives[unit];
-
+#if 0 && CONFIG_ARCH_PHATNOISE
+		drive->slow			= 1;
+#endif
 		drive->media			= ide_disk;
 		drive->select.all		= (unit<<4)|0xa0;
 		drive->hwif			= hwif;
@@ -305,6 +324,8 @@
 	unsigned int index;
 	static unsigned long magic_cookie = MAGIC_COOKIE;
 
+	//printk(KERN_WARNING "init_ide_data() begin\n");
+
 	if (magic_cookie != MAGIC_COOKIE)
 		return;		/* already initialized */
 	magic_cookie = 0;
@@ -322,10 +343,18 @@
 	for (index = 0; index < MAX_HWIFS; ++index)
 		if (ide_hwifs[index].hw.io_ports[IDE_DATA_OFFSET] == HD_DATA)
 			hwif->noprobe = 1; /* may be overridden by ide_setup() */
+#if 0 
+#ifdef	CONFIG_ARCH_PHATNOISE
+		hwif->noprobe = 1;
+#endif
+#endif
+
 #endif /* CONFIG_BLK_DEV_HD */
 
 	idebus_parameter = 0;
 	system_bus_speed = 0;
+	
+	//printk(KERN_WARNING "init_ide_data() end\n");
 }
 
 /*
@@ -1680,6 +1709,8 @@
 	ide_handler_t *handler;
 	ide_startstop_t startstop;
 
+	//printk("ide_intr()\n");
+
 	spin_lock_irqsave(&io_request_lock, flags);
 	hwif = hwgroup->hwif;
 
@@ -2606,6 +2637,8 @@
 #endif /* CONFIG_BLK_DEV_IDECS */
 }
 
+
+
 int system_bus_clock (void)
 {
 	return((int) ((!system_bus_speed) ? ide_system_bus_speed() : system_bus_speed ));
@@ -3332,6 +3365,7 @@
  */
 static void __init probe_for_hwifs (void)
 {
+	//printk(KERN_WARNING "probe_for_hwifs() begin\n");
 #ifdef CONFIG_PCI
 	if (pci_present())
 	{
@@ -3420,6 +3454,7 @@
 		pnpide_init(1);
 	}
 #endif /* CONFIG_BLK_DEV_ISAPNP */
+	//printk(KERN_WARNING "probe_for_hwifs() end\n");
 }
 
 void __init ide_init_builtin_drivers (void)
@@ -3427,6 +3462,8 @@
 	/*
 	 * Probe for special PCI and other "known" interface chipsets
 	 */
+	PRINTK(KERN_WARNING "ide_init_builtin_drivers() begin\n");
+
 	probe_for_hwifs ();
 
 #ifdef CONFIG_BLK_DEV_IDE
@@ -3741,8 +3778,10 @@
 	static char banner_printed;
 	int i;
 
+	PRINTK(KERN_WARNING "ide_init() begin\n");
+
 	if (!banner_printed) {
-		printk(KERN_INFO "Uniform Multi-Platform E-IDE driver " REVISION "\n");
+		PRINTK(KERN_INFO "Uniform Multi-Platform E-IDE driver " REVISION "\n");
 		ide_devfs_handle = devfs_mk_dir (NULL, "ide", NULL);
 		system_bus_speed = ide_system_bus_speed();
 		banner_printed = 1;
@@ -3760,6 +3799,8 @@
 			ide_geninit(hwif);
 	}
 
+	PRINTK(KERN_WARNING "ide_init() end\n");
+
 	return 0;
 }
 
Index: drivers/misc/Config.in
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/drivers/misc/Config.in,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- drivers/misc/Config.in	13 Jul 2005 05:26:10 -0000	1.1.1.2
+++ drivers/misc/Config.in	13 Jul 2005 05:47:26 -0000	1.1.1.3
@@ -1,9 +1,14 @@
 #
 # MCP drivers
 #
+bool 'Cirrus Logic DAI device driver' CONFIG_CIRRUS_DAI
+bool 'PhatNoise board version abstraction' CONFIG_PHATNOISE_BOARD
+
+
 mainmenu_option next_comment
 comment 'Multimedia Capabilities Port drivers'
 
+
 bool 'Multimedia drivers' CONFIG_MCP
 
 # Interface drivers
@@ -15,3 +20,4 @@
 dep_tristate '  Touchscreen interface support' CONFIG_MCP_UCB1200_TS $CONFIG_MCP_UCB1200
 
 endmenu
+
Index: drivers/misc/Makefile
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/drivers/misc/Makefile,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- drivers/misc/Makefile	13 Jul 2005 05:26:10 -0000	1.1.1.2
+++ drivers/misc/Makefile	13 Jul 2005 05:47:26 -0000	1.1.1.3
@@ -19,6 +19,13 @@
 obj-$(CONFIG_MCP_UCB1200_AUDIO)	+= ucb1x00-audio.o
 obj-$(CONFIG_MCP_UCB1200_TS)	+= ucb1x00-ts.o
 
+obj-$(CONFIG_CIRRUS_DAI)	+= cirrus_dai.o cirrus_dai_fiq.o
+obj-$(CONFIG_PHATNOISE_BOARD)	+= pn_board.o
+
 include $(TOPDIR)/Rules.make
 
 fastdep:
+
+
+%.o: %.S
+	$(CC) $(CFLAGS) -D__ASSEMBLY__ -c -o $@ $<
Index: drivers/misc/cirrus_dai.c
===================================================================
RCS file: drivers/misc/cirrus_dai.c
diff -N drivers/misc/cirrus_dai.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ drivers/misc/cirrus_dai.c	13 Jul 2005 05:47:26 -0000	1.1.1.1
@@ -0,0 +1,553 @@
+/*
+ * audio_ep7x12.c - Cirrus Logic EP7x1x DAI interface
+ */
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <linux/init.h>
+#include <linux/tqueue.h>
+#include <asm/hardware.h>
+#include <asm/io.h>
+#include <asm/system.h>
+#include <asm/bitops.h>
+#include <asm/irq.h>
+#include <asm/fiq.h>
+#include <asm/uaccess.h>
+#include <asm/delay.h>
+#include <asm/arch/hardware.h>
+#include <asm/hardware/ep7212.h>
+
+#include <linux/soundcard.h>
+#include <linux/interrupt.h>
+
+
+#define DEBUG_DAI 0
+
+
+#define DAI_MAJOR     14
+
+#define DAI_FIQ 0
+
+#if 0
+#define DISABLE_DAI()   do { disable_fiq(DAI_FIQ); } while(0)
+#define ENABLE_DAI()    do { enable_fiq(DAI_FIQ); } while(0)
+#else
+#define DISABLE_DAI()   do { cli(); IO_INTMR3=0; } while(0)
+#define ENABLE_DAI()    do { IO_INTMR3=1; sti(); } while(0)
+#endif
+
+
+/* 
+ * this is how many bytes at a time we can take.  4 samples, stereo, 16-bit (16 bytes).
+ */
+#define BUF_INCR    0x00000010
+#define INCR_MASK   0x001FFFF0
+
+#define BUF_SIZE    0x00200000
+#define BUF_MASK    0x001FFFFF
+
+/*
+ * this is the max number of bytes that can be in the buffer.
+ */
+#define BUF_MAX     (BUF_SIZE - BUF_INCR)
+
+
+static int dai_major;
+
+char dai_buf[BUF_SIZE] __attribute__ ((aligned(BUF_INCR)));
+
+volatile int dai_readp;
+volatile int dai_writep;
+
+int dai_wait_size=0;		/* block of free data that process is waiting to write */
+
+/* list of waiting processes... */
+DECLARE_WAIT_QUEUE_HEAD(dai_wait);
+
+/* task for checking waiting processes and buffer level */
+struct tq_struct dai_task;
+
+#if DEBUG_DAI
+/* task for checking underflow status... */
+struct tq_struct dai_debug_task;
+volatile int dai_underflow=0;
+int dai_old_underflow=0;
+void dai_debug_task_routine(void *data);
+struct tq_struct dai_debug_task;
+#endif 
+
+
+/* which queue should we use */
+#define DAI_TASK_QUEUE (&tq_timer)
+
+
+void dai_task_routine(void *data);
+
+
+/* struct fiq_handler { 
+ * 	struct fiq_handler *next, 
+ * 	char *name,
+ * 	int (*fiq_op)(void *, int relinquish),
+ * 	void *dev_id;
+ */
+static struct fiq_handler dai_fh = { NULL, "DAI", NULL, NULL };
+extern unsigned char dai_start, dai_end;
+
+
+#define SP_SIZE 32
+
+unsigned char dai_sp[SP_SIZE] __attribute__ ((aligned(4)));;
+
+volatile char *dai_flags;
+
+
+static void dai_init(void)
+{
+	struct pt_regs regs;
+
+	/*
+	 * make sure FIQ is disabled first.
+	 */
+	DISABLE_DAI();
+
+	printk(KERN_INFO "DAI: dai_init() initializing stuff\n");
+
+	dai_flags = &dai_sp[SP_SIZE];
+	memset(dai_buf, 0, BUF_SIZE);
+	dai_readp = dai_writep = 0;
+
+	get_fiq_regs(&regs);
+	regs.ARM_r8	= (int) dai_buf;
+	regs.ARM_r9	= 0;	/* scratch */
+	regs.ARM_r10	= 0;	/* counts from zero to BUF_SIZE */
+	//regs.ARM_fp	= 0;           /* r11 */
+	regs.ARM_ip	= IO_BASE + DAIR;  /*0xff002000;*/	/* r12 */
+	printk("DAI: regs.ARM_ip = 0x%08x\n", (unsigned int) regs.ARM_ip);
+	regs.ARM_sp	= (int) dai_flags;
+	set_fiq_regs(&regs);
+
+
+	if (claim_fiq(&dai_fh)) {
+		printk(KERN_WARNING "DAI: dai_init() couldn't claim FIQ.\n");
+		return;
+	}
+
+	printk(KERN_INFO "DAI: dai_init() setting fiq handler\n");
+	set_fiq_handler(&dai_start, &dai_end - &dai_start);
+
+	/*
+	 * Set up SYSCON3 and DAI64FS (if 7312)
+	 */
+	
+	printk(KERN_INFO "DAI: dai_init() SYSCON1 (0x%08x)\n", (unsigned int) IO_SYSCON1);
+	printk(KERN_INFO "DAI: dai_init() SYSCON2 (0x%08x)\n", (unsigned int) IO_SYSCON2);
+	printk(KERN_INFO "DAI: dai_init() SYSCON3 (0x%08x)\n", (unsigned int) IO_SYSCON3);
+	printk(KERN_INFO "DAI: dai_init() INTMR1  (0x%08x)\n", (unsigned int) IO_INTMR1);
+	printk(KERN_INFO "DAI: dai_init() INTMR2  (0x%08x)\n", (unsigned int) IO_INTMR2);
+	printk(KERN_INFO "DAI: dai_init() INTMR3  (0x%08x)\n", (unsigned int) IO_INTMR3);
+	printk(KERN_INFO "DAI: dai_init() DAISR   (0x%08x)\n", (unsigned int) IO_DAISR);
+	printk(KERN_INFO "DAI: dai_init() DAI64FS (0x%08X)\n", (unsigned int) IO_DAI64FS);
+
+#define PHAT_64FS 0
+
+#if PHAT_64FS
+	IO_SYSCON3 |= SYSCON3_DAISEL;
+	IO_SYSCON3 &= ~(1<<9);
+	IO_DAI64FS |=	(2 << 8) | 
+			DAI64FS_MCLK256EN | 
+			DAI64FS_AUDCLKSRC | 
+			DAI64FS_AUDCLKEN | 
+			DAI64FS_I2SF64;
+#else
+	IO_SYSCON3 |= SYSCON3_DAISEL | SYSCON3_DAIEN;
+#endif
+
+	printk(KERN_INFO "DAI: dai_init() setting PE.1\n");
+
+	/*
+	 * Turn on the external 11.2896MHz clock
+	 */
+#define COPWR 1
+	IO_PEDDR |= COPWR;
+	IO_PEDR |= COPWR;
+	
+	printk(KERN_INFO "DAI: dai_init() setting DAI Control Register\n");
+	/*
+	 * DAI control register, 
+	 * external clock source (ECS), 
+	 * right channel transmit mask (RTCM).
+	 */
+	IO_DAIR = 0x0404 | DAIR_ECS | DAIR_RCTM; 
+
+	/*
+	 * Clear the overrun and underrun bits 
+	 * in the DAI status register
+	 */
+	printk(KERN_INFO "DAI: dai_init() clearing DAI status register bits\n");
+	IO_DAISR = 0xffffffff;
+
+
+	printk(KERN_INFO "DAI: dai_init() setting DAIR_DAIEN\n");
+	/*
+	 * Enable DAI interface
+	 */
+	IO_DAIR |= DAIR_DAIEN;
+	while (!(IO_DAISR & DAISR_FIFO)) {
+	}
+
+	/*
+	 * Enable the FIFOs for the left and right channels.
+	 *
+	 * Left Channel.
+	 */
+	IO_DAIDR2 = DAIDR2_FIFOEN | DAIDR2_FIFOLEFT;
+	while (!(IO_DAISR & DAISR_FIFO)) {
+	}
+	/*
+	 * Right Channel.
+	 */
+	IO_DAIDR2 = DAIDR2_FIFOEN | DAIDR2_FIFORIGHT;
+	while (!(IO_DAISR & DAISR_FIFO)) {
+	}
+	
+	IO_DAIDR1 = 0;
+	IO_DAIDR0 = 0;
+	IO_DAIDR1 = 0;
+	IO_DAIDR0 = 0;
+	IO_DAIDR1 = 0;
+	IO_DAIDR0 = 0;
+	IO_DAIDR1 = 0;
+	IO_DAIDR0 = 0;
+	IO_DAIDR1 = 0;
+	IO_DAIDR0 = 0;
+	IO_DAIDR1 = 0;
+	IO_DAIDR0 = 0;
+	IO_DAIDR1 = 0;
+	IO_DAIDR0 = 0;
+	IO_DAIDR1 = 0;
+	IO_DAIDR0 = 0;
+	
+	printk(KERN_INFO "DAI: dai_init() DAISR = 0x%08x\n", (unsigned int) IO_DAISR);
+	
+	printk(KERN_INFO "DAI: dai_init() adding routine to task queue\n");
+	dai_task.routine = dai_task_routine;
+	dai_task.data = NULL;
+	queue_task(&dai_task, DAI_TASK_QUEUE);
+
+
+#if DEBUG_DAI
+	printk(KERN_INFO "DAI: dai_init() adding debug task routine\n");
+	dai_debug_task.routine = dai_debug_task_routine;
+	dai_debug_task.data = NULL;
+	queue_task(&dai_debug_task, DAI_TASK_QUEUE);
+#endif
+
+	/*
+	 * unmask the DAI interrupt
+	 */
+	printk(KERN_INFO "DAI: dai_init() enabling DAI interrupt\n");
+
+	/*
+	 * Enable bit in INTMR3
+	 */
+	ENABLE_DAI();
+}
+
+#if DEBUG_DAI
+void dai_debug_task_routine(void *data)
+{
+	if (dai_underflow && !dai_old_underflow) {
+		printk("DAI: buffer underflow!  skip dectected!\n");
+	}
+
+	dai_old_underflow = dai_underflow;
+
+	/* enqueue ourselves again */
+	queue_task(&dai_debug_task, DAI_TASK_QUEUE);
+}
+
+#endif
+
+
+
+void dai_task_routine(void *data)
+{
+	int readp;
+	int avail;
+
+	if (dai_wait_size) {
+		readp = dai_readp;
+		if (readp == dai_writep) {
+			/* empty case */
+			avail = BUF_MAX;
+		}
+		else if (readp < dai_writep) {
+			avail = BUF_MAX - dai_writep + readp;
+		}
+		else {
+			avail = readp - dai_writep - BUF_INCR;
+		}
+		if (avail >= dai_wait_size) {
+			/*
+			 * wake up waiting process.
+			 */
+			dai_wait_size = 0;
+			wake_up_interruptible(&dai_wait);
+		}
+	}
+	/* enqueue ourselves again */
+	queue_task(&dai_task, DAI_TASK_QUEUE);
+}
+
+
+static ssize_t dai_write(struct file *file,
+			 const char *buffer, size_t count, loff_t * loff)
+{
+	int to_copy;
+	int this_copy;
+	int readp;
+	int avail;
+
+	//printk(KERN_DEBUG "dai: write(count = %d)\n", count);
+
+	/*
+	 * should always always always write a multiple of 4 stereo 16 bit samples
+	 * (i.e., 16 bytes).
+	 */
+
+	count &= INCR_MASK;
+	
+	/* 
+	 * Figure out how much space we have available
+	 */
+
+dai_write_test_count:
+	readp = dai_readp;
+	if (readp == dai_writep) {
+		/* empty case */
+		avail = BUF_MAX;
+	}
+	else if (readp < dai_writep) {
+		avail = BUF_MAX - dai_writep + readp;
+	}
+	else {
+		avail = readp - dai_writep - BUF_INCR;
+	}
+
+	/*
+	 * if we can't write the whole chunk, then tell the app to try again later.
+	 */
+	if (avail < count) {
+		if (file->f_flags & O_NONBLOCK) 
+			return -EAGAIN;
+		else {
+			/*
+			 * put process to sleep.
+			 */
+			dai_wait_size = count;
+			interruptible_sleep_on(&dai_wait);
+			goto dai_write_test_count;
+		}
+	}
+
+	/*
+	 * copy.
+	 */
+	to_copy = count;
+
+	while (to_copy > 0) {
+		if ((dai_writep + to_copy) > BUF_SIZE)
+			this_copy = BUF_SIZE - dai_writep;
+		else
+			this_copy = to_copy;
+
+		copy_from_user(dai_buf + dai_writep, buffer, this_copy);
+
+		buffer += this_copy;
+		to_copy -= this_copy;
+
+		/* This is the critical part. */
+		DISABLE_DAI();
+#if DEBUG_DAI
+		dai_underflow=0;
+#endif
+		dai_writep += this_copy;
+		if (dai_writep >= BUF_SIZE)
+			dai_writep = 0;
+		ENABLE_DAI();
+	}
+	return count;
+}
+
+
+static int dai_open(struct inode *inode, struct file *file)
+{
+	//printk(KERN_DEBUG "dai: open()\n");
+	return 0;
+}
+
+#if PHAT_USE_WAIT_QUEUE
+static int dai_flush(struct inode *inode, struct file *file)
+{
+	//interruptible_sleep_on(&flush_queue);
+
+	return wait_event_interruptible(flush_queue,
+					(dai_readp == dai_writep));
+}
+#endif
+
+
+
+static int dai_release(struct inode *inode, struct file *file)
+{
+	//printk(KERN_DEBUG "dai: release()\n");
+	return 0;
+}
+
+
+static void dai_clear(struct inode *inode, struct file *file)
+{
+	//printk(KERN_DEBUG "dai: clear()\n");
+	short *daidata;
+
+	DISABLE_DAI();
+	/*
+	 * This clears the buffer of pending data.
+	 */
+	dai_writep = dai_readp;
+
+	/*
+	 * The following code is to "smooth out" the discontinuity created in the output.
+	 */
+	daidata = (short *) &dai_buf[dai_writep];
+	daidata[0] /= 2;
+	daidata[1] /= 2;
+	daidata[2] = daidata[0] / 2;
+	daidata[3] = daidata[1] / 2;
+	daidata[4] = daidata[2] / 2;
+	daidata[5] = daidata[3] / 2;
+	daidata[6] = daidata[4] / 2;
+	daidata[7] = daidata[5] / 2;
+	dai_writep += 16;
+	if (dai_writep >= BUF_SIZE)
+		dai_writep = 0;
+
+	ENABLE_DAI();
+}
+
+
+
+static int dai_ioctl(struct inode *inode,
+		     struct file *file, uint command, ulong arg)
+{
+	int val;
+	switch (command) {
+	case SNDCTL_DSP_GETFMTS:
+		put_user(AFMT_U16_LE, (long *) arg);
+		break;
+	case SNDCTL_DSP_SPEED:
+		/*
+		 * Use this to set 64fs mode.
+		 */
+		if (get_user(val, (int *)arg))
+			return -EFAULT;
+
+		DISABLE_DAI();
+		IO_SYSCON3 |= SYSCON3_DAISEL;
+		IO_SYSCON3 &= ~(1<<9);
+		IO_DAI64FS |=	(2 << 8) | DAI64FS_MCLK256EN | 
+			DAI64FS_AUDCLKSRC | DAI64FS_AUDCLKEN | 
+			DAI64FS_I2SF64;
+		ENABLE_DAI();
+		break;
+	case SNDCTL_DSP_STEREO:
+	case SNDCTL_DSP_SETFMT:
+		break;
+	case SNDCTL_DSP_RESET:
+		/*
+		 * clear buffers immediately.
+		 */
+		dai_clear(inode, file);
+		break;
+	case SNDCTL_DSP_SYNC:
+		/*
+		 * Send a value to the user.  
+		 *
+		 * 0 if buffer is empty
+		 * 1 if buffer contains data.
+		 */
+		if (get_user(val, (long *) arg)) val = 0;
+		if (val) {
+		  if (dai_readp < dai_writep) {
+		    val = (dai_readp + val) < dai_writep;
+		  } else if (dai_readp > dai_writep) {
+		    val = (dai_readp + val) < (dai_writep+BUF_SIZE);
+		  } else {
+		    val = 0;
+		  }
+		} else {
+		  val = dai_readp != dai_writep;
+		}
+		put_user(val, (long *) arg);
+		break;
+	case SNDCTL_DSP_GETBLKSIZE:
+		put_user(BUF_SIZE, (long *) arg);
+		break;
+	case SNDCTL_DSP_SETFRAGMENT:
+		get_user(val, (long *) arg);
+		break;
+	case SOUND_MIXER_READ_VOLUME:
+		put_user(128, (long *) arg);
+		break;
+	case SOUND_MIXER_READ_PCM:
+		put_user(128, (long *) arg);
+		break;
+	case SNDCTL_DSP_GETCAPS:
+		put_user(DSP_CAP_REALTIME, (long *) arg);
+		break;
+	case SNDCTL_DSP_GETOSPACE:
+		if (dai_readp == dai_writep) val = 0;
+		else if (dai_readp < dai_writep) val = dai_writep-dai_readp;
+		else val = dai_writep+BUF_SIZE-dai_readp;
+		val = BUF_SIZE - val;
+		put_user(val, (long *) arg);
+		break;
+	default:
+		return 0;
+		//return -EINVAL;
+	}
+	/*
+	 * 0 == all good.
+	 */
+	return 0;
+}
+
+
+struct file_operations dai_fops = {
+	write:		dai_write,
+	ioctl:		dai_ioctl,
+	open:		dai_open,
+	release:	dai_release,
+};
+
+
+static int __init audio_7110_init(void) 
+{
+	printk(KERN_INFO "DAI: Version 1.2\n");
+
+	dai_major = register_chrdev(DAI_MAJOR, "dai", &dai_fops);
+
+	if (dai_major) {
+		printk(KERN_WARNING "DAI: unable to get major %d\n", DAI_MAJOR);
+	}
+	else {
+		dai_major = DAI_MAJOR;
+		printk(KERN_INFO "DAI: major %d\n", dai_major);
+		dai_init();
+	}
+	return 0;
+}
+
+
+module_init(audio_7110_init);
+
Index: drivers/misc/cirrus_dai_fiq.S
===================================================================
RCS file: drivers/misc/cirrus_dai_fiq.S
diff -N drivers/misc/cirrus_dai_fiq.S
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ drivers/misc/cirrus_dai_fiq.S	13 Jul 2005 05:47:26 -0000	1.1.1.1
@@ -0,0 +1,160 @@
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/arch/hardware.h>
+
+#define DEBUG_UNDERFLOW 0
+
+
+
+#define BUF_SIZE 0x00200000	
+#define BUF_MASK 0x001FFFFF
+	/*
+	 * When the FIQ is initialized,
+	 *
+	 * r8_fiq  = ...            (read pointer, gets incremented)
+	 * r9_fiq  = ...            (scratch...)
+	 * r10_fiq = 0              (counts up to BUF_SIZE, this is mcp_readp)
+	 * r11_fiq = ...            (scratch...)
+	 * r12_fiq = 0xFF002000     (DAI registers within memory mapped by mmu)
+	 * r13 = sp, stack pointer.  don't fuck with this.
+	 * r14 = lr.  don't fuck with this either.
+	 * r15 = pc.  definately don't fuck with the program counter.
+	 *
+	 * Note that the registers here are persistant from one 
+	 * invocation of the FIQ to the next.  
+	 *
+	 */
+
+	/*
+	 *  This is what we need to do.
+	 *
+	 * If we have data to play, then write 4 samples to each left and then right channels
+	 * UNTIL both FIFO's are half-full  (this part is important and probably where the current
+	 * failure is).
+	 *
+	 * If there is no data, write zeros.  
+	 * 
+	 * Read 4 samples from receive buffer regardless.
+	 *
+	 * Clear overrun and underrun status bits in DAI status register.  
+	 */
+
+	.text
+	.global	SYMBOL_NAME(dai_end)
+ENTRY(dai_start)	
+
+dai_start:	
+	# is readp == writep?
+	ldr	r11, .dai_writep
+	ldr	r9, [r11]
+
+	# yes?  
+	cmp	r10, r9
+	beq	play_silent
+
+play_from_buffer:	
+//
+//  Read 4 samples from buffer and write them to the FIFO
+//
+	ldrh	r11, [r8, r10]
+	str	r11, [r12, #0x80]
+	add	r10, r10, #2
+	
+	ldrh	r11, [r8, r10]
+	str	r11, [r12, #0x40]
+	add	r10, r10, #2
+	
+	ldrh	r11, [r8, r10]
+	str	r11, [r12, #0x80]
+	add	r10, r10, #2
+	
+	ldrh	r11, [r8, r10]
+	str	r11, [r12, #0x40]
+	add	r10, r10, #2
+	
+	ldrh	r11, [r8, r10]
+	str	r11, [r12, #0x80]
+	add	r10, r10, #2
+	
+	ldrh	r11, [r8, r10]
+	str	r11, [r12, #0x40]
+	add	r10, r10, #2
+	
+	ldrh	r11, [r8, r10]
+	str	r11, [r12, #0x80]
+	add	r10, r10, #2
+	
+	ldrh	r11, [r8, r10]
+	str	r11, [r12, #0x40]
+	add	r10, r10, #2
+
+	mov	r11, #BUF_SIZE
+	cmp	r11, r10
+
+	# wrap around
+	movls	r10, #0x0
+
+read_input:
+	# Read from the incoming data registers.
+	# just throw away the result
+	ldr	r11, [r12, #0x80]
+	ldr	r11, [r12, #0x40]
+	ldr	r11, [r12, #0x80]
+	ldr	r11, [r12, #0x40]
+	ldr	r11, [r12, #0x80]
+	ldr	r11, [r12, #0x40]
+	ldr	r11, [r12, #0x80]
+	ldr	r11, [r12, #0x40]
+
+
+	# clear overrun and underrun bits in DAI status register
+	mov	r11, #0xffffffff
+	mov	r9, #0x100
+	str	r11, [r12, r9]
+
+	# Save dai_readp
+	ldr	r11, .dai_readp
+	str	r10, [r11]
+
+	# return
+	subs	pc, lr, #4
+
+
+play_silent:
+	# Write zeroes to the output registers.
+	mov	r11, #0
+	str	r11, [r12, #0x80]
+	str	r11, [r12, #0x40]
+	str	r11, [r12, #0x80]
+	str	r11, [r12, #0x40]
+	str	r11, [r12, #0x80]
+	str	r11, [r12, #0x40]
+	str	r11, [r12, #0x80]
+	str	r11, [r12, #0x40]
+
+#if DEBUG_UNDERFLOW
+	ldr	r11, .dai_underflow
+	mov	r9, #1
+	str	r9, [r11]
+#endif
+
+	b	read_input
+
+
+.dai_buf:	.long	SYMBOL_NAME(dai_buf)
+.dai_readp:	.long	SYMBOL_NAME(dai_readp)
+.dai_writep:	.long	SYMBOL_NAME(dai_writep)
+#if DEBUG_UNDERFLOW
+.dai_underflow:	.long	SYMBOL_NAME(dai_underflow)
+#endif
+
+.saved_regs:	.word	saved_area
+
+SYMBOL_NAME(dai_end):
+
+	
+	.data
+saved_area:
+	.long	0
+	.long	0
+	.long	0
Index: drivers/misc/pn_board.c
===================================================================
RCS file: drivers/misc/pn_board.c
diff -N drivers/misc/pn_board.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ drivers/misc/pn_board.c	13 Jul 2005 05:47:26 -0000	1.1.1.1
@@ -0,0 +1,143 @@
+/*
+ *  PhatNoise Board abstraction
+ *  Adds /proc/pn_board_ver and /dev/led
+ */
+
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/proc_fs.h>
+#include <asm/uaccess.h>
+
+#ifdef CONFIG_ARCH_PHATNOISE
+
+#define BOARD_STRING "PhatNoise Board Unknown Version\n"
+
+#ifdef CONFIG_ARCH_PHATNOISE10
+#undef BOARD_STRING
+#define BOARD_STRING "PhatNoise Board v1.0\n"
+#endif
+
+#ifdef CONFIG_ARCH_PHATNOISE11
+#undef BOARD_STRING
+#define BOARD_STRING "PhatNoise Board v1.1\n"
+#endif
+
+#define C_NONE          'D'
+#define C_GREEN         'G'
+#define C_RED           'R'
+#define C_ORANGE        'O'
+
+#define LED_MAJOR 13
+
+#define SYS_OUTPUT_REG 0xff000003
+
+#define SYS_BASE 0xff000000
+#define UNIQUEID_BASE 0x2440
+#define RANDOMID_BASE 0x2700
+#define SYSFLG_BASE 0x0140
+
+static char *board_rev = BOARD_STRING;
+static char *banner __initdata = KERN_INFO BOARD_STRING;
+
+static int led_major;
+
+#ifdef CONFIG_PROC_FS
+static int pn_board_read(char* page, char** start, off_t off, int count, int* eof, void* data)
+{
+  int len;
+  len = sprintf(page,board_rev);
+  return len;
+}
+
+static int pn_cpuid_read(char *page, char **start, off_t off, int count, int* eof, void* data)
+{
+  int len, i;
+  unsigned char *memp=(unsigned char *)SYS_BASE;
+  char retstr[128], tempstr[4], uniqueid[4], randomid[16], sysflg[4];
+  memcpy(uniqueid,memp+UNIQUEID_BASE,4);
+  memcpy(randomid,memp+RANDOMID_BASE,16);
+  memcpy(sysflg,memp+SYSFLG_BASE,4);
+  strcpy(retstr,"Unique ID: 0x");
+  for (i=0; i<4; i++) {
+    sprintf(tempstr,"%02x",uniqueid[i]);
+    strcat(retstr,tempstr);
+  }
+  strcat(retstr,"\nRandom ID: 0x");
+  for (i=0; i<16; i++) {
+    sprintf(tempstr,"%02x",randomid[i]);
+    strcat(retstr,tempstr);
+  }
+  strcat(retstr,"\nCPU: ");
+  if (sysflg[3] & 0x20)
+    strcat(retstr,"EP73xx, ver 0x");
+  else
+    strcat(retstr,"Unknown, ver 0x");
+  sprintf(tempstr,"%02x",sysflg[3]>>6);
+  strcat(retstr,tempstr);
+  strcat(retstr,"\n");
+  len = sprintf(page,"%s",retstr);
+  return len;
+}
+#endif
+
+static ssize_t led_write(struct file *file,
+                         const char *buffer, size_t count, loff_t * loff)
+{
+  unsigned char *memp=(unsigned char *)SYS_OUTPUT_REG;
+  char color;
+  copy_from_user((void*)(&color),(const void*)buffer,1);
+  *memp &= ~0x01;
+  if (color == C_GREEN) *memp |= 0x01;
+  return 1;
+}
+
+static ssize_t led_read(struct file *file,
+                         char *buffer, size_t count, loff_t * loff)
+{
+  unsigned char *memp=(unsigned char *)SYS_OUTPUT_REG;
+  char color=C_NONE;
+
+  if (*memp & 0x01) color=C_GREEN;
+  copy_to_user(buffer,(const char*)&color,1);
+  return 1;
+}
+
+static int led_open(struct inode *inode, struct file *file)
+{
+  return 0;
+}
+
+static int led_release(struct inode *inode, struct file *file)
+{
+  return 0;
+}
+
+struct file_operations led_fops = {
+	write:		led_write,
+	read:		led_read,
+	open:		led_open,
+	release:	led_release,
+};
+
+static int __init pn_board_init(void)
+{
+  printk(banner);
+#ifdef CONFIG_PROC_FS
+  create_proc_read_entry("pn_board_ver",0,0,pn_board_read,NULL);
+  create_proc_read_entry("pn_cpu_id",0,0,pn_cpuid_read,NULL);
+#endif
+  led_major = register_chrdev(LED_MAJOR,"led",&led_fops);
+  if (led_major) {
+    printk(KERN_WARNING "LED: unable to get major %d\n", LED_MAJOR);
+  }
+  else {
+    led_major = LED_MAJOR;
+    printk(KERN_INFO "LED: major %d\n", led_major);
+  }
+  return 0;
+}
+
+module_init(pn_board_init);
+
+#endif /* CONFIG_ARCH_PHATNOISE */
Index: drivers/serial/serial_clps711x.c
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/drivers/serial/serial_clps711x.c,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- drivers/serial/serial_clps711x.c	13 Jul 2005 05:26:42 -0000	1.1.1.1
+++ drivers/serial/serial_clps711x.c	13 Jul 2005 05:48:01 -0000	1.1.1.2
@@ -57,11 +57,16 @@
 
 #include <asm/hardware/clps7111.h>
 
+
 #define UART_NR		2
 
 #define SERIAL_CLPS711X_NAME	"ttyAM"
-#define SERIAL_CLPS711X_MAJOR	204
-#define SERIAL_CLPS711X_MINOR	16
+
+#define SERIAL_CLPS711X_MAJOR	4
+//#define SERIAL_CLPS711X_MAJOR	204
+
+#define SERIAL_CLPS711X_MINOR	64
+//#define SERIAL_CLPS711X_MINOR	16
 #define SERIAL_CLPS711X_NR	UART_NR
 
 #define CALLOUT_CLPS711X_NAME	"cuaam"
@@ -640,6 +645,9 @@
 
 void __init clps711xuart_console_init(void)
 {
+#if DEBUG
+	printk(KERN_WARNING "%s\n", __FUNCTION__);
+#endif
 	register_console(&clps711x_console);
 }
 
Index: include/asm-arm/ide.h
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/include/asm-arm/ide.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- include/asm-arm/ide.h	13 Jul 2005 05:20:49 -0000	1.1.1.1
+++ include/asm-arm/ide.h	13 Jul 2005 05:48:37 -0000	1.1.1.2
@@ -13,10 +13,21 @@
 
 #ifdef __KERNEL__
 
+
+#ifdef CONFIG_ARCH_PHATNOISE
+
+#ifndef MAX_HWIFS
+#define MAX_HWIFS	1
+#endif
+
+#else
+
 #ifndef MAX_HWIFS
 #define MAX_HWIFS	4
 #endif
 
+#endif
+
 #define ide__sti()	__sti()
 
 #include <asm/arch/ide.h>
Index: include/asm-arm/arch-clps711x/hardware.h
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/include/asm-arm/arch-clps711x/hardware.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- include/asm-arm/arch-clps711x/hardware.h	13 Jul 2005 05:27:53 -0000	1.1.1.1
+++ include/asm-arm/arch-clps711x/hardware.h	13 Jul 2005 05:48:41 -0000	1.1.1.2
@@ -27,6 +27,8 @@
 #define CLPS7111_VIRT_BASE	0xff000000
 #define CLPS7111_BASE		CLPS7111_VIRT_BASE
 
+#define IO_BASE	CLPS7111_BASE
+
 /*
  * The physical addresses that the external chip select signals map to is
  * dependent on the setting of the nMEDCHG signal on EP7211 and EP7212
@@ -63,11 +65,16 @@
 
 #define EP7212_VIRT_BASE	CLPS7111_VIRT_BASE
 #define EP7212_BASE		CLPS7111_VIRT_BASE
-#include <asm/hardware/ep7212.h>
 
 
 #endif
 
+#if defined (CONFIG_ARCH_EP7212)
+
+#include <asm/hardware/ep7212.h>
+
+#endif
+
 #define SYSPLD_VIRT_BASE	0xfe000000
 #define SYSPLD_BASE		SYSPLD_VIRT_BASE
 
@@ -166,6 +173,17 @@
 #endif /* CONFIG_ARCH_EDB7211 */
 
 
+#ifdef CONFIG_ARCH_PHATNOISE
+
+
+#define PHAT_PHYS_IDE			CS5_PHYS_BASE
+#define PHAT_VIRT_IDE			(0xfe100000)
+
+#endif
+
+
+
+
 /*
  * Relevant bits in port D, which controls power to the various parts of
  * the LCD on the EDB7211.
@@ -175,5 +193,75 @@
 #define EDB_PD3_LCDBL		(1<<3)
 
 
+
+/*
+ * Allow access to IO registers as if they were normal variables
+ */
+
+#define __IOB(x)        (*(volatile unsigned char *) (IO_BASE+(x)))
+#define __IOL(x)        (*(volatile unsigned long *) (IO_BASE+(x)))
+
+#define IO_PADR         __IOB(PADR)
+#define IO_PBDR         __IOB(PBDR)
+#define IO_PCDR         __IOB(PCDR)
+#define IO_PDDR         __IOB(PDDR)
+#define IO_PADDR        __IOB(PADDR)
+#define IO_PBDDR        __IOB(PBDDR)
+#define IO_PCDDR        __IOB(PCDDR)
+#define IO_PDDDR        __IOB(PDDDR)
+#define IO_PEDR         __IOB(PEDR)
+#define IO_PEDDR        __IOB(PEDDR)
+#define IO_SYSCON1      __IOL(SYSCON1)
+#define IO_SYSCON2      __IOL(SYSCON2)
+#define IO_SYSFLG       __IOL(SYSFLG)
+#define IO_MEMCFG1      __IOL(MEMCFG1)
+#define IO_MEMCFG2      __IOL(MEMCFG2)
+/* DRFPR */
+#define IO_INTSR1       __IOL(INTSR1)
+#define IO_INTSR2       __IOL(INTSR2)
+#define IO_INTSR3       __IOL(INTSR3)
+#define IO_INTMR1       __IOL(INTMR1)
+#define IO_INTMR2       __IOL(INTMR2)
+#define IO_INTMR3       __IOL(INTMR3)
+#define IO_LCDCON       __IOL(LCDCON)
+#define IO_TC1D         __IOL(TC1D)
+#define IO_TC2D         __IOL(TC2D)
+#define IO_RTCDR        __IOL(RTCDR)
+#define IO_RTCMR        __IOL(RTCMR)
+/* PMPCON */
+#define IO_CODR         __IOB(CODR)
+#define IO_UARTDR       __IOL(UARTDR)
+#define IO_UBRLCR       __IOL(UBRLCR)
+#define IO_SYNCIO       __IOL(SYNCIO)
+#define IO_PALLSW       __IOL(PALLSW)
+#define IO_PALMSW       __IOL(PALMSW)
+#define IO_STFCLR       __IOL(STFCLR)
+#define IO_BLEOI        __IOL(BLEOI)
+#define IO_MCEOI        __IOL(MCEOI)
+#define IO_TEOI         __IOL(TEOI)
+#define IO_TC1EOI       __IOL(TC1EOI)
+#define IO_TC2EOI       __IOL(TC2EOI)
+#define IO_RTCEOI       __IOL(RTCEOI)
+#define IO_UMSEOI       __IOL(UMSEOI)
+#define IO_COEOI        __IOL(COEOI)
+#define IO_HALT         __IOL(HALT)
+#define IO_STDBY        __TOL(STDBY)
+
+/*-------------- For PhatNoise 7212 ------------------------*/
+#define IO_SYSCON3      __IOL(SYSCON3)
+#define IO_SYSFLG2      __IOL(SYSFLG2)
+
+#define IO_DAIR         __IOL(DAIR)
+#define IO_DAISR        __IOL(DAISR)
+#define IO_DAIDR0       __IOL(DAIDR0)
+#define IO_DAIDR1       __IOL(DAIDR1)
+#define IO_DAIDR2       __IOL(DAIDR2)
+#define IO_DAIFLG       __IOL(DAIFLG)
+
+/* ----  Phatnoise 7312 ---- */
+
+#define IO_DAI64FS	__IOL(DAI64FS)
+
+
 #endif
 
Index: include/asm-arm/arch-clps711x/ide.h
===================================================================
RCS file: include/asm-arm/arch-clps711x/ide.h
diff -N include/asm-arm/arch-clps711x/ide.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ include/asm-arm/arch-clps711x/ide.h	13 Jul 2005 05:48:41 -0000	1.1.1.1
@@ -0,0 +1,157 @@
+/*
+ * linux/include/asm-arm/arch-clps711x/ide.h
+ */
+#include <linux/config.h>
+#include <asm/irq.h>
+#include <asm/io.h>
+
+
+#define PHAT_IDE_DEBUG 1
+
+
+/*
+ * Set up a hw structure for a specified data port, control port and IRQ.
+ * This should follow whatever the default interface uses.
+ */
+static __inline__ void
+ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq)
+{
+	ide_ioreg_t reg = (ide_ioreg_t) data_port;
+	int i;
+
+	memset(hw, 0, sizeof(*hw));
+
+	for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
+		hw->io_ports[i] = reg;
+		reg += 1;
+	}
+	hw->io_ports[IDE_CONTROL_OFFSET] = (ide_ioreg_t) ctrl_port;
+	if (irq != NULL)
+		*irq = 0;
+}
+
+/*
+ * This registers the standard ports for this architecture with the IDE
+ * driver.
+ */
+
+#ifdef CONFIG_ARCH_PHATNOISE
+#include <asm/hardware.h>
+#include <asm/arch/hardware.h>
+#endif
+
+static __inline__ void
+ide_init_default_hwifs(void)
+{
+#ifdef CONFIG_ARCH_PHATNOISE
+	hw_regs_t hw;
+	
+	printk("PhatNoise ide_init_default_hwifs()\n");
+	/*
+	 * Make sure external expansion clock is enabled.
+	 */
+	IO_SYSCON1 |= SYSCON1_EXCKEN;
+#if PHAT_IDE_DEBUG
+	printk("IO_SYSCON1 = 0x%08X\n", (unsigned) IO_SYSCON1);
+	printk("IO_SYSCON2 = 0x%08X\n", (unsigned) IO_SYSCON2);
+	printk("IO_SYSCON3 = 0x%08X\n", (unsigned) IO_SYSCON3);
+
+	printk("IO_MEMCFG1 = 0x%08X\n", (unsigned) IO_MEMCFG1);
+	printk("IO_MEMCFG2 = 0x%08X\n", (unsigned) IO_MEMCFG2);
+#endif
+
+	ide_init_hwif_ports(&hw, PHAT_VIRT_IDE, PHAT_VIRT_IDE+0x0E, NULL);
+	//ide_init_hwif_ports(&hw, PHAT_PHYS_IDE, PHAT_PHYS_IDE+0x0E, NULL);
+	hw.irq		= IRQ_EINT2;
+	ide_register_hw(&hw, NULL);
+#endif          
+}
+
+
+
+/* define our IN_BYTE and OUT_BYTE for ide.  
+ *
+ */
+#if 1 && CONFIG_ARCH_PHATNOISE
+#ifndef DEFINE_ARCH_IDE_IN_OUT
+#define DEFINE_ARCH_IDE_IN_OUT 1
+
+
+static uint8_t inb_ide(unsigned int p)
+{
+	unsigned int r;
+
+#ifdef RIDICULOUS_IDE_DEBUG
+	static unsigned int lastp = 0;
+	if (p != lastp) {
+		printk(KERN_WARNING "inb_ide(0x%x)\n", (unsigned) p);
+	}
+#endif
+
+	r = (* (volatile unsigned int *)(p));
+	//r = inb(p) ;
+
+#ifdef RIDICULOUS_IDE_DEBUG
+	if (p != lastp) {
+		printk(KERN_WARNING "inb_ide(0x%x) = 0x%x\n", 
+				(unsigned) p, r);
+		lastp = p;
+	}
+#endif
+	if ((p & 0x3) == 1)
+	{
+		r = r >> 24;
+	}
+	if ((p & 0x3) == 2)
+	{
+		r = r >> 16;
+	}
+	if ((p & 0x3) == 3)
+	{
+		r = r >> 8;
+	}
+	return (uint8_t) r; 
+}
+
+#define HAVE_ARCH_IN_BYTE 1
+#define IN_BYTE(p)	(byte)inb_ide(p)
+
+
+
+static void outb_ide(byte b, unsigned int p)
+{
+#ifdef RIDICULOUS_IDE_DEBUG
+	static unsigned int lastp = 0;
+	static unsigned int lastb = 0;
+
+	if (p != lastp || (p == lastp && (b != lastb))) {
+		printk(KERN_WARNING "outb_ide(%u, 0x%x)\n", 
+				b, (unsigned) p);
+		lastp = p;
+		lastb = b;
+	}
+#endif
+
+	//outb_p(b, p);
+	*(volatile byte *) p = b;
+}
+
+#define HAVE_ARCH_OUT_BYTE 1
+#define OUT_BYTE(b,p)	outb_ide((b),(p))
+
+static uint16_t inw_ide(int p)
+{
+	return (uint16_t) (* (volatile uint32_t *) p);
+}
+
+static void outw_ide(uint16_t b, int p)
+{
+	* (volatile uint32_t *) p = b;
+}
+
+
+
+#endif
+#endif
+
+
Index: include/asm-arm/arch-clps711x/irqs.h
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/include/asm-arm/arch-clps711x/irqs.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- include/asm-arm/arch-clps711x/irqs.h	13 Jul 2005 05:27:53 -0000	1.1.1.1
+++ include/asm-arm/arch-clps711x/irqs.h	13 Jul 2005 05:48:41 -0000	1.1.1.2
@@ -21,6 +21,18 @@
 /*
  * Interrupts from INTSR1
  */
+
+
+/*
+ * fiq's
+ */
+#define IRQ_EXTFIQ			0
+#define IRQ_BLINT			1
+#define IRQ_WEINT			2
+#define IRQ_MCINT			3
+/*
+ * regular irq's
+ */
 #define IRQ_CSINT			4
 #define IRQ_EINT1			5
 #define IRQ_EINT2			6
@@ -34,8 +46,8 @@
 #define IRQ_UMSINT			14
 #define IRQ_SSEOTI			15
 
-#define INT1_IRQS			(0x0000fff0)
-#define INT1_ACK_IRQS			(0x00004f10)
+#define INT1_IRQS			(0x0000ffff)
+#define INT1_ACK_IRQS			(0x00004f1e)
 
 /*
  * Interrupts from INTSR2
@@ -49,5 +61,7 @@
 #define INT2_IRQS			(0x30070000)
 #define INT2_ACK_IRQS			(0x00010000)
 
-#define NR_IRQS                         30
+
+
+#define FIQ_START	64
 
Index: include/asm-arm/arch-clps711x/timex.h
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/include/asm-arm/arch-clps711x/timex.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.2
diff -u -r1.1.1.1 -r1.1.1.2
--- include/asm-arm/arch-clps711x/timex.h	13 Jul 2005 05:27:53 -0000	1.1.1.1
+++ include/asm-arm/arch-clps711x/timex.h	13 Jul 2005 05:48:41 -0000	1.1.1.2
@@ -21,3 +21,4 @@
  */
 
 #define CLOCK_TICK_RATE 512000
+//#define CLOCK_TICK_RATE 2000000
Index: include/asm-arm/hardware/ep7212.h
===================================================================
RCS file: /mnt/lv0/cvsroot/phatlinux/include/asm-arm/hardware/ep7212.h,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.3
diff -u -r1.1.1.2 -r1.1.1.3
--- include/asm-arm/hardware/ep7212.h	13 Jul 2005 05:27:51 -0000	1.1.1.2
+++ include/asm-arm/hardware/ep7212.h	13 Jul 2005 05:48:38 -0000	1.1.1.3
@@ -39,7 +39,7 @@
  * These registers are specific to the EP7212 only
  */
 #define DAIR			0x2000
-#define DAIR0			0x2040
+#define DAIDR0			0x2040
 #define DAIDR1			0x2080
 #define DAIDR2			0x20c0
 #define DAISR			0x2100
@@ -80,4 +80,22 @@
 #define SYSCON3_FASTWAKE	(1 << 8)
 #define SYSCON3_DAIEN		(1 << 9)
 
+/*
+ * For EP7312 
+ */
+#define SYSCON3_128FS		(1 << 9)
+
+
+#define DAI64FS			0x2600
+
+#define DAI64FS_I2SF64		(1 << 0) 
+#define DAI64FS_AUDCLKEN	(1 << 1)
+#define DAI64FS_AUDCLKSRC	(1 << 2)
+#define DAI64FS_MCLK256EN	(1 << 3)
+
+#define DAI64FS_LOOPBACK	(1 << 5)
+
+
+
+
 #endif /* __ASM_HARDWARE_EP7212_H */
