diff -Naurp -x'*~' kernel-source-2.6.8/Documentation/powerpc/amigaone.txt kernel-source-2.6.8-a1-rel/Documentation/powerpc/amigaone.txt --- kernel-source-2.6.8/Documentation/powerpc/amigaone.txt 1970-01-01 01:00:00.000000000 +0100 +++ kernel-source-2.6.8-a1-rel/Documentation/powerpc/amigaone.txt 2006-12-06 22:16:22.000000000 +0100 @@ -0,0 +1,54 @@ +Linux 2.6 on the AmigaOne/Teron +------------------------------- + +Updated information, patches and kernels can be found at +http://amigaone-linux.sourceforge.net + +The following are known not to work yet: + - USB seems to fail on some AmigaOne, which seems to be due to a problem + with the interrupt controller. + - serial port detection + - parallel port detection and ECP/EPP mode + - NVRAM access + - DMA coherent support for sound cards + - AGPGART/PCIGART/DRI graphics acceleration + - The CPU_FTR_NEED_COHERENT define in arch/ppc/cputable.c has to be + removed for the AmigaOne/Teron (probably due to the non cache coherent + architecture). + +The following applies to the AmigaOne Linux support in newer kernels of the +2.6.x series: + - Floppy support wasn't ported to newer kernels yet (>2.6.15). + - Support for non cache coherent DMA was removed in 2.6.18 for the "ppc" + architecture. Thus the AmigaOne Linux port has to be ported to the new + "powerpc" architecture first, but this requires a newer U-boot version + with support for a flatten device tree. + +The AmigaOne/Teron boards are build around the Articia S northbridge. +Unfortunately this northbridge doesn't support cache coherent DMA and thus +this Linux port uses the non cache coherent DMA implementation in +arch/ppc/kernel/dma-mapping.c. As not all drivers support non cache coherent +DMA, some drivers (namely the ALSA sound drivers and probably other drivers +too) still use the standard DMA memory allocation functions. Previous attemps +to fix the non cache coherent DMA problem (e.g. by limiting the transfer size +of a IDE DMA request), did not fix the actual problem and thus failed under +high system load! Also ethernet operation was affected by the non cache +coherent DMA problem. + +The L2CR is now set to 0xC0000000 per default, if there is no "l2cr=" boot +option defined and the L2 cache was not activated before. + +To compile a kernel, ensure mkimage is on your PATH then +make amigaone_defconfig +make uImage +make modules +su; make modules_install +the kernel will be in arch/ppc/boot/images/uImage - + either copy it to an RDB partition and add it to the boot selector menu, + or make it into an eltorito bootable CD, + or dd it to a spare PReP boot partition. + +The AmigaOne Linux 2.4 patches were ported to Linux 2.6 by Ken Moffat. The non +cache coherent DMA fix and highmem support was added by Gerhard Pircher. + +Gerhard Pircher diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/Kconfig kernel-source-2.6.8-a1-rel/arch/ppc/Kconfig --- kernel-source-2.6.8/arch/ppc/Kconfig 2004-08-14 07:38:08.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/arch/ppc/Kconfig 2006-12-04 22:16:14.000000000 +0100 @@ -507,6 +507,15 @@ config APUS More information is available at: . +config AMIGAONE + bool "AmigaOne/Teron" + select NOT_COHERENT_CACHE + help + Select AmigaOne/Teron if configuring for an MAI Teron board, which + is sold as the AmigaOne. + More information is available at: + + config WILLOW bool "Cogent-Willow" diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/configs/amigaone_defconfig kernel-source-2.6.8-a1-rel/arch/ppc/configs/amigaone_defconfig --- kernel-source-2.6.8/arch/ppc/configs/amigaone_defconfig 1970-01-01 01:00:00.000000000 +0100 +++ kernel-source-2.6.8-a1-rel/arch/ppc/configs/amigaone_defconfig 2006-12-06 21:39:01.000000000 +0100 @@ -0,0 +1,1765 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_MMU=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_HAVE_DEC_LOCK=y +CONFIG_PPC=y +CONFIG_PPC32=y +CONFIG_GENERIC_NVRAM=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_CLEAN_COMPILE=y +CONFIG_BROKEN_ON_SMP=y + +# +# General setup +# +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_SYSCTL=y +CONFIG_AUDIT=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_HOTPLUG=y +# CONFIG_IKCONFIG is not set +CONFIG_EMBEDDED=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_OBSOLETE_MODPARM=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor +# +CONFIG_6xx=y +# CONFIG_40x is not set +# CONFIG_44x is not set +# CONFIG_POWER3 is not set +# CONFIG_POWER4 is not set +# CONFIG_8xx is not set +# CONFIG_E500 is not set +CONFIG_ALTIVEC=y +CONFIG_TAU=y +# CONFIG_TAU_INT is not set +CONFIG_TAU_AVERAGE=y +# CONFIG_CPU_FREQ is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_PPC_STD_MMU=y +CONFIG_NOT_COHERENT_CACHE=y + +# +# Platform options +# +# CONFIG_PPC_MULTIPLATFORM is not set +# CONFIG_APUS is not set +CONFIG_AMIGAONE=y +# CONFIG_WILLOW is not set +# CONFIG_PCORE is not set +# CONFIG_POWERPMC250 is not set +# CONFIG_EV64260 is not set +# CONFIG_SPRUCE is not set +# CONFIG_LOPEC is not set +# CONFIG_MCPN765 is not set +# CONFIG_MVME5100 is not set +# CONFIG_PPLUS is not set +# CONFIG_PRPMC750 is not set +# CONFIG_PRPMC800 is not set +# CONFIG_SANDPOINT is not set +# CONFIG_ADIR is not set +# CONFIG_K2 is not set +# CONFIG_PAL4 is not set +# CONFIG_GEMINI is not set +# CONFIG_EST8260 is not set +# CONFIG_SBC82xx is not set +# CONFIG_SBS8260 is not set +# CONFIG_RPX8260 is not set +# CONFIG_TQM8260 is not set +# CONFIG_ADS8272 is not set +# CONFIG_LITE5200 is not set +# CONFIG_SMP is not set +# CONFIG_PREEMPT is not set +CONFIG_HIGHMEM=y +CONFIG_KERNEL_ELF=y +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +# CONFIG_CMDLINE_BOOL is not set + +# +# Bus options +# +CONFIG_GENERIC_ISA_DMA=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_NAMES=y + +# +# PCMCIA/CardBus support +# +# CONFIG_PCMCIA is not set + +# +# Advanced setup +# +# CONFIG_ADVANCED_OPTIONS is not set + +# +# Default settings for advanced configuration options are used +# +CONFIG_HIGHMEM_START=0xfe000000 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_KERNEL_START=0xc0000000 +CONFIG_TASK_SIZE=0x80000000 +CONFIG_CONSISTENT_START=0xff100000 +CONFIG_CONSISTENT_SIZE=0x00200000 +CONFIG_BOOT_LOAD=0x00800000 + +# +# Device Drivers +# + +# +# Generic Driver Options +# +# CONFIG_STANDALONE is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=m +# CONFIG_DEBUG_DRIVER is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_PARPORT_PC_CML1=y +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +# CONFIG_PARPORT_OTHER is not set +CONFIG_PARPORT_1284=y + +# +# Plug and Play support +# + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +CONFIG_PARIDE=m +CONFIG_PARIDE_PARPORT=y + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +CONFIG_BLK_DEV_DAC960=m +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=y +CONFIG_BLK_DEV_NBD=y +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y +CONFIG_LBD=y + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +CONFIG_BLK_DEV_IDEFLOPPY=y +CONFIG_BLK_DEV_IDESCSI=m +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_IDE_TASKFILE_IO is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_IDEPCI_SHARE_IRQ=y +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_GENERIC=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_SL82C105 is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_ADMA=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_SC1200 is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_NS87415 is not set +CONFIG_BLK_DEV_PDC202XX_OLD=m +CONFIG_PDC202XX_BURST=y +CONFIG_BLK_DEV_PDC202XX_NEW=m +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_BLK_DEV_SVWKS is not set +CONFIG_BLK_DEV_SIIMAGE=y +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_IDE_ARM is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_IVB is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI device support +# +CONFIG_SCSI=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m + +# +# 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=y +# CONFIG_SCSI_FC_ATTRS is not set + +# +# SCSI low-level drivers +# +# 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=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_DEBUG_ENABLE=y +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +# CONFIG_SCSI_AIC7XXX_OLD is not set +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +CONFIG_AIC79XX_ENABLE_RD_STRM=y +CONFIG_AIC79XX_DEBUG_ENABLE=y +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_MEGARAID is not set +CONFIG_SCSI_SATA=y +# CONFIG_SCSI_SATA_SVW is not set +# CONFIG_SCSI_ATA_PIIX is not set +# CONFIG_SCSI_SATA_NV is not set +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_SIL=y +# CONFIG_SCSI_SATA_SIS is not set +# CONFIG_SCSI_SATA_VIA is not set +# CONFIG_SCSI_SATA_VITESSE is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +CONFIG_SCSI_IZIP_EPP16=y +CONFIG_SCSI_IZIP_SLOW_CTR=y +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 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 + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=m +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID5=m +# CONFIG_MD_RAID6 is not set +CONFIG_MD_MULTIPATH=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_CRYPT=m +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_MIRROR is not set +# CONFIG_DM_ZERO is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +CONFIG_IEEE1394=m + +# +# Subsystem Options +# +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_IEEE1394_OUI_DB=y +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y + +# +# Device Drivers +# +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_OHCI1394=m + +# +# Protocol Drivers +# +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_SBP2=m +CONFIG_IEEE1394_SBP2_PHYS_DMA=y +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_CMP=m +CONFIG_IEEE1394_AMDTP=m + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# Macintosh device drivers +# + +# +# Networking support +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +# CONFIG_NETLINK_DEV is not set +CONFIG_UNIX=y +CONFIG_NET_KEY=m +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_FWMARK=y +CONFIG_IP_ROUTE_NAT=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_TOS=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m + +# +# IP: Virtual Server Configuration +# +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IPV6=y +CONFIG_IPV6_PRIVACY=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_TUNNEL=m +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_BRIDGE_NETFILTER=y + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_TFTP=m +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_OWNER=m +# CONFIG_IP_NF_MATCH_PHYSDEV is not set +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m +# CONFIG_IP_NF_NAT_LOCAL is not set +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_COMPAT_IPCHAINS=m +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_REALM=m + +# +# IPv6: Netfilter Configuration +# +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_TARGET_MARK=m +CONFIG_IP6_NF_RAW=m + +# +# Bridge: Netfilter Configuration +# +# CONFIG_BRIDGE_NF_EBTABLES is not set +CONFIG_XFRM=y +CONFIG_XFRM_USER=m + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +CONFIG_BRIDGE=m +CONFIG_VLAN_8021Q=m +# CONFIG_DECNET is not set +CONFIG_LLC=m +# CONFIG_LLC2 is not set +CONFIG_IPX=m +CONFIG_IPX_INTERN=y +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +CONFIG_WAN_ROUTER=m +CONFIG_NET_HW_FLOWCONTROL=y + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +# CONFIG_NET_SCH_CLK_JIFFIES is not set +CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y +# CONFIG_NET_SCH_CLK_CPU is not set +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_NET_CLS_IND=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +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_CMTP is not set +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_BCSP_TXCRC=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +# CONFIG_BT_HCIVHCI is not set +CONFIG_NETDEVICES=y +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_VORTEX=y +CONFIG_TYPHOON=y + +# +# Tulip family network device support +# +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +CONFIG_TULIP_MMIO=y +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +# CONFIG_HP100 is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_AMD8111_ETH is not set +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set +# CONFIG_B44 is not set +# CONFIG_FORCEDETH is not set +# CONFIG_EEPRO100 is not set +CONFIG_E100=m +# CONFIG_E100_NAPI is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +CONFIG_NE2K_PCI=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set + +# +# Ethernet (1000 Mbit) +# +CONFIG_DL2K=m +# CONFIG_E1000 is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_R8169=m +CONFIG_SK98LIN=m +# CONFIG_TIGON3 is not set + +# +# Ethernet (10000 Mbit) +# +# CONFIG_IXGB is not set +# CONFIG_S2IO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y + +# +# Obsolete Wireless cards support (pre-802.11) +# +CONFIG_STRIP=m + +# +# Wireless 802.11b ISA/PCI cards support +# +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m + +# +# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support +# +# CONFIG_PRISM54 is not set +CONFIG_NET_WIRELESS=y + +# +# Wan interfaces +# +# CONFIG_WAN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +# CONFIG_NET_FC is not set +CONFIG_SHAPER=m +# CONFIG_NETCONSOLE is not set + +# +# ISDN subsystem +# +CONFIG_ISDN=m + +# +# Old ISDN4Linux +# +# CONFIG_ISDN_I4L is not set + +# +# CAPI subsystem +# +CONFIG_ISDN_CAPI=m +# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set +# CONFIG_ISDN_CAPI_MIDDLEWARE is not set +CONFIG_ISDN_CAPI_CAPI20=m + +# +# CAPI hardware drivers +# + +# +# Active AVM cards +# +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +# CONFIG_ISDN_DRV_AVMB1_B1PCMCIA is not set +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m + +# +# Active Eicon DIVA Server cards +# +# CONFIG_CAPI_EICON is not set + +# +# Telephony Support +# +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_MOUSEDEV_PSAUX_ENABLE=y +CONFIG_INPUT_JOYDEV=m +# CONFIG_INPUT_TSDEV is not set +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_EVBUG is not set + +# +# Input I/O drivers +# +CONFIG_GAMEPORT=m +CONFIG_SOUND_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_VORTEX=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_CS461x=m +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_VSXXXAA is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDDLER=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_INPUT_JOYDUMP=m +# CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_MISC=y +CONFIG_INPUT_UINPUT=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_MULTIPORT=y +# CONFIG_SERIAL_8250_RSA is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_PRINTER=m +CONFIG_LP_CONSOLE=y +CONFIG_PPDEV=m +CONFIG_TIPAR=m +# CONFIG_QIC02_TAPE is not set + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_NVRAM is not set +CONFIG_GEN_RTC=y +CONFIG_GEN_RTC_X=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_RAW_DRIVER is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m + +# +# I2C Algorithms +# +CONFIG_I2C_ALGOBIT=y +CONFIG_I2C_ALGOPCF=m + +# +# I2C Hardware Bus support +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_I810 is not set +CONFIG_I2C_ISA=m +# CONFIG_I2C_NFORCE2 is not set +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_PROSAVAGE is not set +# CONFIG_I2C_SAVAGE4 is not set +# CONFIG_SCx200_ACB is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VOODOO3=m + +# +# Hardware Sensors Chip support +# +CONFIG_I2C_SENSOR=m +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_FSCHER is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_MAX1619 is not set +CONFIG_SENSORS_VIA686A=m +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83627HF is not set + +# +# Other I2C Chip support +# +CONFIG_SENSORS_EEPROM=m +CONFIG_SENSORS_PCF8574=m +CONFIG_SENSORS_PCF8591=m +# CONFIG_SENSORS_RTC8564 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set + +# +# Dallas's 1-wire bus +# +# CONFIG_W1 is not set + +# +# Misc devices +# + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=m + +# +# Video For Linux +# + +# +# Video Adapters +# +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_TUNER_3036=m +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_MXB=m +# CONFIG_VIDEO_DPC is not set +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_OVCAMCHIP=m + +# +# Radio Adapters +# +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAXIRADIO=m +# CONFIG_RADIO_MAESTRO is not set + +# +# Digital Video Broadcasting Devices +# +CONFIG_DVB=y +CONFIG_DVB_CORE=m + +# +# Supported Frontend Modules +# +CONFIG_DVB_TWINHAN_DST=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_SP887X_FIRMWARE_FILE="/usr/lib/hotplug/firmware/sc_main.mc" +CONFIG_DVB_ALPS_TDLB7=m +CONFIG_DVB_ALPS_TDMB7=m +CONFIG_DVB_ATMEL_AT76C651=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_GRUNDIG_29504_491=m +CONFIG_DVB_GRUNDIG_29504_401=m +CONFIG_DVB_MT312=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA1004X_FIRMWARE_FILE="/usr/lib/hotplug/firmware/tda1004x.bin" +CONFIG_DVB_NXT6000=m + +# +# Supported SAA7146 based PCI Adapters +# +CONFIG_DVB_AV7110=m +# CONFIG_DVB_AV7110_FIRMWARE is not set +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m + +# +# Supported USB Adapters +# +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m + +# +# Supported FlexCopII (B2C2) Adapters +# +CONFIG_DVB_B2C2_SKYSTAR=m + +# +# Supported BT878 Adapters +# +CONFIG_DVB_BT8XX=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m + +# +# Graphics support +# +CONFIG_FB=y +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_CT65550 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_VGA16=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON_OLD is not set +CONFIG_FB_RADEON=y +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=y +# CONFIG_FB_ATY is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +CONFIG_FB_3DFX=y +# CONFIG_FB_3DFX_ACCEL is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_MDA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set + +# +# Logo configuration +# +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y + +# +# Sound +# +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_SEQUENCER_OSS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +# CONFIG_SND_MTPAV is not set +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m + +# +# PCI devices +# +CONFIG_SND_AC97_CODEC=m +# CONFIG_SND_ALI5451 is not set +CONFIG_SND_ATIIXP=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS4281=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_HDSP=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_YMFPCI=m +CONFIG_SND_ALS4000=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +CONFIG_SND_SONICVIBES=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VX222=m + +# +# ALSA PowerMac devices +# +# CONFIG_SND_POWERMAC is not set + +# +# ALSA USB devices +# +CONFIG_SND_USB_AUDIO=m + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_DYNAMIC_MINORS is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_EHCI_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_UHCI_HCD=y + +# +# USB Device Class drivers +# +CONFIG_USB_AUDIO=m + +# +# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem +# +CONFIG_USB_MIDI=m +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_RW_DETECT is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_DPCM=y +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=y +CONFIG_USB_HIDINPUT=y +# CONFIG_HID_FF is not set +CONFIG_USB_HIDDEV=y +CONFIG_USB_AIPTEK=m +CONFIG_USB_WACOM=m +CONFIG_USB_KBTAB=m +CONFIG_USB_POWERMATE=m +CONFIG_USB_MTOUCH=m +CONFIG_USB_EGALAX=m +CONFIG_USB_XPAD=m +CONFIG_USB_ATI_REMOTE=m + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +CONFIG_USB_MICROTEK=m +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# +# CONFIG_USB_VICAM is not set +# CONFIG_USB_DSBR is not set +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_OV511=m +CONFIG_USB_PWC=m +CONFIG_USB_SE401=m +# CONFIG_USB_SN9C102 is not set +CONFIG_USB_STV680=m +CONFIG_USB_W9968CF=m + +# +# USB Network adaptors +# +# CONFIG_USB_CATC is not set +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +# CONFIG_USB_RTL8150 is not set +CONFIG_USB_USBNET=m + +# +# USB Host-to-Host Cables +# +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_GENESYS=y +CONFIG_USB_NET1080=y +CONFIG_USB_PL2301=y + +# +# Intelligent USB Devices/Gadgets +# +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_ZAURUS=y +CONFIG_USB_CDCETHER=y + +# +# USB Network Adapters +# +CONFIG_USB_AX8817X=y + +# +# USB port drivers +# +CONFIG_USB_USS720=m + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EMPEG=m +# CONFIG_USB_SERIAL_FTDI_SIO is not set +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +# CONFIG_USB_SERIAL_IR is not set +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KLSI is not set +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_PL2303=m +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +CONFIG_USB_SERIAL_XIRCOM=m +# CONFIG_USB_SERIAL_OMNINET is not set +CONFIG_USB_EZUSB=y + +# +# USB Miscellaneous drivers +# +CONFIG_USB_TIGL=m +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +CONFIG_USB_LCD=m +CONFIG_USB_LED=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_PHIDGETSERVO=m +# CONFIG_USB_TEST is not set + +# +# USB Gadget Support +# +CONFIG_USB_GADGET=m +CONFIG_USB_GADGET_NET2280=y +CONFIG_USB_NET2280=m +# CONFIG_USB_GADGET_PXA2XX is not set +# CONFIG_USB_GADGET_GOKU is not set +# CONFIG_USB_GADGET_SA1100 is not set +# CONFIG_USB_GADGET_DUMMY_HCD is not set +CONFIG_USB_GADGET_DUALSPEED=y +# CONFIG_USB_ZERO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FILE_STORAGE is not set +CONFIG_USB_G_SERIAL=m + +# +# File systems +# +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_PROC_INFO=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_XFS_FS=m +# CONFIG_XFS_RT is not set +CONFIG_XFS_QUOTA=y +CONFIG_XFS_SECURITY=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_MINIX_FS=y +# CONFIG_ROMFS_FS is not set +CONFIG_QUOTA=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_SYSFS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVPTS_FS_XATTR is not set +CONFIG_TMPFS=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +CONFIG_AFFS_FS=m +CONFIG_ASFS_FS=m +# CONFIG_ASFS_RW is not set +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS 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_V4=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_TCP=y +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +CONFIG_CIFS=m +CONFIG_CIFS_STATS=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +CONFIG_CODA_FS=m +CONFIG_CODA_FS_OLD_API=y +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +CONFIG_AMIGA_PARTITION=y +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_EFI_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +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 + +# +# Library routines +# +CONFIG_CRC_CCITT=m +CONFIG_CRC32=y +CONFIG_LIBCRC32C=m +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m + +# +# Profiling support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_XMON is not set +# CONFIG_BDI_SWITCH is not set +# CONFIG_DEBUG_INFO is not set + +# +# Security options +# +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_CAPABILITIES=y +# CONFIG_SECURITY_ROOTPLUG is not set +# CONFIG_SECURITY_SELINUX is not set + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +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_DEFLATE=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_TEST=m diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/kernel/cputable.c kernel-source-2.6.8-a1-rel/arch/ppc/kernel/cputable.c --- kernel-source-2.6.8/arch/ppc/kernel/cputable.c 2005-08-16 13:23:51.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/arch/ppc/kernel/cputable.c 2006-12-04 22:15:14.000000000 +0100 @@ -264,7 +264,10 @@ struct cpu_spec cpu_specs[] = { CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR | - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | CPU_FTR_NEED_COHERENT | + CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | +#ifndef CONFIG_AMIGAONE /* chipset cannot do coherent dma */ + CPU_FTR_NEED_COHERENT | +#endif /* !CONFIG_AMIGAONE */ CPU_FTR_HWFLUSH_L2_CACHE, COMMON_PPC | PPC_FEATURE_ALTIVEC_COMP, 32, 32, @@ -275,8 +278,11 @@ struct cpu_spec cpu_specs[] = { CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR | - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR | - CPU_FTR_L3_DISABLE_NAP | CPU_FTR_NEED_COHERENT | + CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | +#ifndef CONFIG_AMIGAONE /* chipset cannot do coherent dma */ + CPU_FTR_NEED_COHERENT | +#endif /* !CONFIG_AMIGAONE */ + CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_L3_DISABLE_NAP | CPU_FTR_HWFLUSH_L2_CACHE, COMMON_PPC | PPC_FEATURE_ALTIVEC_COMP, 32, 32, @@ -287,8 +293,11 @@ struct cpu_spec cpu_specs[] = { CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR | - CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR | - CPU_FTR_NEED_COHERENT | CPU_FTR_HWFLUSH_L2_CACHE, + CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | +#ifndef CONFIG_AMIGAONE /* chipset cannot do coherent dma */ + CPU_FTR_NEED_COHERENT | +#endif /* !CONFIG_AMIGAONE */ + CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HWFLUSH_L2_CACHE, COMMON_PPC | PPC_FEATURE_ALTIVEC_COMP, 32, 32, __setup_cpu_745x @@ -299,7 +308,10 @@ struct cpu_spec cpu_specs[] = { CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | CPU_FTR_HAS_HIGH_BATS | - CPU_FTR_NEED_COHERENT | CPU_FTR_HWFLUSH_L2_CACHE, +#ifndef CONFIG_AMIGAONE /* chipset cannot do coherent dma */ + CPU_FTR_NEED_COHERENT | +#endif /* !CONFIG_AMIGAONE */ + CPU_FTR_HWFLUSH_L2_CACHE, COMMON_PPC | PPC_FEATURE_ALTIVEC_COMP, 32, 32, __setup_cpu_745x @@ -310,8 +322,11 @@ struct cpu_spec cpu_specs[] = { CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR | - CPU_FTR_L3_DISABLE_NAP | CPU_FTR_NEED_COHERENT | CPU_FTR_HAS_HIGH_BATS | - CPU_FTR_HWFLUSH_L2_CACHE, + CPU_FTR_L3_DISABLE_NAP | +#ifndef CONFIG_AMIGAONE /* chipset cannot do coherent dma */ + CPU_FTR_NEED_COHERENT | +#endif /* !CONFIG_AMIGAONE */ + CPU_FTR_HAS_HIGH_BATS | CPU_FTR_HWFLUSH_L2_CACHE, COMMON_PPC | PPC_FEATURE_ALTIVEC_COMP, 32, 32, __setup_cpu_745x @@ -322,7 +337,11 @@ struct cpu_spec cpu_specs[] = { CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | CPU_FTR_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | CPU_FTR_L3CR | CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | CPU_FTR_NAP_DISABLE_L2_PR | - CPU_FTR_HAS_HIGH_BATS | CPU_FTR_NEED_COHERENT | CPU_FTR_HWFLUSH_L2_CACHE, + CPU_FTR_HAS_HIGH_BATS | +#ifndef CONFIG_AMIGAONE /* chipset cannot do coherent dma */ + CPU_FTR_NEED_COHERENT | +#endif /* !CONFIG_AMIGAONE */ + CPU_FTR_HWFLUSH_L2_CACHE, COMMON_PPC | PPC_FEATURE_ALTIVEC_COMP, 32, 32, __setup_cpu_745x diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/kernel/dma-mapping.c kernel-source-2.6.8-a1-rel/arch/ppc/kernel/dma-mapping.c --- kernel-source-2.6.8/arch/ppc/kernel/dma-mapping.c 2004-08-14 07:36:09.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/arch/ppc/kernel/dma-mapping.c 2006-12-04 22:15:20.000000000 +0100 @@ -146,11 +146,13 @@ vm_region_alloc(struct vm_region *head, new->vm_end = addr + size; spin_unlock_irqrestore(&consistent_lock, flags); + return new; nospc: spin_unlock_irqrestore(&consistent_lock, flags); kfree(new); + out: return NULL; } @@ -381,13 +383,14 @@ void __dma_sync(void *vaddr, size_t size break; } } +EXPORT_SYMBOL(__dma_sync); #ifdef CONFIG_HIGHMEM /* * __dma_sync_page() implementation for systems using highmem. * In this case, each page of a buffer must be kmapped/kunmapped * in order to have a virtual address for __dma_sync(). This must - * not sleep so kmap_atmomic()/kunmap_atomic() are used. + * not sleep so kmap_atomic()/kunmap_atomic() are used. * * Note: yes, it is possible and correct to have a buffer extend * beyond the first page. @@ -395,10 +398,10 @@ void __dma_sync(void *vaddr, size_t size static inline void __dma_sync_page_highmem(struct page *page, unsigned long offset, size_t size, int direction) { - size_t seg_size = min((size_t)PAGE_SIZE, size) - offset; + size_t seg_size = min((size_t)(PAGE_SIZE - offset), size); size_t cur_size = seg_size; unsigned long flags, start, seg_offset = offset; - int nr_segs = PAGE_ALIGN(size + (PAGE_SIZE - offset))/PAGE_SIZE; + int nr_segs = 1 + ((size - seg_size) + PAGE_SIZE - 1)/PAGE_SIZE; int seg_nr = 0; local_irq_save(flags); @@ -438,3 +441,4 @@ void __dma_sync_page(struct page *page, __dma_sync((void *)start, size, direction); #endif } +EXPORT_SYMBOL(__dma_sync_page); diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/mm/init.c kernel-source-2.6.8-a1-rel/arch/ppc/mm/init.c --- kernel-source-2.6.8/arch/ppc/mm/init.c 2004-08-14 07:36:32.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/arch/ppc/mm/init.c 2006-12-13 20:58:44.000000000 +0100 @@ -47,6 +47,11 @@ #include "mem_pieces.h" #include "mmu_decl.h" +#ifdef CONFIG_AMIGAONE +/* Only for machine depended progess messages. */ +#include +#endif + #if defined(CONFIG_KERNEL_START_BOOL) || defined(CONFIG_LOWMEM_SIZE_BOOL) /* The ammount of lowmem must be within 0xF0000000 - KERNELBASE. */ #if (CONFIG_LOWMEM_SIZE > (0xF0000000 - KERNELBASE)) @@ -302,6 +307,10 @@ void __init MMU_init(void) /* Must be done last, or ppc_md.progress will die. */ map_boot_text(); #endif + +#ifdef CONFIG_AMIGAONE + amigaone_video_map(); +#endif } /* This is only called until mem_init is done. */ diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/platforms/Makefile kernel-source-2.6.8-a1-rel/arch/ppc/platforms/Makefile --- kernel-source-2.6.8/arch/ppc/platforms/Makefile 2004-08-14 07:38:10.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/arch/ppc/platforms/Makefile 2006-12-04 22:16:32.000000000 +0100 @@ -42,6 +42,8 @@ obj-$(CONFIG_SANDPOINT) += sandpoint.o obj-$(CONFIG_SBC82xx) += sbc82xx.o obj-$(CONFIG_SPRUCE) += spruce.o obj-$(CONFIG_LITE5200) += lite5200.o mpc5200.o +obj-$(CONFIG_AMIGAONE) += amigaone_pci.o amigaone_setup.o \ + amigaone_video.o ifeq ($(CONFIG_SMP),y) obj-$(CONFIG_PPC_PMAC) += pmac_smp.o diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/platforms/amigaone.h kernel-source-2.6.8-a1-rel/arch/ppc/platforms/amigaone.h --- kernel-source-2.6.8/arch/ppc/platforms/amigaone.h 1970-01-01 01:00:00.000000000 +0100 +++ kernel-source-2.6.8-a1-rel/arch/ppc/platforms/amigaone.h 2006-12-04 22:17:01.000000000 +0100 @@ -0,0 +1,24 @@ +/* + * arch/ppc/platforms/amigaone.h + * + * AmigaOne/Teron CX/Teron PX specific definitions + * + */ +#ifndef __PPC_KERNEL_AMIGAONE_H +#define __PPC_KERNEL_AMIGAONE_H + +#define AMIGAONE_ISA_IO_BASE 0xFE000000 +#define AMIGAONE_ISA_MEM_BASE 0xFD000000 + +/* Define this to get progress messages. */ +#define AMIGAONE_DEBUG + +/* Init the video system. */ +void amigaone_video_init(void); +/* Remap video memory and IO base. */ +void amigaone_video_map(void); + +/* Write a string to the video output, with special processing for '\n'. */ +void amigaone_video_puts(char *string); + +#endif /* __PPC_KERNEL_AMIGAONE_H */ diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/platforms/amigaone_pci.c kernel-source-2.6.8-a1-rel/arch/ppc/platforms/amigaone_pci.c --- kernel-source-2.6.8/arch/ppc/platforms/amigaone_pci.c 1970-01-01 01:00:00.000000000 +0100 +++ kernel-source-2.6.8-a1-rel/arch/ppc/platforms/amigaone_pci.c 2006-12-06 20:59:55.000000000 +0100 @@ -0,0 +1,156 @@ +/* + * + * AmigaOne/Teron PCI routines, based on chrp_pci.c + * + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +/* Put all platform includables in one file. */ +#include + +#define ARTICIAS_PCI_CFGADDR (AMIGAONE_ISA_IO_BASE+0x00c00cf8) +#define ARTICIAS_PCI_CFGDATA (AMIGAONE_ISA_IO_BASE+0x00e00cfc) + +static void __init +amigaone_init_resource(struct resource *res, unsigned long start, + unsigned long end, int flags) +{ + res->flags = flags; + res->start = start; + res->end = end; + res->name = "PCI host bridge"; + res->parent = NULL; + res->sibling = NULL; + res->child = NULL; +} + +void __init +amigaone_pcibios_fixup(void) +{ + unsigned int i; + unsigned char tmp_irq_edge_mask_lo; + unsigned char tmp_irq_edge_mask_hi; + + printk("AmigaOne: Setting level triggered mode for PCI IRQs in IRQ descriptor.\n"); + + tmp_irq_edge_mask_lo = inb(0x04d0); /* primary 8259 */ + tmp_irq_edge_mask_hi = inb(0x04d1); /* cascaded 8259 */ + + // Check for level triggered interrupts and mark them in the interrupt + // descriptor (even if Linux doesn't use this settings). + for(i = 0; i < 8; i++) + { + if((tmp_irq_edge_mask_lo & 0x01) == 1) + irq_desc[i].status |= IRQ_LEVEL; + tmp_irq_edge_mask_lo >>= 1; + + if((tmp_irq_edge_mask_hi & 0x01) == 1) + irq_desc[i+8].status |= IRQ_LEVEL; + tmp_irq_edge_mask_hi >>= 1; + } +} + +void __init +amigaone_pcibios_after_init(void) +{ + struct pci_dev *dev = NULL; + u8 tmp_byte = 0; + + // Fix various settings in the PCI/ISA bridge. */ + if((dev = pci_get_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, NULL)) != NULL) + { + printk("AmigaOne: Applying PCI/ISA bridge BIOS fixes.\n"); + + /* Enable internal ISA cycle arbitration (bit 2 = 0) and + * disable PCI burst interruptability by ISA (bit 1 = 1). + */ + pci_read_config_byte(dev, 0x46, &tmp_byte); + pci_write_config_byte(dev, 0x46, (tmp_byte &~ 0x04) | 0x02); + + /* Disable PCI delay transaction (bit 6 = 0) and write and + * read delay transaction timer (bits 3:2 = 00). Enable + * interrupt edge/level control ports (bit 5 = 1). + */ + pci_read_config_byte(dev, 0x47, &tmp_byte); + pci_write_config_byte(dev, 0x47, (tmp_byte & ~0x4E) | 0x20); + + /* Let the IDE controller wait for PGNT before grant to ISA + * master (bit 7 = 1). + */ + pci_read_config_byte(dev, 0x4A, &tmp_byte); + pci_write_config_byte(dev, 0x4A, tmp_byte | 0x80); + + /* Set DMA memory access in PCI to 16MB (16MB = 0xF0). */ + pci_read_config_byte(dev, 0x4F, &tmp_byte); + /* DMA memory space can be configured in the high nibble. */ + pci_write_config_byte(dev, 0x4F, tmp_byte | 0xF0); + + /* Setup parallel port DRQ (DRQ3 = 0x0C = 3). */ + pci_read_config_byte(dev, 0x50, &tmp_byte); + pci_write_config_byte(dev, 0x50, tmp_byte | 0x0C); + + /* There's no interrupt left for the parallel port, so we + * can't set it up! + */ + +// /* Setup parallel port IRQ (set to IRQ7). */ +// pci_read_config_byte(dev, 0x51, &tmp_byte); +// /* IRQ can be set in the high nibble. */ +// pci_write_config_byte(dev, 0x51, tmp_byte | 0x70); + + /* Disable I/O APIC in the southbridge (bit 4 = 0). */ + pci_read_config_byte(dev, 0x77, &tmp_byte); + pci_write_config_byte(dev, 0x77, tmp_byte & ~0x10); + } +} + +void __init +amigaone_find_bridges(void) +{ + struct pci_controller *hose; + + printk("Creating PCI host controller\n"); + + /* Allocate memory */ + hose = pcibios_alloc_controller(); + if (!hose) { + printk("Can't allocate PCI controller\n"); + return; + } + + /* Initialize */ + hose->first_busno = 0; + hose->last_busno = 255; + + hose->pci_mem_offset = 0; + hose->io_base_phys = AMIGAONE_ISA_IO_BASE; + hose->io_base_virt = ioremap(AMIGAONE_ISA_IO_BASE, 0x00C00000); + + /* Set ISA I/O base for vgacon.c. */ + isa_io_base = (unsigned long) hose->io_base_virt; + /* Set remapped ISA memory space for vgacon.c. */ + isa_mem_base = (unsigned long) ioremap(AMIGAONE_ISA_MEM_BASE, 0x01000000); + + /* Setup resource ranges */ + amigaone_init_resource(&hose->io_resource, 0x00000000, + 0x00bfffff, IORESOURCE_IO); + amigaone_init_resource(&hose->mem_resources[0], 0x80000000, + 0xfcffffff, IORESOURCE_MEM); + + setup_indirect_pci(hose, ARTICIAS_PCI_CFGADDR, ARTICIAS_PCI_CFGDATA); + + ppc_md.pcibios_fixup = amigaone_pcibios_fixup; + ppc_md.pcibios_after_init = amigaone_pcibios_after_init; +} diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/platforms/amigaone_setup.c kernel-source-2.6.8-a1-rel/arch/ppc/platforms/amigaone_setup.c --- kernel-source-2.6.8/arch/ppc/platforms/amigaone_setup.c 1970-01-01 01:00:00.000000000 +0100 +++ kernel-source-2.6.8-a1-rel/arch/ppc/platforms/amigaone_setup.c 2006-12-13 20:54:54.000000000 +0100 @@ -0,0 +1,342 @@ +/* + * arch/ppc/platforms/amigaone_setup.c + * + * Copyright (C) 1995 Linus Torvalds + * Adapted from 'alpha' version by Gary Thomas + * Modified by Cort Dougan (cort@cs.nmt.edu) + * + * Support for AmigaOne (MAI Teron) by Hans-Jörg and Thomas Frieden + * + * Based on prep_setup.c by Troy Benjegerdes (hozer@drgw.net) + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include + +/* L2 cache handling functions. */ +#include + +/* Put all platform includables in one file. */ +#include + +/* Get space for time of day clock stuff. */ +TODC_ALLOC(); + +extern char cmd_line[]; +extern unsigned long loops_per_jiffy; + +extern void amigaone_find_bridges(void); + +static bd_t boardinfo; + +void amigaone_set_l2cr(void) +{ + if(((_get_L2CR() & L2CR_L2E) == 0) && (strstr(cmd_line, "l2cr=") == NULL)) + { + printk("AmigaOne l2cr : L2 cache was not active, activating.\n"); + _set_L2CR(0); + _set_L2CR(L2CR_L2E | L2CR_L2PE); + } +} + +void __init amigaone_setup_arch(void) +{ +#ifdef CONFIG_BLK_DEV_INITRD + initrd_below_start_ok = 1; + + if (initrd_start) + ROOT_DEV = Root_RAM0; + else +#endif + ROOT_DEV = Root_HDA2; + + amigaone_set_l2cr(); + + amigaone_find_bridges(); + + /* vgacon.c needs to know where VGA memory is mapped. */ + vgacon_remap_base = isa_mem_base; + conswitchp = &vga_con; +} + +void __init amigaone_progress(char *string, unsigned short hex) +{ + amigaone_video_puts(string); + /* Ensure the message is separate from anything else on the */ + /* screen, progress messages are not terminated with a '\n'. */ + amigaone_video_puts("\n"); +} + +unsigned long __init amigaone_find_end_of_memory(void) +{ + return boardinfo.bi_memsize; +} + +static unsigned int amigaone_irq_canonicalize(u_int irq) +{ + if (irq == 2) + return 9; + return irq; +} + +void __init amigaone_init_irq(void) +{ + int i; + + for (i = 0; i < NUM_8259_INTERRUPTS; i++) { + irq_desc[i].handler = &i8259_pic; + } + + i8259_init(AMIGAONE_ISA_IO_BASE+0xF00000); + i8259_pic.enable(2); +} + +#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) +static int __init amigaone_ide_default_irq(unsigned long base) +{ + switch (base) { + case 0x1f0 : return 14; + case 0x170 : return 15; + default : return 0; + } +} + +static unsigned long amigaone_ide_default_io_base(int index) +{ + /* Cribbed from pplus.c. */ + switch (index) { + case 0 : + return 0x1f0; + case 1 : + return 0x170; + default : + return 0; + } +} + +static void __init amigaone_ide_init_hwif_ports(hw_regs_t *hw, + unsigned long data_port, unsigned long ctrl_port, + int *irq) +{ + unsigned long reg = data_port; + int i; + + for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) { + hw->io_ports[i] = reg; + reg += 1; + } + + /* Other platforms test for a null here and use an alternate address. */ + if (ctrl_port) + hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port; + + if (irq != NULL) + *irq = amigaone_ide_default_irq (data_port); +} +#endif /* IDE */ + +int amigaone_show_cpuinfo(struct seq_file *m) +{ + seq_printf(m, "machine\t\t: AmigaOne G3SE/XE, microA1, Teron CX/PX, Teron mini\n"); + seq_printf(m, "RAM\t\t: %lu MB\n", boardinfo.bi_memsize/1024/1024); + seq_printf(m, "clock\t\t: %lu MHz\n", boardinfo.bi_intfreq/1000000); + seq_printf(m, "fsb\t\t: %lu MHz\n", boardinfo.bi_busfreq/1000000); + seq_printf(m, "l2cr\t\t: 0x%08lX\n", _get_L2CR()); + + return 0; +} + +static void __init amigaone_init2(void) +{ + request_region(0x20,0x20,"pic1"); + request_region(0xa0,0x20,"pic2"); + request_region(0x00,0x20,"dma1"); + request_region(0x40,0x20,"timer"); + request_region(0x80,0x10,"dma page reg"); + request_region(0xc0,0x20,"dma2"); +} + +/* Copied from U-Boot. */ +static inline void soft_restart(unsigned long addr) +{ + /* SRR0 has system reset vector, SRR1 has default MSR value. + * rfi restores MSR from SRR1 and sets the PC to the SRR0 value. + */ + __asm__ __volatile__ ("mtspr 26, %0" :: "r" (addr)); + __asm__ __volatile__ ("li 4, (1 << 6)" ::: "r4"); + __asm__ __volatile__ ("mtspr 27, 4"); + __asm__ __volatile__ ("rfi"); + + /* Not reached. */ + while(1); +} + +void amigaone_restart(char *cmd) +{ + unsigned long addr; + + local_irq_disable(); + + /* Flush and disable I/D cache. */ + __asm__ __volatile__ ("mfspr 3, 1008" ::: "r3"); + __asm__ __volatile__ ("ori 5, 5, 0xcc00" ::: "r5"); + __asm__ __volatile__ ("ori 4, 3, 0xc00" ::: "r4"); + __asm__ __volatile__ ("andc 5, 3, 5" ::: "r5"); + __asm__ __volatile__ ("sync"); + __asm__ __volatile__ ("mtspr 1008, 4"); + __asm__ __volatile__ ("isync"); + __asm__ __volatile__ ("sync"); + __asm__ __volatile__ ("mtspr 1008, 5"); + __asm__ __volatile__ ("isync"); + __asm__ __volatile__ ("sync"); + + addr = 0xfff00100; + soft_restart(addr); + while(1); +} + +void amigaone_power_off(void) +{ + local_irq_disable(); + while(1); +} + +void amigaone_halt(void) +{ + amigaone_power_off(); +} + +void amigaone_calibrate_decr(void) +{ + int freq, divisor; + + freq = boardinfo.bi_busfreq; + divisor = 4; + tb_ticks_per_jiffy = freq/HZ/ divisor; + tb_to_us = mulhwu_scale_factor(freq/divisor, 1000000); + printk("calibrate_decr: decrementer frequency = %d.%d.6 MHz\n", + (freq/divisor)/1000000, + (freq/divisor)%1000000); + printk("ticks per jiffy = %u, tb_to_us = %u\n", tb_ticks_per_jiffy, + tb_to_us); +} + +void __init platform_init(unsigned long r3, unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7) +{ + unsigned char *cmdline = (unsigned char *) r6 + KERNELBASE; + unsigned char *cmdline_end = (unsigned char *) r7 + KERNELBASE; + char buffer[256]; + + int i; + bd_t *bd_info; + + amigaone_video_init(); + amigaone_progress("Linux on AmigaOne/Teron.", 0x1234); + + bd_info = (bd_t *)(r3+KERNELBASE); + if (r3) { + loops_per_jiffy = bd_info->bi_intfreq / HZ; + + sprintf(buffer, "Available RAM: %lu MB", + bd_info->bi_memsize / 1024 / 1024); + amigaone_progress(buffer, 0x1234); + sprintf(buffer, "CPU Frequency: %lu MHz", + bd_info->bi_intfreq / 1000000); + amigaone_progress(buffer, 0x1234); + sprintf(buffer, "Bus Frequency: %lu MHz", + bd_info->bi_busfreq / 1000000); + amigaone_progress(buffer, 0x1234); + loops_per_jiffy = bd_info->bi_intfreq / HZ; + + /* Make a copy for the rest of the functions. */ + memcpy(&boardinfo, bd_info, sizeof(bd_t)); + } else { + /* No board info available. */ + amigaone_progress("No board info available.", 0x1234); + } + + cmd_line[0] = 0; + i = 0; + + while (cmdline < cmdline_end) + { + cmd_line[i++] = *cmdline++;; + } + cmd_line[i] = 0; + +#ifdef CONFIG_BLK_DEV_INITRD + if (r4) { + initrd_start = r4 + KERNELBASE; + initrd_end = r5 + KERNELBASE; + } +#endif + + ISA_DMA_THRESHOLD = 0x00ffffff; + DMA_MODE_READ = 0x44; + DMA_MODE_WRITE = 0x48; + + ppc_md.setup_arch = amigaone_setup_arch; + ppc_md.show_cpuinfo = amigaone_show_cpuinfo; + ppc_md.show_percpuinfo = NULL; + + ppc_md.irq_canonicalize = amigaone_irq_canonicalize; + ppc_md.init_IRQ = amigaone_init_irq; + ppc_md.get_irq = i8259_irq; + + ppc_md.init = amigaone_init2; + + ppc_md.restart = amigaone_restart; + ppc_md.power_off = amigaone_power_off; + ppc_md.halt = amigaone_halt; + + ppc_md.time_init = todc_time_init; + ppc_md.set_rtc_time = todc_set_rtc_time; + ppc_md.get_rtc_time = todc_get_rtc_time; + /* Our calibrate_decr is close to a PReP variant, not what is in todc. */ + ppc_md.calibrate_decr = amigaone_calibrate_decr; + + TODC_INIT(TODC_TYPE_MC146818, RTC_PORT(0), NULL, RTC_PORT(1), 8); + + ppc_md.heartbeat = NULL; + + ppc_md.find_end_of_memory = amigaone_find_end_of_memory; + ppc_md.setup_io_mappings = NULL; + + ppc_md.progress = amigaone_progress; + + /* to use todc_time, we need these */ + ppc_md.nvram_read_val = todc_mc146818_read_val; + ppc_md.nvram_write_val = todc_mc146818_write_val; + +#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) + ppc_ide_md.default_irq = amigaone_ide_default_irq; + ppc_ide_md.default_io_base = amigaone_ide_default_io_base; + ppc_ide_md.ide_init_hwif = amigaone_ide_init_hwif_ports; +#endif + +} diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/platforms/amigaone_video.c kernel-source-2.6.8-a1-rel/arch/ppc/platforms/amigaone_video.c --- kernel-source-2.6.8/arch/ppc/platforms/amigaone_video.c 1970-01-01 01:00:00.000000000 +0100 +++ kernel-source-2.6.8-a1-rel/arch/ppc/platforms/amigaone_video.c 2006-12-04 22:16:51.000000000 +0100 @@ -0,0 +1,194 @@ +/* + * arch/ppc/platforms/amigaone_video.c + * + * Originally written by Hans-Jörg and Thomas Frieden + * + * Initialise the VGA card on an AmigaOne/Teron board, which use a standard + * x86 PCI/AGP VGA card. + */ + +#include +#include +#include +#include +#include +#include + +#ifdef AMIGAONE_DEBUG + +static unsigned char *cursor_position; +static unsigned int cursor_row; +static unsigned int cursor_col; + +static unsigned char current_attr = 0x0F; + +static unsigned int video_numrows = 25; +static unsigned int video_numcols = 80; + +static unsigned char *video_io_base; +static unsigned char *video_mem_base; + +#define VIDEO_ROWS video_numrows +#define VIDEO_COLS video_numcols +#define VIDEO_PITCH (2*video_numcols) +#define VIDEO_SIZE (video_numrows*video_numcols*2) + +void amigaone_video_set_color(unsigned char attr); +void amigaone_video_set_cursor(int line, int column); +void amigaone_video_write_char(int character); +void amigaone_video_putc(char character); +void amigaone_video_scroll(int rows); +void amigaone_video_clear(void); + +#endif + +void amigaone_video_init(void) +{ +#ifdef AMIGAONE_DEBUG + + /* This mapping will disappear as soon as the MMU is initialized. */ + __asm volatile ( + "mtdbatl 3,%0 \n" + "mtdbatu 3,%1 \n" + "mtibatl 3,%0 \n" + "mtibatu 3,%1 \n" + : : "r" (0xf0000022), "r" (0xf0001fff)); + + video_io_base = (unsigned char *) AMIGAONE_ISA_IO_BASE; + video_mem_base = (unsigned char *) + (AMIGAONE_ISA_MEM_BASE + 0x000B8000); + + /* Color text display base. */ + cursor_position = video_mem_base; + cursor_row = 0; + cursor_col = 0; + + amigaone_video_set_color(current_attr); + amigaone_video_clear(); +#endif +} + +/* Write a string on the VGA in early part of boot. */ +void amigaone_video_puts(char *string) +{ +#ifdef AMIGAONE_DEBUG + while(*string) + { + amigaone_video_putc(*string); + string++; + } +#endif +} + +void amigaone_video_map(void) +{ +#ifdef AMIGAONE_DEBUG + video_io_base = (unsigned char *) + ioremap(AMIGAONE_ISA_IO_BASE, 0x00C00000); + video_mem_base = (unsigned char *) + (ioremap(AMIGAONE_ISA_MEM_BASE, 0x01000000) + 0x000B8000); + + amigaone_video_set_cursor(cursor_row, cursor_col); +#endif +} + +#ifdef AMIGAONE_DEBUG + +/* This is for early VGA output, before works. */ +static void amigaone_outb(unsigned char value, unsigned int port) +{ + /* Ensure I/O operations complete. */ + __asm__ volatile("eieio"); + video_io_base[port] = value; +} + +void amigaone_video_set_color(unsigned char attr) +{ + unsigned char *fb = video_mem_base; + int i; + + for(i = 0; i < VIDEO_SIZE; i += 2) { + *(fb + i + 1) = current_attr; + } +} + +void amigaone_video_set_cursor(int line, int column) +{ + unsigned short offset = line*video_numcols + column; + cursor_position = video_mem_base + line*VIDEO_PITCH + column*2; + + amigaone_outb(0x0E, 0x3D4); + amigaone_outb(offset/256, 0x3D5); + amigaone_outb(0x0F, 0x3D4); + amigaone_outb(offset%256, 0x3D5); +} + +void amigaone_video_write_char(int character) +{ + *cursor_position = character; + *(cursor_position+1) = current_attr; +} + +void amigaone_video_putc(char character) +{ + switch (character) + { + case '\n': + cursor_col = 0; + cursor_row += 1; + break; + case '\r': + cursor_col = 0; + break; + case '\b': + if (cursor_col) cursor_col--; + else return; + break; + case '\t': + cursor_col = (cursor_col/8 + 1)*8; + break; + default: + amigaone_video_write_char(character); + cursor_col++; + if (cursor_col > VIDEO_COLS-1) + { + cursor_row++; + cursor_col = 0; + } + } + + if (cursor_row > VIDEO_ROWS - 1) + amigaone_video_scroll(1); + + amigaone_video_set_cursor(cursor_row, cursor_col); +} + +void amigaone_video_scroll(int rows) +{ + unsigned short clear = ((unsigned short) current_attr) | (' '<<8); + unsigned short* addr16 = + &((unsigned short *) video_mem_base)[(VIDEO_ROWS - rows)*VIDEO_COLS]; + int i; + + memcpy(video_mem_base, video_mem_base + rows*VIDEO_COLS*2, + (VIDEO_ROWS - rows)*VIDEO_COLS*2); + + for(i = 0; i < rows*VIDEO_COLS; i++) + addr16[i] = clear; + + cursor_row -= rows; + cursor_col = 0; +} + +void amigaone_video_clear(void) +{ + unsigned short clear = ((unsigned short) current_attr) | (' '<<8); + unsigned short *addr = (unsigned short *) video_mem_base; + int i; + + for (i = 0; i < VIDEO_ROWS*VIDEO_COLS; i++) { + *addr++ = clear; + } +} + +#endif diff -Naurp -x'*~' kernel-source-2.6.8/arch/ppc/syslib/Makefile kernel-source-2.6.8-a1-rel/arch/ppc/syslib/Makefile --- kernel-source-2.6.8/arch/ppc/syslib/Makefile 2004-08-14 07:36:14.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/arch/ppc/syslib/Makefile 2006-12-05 01:32:07.000000000 +0100 @@ -31,6 +31,7 @@ obj-$(CONFIG_PPC_PMAC) += open_pic.o in obj-$(CONFIG_POWER4) += open_pic2.o obj-$(CONFIG_PPC_CHRP) += open_pic.o indirect_pci.o i8259.o obj-$(CONFIG_PPC_PREP) += open_pic.o indirect_pci.o i8259.o todc_time.o +obj-$(CONFIG_AMIGAONE) += indirect_pci.o i8259.o todc_time.o obj-$(CONFIG_ADIR) += i8259.o indirect_pci.o pci_auto.o \ todc_time.o obj-$(CONFIG_EBONY) += indirect_pci.o pci_auto.o todc_time.o diff -Naurp -x'*~' kernel-source-2.6.8/include/asm-ppc/dma-mapping.h kernel-source-2.6.8-a1-rel/include/asm-ppc/dma-mapping.h --- kernel-source-2.6.8/include/asm-ppc/dma-mapping.h 2004-08-14 07:37:38.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/include/asm-ppc/dma-mapping.h 2006-12-04 22:18:08.000000000 +0100 @@ -37,12 +37,13 @@ extern void __dma_sync_page(struct page * Cache coherent cores. */ +#define __dma_alloc_coherent(gfp, size, handle) NULL +#define __dma_free_coherent(size, addr) do { } while (0) + #define dma_cache_inv(_start,_size) do { } while (0) #define dma_cache_wback(_start,_size) do { } while (0) #define dma_cache_wback_inv(_start,_size) do { } while (0) -#define __dma_alloc_coherent(gfp, size, handle) NULL -#define __dma_free_coherent(size, addr) do { } while (0) #define __dma_sync(addr, size, rw) do { } while (0) #define __dma_sync_page(pg, off, sz, rw) do { } while (0) @@ -84,6 +85,26 @@ static inline void *dma_alloc_coherent(s #endif } +static inline void *dma_std_alloc_coherent(struct device *dev, size_t size, + dma_addr_t * dma_handle, int gfp) +{ + void *ret; + /* ignore region specifiers */ + gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); + + if (dev == NULL || dev->coherent_dma_mask < 0xffffffff) + gfp |= GFP_DMA; + + ret = (void *)__get_free_pages(gfp, get_order(size)); + + if (ret != NULL) { + memset(ret, 0, size); + *dma_handle = virt_to_bus(ret); + } + + return ret; +} + static inline void dma_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle) @@ -92,9 +113,17 @@ dma_free_coherent(struct device *dev, si __dma_free_coherent(size, vaddr); #else free_pages((unsigned long)vaddr, get_order(size)); + #endif } +static inline void +dma_std_free_coherent(struct device *dev, size_t size, void *vaddr, + dma_addr_t dma_handle) +{ + free_pages((unsigned long)vaddr, get_order(size)); +} + static inline dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size, enum dma_data_direction direction) diff -Naurp -x'*~' kernel-source-2.6.8/include/asm-ppc/floppy.h kernel-source-2.6.8-a1-rel/include/asm-ppc/floppy.h --- kernel-source-2.6.8/include/asm-ppc/floppy.h 2004-08-14 07:36:45.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/include/asm-ppc/floppy.h 2006-12-04 22:17:51.000000000 +0100 @@ -6,6 +6,9 @@ * for more details. * * Copyright (C) 1995 + * Modified for the AmigaOne/MAI Teron by Ross Vumbaca + * + * Copyright (C) 1995, 2003 */ #ifdef __KERNEL__ #ifndef __ASM_PPC_FLOPPY_H @@ -14,6 +17,250 @@ #define fd_inb(port) inb_p(port) #define fd_outb(value,port) outb_p(value,port) +#define fd_enable_irq() enable_irq(FLOPPY_IRQ) +#define fd_disable_irq() disable_irq(FLOPPY_IRQ) +#define fd_free_irq() free_irq(FLOPPY_IRQ, NULL) + +#ifdef CONFIG_AMIGAONE + +/* The AmigaOne G3SE/XE and MAI Teron CX/PX use a VIA 686A/B southbridge, + * commonly found on i386 hardware, but not so common on PowerPC hardware. + * The southbridge provides an AT FDC and i8237A DMA. + * The following code is copied from the include/asm-i386/floppy.h file + */ + +#include + +/* + * The DMA channel used by the floppy controller cannot access data at + * addresses >= 16MB + * + * Went back to the 1MB limit, as some people had problems with the floppy + * driver otherwise. It doesn't matter much for performance anyway, as most + * floppy accesses go through the track buffer. + */ +#define _CROSS_64KB(a,s,vdma) \ +(!(vdma) && ((unsigned long)(a)/K_64 != ((unsigned long)(a) + (s) - 1) / K_64)) + +#define CROSS_64KB(a,s) _CROSS_64KB(a,s,use_virtual_dma & 1) + + +#define SW fd_routine[use_virtual_dma&1] +#define CSW fd_routine[can_use_virtual_dma & 1] + +#define fd_request_dma() CSW._request_dma(FLOPPY_DMA,"floppy") +#define fd_free_dma() CSW._free_dma(FLOPPY_DMA) +#define fd_get_dma_residue() SW._get_dma_residue(FLOPPY_DMA) +#define fd_dma_mem_alloc(size) SW._dma_mem_alloc(size) +#define fd_dma_setup(addr, size, mode, io) SW._dma_setup(addr, size, mode, io) + +#define FLOPPY_CAN_FALLBACK_ON_NODMA + +static int virtual_dma_count; +static int virtual_dma_residue; +static char *virtual_dma_addr; +static int virtual_dma_mode; +static int doing_pdma; + +static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs) +{ + register unsigned char st; + +#undef TRACE_FLPY_INT + +#ifdef TRACE_FLPY_INT + static int calls = 0; + static int bytes = 0; + static int dma_wait = 0; +#endif + if (!doing_pdma) + return floppy_interrupt(irq, dev_id, regs); + +#ifdef TRACE_FLPY_INT + if(!calls) + bytes = virtual_dma_count; +#endif + + { + register int lcount; + register char *lptr; + + st = 1; + for(lcount=virtual_dma_count, lptr=virtual_dma_addr; + lcount; lcount--, lptr++) { + st=inb(virtual_dma_port+4) & 0xa0 ; + if(st != 0xa0) + break; + if(virtual_dma_mode) + outb_p(*lptr, virtual_dma_port+5); + else + *lptr = inb_p(virtual_dma_port+5); + } + virtual_dma_count = lcount; + virtual_dma_addr = lptr; + st = inb(virtual_dma_port+4); + } + +#ifdef TRACE_FLPY_INT + calls++; +#endif + if(st == 0x20) + return IRQ_HANDLED; + if(!(st & 0x20)) { + virtual_dma_residue += virtual_dma_count; + virtual_dma_count=0; +#ifdef TRACE_FLPY_INT + printk("count=%x, residue=%x calls=%d bytes=%d dma_wait=%d\n", + virtual_dma_count, virtual_dma_residue, calls, bytes, + dma_wait); + calls = 0; + dma_wait=0; +#endif + doing_pdma = 0; + floppy_interrupt(irq, dev_id, regs); + return IRQ_HANDLED; + } +#ifdef TRACE_FLPY_INT + if(!virtual_dma_count) + dma_wait++; +#endif + return IRQ_HANDLED; +} + +static void fd_disable_dma(void) +{ + if(! (can_use_virtual_dma & 1)) + disable_dma(FLOPPY_DMA); + doing_pdma = 0; + virtual_dma_residue += virtual_dma_count; + virtual_dma_count=0; +} + +static int vdma_request_dma(unsigned int dmanr, const char * device_id) +{ + return 0; +} + +static void vdma_nop(unsigned int dummy) +{ +} + + +static int vdma_get_dma_residue(unsigned int dummy) +{ + return virtual_dma_count + virtual_dma_residue; +} + + +static int fd_request_irq(void) +{ + if(can_use_virtual_dma) + return request_irq(FLOPPY_IRQ, floppy_hardint,SA_INTERRUPT, + "floppy", NULL); + else + return request_irq(FLOPPY_IRQ, floppy_interrupt, + SA_INTERRUPT|SA_SAMPLE_RANDOM, + "floppy", NULL); + +} + +static unsigned long dma_mem_alloc(unsigned long size) +{ + return __get_dma_pages(GFP_KERNEL,get_order(size)); +} + + +static unsigned long vdma_mem_alloc(unsigned long size) +{ + return (unsigned long) vmalloc(size); + +} + +#define nodma_mem_alloc(size) vdma_mem_alloc(size) + +static void _fd_dma_mem_free(unsigned long addr, unsigned long size) +{ + if((unsigned int) addr >= (unsigned int) high_memory) + vfree((void *)addr); + else + free_pages(addr, get_order(size)); +} + +#define fd_dma_mem_free(addr, size) _fd_dma_mem_free(addr, size) + +static void _fd_chose_dma_mode(char *addr, unsigned long size) +{ + if(can_use_virtual_dma == 2) { + if((unsigned int) addr >= (unsigned int) high_memory || + virt_to_bus(addr) >= 0x1000000 || + _CROSS_64KB(addr, size, 0)) + use_virtual_dma = 1; + else + use_virtual_dma = 0; + } else { + use_virtual_dma = can_use_virtual_dma & 1; + } +} + +#define fd_chose_dma_mode(addr, size) _fd_chose_dma_mode(addr, size) + + +static int vdma_dma_setup(char *addr, unsigned long size, int mode, int io) +{ + doing_pdma = 1; + virtual_dma_port = io; + virtual_dma_mode = (mode == DMA_MODE_WRITE); + virtual_dma_addr = addr; + virtual_dma_count = size; + virtual_dma_residue = 0; + return 0; +} + +static int hard_dma_setup(char *addr, unsigned long size, int mode, int io) +{ +#ifdef FLOPPY_SANITY_CHECK + if (CROSS_64KB(addr, size)) { + printk("DMA crossing 64-K boundary %p-%p\n", addr, addr+size); + return -1; + } +#endif + /* actual, physical DMA */ + doing_pdma = 0; + clear_dma_ff(FLOPPY_DMA); + set_dma_mode(FLOPPY_DMA,mode); + set_dma_addr(FLOPPY_DMA,virt_to_bus(addr)); + set_dma_count(FLOPPY_DMA,size); + enable_dma(FLOPPY_DMA); + return 0; +} + +static struct fd_routine_l { + int (*_request_dma)(unsigned int dmanr, const char * device_id); + void (*_free_dma)(unsigned int dmanr); + int (*_get_dma_residue)(unsigned int dummy); + unsigned long (*_dma_mem_alloc) (unsigned long size); + int (*_dma_setup)(char *addr, unsigned long size, int mode, int io); +} fd_routine[] = { + { + request_dma, + free_dma, + get_dma_residue, + dma_mem_alloc, + hard_dma_setup + }, + { + vdma_request_dma, + vdma_nop, + vdma_get_dma_residue, + vdma_mem_alloc, + vdma_dma_setup + } +}; + +#define AUTO_DMA + +#else + #define fd_enable_dma() enable_dma(FLOPPY_DMA) #define fd_disable_dma() disable_dma(FLOPPY_DMA) #define fd_request_dma() request_dma(FLOPPY_DMA,"floppy") @@ -22,18 +269,17 @@ #define fd_set_dma_mode(mode) set_dma_mode(FLOPPY_DMA,mode) #define fd_set_dma_addr(addr) set_dma_addr(FLOPPY_DMA,(unsigned int)virt_to_bus(addr)) #define fd_set_dma_count(count) set_dma_count(FLOPPY_DMA,count) -#define fd_enable_irq() enable_irq(FLOPPY_IRQ) -#define fd_disable_irq() disable_irq(FLOPPY_IRQ) + #define fd_cacheflush(addr,size) /* nothing */ #define fd_request_irq() request_irq(FLOPPY_IRQ, floppy_interrupt, \ SA_INTERRUPT|SA_SAMPLE_RANDOM, \ - "floppy", NULL) -#define fd_free_irq() free_irq(FLOPPY_IRQ, NULL); + "floppy", NULL); __inline__ void virtual_dma_init(void) { /* Nothing to do on PowerPC */ } +#endif /* CONFIG_AMIGAONE */ static int FDC1 = 0x3f0; static int FDC2 = -1; @@ -41,18 +287,30 @@ static int FDC2 = -1; /* * Again, the CMOS information not available */ +#ifdef CONFIG_AMIGAONE +#define FLOPPY0_TYPE 4 +#define FLOPPY1_TYPE 0 +#else #define FLOPPY0_TYPE 6 #define FLOPPY1_TYPE 0 +#endif /* CONFIG_AMIGAONE */ #define N_FDC 2 /* Don't change this! */ #define N_DRIVE 8 #define FLOPPY_MOTOR_MASK 0xf0 +#ifndef CONFIG_AMIGAONE /* * The PowerPC has no problems with floppy DMA crossing 64k borders. - */ + * + * + * Assuming that it doesn't use an 8237A DMA chip! + * The PowerPC assumptions in this file tend to refer to Power Macintosh/CHRP + * machines, bad assumptions for the AmigaOne/MAI Teron boards - Ross + */ #define CROSS_64KB(a,s) (0) +#endif /* CONFIG_AMIGAONE */ #endif /* __ASM_PPC_FLOPPY_H */ diff -Naurp -x'*~' kernel-source-2.6.8/include/linux/pci_ids.h kernel-source-2.6.8-a1-rel/include/linux/pci_ids.h --- kernel-source-2.6.8/include/linux/pci_ids.h 2005-08-16 13:23:51.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/include/linux/pci_ids.h 2006-12-04 23:01:53.000000000 +0100 @@ -1038,6 +1038,10 @@ #define PCI_DEVICE_ID_NEOMAGIC_MAGICMEDIA_256AV 0x0005 #define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZVPLUS 0x0083 +#define PCI_VENDOR_ID_MAI 0x10cc +#define PCI_DEVICE_ID_MAI_ARTICIAS 0x0660 +#define PCI_DEVICE_ID_MAI_ARTICIAS_AGP 0x0661 + #define PCI_VENDOR_ID_ASP 0x10cd #define PCI_DEVICE_ID_ASP_ABP940 0x1200 #define PCI_DEVICE_ID_ASP_ABP940U 0x1300 diff -Naurp -x'*~' kernel-source-2.6.8/sound/core/memalloc.c kernel-source-2.6.8-a1-rel/sound/core/memalloc.c --- kernel-source-2.6.8/sound/core/memalloc.c 2004-08-14 07:38:08.000000000 +0200 +++ kernel-source-2.6.8-a1-rel/sound/core/memalloc.c 2006-12-04 22:19:25.000000000 +0100 @@ -115,20 +115,20 @@ static void *snd_dma_hack_alloc_coherent u64 dma_mask, coherent_dma_mask; if (dev == NULL || !dev->dma_mask) - return dma_alloc_coherent(dev, size, dma_handle, flags); + return dma_std_alloc_coherent(dev, size, dma_handle, flags); dma_mask = *dev->dma_mask; coherent_dma_mask = dev->coherent_dma_mask; *dev->dma_mask = 0xffffffff; /* do without masking */ dev->coherent_dma_mask = 0xffffffff; /* do without masking */ - ret = dma_alloc_coherent(dev, size, dma_handle, flags); + ret = dma_std_alloc_coherent(dev, size, dma_handle, flags); *dev->dma_mask = dma_mask; /* restore */ dev->coherent_dma_mask = coherent_dma_mask; /* restore */ if (ret) { /* obtained address is out of range? */ if (((unsigned long)*dma_handle + size - 1) & ~dma_mask) { /* reallocate with the proper mask */ - dma_free_coherent(dev, size, ret, *dma_handle); - ret = dma_alloc_coherent(dev, size, dma_handle, flags); + dma_std_free_coherent(dev, size, ret, *dma_handle); + ret = dma_std_alloc_coherent(dev, size, dma_handle, flags); } } else { /* wish to success now with the proper mask... */ @@ -136,15 +136,15 @@ static void *snd_dma_hack_alloc_coherent /* allocation with GFP_ATOMIC to avoid the long stall */ flags &= ~GFP_KERNEL; flags |= GFP_ATOMIC; - ret = dma_alloc_coherent(dev, size, dma_handle, flags); + ret = dma_std_alloc_coherent(dev, size, dma_handle, flags); } } return ret; } /* redefine dma_alloc_coherent for some architectures */ -#undef dma_alloc_coherent -#define dma_alloc_coherent snd_dma_hack_alloc_coherent +#undef dma_std_alloc_coherent +#define dma_std_alloc_coherent snd_dma_hack_alloc_coherent #endif /* arch */ @@ -262,7 +262,7 @@ static void *snd_malloc_dev_pages(struct gfp_flags = GFP_KERNEL; if (pg > 0) gfp_flags |= __GFP_NOWARN; - res = dma_alloc_coherent(dev, PAGE_SIZE << pg, dma, gfp_flags); + res = dma_std_alloc_coherent(dev, PAGE_SIZE << pg, dma, gfp_flags); if (res != NULL) mark_pages(res, pg); @@ -294,7 +294,7 @@ static void snd_free_dev_pages(struct de return; pg = get_order(size); unmark_pages(ptr, pg); - dma_free_coherent(dev, PAGE_SIZE << pg, ptr, dma); + dma_std_free_coherent(dev, PAGE_SIZE << pg, ptr, dma); } #ifdef CONFIG_SBUS