summaryrefslogtreecommitdiff
path: root/recipes/linux/linux-ks8695
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/linux/linux-ks8695
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/linux/linux-ks8695')
-rw-r--r--recipes/linux/linux-ks8695/defconfig-ks86951107
-rw-r--r--recipes/linux/linux-ks8695/ks8695-base-r0.patch715
-rw-r--r--recipes/linux/linux-ks8695/ks8695-headers-r0.patch980
3 files changed, 2802 insertions, 0 deletions
diff --git a/recipes/linux/linux-ks8695/defconfig-ks8695 b/recipes/linux/linux-ks8695/defconfig-ks8695
new file mode 100644
index 0000000000..831a1d1fa8
--- /dev/null
+++ b/recipes/linux/linux-ks8695/defconfig-ks8695
@@ -0,0 +1,1107 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16
+# Thu May 18 22:06:07 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+CONFIG_OBSOLETE_INTERMODULE=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+CONFIG_ARCH_KS8695=y
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Kendin-Micrel KS8695 Implementation Options
+#
+
+#
+# KS8695 Platforms
+#
+CONFIG_MACH_KS8695=y
+# CONFIG_MACH_DSM320 is not set
+# CONFIG_MACH_CM4002 is not set
+# CONFIG_MACH_CM4008 is not set
+# CONFIG_MACH_CM40xx is not set
+# CONFIG_MACH_LITE300 is not set
+# CONFIG_MACH_SE4200 is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM922T=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+CONFIG_PCI_LEGACY_PROC=y
+# CONFIG_PCI_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+# CONFIG_CARDBUS is not set
+
+#
+# PC-card bridges
+#
+# CONFIG_YENTA is not set
+# CONFIG_PD6729 is not set
+# CONFIG_I82092 is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="<override-oe>"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+# CONFIG_IP_NF_CT_ACCT is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
+CONFIG_IP_NF_CT_PROTO_SCTP=m
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+CONFIG_IP_NF_TFTP=m
+CONFIG_IP_NF_AMANDA=m
+# CONFIG_IP_NF_PPTP is not set
+CONFIG_IP_NF_QUEUE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_TOSHIBA_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+# CONFIG_MTD_CFI_NOSWAP is not set
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_IMPA7 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# 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_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+# CONFIG_NETDEVICES is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_PCI is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_UNIX98_PTYS is not set
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG 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_DRM is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_ZERO is not set
+# CONFIG_USB_ETH is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_INOTIFY is not set
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_FORCED_INLINING is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/recipes/linux/linux-ks8695/ks8695-base-r0.patch b/recipes/linux/linux-ks8695/ks8695-base-r0.patch
new file mode 100644
index 0000000000..98477c7861
--- /dev/null
+++ b/recipes/linux/linux-ks8695/ks8695-base-r0.patch
@@ -0,0 +1,715 @@
+This patch adds KS8695 CPU machine support.
+It is pretty much a standard ARM922T core.
+
+This patch inludes the cpu/machine configuration and Makefile changes,
+the architecture, timer, interrupt and PCI support.
+
+
+diff -Naur linux-2.6.16/arch/arm/Kconfig linux-2.6.16.ks8695/arch/arm/Kconfig
+--- linux-2.6.16/arch/arm/Kconfig 2006-03-20 15:53:29.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/Kconfig 2006-03-22 09:57:18.000000000 +1000
+@@ -141,6 +141,13 @@
+ help
+ Support for Intel's IXP2400/2800 (XScale) family of processors.
+
++config ARCH_KS8695
++ bool "Kendin-Micrel KS8695"
++ help
++ The Kendin-Micrel KS8695 "Centaur" family is an ARM920 based
++ System-On-Chip device. It is commonly used on small routers and
++ other small scale embedded devices.
++
+ config ARCH_L7200
+ bool "LinkUp-L7200"
+ select FIQ
+@@ -260,6 +267,8 @@
+
+ source "arch/arm/mach-ixp2000/Kconfig"
+
++source "arch/arm/mach-ks8695/Kconfig"
++
+ source "arch/arm/mach-pxa/Kconfig"
+
+ source "arch/arm/mach-sa1100/Kconfig"
+@@ -331,7 +340,7 @@
+ bool
+
+ config PCI
+- bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB
++ bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_KS8695
+ help
+ Find out whether you have a PCI motherboard. PCI is the name of a
+ bus system, i.e. the way the CPU talks to the other stuff inside
+diff -Naur linux-2.6.16/arch/arm/mach-ks8695/arch.c linux-2.6.16.ks8695/arch/arm/mach-ks8695/arch.c
+--- linux-2.6.16/arch/arm/mach-ks8695/arch.c 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/mach-ks8695/arch.c 2006-03-15 22:42:43.000000000 +1000
+@@ -0,0 +1,124 @@
++/*
++ * linux/arch/arm/mach-ks8695/arch.c
++ *
++ * Copyright (C) 2002 Micrel Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/config.h>
++#include <linux/types.h>
++#include <linux/init.h>
++#include <asm/memory.h>
++#include <asm/hardware.h>
++#include <asm/setup.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/arch/ks8695-regs.h>
++
++extern void ks8695_map_io(void);
++extern void ks8695_init_irq(void);
++extern struct sys_timer ks8695_timer;
++
++#ifdef CONFIG_MACH_KS8695
++MACHINE_START(KS8695, "Micrel-KS8695")
++ /* Micrel Inc. */
++ .phys_ram = PHYS_OFFSET,
++ .phys_io = KS8695_IO_BASE,
++ .io_pg_offst = ((KS8695_IO_VIRT >> 18) & 0xfffc),
++ .map_io = ks8695_map_io,
++ .init_irq = ks8695_init_irq,
++ .timer = &ks8695_timer,
++ .boot_params = 0x100,
++MACHINE_END
++#endif
++
++#ifdef CONFIG_MACH_DSM320
++MACHINE_START(DSM320, "DLink-DSM320")
++ /* Maintainer: Ben Dooks <ben@simtec.co.uk> */
++ .phys_io = KS8695_IO_BASE,
++ .io_pg_offst = ((KS8695_IO_VIRT) >> 18) & 0xfffc,
++ .map_io = ks8695_map_io,
++ .init_irq = ks8695_init_irq,
++ .timer = &ks8695_timer,
++ .boot_params = 0x100,
++MACHINE_END
++#endif
++
++#ifdef CONFIG_MACH_LITE300
++MACHINE_START(LITE300, "Secure Computing SG300")
++ /* Secure Computing Inc. */
++ .phys_ram = PHYS_OFFSET,
++ .phys_io = KS8695_IO_BASE,
++ .io_pg_offst = ((KS8695_IO_VIRT >> 18) & 0xfffc),
++ .map_io = ks8695_map_io,
++ .init_irq = ks8695_init_irq,
++ .timer = &ks8695_timer,
++ .boot_params = 0x100,
++MACHINE_END
++#endif
++
++#ifdef CONFIG_MACH_SE4200
++MACHINE_START(SE4200, "Secure Computing SE4200")
++ /* Secure Computing Inc. */
++ .phys_ram = PHYS_OFFSET,
++ .phys_io = KS8695_IO_BASE,
++ .io_pg_offst = ((KS8695_IO_VIRT >> 18) & 0xfffc),
++ .map_io = ks8695_map_io,
++ .init_irq = ks8695_init_irq,
++ .timer = &ks8695_timer,
++ .boot_params = 0x100,
++MACHINE_END
++#endif
++
++#ifdef CONFIG_MACH_CM4002
++MACHINE_START(CM4002, "OpenGear/CM4002")
++ /* OpenGear Inc. */
++ .phys_ram = PHYS_OFFSET,
++ .phys_io = KS8695_IO_BASE,
++ .io_pg_offst = ((KS8695_IO_VIRT >> 18) & 0xfffc),
++ .map_io = ks8695_map_io,
++ .init_irq = ks8695_init_irq,
++ .timer = &ks8695_timer,
++ .boot_params = 0x100,
++MACHINE_END
++#endif
++
++#ifdef CONFIG_MACH_CM4008
++MACHINE_START(CM4008, "OpenGear/CM4008")
++ /* OpenGear Inc. */
++ .phys_ram = PHYS_OFFSET,
++ .phys_io = KS8695_IO_BASE,
++ .io_pg_offst = ((KS8695_IO_VIRT >> 18) & 0xfffc),
++ .map_io = ks8695_map_io,
++ .init_irq = ks8695_init_irq,
++ .timer = &ks8695_timer,
++ .boot_params = 0x100,
++MACHINE_END
++#endif
++
++#ifdef CONFIG_MACH_CM41xx
++MACHINE_START(CM41xx, "OpenGear/CM41xx")
++ /* OpenGear Inc. */
++ .phys_ram = PHYS_OFFSET,
++ .phys_io = KS8695_IO_BASE,
++ .io_pg_offst = ((KS8695_IO_VIRT >> 18) & 0xfffc),
++ .map_io = ks8695_map_io,
++ .init_irq = ks8695_init_irq,
++ .timer = &ks8695_timer,
++ .boot_params = 0x100,
++MACHINE_END
++#endif
++
+diff -Naur linux-2.6.16/arch/arm/mach-ks8695/irq.c linux-2.6.16.ks8695/arch/arm/mach-ks8695/irq.c
+--- linux-2.6.16/arch/arm/mach-ks8695/irq.c 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/mach-ks8695/irq.c 2006-03-11 00:01:51.000000000 +1000
+@@ -0,0 +1,71 @@
++/*
++ * linux/arch/arm/mach-ks8695/irq.c
++ *
++ * Copyright (C) 2002 Micrel Inc.
++ * Copyright (C) 2006 Greg Ungerer <gerg@snapgear.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <asm/hardware.h>
++#include <asm/irq.h>
++#include <asm/io.h>
++#include <asm/mach/irq.h>
++
++static void ks8695_irq_mask(unsigned int irq)
++{
++ unsigned long msk;
++ msk = __raw_readl(KS8695_REG(KS8695_INT_ENABLE));
++ msk &= ~(1 << irq);
++ __raw_writel(msk, KS8695_REG(KS8695_INT_ENABLE));
++}
++
++static void ks8695_irq_unmask(unsigned int irq)
++{
++ unsigned long msk;
++ msk = __raw_readl(KS8695_REG(KS8695_INT_ENABLE));
++ msk |= (1 << irq);
++ __raw_writel(msk, KS8695_REG(KS8695_INT_ENABLE));
++}
++
++static int ks8695_irq_set_type(unsigned int irq, unsigned int type)
++{
++ return 0;
++}
++
++struct irqchip ks8695_irq_chip = {
++ .ack = ks8695_irq_mask,
++ .mask = ks8695_irq_mask,
++ .unmask = ks8695_irq_unmask,
++ .set_type = ks8695_irq_set_type,
++};
++
++void __init ks8695_init_irq(void)
++{
++ unsigned int i;
++
++ /* Disable all interrupts initially. */
++ __raw_writel(0, KS8695_REG(KS8695_INT_CONTL));
++ __raw_writel(0, KS8695_REG(KS8695_INT_ENABLE));
++
++ for (i = 0; (i < NR_IRQS); i++) {
++ set_irq_chip(i, &ks8695_irq_chip);
++ set_irq_handler(i, do_level_IRQ);
++ set_irq_flags(i, IRQF_VALID);
++ }
++}
++
+diff -Naur linux-2.6.16/arch/arm/mach-ks8695/Kconfig linux-2.6.16.ks8695/arch/arm/mach-ks8695/Kconfig
+--- linux-2.6.16/arch/arm/mach-ks8695/Kconfig 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/mach-ks8695/Kconfig 2006-03-15 22:42:43.000000000 +1000
+@@ -0,0 +1,59 @@
++
++menu "Kendin-Micrel KS8695 Implementation Options"
++
++comment "KS8695 Platforms"
++
++config MACH_KS8695
++ bool "KS8695 development board"
++ help
++ Say 'Y' here if you want your kernel to run on the original
++ Kendin-Micrel KS8695 development board.
++
++config MACH_DSM320
++ bool "DLink DSM320 Media Player"
++ help
++ Say 'Y' here if you want your kernel to run on the DLink DSM320
++ Media Player.
++
++config MACH_CM4002
++ bool "OpenGear CM4002"
++ depends on ARCH_KS8695
++ help
++ Say 'Y' here if you want your kernel to support the OpenGear
++ CM4002 Secure Access Server. See http://www.opengear.com for
++ more details.
++
++config MACH_CM4008
++ bool "OpenGear CM4008"
++ depends on ARCH_KS8695
++ help
++ Say 'Y' here if you want your kernel to support the OpenGear
++ CM4008 Console Server. See http://www.opengear.com for more
++ details.
++
++config MACH_CM40xx
++ bool "OpenGear CM40xx"
++ help
++ depends on ARCH_KS8695
++ Say 'Y' here if you want your kernel to support the OpenGear
++ CM4016 or CM4048 Console Servers. See http://www.opengear.com for
++ more details.
++
++config MACH_LITE300
++ bool "Secure Computing / CyberGuard SG300"
++ depends on ARCH_KS8695
++ help
++ Say 'Y' here if you want your kernel to support the Secure
++ Computing / CyberGuard / SnapGear SG300 VPN Internet Router.
++ See http://www.securecomputing.com for more details.
++
++config MACH_SE4200
++ bool "Secure Computing / CyberGuard SE4200"
++ depends on ARCH_KS8695
++ help
++ Say 'Y' here if you want your kernel to support the Secure
++ Computing / CyberGuard / SnapGear SE4200 Secure Wireless VPN
++ Internet Router. See http://www.securecomputing.com for more
++ details.
++
++endmenu
+diff -Naur linux-2.6.16/arch/arm/mach-ks8695/Makefile linux-2.6.16.ks8695/arch/arm/mach-ks8695/Makefile
+--- linux-2.6.16/arch/arm/mach-ks8695/Makefile 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/mach-ks8695/Makefile 2006-03-15 22:42:43.000000000 +1000
+@@ -0,0 +1,7 @@
++#
++# Makefile for the KS8695 machines..
++#
++
++obj-y := arch.o irq.o mm.o time.o
++obj-$(CONFIG_PCI) += pci.o
++
+diff -Naur linux-2.6.16/arch/arm/mach-ks8695/Makefile.boot linux-2.6.16.ks8695/arch/arm/mach-ks8695/Makefile.boot
+--- linux-2.6.16/arch/arm/mach-ks8695/Makefile.boot 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/mach-ks8695/Makefile.boot 2006-02-17 11:57:24.000000000 +1000
+@@ -0,0 +1,3 @@
++ zreladdr-y := 0x00008000
++params_phys-y := 0x00000100
++
+diff -Naur linux-2.6.16/arch/arm/mach-ks8695/mm.c linux-2.6.16.ks8695/arch/arm/mach-ks8695/mm.c
+--- linux-2.6.16/arch/arm/mach-ks8695/mm.c 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/mach-ks8695/mm.c 2006-03-11 00:01:51.000000000 +1000
+@@ -0,0 +1,50 @@
++/*
++ * linux/arch/arm/mach-ks8695/mm.c
++ *
++ * Copyright (C) 1999,2000 Arm Limited
++ * Copyright (C) 2000 Deep Blue Solutions Ltd
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/mm.h>
++#include <linux/init.h>
++#include <asm/io.h>
++#include <asm/page.h>
++#include <asm/sizes.h>
++#include <asm/mach/map.h>
++
++/*
++ * The only fixed mapping we setup is for the internal register block.
++ * This contains the all the device peripheral registers.
++ *
++ * Logical Physical Comment
++ * -----------------------------------------
++ * FF000000 03FF0000 IO registers
++ */
++static struct map_desc ks8695_io_desc[] __initdata = {
++ {
++ .virtual = KS8695_IO_VIRT,
++ .pfn = __phys_to_pfn(KS8695_IO_BASE),
++ .length = SZ_64K,
++ .type = MT_DEVICE
++ },
++};
++
++void __init ks8695_map_io(void)
++{
++ iotable_init(ks8695_io_desc, ARRAY_SIZE(ks8695_io_desc));
++}
++
+diff -Naur linux-2.6.16/arch/arm/mach-ks8695/pci.c linux-2.6.16.ks8695/arch/arm/mach-ks8695/pci.c
+--- linux-2.6.16/arch/arm/mach-ks8695/pci.c 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/mach-ks8695/pci.c 2006-03-15 22:42:43.000000000 +1000
+@@ -0,0 +1,218 @@
++/*
++ * Copyright (c) 2003, Micrel Semiconductors
++ * Copyright (C) 2006, Greg Ungerer <gerg@snapgear.com>
++ *
++ * Written 2003 by LIQUN RUAN
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/pci.h>
++#include <linux/mm.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <asm/io.h>
++#include <asm/mach/pci.h>
++#include <asm/hardware.h>
++#include <asm/arch/ks8695-regs.h>
++
++
++static u32 pcicmd(unsigned int bus, unsigned int devfn, int where)
++{
++ where &= 0xfffffffc;
++ return (0x80000000 | (bus << 16) | (devfn << 8) | where);
++}
++
++static void local_write_config(unsigned int bus, unsigned int devfn, int where, u32 value)
++{
++ __raw_writel(pcicmd(bus, devfn, where), KS8695_REG(KS8695_PBCA));
++ __raw_writel(value, KS8695_REG(KS8695_PBCD));
++}
++
++
++static int ks8695_pci_read_config(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *value)
++{
++ u32 v;
++
++
++ __raw_writel(pcicmd(bus->number, devfn, where), KS8695_REG(KS8695_PBCA));
++ v = __raw_readl(KS8695_REG(KS8695_PBCD));
++
++ if (size == 1)
++ *value = (u8) (v >> ((where & 0x3) * 8));
++ else if (size == 2)
++ *value = (u16) (v >> ((where & 0x2) * 8));
++ else
++ *value = v;
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static u32 bytemasks[] = {
++ 0xffffff00, 0xffff00ff, 0xff0ffff, 0x00ffffff,
++};
++static u32 wordmasks[] = {
++ 0xffff0000, 0x00000000, 0x0000ffff,
++};
++
++static int ks8695_pci_write_config(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 value)
++{
++ u32 cmd, v;
++ int nr;
++
++ v = value;
++ cmd = pcicmd(bus->number, devfn, where);
++ __raw_writel(cmd, KS8695_REG(KS8695_PBCA));
++
++ if (size == 1) {
++ nr = where & 0x3;
++ v = __raw_readl(KS8695_REG(KS8695_PBCD));
++ v = (v & bytemasks[nr]) | ((value & 0xff) << (nr * 8));
++ } else if (size == 2) {
++ nr = where & 0x2;
++ v = __raw_readl(KS8695_REG(KS8695_PBCD));
++ v = (v & wordmasks[nr]) | ((value & 0xffff) << (nr * 8));
++ }
++
++ __raw_writel(v, KS8695_REG(KS8695_PBCD));
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++struct pci_ops ks8695_pci_ops = {
++ .read = ks8695_pci_read_config,
++ .write = ks8695_pci_write_config,
++};
++
++static struct pci_bus *ks8695_pci_scan_bus(int nr, struct pci_sys_data *sys)
++{
++ return pci_scan_bus(sys->busnr, &ks8695_pci_ops, sys);
++}
++
++static struct resource pci_mem = {
++ .name = "PCI memory space",
++ .start = KS8695P_PCI_MEM_BASE + 0x04000000,
++ .end = KS8695P_PCI_MEM_BASE + KS8695P_PCI_MEM_SIZE - 1,
++ .flags = IORESOURCE_MEM,
++};
++
++static struct resource pci_io = {
++ .name = "PCI IO space",
++ .start = KS8695P_PCI_IO_BASE,
++ .end = KS8695P_PCI_IO_BASE + KS8695P_PCI_IO_SIZE - 1,
++ .flags = IORESOURCE_IO,
++};
++
++static int __init ks8695_pci_setup(int nr, struct pci_sys_data *sys)
++{
++ if (nr > 0)
++ return 0;
++
++ /* Assign and enable processor bridge */
++ local_write_config(0, 0, PCI_BASE_ADDRESS_0, KS8695P_PCI_MEM_BASE);
++ local_write_config(0, 0, PCI_COMMAND,
++ PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY);
++
++ request_resource(&iomem_resource, &pci_mem);
++ request_resource(&ioport_resource, &pci_io);
++
++ sys->resource[0] = &pci_io;
++ sys->resource[1] = &pci_mem;
++ sys->resource[2] = NULL;
++
++ return 1;
++}
++
++/*
++ * EXT0 is used as PCI bus interrupt source.
++ * level detection (active low)
++ */
++static void __init ks8695_pci_configure_interrupt(void)
++{
++ u32 v;
++
++ v = __raw_readl(KS8695_REG(KS8695_GPIO_MODE));
++ v |= 0x00000001;
++ __raw_writel(v, KS8695_REG(KS8695_GPIO_MODE));
++
++ v = __raw_readl(KS8695_REG(KS8695_GPIO_CTRL));
++ v &= 0xfffffff8;
++ v |= 0x8;
++ __raw_writel(v, KS8695_REG(KS8695_GPIO_CTRL));
++
++ v = __raw_readl(KS8695_REG(KS8695_GPIO_MODE));
++ v &= ~0x00000001;
++ __raw_writel(v, KS8695_REG(KS8695_GPIO_MODE));
++}
++
++static void __init ks8695_pci_preinit(void)
++{
++#if defined(CONFIG_MACH_CM4008) || defined(CONFIG_MACH_CM41xx)
++ /* Reset the PCI bus - (GPIO line is hooked up to bus reset) */
++ u32 msk;
++ msk = __raw_readl(KS8695_REG(KS8695_GPIO_MODE));
++ __raw_writel(msk | 0x2, KS8695_REG(KS8695_GPIO_MODE));
++
++ msk = __raw_readl(KS8695_REG(KS8695_GPIO_DATA));
++ __raw_writel(msk & ~0x2, KS8695_REG(KS8695_GPIO_DATA));
++ udelay(1000);
++ __raw_writel(msk | 0x2, KS8695_REG(KS8695_GPIO_DATA));
++ udelay(1000);
++#endif
++
++ /* stage 1 initialization, subid, subdevice = 0x0001 */
++ __raw_writel(0x00010001, KS8695_REG(KS8695_CRCSID));
++
++ /* stage 2 initialization */
++ /* prefetch limits with 16 words, retru enable */
++ __raw_writel(0x40000000, KS8695_REG(KS8695_PBCS));
++
++ /* configure memory mapping */
++ __raw_writel(KS8695P_PCIBG_MEM_BASE, KS8695_REG(KS8695_PMBA));
++ __raw_writel(KS8695P_PCI_MEM_MASK, KS8695_REG(KS8695_PMBAM));
++ __raw_writel(KS8695P_PCI_MEM_BASE, KS8695_REG(KS8695_PMBAT));
++
++ /* configure IO mapping */
++ __raw_writel(KS8695P_PCIBG_IO_BASE, KS8695_REG(KS8695_PIOBA));
++ __raw_writel(KS8695P_PCI_IO_MASK, KS8695_REG(KS8695_PIOBAM));
++ __raw_writel(KS8695P_PCI_IO_BASE, KS8695_REG(KS8695_PIOBAT));
++
++ ks8695_pci_configure_interrupt();
++}
++
++static int __init ks8695_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
++{
++ return 2;
++}
++
++struct hw_pci ks8695_pci __initdata = {
++ .nr_controllers = 1,
++ .preinit = ks8695_pci_preinit,
++ .swizzle = pci_std_swizzle,
++ .setup = ks8695_pci_setup,
++ .scan = ks8695_pci_scan_bus,
++ .map_irq = ks8695_pci_map_irq,
++};
++
++static int __init ks8695_pci_init(void)
++{
++ pci_common_init(&ks8695_pci);
++ return 0;
++}
++
++subsys_initcall(ks8695_pci_init);
++
+diff -Naur linux-2.6.16/arch/arm/mach-ks8695/time.c linux-2.6.16.ks8695/arch/arm/mach-ks8695/time.c
+--- linux-2.6.16/arch/arm/mach-ks8695/time.c 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/mach-ks8695/time.c 2006-03-15 22:42:43.000000000 +1000
+@@ -0,0 +1,79 @@
++/*
++ * linux/arch/arm/mach-ks8695/time.c
++ *
++ * Copyright (C) 2002 Micrel Inc.
++ * Copyright (C) 2006 Greg Ungerer <gerg@snapgear.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/interrupt.h>
++#include <linux/init.h>
++#include <linux/time.h>
++#include <asm/system.h>
++#include <asm/hardware.h>
++#include <asm/irq.h>
++#include <asm/io.h>
++#include <asm/mach/time.h>
++
++
++/*
++ * Cannout read back time on KS8695.
++ */
++static unsigned long ks8695_gettimeoffset(void)
++{
++ return 0;
++}
++
++static irqreturn_t ks8695_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ write_seqlock(&xtime_lock);
++ __raw_writel(KS8695_INTMASK_TIMERINT1, KS8695_REG(KS8695_INT_STATUS));
++ timer_tick(regs);
++ write_sequnlock(&xtime_lock);
++ return IRQ_HANDLED;
++}
++
++static struct irqaction ks8695_timer_irq = {
++ .name = "KS8695 Timer Tick",
++ .flags = SA_INTERRUPT | SA_TIMER,
++ .handler = ks8695_timer_interrupt,
++};
++
++/*
++ * Set up timer interrupt, and return the current time in seconds.
++ */
++static void __init ks8695_timer_init(void)
++{
++ unsigned long tmout = CLOCK_TICK_RATE / HZ;
++
++ /* Initialise to a known state (all timers off) */
++ __raw_writel(0, KS8695_REG(KS8695_TIMER_CTRL));
++
++ /* enable timer 1 as HZ clock */
++ __raw_writel(tmout, KS8695_REG(KS8695_TIMER1));
++ __raw_writel(tmout / 2, KS8695_REG(KS8695_TIMER1_PCOUNT));
++ __raw_writel(0x02, KS8695_REG(KS8695_TIMER_CTRL));
++
++ setup_irq(KS8695_INT_TIMERINT1, &ks8695_timer_irq);
++}
++
++struct sys_timer ks8695_timer = {
++ .init = ks8695_timer_init,
++ .offset = ks8695_gettimeoffset,
++};
++
+diff -Naur linux-2.6.16/arch/arm/Makefile linux-2.6.16.ks8695/arch/arm/Makefile
+--- linux-2.6.16/arch/arm/Makefile 2006-03-20 15:53:29.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/Makefile 2006-03-21 17:07:44.000000000 +1000
+@@ -94,6 +94,7 @@
+ machine-$(CONFIG_ARCH_IOP3XX) := iop3xx
+ machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx
+ machine-$(CONFIG_ARCH_IXP2000) := ixp2000
++ machine-$(CONFIG_ARCH_KS8695) := ks8695
+ machine-$(CONFIG_ARCH_OMAP1) := omap1
+ machine-$(CONFIG_ARCH_OMAP2) := omap2
+ incdir-$(CONFIG_ARCH_OMAP) := omap
+diff -Naur linux-2.6.16/arch/arm/mm/Kconfig linux-2.6.16.ks8695/arch/arm/mm/Kconfig
+--- linux-2.6.16/arch/arm/mm/Kconfig 2006-03-20 15:53:29.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/mm/Kconfig 2006-03-21 17:07:46.000000000 +1000
+@@ -83,8 +83,8 @@
+ # ARM922T
+ config CPU_ARM922T
+ bool "Support ARM922T processor" if ARCH_INTEGRATOR
+- depends on ARCH_LH7A40X || ARCH_INTEGRATOR
+- default y if ARCH_LH7A40X
++ depends on ARCH_LH7A40X || ARCH_INTEGRATOR || ARCH_KS8695
++ default y if ARCH_LH7A40X || ARCH_KS8695
+ select CPU_32v4
+ select CPU_ABRT_EV4T
+ select CPU_CACHE_V4WT
+
+-------------------------------------------------------------------
+List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
+FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
+Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php \ No newline at end of file
diff --git a/recipes/linux/linux-ks8695/ks8695-headers-r0.patch b/recipes/linux/linux-ks8695/ks8695-headers-r0.patch
new file mode 100644
index 0000000000..257eb7d1c8
--- /dev/null
+++ b/recipes/linux/linux-ks8695/ks8695-headers-r0.patch
@@ -0,0 +1,980 @@
+This patch inludes the architecture support headers.
+And also a boot time ID stub for the loader.
+
+
+diff -Naur linux-2.6.16/arch/arm/Kconfig linux-2.6.16.ks8695/arch/arm/Kconfig
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/debug-macro.S linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/debug-macro.S
+--- linux-2.6.16/include/asm-arm/arch-ks8695/debug-macro.S 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/debug-macro.S 2006-02-17 11:57:24.000000000 +1000
+@@ -0,0 +1,37 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/debug-macro.S
++ *
++ * Debugging macro include header
++ *
++ * Copyright (C) 1994-1999 Russell King
++ * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
++ * (C) Copyright 2006 Greg Ungerer <gerg@snapgear.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++.macro addruart,rx
++ mrc p15, 0, \rx, c1, c0
++ tst \rx, #1 @ MMU enabled?
++ moveq \rx, #0x03000000 @ 0x03ffe000
++ orreq \rx, \rx, #0x00ff0000
++ movne \rx, #0xff000000 @ 0xff00e000
++ orr \rx, \rx, #0x0000e000
++.endm
++
++.macro senduart,rd,rx
++ str \rd, [\rx, #0x4]
++.endm
++
++.macro waituart,rd,rx
++1: ldr \rd, [\rx, #0x14]
++ and \rd, \rd, #0x40 @ check TEMT bit
++ teq \rd, #0x40
++ bne 1b
++.endm
++
++.macro busyuart,rd,rx
++.endm
++
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/dma.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/dma.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/dma.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/dma.h 2006-02-20 13:39:13.000000000 +1000
+@@ -0,0 +1,26 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/dma.h
++ *
++ * Copyright (C) 1997,1998 Russell King
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#ifndef __ASM_ARCH_DMA_H
++#define __ASM_ARCH_DMA_H
++
++#define MAX_DMA_CHANNELS 0
++#define MAX_DMA_ADDRESS 0xffffffff
++
++#endif /* __ASM_ARCH_DMA_H */
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/entry-macro.S linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/entry-macro.S
+--- linux-2.6.16/include/asm-arm/arch-ks8695/entry-macro.S 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/entry-macro.S 2006-02-20 10:39:00.000000000 +1000
+@@ -0,0 +1,28 @@
++/*
++ * include/asm-arm/arch-ks8695/entry-macro.S
++ *
++ * Low-level IRQ helper macros for KS8695 based platforms
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2. This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ */
++
++.macro disable_fiq
++.endm
++
++
++.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
++ ldr \irqnr, =KS8695_IO_VIRT+KS8695_INT_MASK_STATUS
++ ldr \irqstat, [\irqnr] @ get masked status
++
++ mov \irqnr, #0
++1001: tst \irqstat, #1
++ bne 1002f
++ add \irqnr, \irqnr, #1
++ mov \irqstat, \irqstat, lsr #1
++ cmp \irqnr, #32
++ bcc 1001b
++1002: @ EQ will be set if we reach
++.endm
++
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/hardware.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/hardware.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/hardware.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/hardware.h 2006-03-15 00:22:13.000000000 +1000
+@@ -0,0 +1,38 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/hardware.h
++ *
++ * This file contains the hardware definitions of the KS8695.
++ *
++ * Copyright (C) 2002 Micrel Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#ifndef __ASM_ARCH_HARDWARE_H
++#define __ASM_ARCH_HARDWARE_H
++
++/*
++ * Virtual memory mapping of the KS8695 internal register area.
++ * This is a static mapping, set up early in kernel startup.
++ */
++#define KS8695_IO_VIRT 0xFF000000
++#define KS8695_REG(x) (KS8695_IO_VIRT + (x))
++
++#define pcibios_assign_all_busses() 1
++#define PCIBIOS_MIN_IO 0x00000100
++#define PCIBIOS_MIN_MEM 0x00010000
++#define PCI_MEMORY_VADDR KS8695P_PCIBG_MEM_BASE
++#define PCI_IO_VADDR KS8695P_PCIBG_IO_BASE
++
++#endif /* __ASM_ARCH_HARDWARE_H */
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/io.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/io.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/io.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/io.h 2006-03-15 00:22:13.000000000 +1000
+@@ -0,0 +1,31 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/io.h
++ *
++ * Copyright (C) 1999 ARM Limited
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#ifndef __ASM_ARCH_IO_H
++#define __ASM_ARCH_IO_H
++
++#include <asm/hardware.h>
++
++#define IO_SPACE_LIMIT 0xffffffff
++
++#define __io(a) (a)
++#define __mem_pci(a) ((unsigned long) (a))
++#define __mem_isa(a) ((unsigned long) (a))
++
++#endif /* __ASM_ARCH_IO_H */
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/irqs.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/irqs.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/irqs.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/irqs.h 2006-03-15 00:22:13.000000000 +1000
+@@ -0,0 +1,98 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/irqs.h
++ *
++ * Copyright (C) 1999 ARM Limited
++ * Copyright (C) 2000 Deep Blue Solutions Ltd.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#ifndef __ASM_ARCH_IRQS_H
++#define __ASM_ARCH_IRQS_H 1
++
++/*
++ * IRQ definitions
++ */
++#define KS8695_INT_EXT_INT0 2
++#define KS8695_INT_EXT_INT1 3
++#define KS8695_INT_EXT_INT2 4
++#define KS8695_INT_EXT_INT3 5
++#define KS8695_INT_TIMERINT0 6
++#define KS8695_INT_TIMERINT1 7
++#define KS8695_INT_UART_TX 8
++#define KS8695_INT_UART_RX 9
++#define KS8695_INT_UART_LINE_ERR 10
++#define KS8695_INT_UART_MODEMS 11
++#define KS8695_INT_LAN_STOP_RX 12
++#define KS8695_INT_LAN_STOP_TX 13
++#define KS8695_INT_LAN_BUF_RX_STATUS 14
++#define KS8695_INT_LAN_BUF_TX_STATUS 15
++#define KS8695_INT_LAN_RX_STATUS 16
++#define KS8695_INT_LAN_TX_STATUS 17
++#define KS8695_INT_HPAN_STOP_RX 18
++#define KS8695_INT_HPNA_STOP_TX 19
++#define KS8695_INT_HPNA_BUF_RX_STATUS 20
++#define KS8695_INT_HPNA_BUF_TX_STATUS 21
++#define KS8695_INT_HPNA_RX_STATUS 22
++#define KS8695_INT_HPNA_TX_STATUS 23
++#define KS8695_INT_BUS_ERROR 24
++#define KS8695_INT_WAN_STOP_RX 25
++#define KS8695_INT_WAN_STOP_TX 26
++#define KS8695_INT_WAN_BUF_RX_STATUS 27
++#define KS8695_INT_WAN_BUF_TX_STATUS 28
++#define KS8695_INT_WAN_RX_STATUS 29
++#define KS8695_INT_WAN_TX_STATUS 30
++
++#define KS8695_INT_UART KS8695_INT_UART_TX
++
++/*
++ * IRQ bit masks
++ */
++#define KS8695_INTMASK_EXT_INT0 (1 << KS8695_INT_EXT_INT0)
++#define KS8695_INTMASK_EXT_INT1 (1 << KS8695_INT_EXT_INT1)
++#define KS8695_INTMASK_EXT_INT2 (1 << KS8695_INT_EXT_INT2)
++#define KS8695_INTMASK_EXT_INT3 (1 << KS8695_INT_EXT_INT3)
++#define KS8695_INTMASK_TIMERINT0 (1 << KS8695_INT_TIMERINT0)
++#define KS8695_INTMASK_TIMERINT1 (1 << KS8695_INT_TIMERINT1)
++#define KS8695_INTMASK_UART_TX (1 << KS8695_INT_UART_TX)
++#define KS8695_INTMASK_UART_RX (1 << KS8695_INT_UART_RX)
++#define KS8695_INTMASK_UART_LINE_ERR (1 << KS8695_INT_UART_LINE_ERR)
++#define KS8695_INTMASK_UART_MODEMS (1 << KS8695_INT_UART_MODEMS)
++#define KS8695_INTMASK_LAN_STOP_RX (1 << KS8695_INT_LAN_STOP_RX)
++#define KS8695_INTMASK_LAN_STOP_TX (1 << KS8695_INT_LAN_STOP_TX)
++#define KS8695_INTMASK_LAN_BUF_RX_STATUS (1 << KS8695_INT_LAN_BUF_RX_STATUS)
++#define KS8695_INTMASK_LAN_BUF_TX_STATUS (1 << KS8695_INT_LAN_BUF_TX_STATUS)
++#define KS8695_INTMASK_LAN_RX_STATUS (1 << KS8695_INT_LAN_RX_STATUS)
++#define KS8695_INTMASK_LAN_TX_STATUS (1 << KS8695_INT_LAN_RX_STATUS)
++#define KS8695_INTMASK_HPAN_STOP_RX (1 << KS8695_INT_HPAN_STOP_RX)
++#define KS8695_INTMASK_HPNA_STOP_TX (1 << KS8695_INT_HPNA_STOP_TX)
++#define KS8695_INTMASK_HPNA_BUF_RX_STATUS (1 << KS8695_INT_HPNA_BUF_RX_STATUS)
++#define KS8695_INTMAKS_HPNA_BUF_TX_STATUS (1 << KS8695_INT_HPNA_BUF_TX_STATUS)
++#define KS8695_INTMASK_HPNA_RX_STATUS (1 << KS8695_INT_HPNA_RX_STATUS)
++#define KS8695_INTMASK_HPNA_TX_STATUS (1 << KS8695_INT_HPNA_TX_STATUS)
++#define KS8695_INTMASK_BUS_ERROR (1 << KS8695_INT_BUS_ERROR)
++#define KS8695_INTMASK_WAN_STOP_RX (1 << KS8695_INT_WAN_STOP_RX)
++#define KS8695_INTMASK_WAN_STOP_TX (1 << KS8695_INT_WAN_STOP_TX)
++#define KS8695_INTMASK_WAN_BUF_RX_STATUS (1 << KS8695_INT_WAN_BUF_RX_STATUS)
++#define KS8695_INTMASK_WAN_BUF_TX_STATUS (1 << KS8695_INT_WAN_BUF_TX_STATUS)
++#define KS8695_INTMASK_WAN_RX_STATUS (1 << KS8695_INT_WAN_RX_STATUS)
++#define KS8695_INTMASK_WAN_TX_STATUS (1 << KS8695_INT_WAN_TX_STATUS)
++
++#define KS8695_SC_VALID_INT 0xFFFFFFFF
++
++
++#define NR_IRQS (32)
++
++#endif /* __ASM_ARCH_IRQS_H */
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/ks8695-pci.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/ks8695-pci.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/ks8695-pci.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/ks8695-pci.h 2006-03-22 22:51:21.000000000 +1000
+@@ -0,0 +1,68 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#ifndef __ASM_ARCH_PLATFORM_PCI_H
++#define __ASM_ARCH_PLATFORM_PCI_H 1
++
++/* PCI memory related defines */
++#define KS8695P_PCIBG_MEM_BASE 0x60000000 /* memory base for bridge*/
++#define KS8695P_PCI_MEM_BASE 0x60000000UL/* memory base in PCI space */
++#define KS8695P_PCI_MEM_SIZE 0x20000000UL/* 512M, can be extended */
++#define KS8695P_PCI_MEM_MASK 0xE0000000 /* 512M */
++
++/* PCI IO related defines */
++#define KS8695P_PCIBG_IO_BASE 0x10000000 /* io base for bridge */
++#define KS8695P_PCI_IO_BASE 0x10000000
++#define KS8695P_PCI_IO_SIZE 0x00010000 /* 64K */
++#define KS8695P_PCI_IO_MASK 0xFF800000 /* 64K range */
++
++/* new registers specific to KS8695P */
++/* PCI related */
++#define KS8695_CRCFID 0x2000
++#define KS8695_CRCFCS 0x2004
++#define KS8695_CRCFRV 0x2008
++#define KS8695_CRCFLT 0x200c
++#define KS8695_CRCBMA 0x2010
++#define KS8695_CRCBA0 0x2014
++#define KS8695_CRCSID 0x202c
++#define KS8695_CRCFIT 0x203c
++
++/* bridge configuration related registers */
++#define KS8695_PBCA 0x2100
++#define KS8695_PBCD 0x2104
++
++/* bridge mode related registers */
++#define KS8695_PBM 0x2200
++#define KS8695_PBCS 0x2204
++#define KS8695_PMBA 0x2208
++#define KS8695_PMBAC 0x220c
++#define KS8695_PMBAM 0x2210
++#define KS8695_PMBAT 0x2214
++#define KS8695_PIOBA 0x2218
++#define KS8695_PIOBAC 0x221c
++#define KS8695_PIOBAM 0x2220
++#define KS8695_PIOBAT 0x2224
++
++/* bits for registers */
++/* 0x2200 */
++#define PBM_BRIDGE_MODE 0x80000000
++
++/* 0x2204 */
++#define PBCS_SW_RESET 0x80000000
++
++/* 0x220c */
++#define PMBAC_TRANS_ENABLE 0x80000000
++
++#endif /* __ASM_ARCH_PLATFORM_PCI_H */
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/ks8695-regs.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/ks8695-regs.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/ks8695-regs.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/ks8695-regs.h 2006-03-22 22:51:21.000000000 +1000
+@@ -0,0 +1,341 @@
++/*
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#ifndef __ASM_ARCH_KS8695_REGS_H
++#define __ASM_ARCH_KS8695_REGS_H 1
++
++/* Physical IO address space of KS8695 internal peripheral registers */
++#define KS8695_IO_BASE 0x03FF0000
++#define KS8695_IO_SIZE 0x00010000
++
++#define KS8695_SYSTEN_CONFIG 0x00
++#define KS8695_SYSTEN_BUS_CLOCK 0x04
++
++/* bus clock definitions*/
++#define KS8695_BUS_CLOCK_125MHZ 0x0
++#define KS8695_BUS_CLOCK_100MHZ 0x1
++#define KS8695_BUS_CLOCK_62MHZ 0x2
++#define KS8695_BUS_CLOCK_50MHZ 0x3
++#define KS8695_BUS_CLOCK_41MHZ 0x4
++#define KS8695_BUS_CLOCK_33MHZ 0x5
++#define KS8695_BUS_CLOCK_31MHZ 0x6
++#define KS8695_BUS_CLOCK_25MHZ 0x7
++
++/* i/o control registers offset difinitions */
++#define KS8695_IO_CTRL0 0x4000
++#define KS8695_IO_CTRL1 0x4004
++#define KS8695_IO_CTRL2 0x4008
++#define KS8695_IO_CTRL3 0x400C
++
++/* memory control registers offset difinitions */
++#define KS8695_MEM_CTRL0 0x4010
++#define KS8695_MEM_CTRL1 0x4014
++#define KS8695_MEM_CTRL2 0x4018
++#define KS8695_MEM_CTRL3 0x401C
++#define KS8695_MEM_GENERAL 0x4020
++#define KS8695_SDRAM_CTRL0 0x4030
++#define KS8695_SDRAM_CTRL1 0x4034
++#define KS8695_SDRAM_GENERAL 0x4038
++#define KS8695_SDRAM_BUFFER 0x403C
++#define KS8695_SDRAM_REFRESH 0x4040
++
++/* WAN control registers offset difinitions */
++#define KS8695_WAN_DMA_TX 0x6000
++#define KS8695_WAN_DMA_RX 0x6004
++#define KS8695_WAN_DMA_TX_START 0x6008
++#define KS8695_WAN_DMA_RX_START 0x600C
++#define KS8695_WAN_TX_LIST 0x6010
++#define KS8695_WAN_RX_LIST 0x6014
++#define KS8695_WAN_MAC_LOW 0x6018
++#define KS8695_WAN_MAC_HIGH 0x601C
++#define KS8695_WAN_MAC_ELOW 0x6080
++#define KS8695_WAN_MAC_EHIGH 0x6084
++
++/* LAN control registers offset difinitions */
++#define KS8695_LAN_DMA_TX 0x8000
++#define KS8695_LAN_DMA_RX 0x8004
++#define KS8695_LAN_DMA_TX_START 0x8008
++#define KS8695_LAN_DMA_RX_START 0x800C
++#define KS8695_LAN_TX_LIST 0x8010
++#define KS8695_LAN_RX_LIST 0x8014
++#define KS8695_LAN_MAC_LOW 0x8018
++#define KS8695_LAN_MAC_HIGH 0x801C
++#define KS8695_LAN_MAC_ELOW 0X8080
++#define KS8695_LAN_MAC_EHIGH 0X8084
++
++/* HPNA control registers offset difinitions */
++#define KS8695_HPNA_DMA_TX 0xA000
++#define KS8695_HPNA_DMA_RX 0xA004
++#define KS8695_HPNA_DMA_TX_START 0xA008
++#define KS8695_HPNA_DMA_RX_START 0xA00C
++#define KS8695_HPNA_TX_LIST 0xA010
++#define KS8695_HPNA_RX_LIST 0xA014
++#define KS8695_HPNA_MAC_LOW 0xA018
++#define KS8695_HPNA_MAC_HIGH 0xA01C
++#define KS8695_HPNA_MAC_ELOW 0xA080
++#define KS8695_HPNA_MAC_EHIGH 0xA084
++
++/* UART control registers offset difinitions */
++#define KS8695_UART_RX_BUFFER 0xE000
++#define KS8695_UART_TX_HOLDING 0xE004
++
++#define KS8695_UART_FIFO_CTRL 0xE008
++#define KS8695_UART_FIFO_TRIG01 0x00
++#define KS8695_UART_FIFO_TRIG04 0x80
++#define KS8695_UART_FIFO_TXRST 0x03
++#define KS8695_UART_FIFO_RXRST 0x02
++#define KS8695_UART_FIFO_FEN 0x01
++
++#define KS8695_UART_LINE_CTRL 0xE00C
++#define KS8695_UART_LINEC_BRK 0x40
++#define KS8695_UART_LINEC_EPS 0x10
++#define KS8695_UART_LINEC_PEN 0x08
++#define KS8695_UART_LINEC_STP2 0x04
++#define KS8695_UART_LINEC_WLEN8 0x03
++#define KS8695_UART_LINEC_WLEN7 0x02
++#define KS8695_UART_LINEC_WLEN6 0x01
++#define KS8695_UART_LINEC_WLEN5 0x00
++
++#define KS8695_UART_MODEM_CTRL 0xE010
++#define KS8695_UART_MODEMC_RTS 0x02
++#define KS8695_UART_MODEMC_DTR 0x01
++
++#define KS8695_UART_LINE_STATUS 0xE014
++#define KS8695_UART_LINES_TXFE 0x20
++#define KS8695_UART_LINES_BE 0x10
++#define KS8695_UART_LINES_FE 0x08
++#define KS8695_UART_LINES_PE 0x04
++#define KS8695_UART_LINES_OE 0x02
++#define KS8695_UART_LINES_RXFE 0x01
++#define KS8695_UART_LINES_ANY (KS8695_UART_LINES_OE | \
++ KS8695_UART_LINES_BE | \
++ KS8695_UART_LINES_PE | \
++ KS8695_UART_LINES_FE)
++
++#define KS8695_UART_MODEM_STATUS 0xE018
++#define KS8695_UART_MODEM_DCD 0x80
++#define KS8695_UART_MODEM_DSR 0x20
++#define KS8695_UART_MODEM_CTS 0x10
++#define KS8695_UART_MODEM_DDCD 0x08
++#define KS8695_UART_MODEM_DDSR 0x02
++#define KS8695_UART_MODEM_DCTS 0x01
++#define KS8695_UART_MODEM_ANY 0xFF
++
++#define KS8695_UART_DIVISOR 0xE01C
++#define KS8695_UART_STATUS 0xE020
++
++/* Interrupt controlller registers offset difinitions */
++#define KS8695_INT_CONTL 0xE200
++#define KS8695_INT_ENABLE 0xE204
++#define KS8695_INT_ENABLE_MODEM 0x0800
++#define KS8695_INT_ENABLE_ERR 0x0400
++#define KS8695_INT_ENABLE_RX 0x0200
++#define KS8695_INT_ENABLE_TX 0x0100
++#define KS8695_INT_UART_MASK 0x0f00
++
++#define KS8695_INT_STATUS 0xE208
++#define KS8695_INT_WAN_PRIORITY 0xE20C
++#define KS8695_INT_HPNA_PRIORITY 0xE210
++#define KS8695_INT_LAN_PRIORITY 0xE214
++#define KS8695_INT_TIMER_PRIORITY 0xE218
++#define KS8695_INT_UART_PRIORITY 0xE21C
++#define KS8695_INT_EXT_PRIORITY 0xE220
++#define KS8695_INT_CHAN_PRIORITY 0xE224
++#define KS8695_INT_BUSERROR_PRO 0xE228
++#define KS8695_INT_MASK_STATUS 0xE22C
++#define KS8695_FIQ_PEND_PRIORITY 0xE230
++#define KS8695_IRQ_PEND_PRIORITY 0xE234
++
++/* timer registers offset difinitions */
++#define KS8695_TIMER_CTRL 0xE400
++#define KS8695_TIMER1 0xE404
++#define KS8695_TIMER0 0xE408
++#define KS8695_TIMER1_PCOUNT 0xE40C
++#define KS8695_TIMER0_PCOUNT 0xE410
++
++/* GPIO registers offset difinitions */
++#define KS8695_GPIO_MODE 0xE600
++#define KS8695_GPIO_CTRL 0xE604
++#define KS8695_GPIO_DATA 0xE608
++
++/* SWITCH registers offset difinitions */
++#define KS8695_SWITCH_CTRL0 0xE800
++#define KS8695_SWITCH_CTRL1 0xE804
++#define KS8695_SWITCH_PORT1 0xE808
++#define KS8695_SWITCH_PORT2 0xE80C
++#define KS8695_SWITCH_PORT3 0xE810
++#define KS8695_SWITCH_PORT4 0xE814
++#define KS8695_SWITCH_PORT5 0xE818
++#define KS8695_SWITCH_LUE_CTRL 0xE824
++#define KS8695_SWITCH_LUE_HIGH 0xE828
++#define KS8695_SWITCH_LUE_LOW 0xE82C
++
++/* some differences between the KS8695(X) and KS8695P */
++#ifdef CONFIG_PCI
++#define KS8695_SWITCH_AUTO0 0xE848
++#define KS8695_SWITCH_AUTO1 0xE84C
++#define KS8695_SWITCH_ADVANCED 0xE860
++#define KS8695_DSCP_HIGH 0xE864
++#define KS8695_DSCP_LOW 0xE868
++#define KS8695_SWITCH_MAC_HIGH 0xE86C
++#define KS8695_SWITCH_MAC_LOW 0xE870
++#define KS8695_LAN12_POWERMAGR 0xE874
++#define KS8695_LAN34_POWERMAGR 0xE878
++#else
++#define KS8695_SWITCH_AUTO0 0xE81C
++#define KS8695_SWITCH_AUTO1 0xE820
++#define KS8695_SWITCH_ADVANCED 0xE830
++#define KS8695_DSCP_HIGH 0xE834
++#define KS8695_DSCP_LOW 0xE838
++#define KS8695_SWITCH_MAC_HIGH 0xE83C
++#define KS8695_SWITCH_MAC_LOW 0xE840
++#define KS8695_LAN12_POWERMAGR 0xE84C
++#define KS8695_LAN34_POWERMAGR 0xE850
++#endif
++
++/* miscellaneours registers difinitions */
++#define KS8695_MANAGE_COUNTER 0xE844
++#define KS8695_MANAGE_DATA 0xE848
++
++#define KS8695_DEVICE_ID 0xEA00
++#define KS8695_REVISION_ID 0xEA04
++
++#define KS8695_MISC_CONTROL 0xEA08
++#define KS8695_WAN_CONTROL 0xEA0C
++#define KS8695_WAN_POWERMAGR 0xEA10
++#define KS8695_WAN_PHY_CONTROL 0xEA14
++#define KS8695_WAN_PHY_STATUS 0xEA18
++
++
++/*
++ * The following are all new in the KS8695P.
++ */
++#ifdef CONFIG_PCI
++
++/* most bit definition are same as KS8695, except few new bits */
++#define KS8695_SEC0 0xE800
++#define KS8695_SEC1 0xE804
++
++/* new bits */
++#define KS8695_SEC0_BACKOFF_EN 0x80000000
++#define KS8695_SEC0_FRAME_LEN_CHECK 0x00020000
++#define KS8695_SEC0_DMA_HALF_DUPLEX 0x00000010
++
++/* new bits */
++#define KS8695_SEC1_NO_IEEE_AN 0x00000800
++#define KS8695_SEC1_TPID_MODE 0x00000400
++#define KS8695_SEC1_NO_TX_8021X_FLOW_CTRL 0x00000080
++#define KS8695_SEC1_NO_RX_8021X_FLOW_CTRL 0x00000040
++#define KS8695_SEC1_HUGE_PACKET 0x00000020
++#define KS8695_SEC1_8021Q_VLAN_EN 0x00000010
++#define KS8695_SEC1_MII_10BT 0x00000002
++#define KS8695_SEC1_NULL_VID 0x00000001
++
++/* Port 1-4 and 5 Configuration Register Set 1 */
++#define KS8695_SEP1C1 0xE80C
++#define KS8695_SEP2C1 0xE818
++#define KS8695_SEP3C1 0xE824
++#define KS8695_SEP4C1 0xE830
++#define KS8695_SEP5C1 0xE83C
++
++/* Port 1-4 and 5 Configuration Register Set 2 */
++#define KS8695_SEP1C2 0xE810
++#define KS8695_SEP2C2 0xE81C
++#define KS8695_SEP3C2 0xE828
++#define KS8695_SEP4C2 0xE834
++#define KS8695_SEP5C2 0xE840
++
++#define KS8695_SEPC2_VLAN_FILTER 0x10000000
++#define KS8695_SEPC2_DISCARD_NON_PVID 0x08000000
++#define KS8695_SEPC2_FORCE_FLOW_CTRL 0x04000000
++#define KS8695_SEPC2_BACK_PRESSURE_EN 0x02000000
++
++#define KS8695_SEPC2_TX_H_RATECTRL_MASK 0x00FFF000
++#define KS8695_SEPC2_TX_L_RATECTRL_MASK 0x00000FFF
++
++/* Port 1-4 and 5 Configuration Register Set 3 */
++#define KS8695_SEP1C3 0xE814
++#define KS8695_SEP2C3 0xE820
++#define KS8695_SEP3C3 0xE82C
++#define KS8695_SEP4C3 0xE838
++#define KS8695_SEP5C3 0xE844
++
++#define KS8695_SEPC3_RX_H_RATECTRL_MASK 0xFFF00000
++#define KS8695_SEPC3_RX_L_RATECTRL_MASK 0x000FFF00
++#define KS8695_SEPC3_RX_DIF_RATECTRL_EN 0x00000080
++#define KS8695_SEPC3_RX_L_RATECTRL_EN 0x00000040
++#define KS8695_SEPC3_RX_H_RATECTRL_EN 0x00000020
++#define KS8695_SEPC3_RX_L_RATEFLOW_EN 0x00000010
++#define KS8695_SEPC3_RX_H_RATEFLOW_EN 0x00000008
++#define KS8695_SEPC3_TX_DIF_RATECTRL_EN 0x00000004
++#define KS8695_SEPC3_TX_L_RATECTRL_EN 0x00000002
++#define KS8695_SEPC3_TX_H_RATECTRL_EN 0x00000001
++
++/* Port auto negotiation related registers */
++#define KS8695_SEP12AN 0xE848
++#define KS8695_SEP34AN 0xE84C
++
++/* Indirect Access Control register */
++#define KS8695_SEIAC 0xE850
++#define KS8695_SEIADH2 0xE854
++#define KS8695_SEIADH1 0xE858
++#define KS8695_SEIADL 0xE85C
++
++#define KS8695_SEIAC_READ 0x00001000
++#define KS8695_SEIAC_WRITE 0x00000000
++#define KS8695_SEIAC_TAB_STATIC 0x00000000
++#define KS8695_SEIAC_TAB_VLAN 0x00000400
++#define KS8695_SEIAC_TAB_DYNAMIC 0x00000800
++#define KS8695_SEIAC_TAB_MIB 0x00000C00
++#define KS8695_SEIAC_INDEX_MASK 0x000003FF
++
++/* Advanced Feature Control register */
++#define KS8695_SEAFC 0xE860
++#define KS8695_SEDSCPH 0xE864
++#define KS8695_SEDSCPL 0xE868
++#define KS8695_SEMAH 0xE86C
++#define KS8695_SEMAL 0xE870
++
++/* LAN PHY power management related registers */
++#define KS8695_LPPM12 0xE874
++#define KS8695_LPPM34 0xE878
++
++/* new bits */
++#define KS8695_LPPM_PHY_LOOPBACK 0x4000
++#define KS8695_LPPM_RMT_LOOPBACK 0x2000
++#define KS8695_LPPM_PHY_ISOLATE 0x1000
++#define KS8695_LPPM_SOFT_RESET 0x0800
++#define KS8695_LPPM_FORCE_LINK 0x0400
++
++/* new bits */
++#define KS8695_LPPM_PHY_LOOPBACK 0x4000
++#define KS8695_LPPM_RMT_LOOPBACK 0x2000
++#define KS8695_LPPM_PHY_ISOLATE 0x1000
++#define KS8695_LPPM_SOFT_RESET 0x0800
++#define KS8695_LPPM_FORCE_LINK 0x0400
++
++/* Digital Testing Status and Control Registers */
++#define KS8695_SEDTS 0xE87C
++#define KS8695_SEATCS 0xE880
++
++/* new bits for WAN PHY Power mangement register */
++#define KS8695_WPPM_PHY_LOOPBACK 0x00004000
++#define KS8695_WPPM_RMT_LOOPBACK 0x00002000
++#define KS8695_WPPM_PHY_ISOLATION 0x00001000
++#define KS8695_WPPM_FORCE_LINK 0x00000400
++
++#endif /* CONFIG_PCI */
++
++#endif /* __ASM_ARCH_KS8695_REGS_H */
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/memory.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/memory.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/memory.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/memory.h 2006-03-22 23:45:56.000000000 +1000
+@@ -0,0 +1,44 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/memory.h
++ *
++ * Copyright (C) 2002 Micrel Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#ifndef __ASM_ARCH_MEMORY_H
++#define __ASM_ARCH_MEMORY_H
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/ks8695-regs.h>
++#include <asm/arch/ks8695-pci.h>
++
++/*
++ * All the current machines based on this I know of have RAM based at
++ * address 0. Lets deal with any that don't if/when we hit them.
++ */
++#define PHYS_OFFSET UL(0x00000000)
++
++/*
++ * Virtual view <-> DMA view memory address translations
++ * virt_to_bus: Used to translate the virtual address to an
++ * address suitable to be passed to set_dma_addr
++ * bus_to_virt: Used to convert an address for DMA operations
++ * to an address that the kernel can use.
++ * On KS8695, physical and bus address are same for dram
++ */
++#define __virt_to_bus(x) ((x) - PAGE_OFFSET + KS8695P_PCI_MEM_BASE)
++#define __bus_to_virt(x) ((x) - KS8695P_PCI_MEM_BASE + PAGE_OFFSET)
++
++#endif /* __ASM_ARCH_MEMORY_H */
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/param.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/param.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/param.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/param.h 2006-02-20 13:39:13.000000000 +1000
+@@ -0,0 +1,20 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/param.h
++ *
++ * Copyright (C) 1999 ARM Limited
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/system.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/system.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/system.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/system.h 2006-02-21 10:07:50.000000000 +1000
+@@ -0,0 +1,48 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/system.h
++ *
++ * Copyright (C) 2002 Micrel Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#ifndef __ASM_ARCH_SYSTEM_H
++#define __ASM_ARCH_SYSTEM_H
++
++#include <asm/io.h>
++#include <asm/arch/ks8695-regs.h>
++
++static void arch_idle(void)
++{
++ /*
++ * This should do all the clock switching
++ * and wait for interrupt tricks
++ */
++ cpu_do_idle();
++}
++
++static inline void arch_reset(char mode)
++{
++ unsigned int val;
++
++ /* To reset, use the watchdog timer */
++ val = __raw_readl(KS8695_REG(KS8695_TIMER_CTRL)) & 0x02;
++ __raw_writel(val, KS8695_REG(KS8695_TIMER_CTRL));
++ val = (10 << 8) | 0xFF;
++ __raw_writel(val, KS8695_REG(KS8695_TIMER0));
++ val = __raw_readl(KS8695_REG(KS8695_TIMER_CTRL)) | 0x01;
++ __raw_writel(val, KS8695_REG(KS8695_TIMER_CTRL));
++}
++
++#endif /* __ASM_ARCH_SYSTEM_H */
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/timex.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/timex.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/timex.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/timex.h 2006-03-15 22:44:05.000000000 +1000
+@@ -0,0 +1,26 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/timex.h
++ *
++ * Copyright (C) 1999 ARM Limited
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#ifndef __ASM_ARCH_TIMEX_H
++#define __ASM_ARCH_TIMEX_H 1
++
++#define CLOCK_TICK_RATE (25000000)
++
++#endif /* __ASM_ARCH_TIMEX_H */
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/uncompress.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/uncompress.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/uncompress.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/uncompress.h 2006-03-15 00:22:13.000000000 +1000
+@@ -0,0 +1,60 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/uncompress.h
++ *
++ * Copyright (C) 1999 ARM Limited
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <asm/arch/ks8695-regs.h>
++
++/*
++ * These access routines operate on the physical address space.
++ */
++static inline unsigned int ks8695_getreg(unsigned int r)
++{
++ return *((unsigned int *) (KS8695_IO_BASE + r));
++}
++
++static inline void ks8695_setreg(unsigned int r, unsigned int v)
++{
++ *((unsigned int *) (KS8695_IO_BASE + r)) = v;
++}
++
++static void putc(char c)
++{
++ while ((ks8695_getreg(KS8695_UART_LINE_STATUS) & KS8695_UART_LINES_TXFE) == 0)
++ ;
++
++ ks8695_setreg(KS8695_UART_TX_HOLDING, c);
++}
++
++
++static void putstr(const char *s)
++{
++ while (*s) {
++ putc(*s);
++ if (*s == '\n')
++ putc('\r');
++ s++;
++ }
++}
++
++/*
++ * nothing to do
++ */
++#define arch_decomp_setup()
++
++#define arch_decomp_wdog()
+diff -Naur linux-2.6.16/include/asm-arm/arch-ks8695/vmalloc.h linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/vmalloc.h
+--- linux-2.6.16/include/asm-arm/arch-ks8695/vmalloc.h 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/include/asm-arm/arch-ks8695/vmalloc.h 2006-02-20 13:39:13.000000000 +1000
+@@ -0,0 +1,26 @@
++/*
++ * linux/include/asm-arm/arch-ks8695/vmalloc.h
++ *
++ * Copyright (C) 2000 Russell King.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#ifndef __ASM_ARCH_VMALLOC_H
++#define __ASM_ARCH_VMALLOC_H 1
++
++#define VMALLOC_END (PAGE_OFFSET + 0x10000000)
++
++#endif /* __ASM_ARCH_VMALLOC_H */
+diff -Naur linux-2.6.16/arch/arm/boot/compressed/head-ks8695.S linux-2.6.16.ks8695/arch/arm/boot/compressed/head-ks8695.S
+--- linux-2.6.16/arch/arm/boot/compressed/head-ks8695.S 1970-01-01 10:00:00.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/boot/compressed/head-ks8695.S 2006-03-20 13:55:24.000000000 +1000
+@@ -0,0 +1,5 @@
++#include <asm/mach-types.h>
++
++ .section ".start", "ax"
++ mov r7, #(MACH_TYPE_KS8695 & 0xff)
++ orr r7, r7, #(MACH_TYPE_KS8695 & 0xff00)
+diff -Naur linux-2.6.16/arch/arm/boot/compressed/Makefile linux-2.6.16.ks8695/arch/arm/boot/compressed/Makefile
+--- linux-2.6.16/arch/arm/boot/compressed/Makefile 2006-03-20 15:53:29.000000000 +1000
++++ linux-2.6.16.ks8695/arch/arm/boot/compressed/Makefile 2006-03-21 17:07:45.000000000 +1000
+@@ -46,6 +46,10 @@
+ OBJS += head-sharpsl.o
+ endif
+
++ifeq ($(CONFIG_ARCH_KS8695),y)
++OBJS += head-ks8695.o
++endif
++
+ ifeq ($(CONFIG_ARCH_AT91RM9200),y)
+ OBJS += head-at91rm9200.o
+ endif
+
+-------------------------------------------------------------------
+List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
+FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
+Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php \ No newline at end of file