All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
@ 2007-02-12 10:29 Stefan Roese
  2007-02-12 12:06 ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 16+ messages in thread
From: Stefan Roese @ 2007-02-12 10:29 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: linuxppc-embedded

[PATCH] ppc: Add support for AMCC Taishan 440GX eval board

This patch adds support for the AMCC Taishan PPC440GX evaluation
board.

This is still an arch/ppc port. I'm aware that the move
4xx -> arch/powerpc is making good progress right now. So this
patch is mainly intended to make the Taishan support available
for the community right now.

Signed-off-by: Stefan Roese <sr@denx.de>

---
commit 988c4373a99d4a67f0a84488e2ba19967079612a
tree 95b4dd88ada84a80dc5b21ccbef74310c94bd864
parent 958b7f37ee0fb2846c8d44310a68ae9605614ff9
author Stefan Roese <sr@denx.de> Mon, 12 Feb 2007 11:26:30 +0100
committer Stefan Roese <sr@denx.de> Mon, 12 Feb 2007 11:26:30 +0100

 arch/ppc/configs/taishan_defconfig | 1077 ++++++++++++++++++++++++++++++++++++
 arch/ppc/platforms/4xx/Kconfig     |   10 
 arch/ppc/platforms/4xx/Makefile    |    1 
 arch/ppc/platforms/4xx/taishan.c   |  395 +++++++++++++
 arch/ppc/platforms/4xx/taishan.h   |   67 ++
 arch/ppc/syslib/Makefile           |    1 
 include/asm-ppc/ibm4xx.h           |    4 
 7 files changed, 1553 insertions(+), 2 deletions(-)

diff --git a/arch/ppc/configs/taishan_defconfig b/arch/ppc/configs/taishan_defconfig
new file mode 100644
index 0000000..1ca0204
--- /dev/null
+++ b/arch/ppc/configs/taishan_defconfig
@@ -0,0 +1,1077 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Mon Feb 12 11:11:58 2007
+#
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+# CONFIG_HOTPLUG is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+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"
+
+#
+# Processor
+#
+# CONFIG_6xx is not set
+# CONFIG_40x is not set
+CONFIG_44x=y
+# CONFIG_8xx is not set
+# CONFIG_E200 is not set
+# CONFIG_E500 is not set
+CONFIG_PPC_DCR_NATIVE=y
+CONFIG_PPC_DCR=y
+CONFIG_BOOKE=y
+CONFIG_PTE_64BIT=y
+CONFIG_PHYS_64BIT=y
+# CONFIG_MATH_EMULATION is not set
+# CONFIG_KEXEC is not set
+# CONFIG_CPU_FREQ is not set
+CONFIG_4xx=y
+CONFIG_WANT_EARLY_SERIAL=y
+
+#
+# IBM 4xx options
+#
+# CONFIG_BAMBOO is not set
+# CONFIG_EBONY is not set
+# CONFIG_LUAN is not set
+# CONFIG_YUCCA is not set
+# CONFIG_OCOTEA is not set
+CONFIG_TAISHAN=y
+CONFIG_440GX=y
+CONFIG_440A=y
+CONFIG_IBM_OCP=y
+CONFIG_IBM_EMAC4=y
+CONFIG_PPC4xx_DMA=y
+CONFIG_PPC4xx_EDMA=y
+CONFIG_PPC_GEN550=y
+CONFIG_NOT_COHERENT_CACHE=y
+
+#
+# Platform options
+#
+# CONFIG_PC_KEYBOARD is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT 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=4
+CONFIG_RESOURCES_64BIT=y
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="ip=on console=ttyS0,115200"
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_ZONE_DMA=y
+# CONFIG_PPC_I8259 is not set
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCI_DEBUG is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+
+#
+# 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=0x01000000
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_MULTIPLE_TABLES is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER 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=y
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# 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_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 is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+# CONFIG_STANDALONE is not set
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR 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=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=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
+# CONFIG_SSFDC 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_GEOMETRY 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_OTP is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PCI 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_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
+# CONFIG_MTD_NAND_CAFE 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_DEV_FD is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_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=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# Misc devices
+#
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Macintosh device drivers
+#
+# CONFIG_MAC_EMUMOUSEBTN is not set
+# CONFIG_WINDFARM is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB 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_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+CONFIG_IBM_EMAC=y
+CONFIG_IBM_EMAC_RXB=128
+CONFIG_IBM_EMAC_TXB=128
+CONFIG_IBM_EMAC_POLL_WEIGHT=32
+CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
+CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0
+CONFIG_IBM_EMAC_PHY_RX_CLK_FIX=y
+# CONFIG_IBM_EMAC_DEBUG is not set
+CONFIG_IBM_EMAC_ZMII=y
+CONFIG_IBM_EMAC_RGMII=y
+CONFIG_IBM_EMAC_TAH=y
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEPRO100 is not set
+CONFIG_E100=y
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO 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_SC92031 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_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+# CONFIG_PPP_ASYNC is not set
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPP_MPPE is not set
+CONFIG_PPPOE=y
+# CONFIG_SLIP is not set
+CONFIG_SLHC=y
+# 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
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+# CONFIG_INPUT is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_I8042 is not set
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_PCIPS2 is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW 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=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_RSA is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_NVRAM is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# 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_PIIX4 is not set
+CONFIG_I2C_IBM_IIC=y
+# CONFIG_I2C_MPC is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=y
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_M41T00 is not set
+# CONFIG_SENSORS_MAX6875 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
+
+#
+# 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=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 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_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT 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_ARCH_HAS_EHCI=y
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# Auxiliary Display support
+#
+
+#
+# Virtualization
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT2_FS_XIP=y
+CONFIG_FS_XIP=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+CONFIG_JBD_DEBUG=y
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# 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_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# 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_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN 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=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS 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 is not set
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
+CONFIG_BDI_SWITCH=y
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+CONFIG_PPC_OCP=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
diff --git a/arch/ppc/platforms/4xx/Kconfig b/arch/ppc/platforms/4xx/Kconfig
index 6980de4..705ae56 100644
--- a/arch/ppc/platforms/4xx/Kconfig
+++ b/arch/ppc/platforms/4xx/Kconfig
@@ -98,6 +98,12 @@ config OCOTEA
 	help
 	  This option enables support for the IBM PPC440GX evaluation board.
 
+config TAISHAN
+	bool "Taishan"
+	select WANT_EARLY_SERIAL
+	help
+	  This option enables support for the AMCC PPC440GX evaluation board.
+
 endchoice
 
 config EP405PC
@@ -126,7 +132,7 @@ config 440GP
 
 config 440GX
 	bool
-	depends on OCOTEA
+	depends on OCOTEA || TAISHAN
 	default y
 
 config 440SP
@@ -173,7 +179,7 @@ config BOOKE
 
 config IBM_OCP
 	bool
-	depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT
+	depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || TAISHAN || WALNUT
 	default y
 
 config IBM_EMAC4
diff --git a/arch/ppc/platforms/4xx/Makefile b/arch/ppc/platforms/4xx/Makefile
index a04a0d0..fa6610b 100644
--- a/arch/ppc/platforms/4xx/Makefile
+++ b/arch/ppc/platforms/4xx/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_OCOTEA)		+= ocotea.o
 obj-$(CONFIG_REDWOOD_5)		+= redwood5.o
 obj-$(CONFIG_REDWOOD_6)		+= redwood6.o
 obj-$(CONFIG_SYCAMORE)		+= sycamore.o
+obj-$(CONFIG_TAISHAN)		+= taishan.o
 obj-$(CONFIG_WALNUT)		+= walnut.o
 obj-$(CONFIG_XILINX_ML300)	+= xilinx_ml300.o
 obj-$(CONFIG_XILINX_ML403)	+= xilinx_ml403.o
diff --git a/arch/ppc/platforms/4xx/taishan.c b/arch/ppc/platforms/4xx/taishan.c
new file mode 100644
index 0000000..bb0253e
--- /dev/null
+++ b/arch/ppc/platforms/4xx/taishan.c
@@ -0,0 +1,395 @@
+/*
+ * arch/ppc/platforms/4xx/taishan.c
+ *
+ * AMCC Taishan board specific routines
+ *
+ * Copyright 2007 DENX Software Engineering, Stefan Roese <sr@denx.de>
+ *
+ * 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.
+ */
+
+#include <linux/stddef.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/reboot.h>
+#include <linux/pci.h>
+#include <linux/kdev_t.h>
+#include <linux/types.h>
+#include <linux/major.h>
+#include <linux/blkdev.h>
+#include <linux/console.h>
+#include <linux/delay.h>
+#include <linux/ide.h>
+#include <linux/initrd.h>
+#include <linux/seq_file.h>
+#include <linux/root_dev.h>
+#include <linux/tty.h>
+#include <linux/serial.h>
+#include <linux/serial_core.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/nand.h>
+#include <linux/mtd/ndfc.h>
+#include <linux/mtd/physmap.h>
+
+#include <asm/machdep.h>
+#include <asm/ocp.h>
+#include <asm/bootinfo.h>
+#include <asm/ppcboot.h>
+
+#include <syslib/gen550.h>
+#include <syslib/ibm440gx_common.h>
+
+extern bd_t __res;
+
+static struct ibm44x_clocks clocks __initdata;
+
+/*
+ * NOR FLASH configuration (using mtd physmap driver)
+ */
+
+/* start will be added dynamically, end is always fixed */
+static struct resource taishan_nor_resource = {
+	.start = TAISHAN_FLASH_ADDR,
+	.end   = 0x1ffffffffULL,
+	.flags = IORESOURCE_MEM,
+};
+
+#define RW_PART0_OF	0
+#define RW_PART0_SZ	0x180000
+#define RW_PART1_SZ	0x200000
+/* Partition 2 will be autosized dynamically... */
+#define RW_PART3_SZ	0x80000
+#define RW_PART4_SZ	0x40000
+
+static struct mtd_partition taishan_nor_parts[] = {
+	{
+		.name = "kernel",
+		.offset = 0,
+		.size = RW_PART0_SZ
+	},
+	{
+		.name = "root",
+		.offset = MTDPART_OFS_APPEND,
+		.size = RW_PART1_SZ,
+	},
+	{
+		.name = "user",
+		.offset = MTDPART_OFS_APPEND,
+/*		.size = RW_PART2_SZ */ /* will be adjusted dynamically */
+	},
+	{
+		.name = "env",
+		.offset = MTDPART_OFS_APPEND,
+		.size = RW_PART3_SZ,
+	},
+	{
+		.name = "u-boot",
+		.offset = MTDPART_OFS_APPEND,
+		.size = RW_PART4_SZ,
+	}
+};
+
+static struct physmap_flash_data taishan_nor_data = {
+	.width		= 4,
+	.parts		= taishan_nor_parts,
+	.nr_parts	= ARRAY_SIZE(taishan_nor_parts),
+};
+
+static struct platform_device taishan_nor_device = {
+	.name		= "physmap-flash",
+	.id		= 0,
+	.dev = {
+			.platform_data = &taishan_nor_data,
+		},
+	.num_resources	= 1,
+	.resource	= &taishan_nor_resource,
+};
+
+static int taishan_setup_flash(void)
+{
+	/*
+	 * Adjust partition 2 to flash size
+	 */
+	taishan_nor_parts[2].size = __res.bi_flashsize -
+		RW_PART0_SZ - RW_PART1_SZ - RW_PART3_SZ - RW_PART4_SZ;
+
+	platform_device_register(&taishan_nor_device);
+
+	return 0;
+}
+arch_initcall(taishan_setup_flash);
+
+static void __init
+taishan_calibrate_decr(void)
+{
+	unsigned int freq;
+
+	if (mfspr(SPRN_CCR1) & CCR1_TCS)
+		freq = TAISHAN_TMR_CLK;
+	else
+		freq = clocks.cpu;
+
+	ibm44x_calibrate_decr(freq);
+}
+
+static int
+taishan_show_cpuinfo(struct seq_file *m)
+{
+	seq_printf(m, "vendor\t\t: AMCC\n");
+	seq_printf(m, "machine\t\t: PPC440GX EVB (Taishan)\n");
+	ibm440gx_show_cpuinfo(m);
+	return 0;
+}
+
+static inline int
+taishan_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
+{
+	static char pci_irq_table[][4] =
+	/*
+	 *	PCI IDSEL/INTPIN->INTLINE
+	 * 	   A   B   C   D
+	 */
+	{
+		{ 23, 24, 25, 26 },	/* IDSEL 1 - PCI Slot 0 */
+		{ 24, 25, 26, 23 },	/* IDSEL 2 - PCI Slot 1 */
+	};
+
+	const long min_idsel = 1, max_idsel = 2, irqs_per_slot = 4;
+	return PCI_IRQ_TABLE_LOOKUP;
+}
+
+static void __init taishan_set_emacdata(void)
+{
+	struct ocp_def *def;
+	struct ocp_func_emac_data *emacdata;
+	int i;
+
+	/* Set phy_map, phy_mode, and mac_addr for each EMAC */
+	for (i=2; i<4; i++) {
+		def = ocp_get_one_device(OCP_VENDOR_IBM, OCP_FUNC_EMAC, i);
+		emacdata = def->additions;
+		if (i < 2) {
+			emacdata->phy_map = 0x00000001;	/* Skip 0x00 */
+			emacdata->phy_mode = PHY_MODE_SMII;
+		} else {
+			emacdata->phy_map = 0x00000001; /* Skip 0x00 */
+			emacdata->phy_mode = PHY_MODE_RGMII;
+		}
+		if (i == 0)
+			memcpy(emacdata->mac_addr, "\0\0\0\0\0\0", 6);
+		else if (i == 1)
+			memcpy(emacdata->mac_addr, "\0\0\0\0\0\0", 6);
+		else if (i == 2)
+			memcpy(emacdata->mac_addr, __res.bi_enetaddr, 6);
+		else if (i == 3)
+			memcpy(emacdata->mac_addr, __res.bi_enet1addr, 6);
+	}
+}
+
+#define PCIX_READW(offset) \
+	(readw(pcix_reg_base+offset))
+
+#define PCIX_WRITEW(value, offset) \
+	(writew(value, pcix_reg_base+offset))
+
+#define PCIX_WRITEL(value, offset) \
+	(writel(value, pcix_reg_base+offset))
+
+/*
+ * FIXME: This is only here to "make it work".  This will move
+ * to a ibm_pcix.c which will contain a generic IBM PCIX bridge
+ * configuration library. -Matt
+ */
+static void __init
+taishan_setup_pcix(void)
+{
+	void *pcix_reg_base;
+
+	pcix_reg_base = ioremap64(PCIX0_REG_BASE, PCIX_REG_SIZE);
+
+	/* Enable PCIX0 I/O, Mem, and Busmaster cycles */
+	PCIX_WRITEW(PCIX_READW(PCIX0_COMMAND) | PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER, PCIX0_COMMAND);
+
+	/* Disable all windows */
+	PCIX_WRITEL(0, PCIX0_POM0SA);
+	PCIX_WRITEL(0, PCIX0_POM1SA);
+	PCIX_WRITEL(0, PCIX0_POM2SA);
+	PCIX_WRITEL(0, PCIX0_PIM0SA);
+	PCIX_WRITEL(0, PCIX0_PIM0SAH);
+	PCIX_WRITEL(0, PCIX0_PIM1SA);
+	PCIX_WRITEL(0, PCIX0_PIM2SA);
+	PCIX_WRITEL(0, PCIX0_PIM2SAH);
+
+	/* Setup 2GB PLB->PCI outbound mem window (3_8000_0000->0_8000_0000) */
+	PCIX_WRITEL(0x00000003, PCIX0_POM0LAH);
+	PCIX_WRITEL(0x80000000, PCIX0_POM0LAL);
+	PCIX_WRITEL(0x00000000, PCIX0_POM0PCIAH);
+	PCIX_WRITEL(0x80000000, PCIX0_POM0PCIAL);
+	PCIX_WRITEL(0x80000001, PCIX0_POM0SA);
+
+	/* Setup 2GB PCI->PLB inbound memory window at 0, enable MSIs */
+	PCIX_WRITEL(0x00000000, PCIX0_PIM0LAH);
+	PCIX_WRITEL(0x00000000, PCIX0_PIM0LAL);
+	PCIX_WRITEL(0xe0000007, PCIX0_PIM0SA);
+	PCIX_WRITEL(0xffffffff, PCIX0_PIM0SAH);
+
+	iounmap(pcix_reg_base);
+
+	eieio();
+}
+
+static void __init
+taishan_setup_hose(void)
+{
+	struct pci_controller *hose;
+
+	/* Configure windows on the PCI-X host bridge */
+	taishan_setup_pcix();
+
+	hose = pcibios_alloc_controller();
+
+	if (!hose)
+		return;
+
+	hose->first_busno = 0;
+	hose->last_busno = 0xff;
+
+	hose->pci_mem_offset = TAISHAN_PCI_MEM_OFFSET;
+
+	pci_init_resource(&hose->io_resource,
+			TAISHAN_PCI_LOWER_IO,
+			TAISHAN_PCI_UPPER_IO,
+			IORESOURCE_IO,
+			"PCI host bridge");
+
+	pci_init_resource(&hose->mem_resources[0],
+			TAISHAN_PCI_LOWER_MEM,
+			TAISHAN_PCI_UPPER_MEM,
+			IORESOURCE_MEM,
+			"PCI host bridge");
+
+	hose->io_space.start = TAISHAN_PCI_LOWER_IO;
+	hose->io_space.end = TAISHAN_PCI_UPPER_IO;
+	hose->mem_space.start = TAISHAN_PCI_LOWER_MEM;
+	hose->mem_space.end = TAISHAN_PCI_UPPER_MEM;
+	hose->io_base_virt = ioremap64(TAISHAN_PCI_IO_BASE, TAISHAN_PCI_IO_SIZE);
+	isa_io_base = (unsigned long) hose->io_base_virt;
+
+	setup_indirect_pci(hose,
+			TAISHAN_PCI_CFGA_PLB32,
+			TAISHAN_PCI_CFGD_PLB32);
+	hose->set_cfg_type = 1;
+
+	hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
+
+	ppc_md.pci_swizzle = common_swizzle;
+	ppc_md.pci_map_irq = taishan_map_irq;
+}
+
+
+static void __init
+taishan_early_serial_map(void)
+{
+	struct uart_port port;
+
+	/* Setup ioremapped serial port access */
+	memset(&port, 0, sizeof(port));
+	port.membase = ioremap64(PPC440GX_UART0_ADDR, 8);
+	port.irq = UART0_INT;
+	port.uartclk = clocks.uart0;
+	port.regshift = 0;
+	port.iotype = UPIO_MEM;
+	port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST;
+	port.line = 0;
+
+	if (early_serial_setup(&port) != 0)
+		printk("Early serial init of port 0 failed\n");
+
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+	/* Configure debug serial access */
+	gen550_init(0, &port);
+
+	/* Purge TLB entry added in head_44x.S for early serial access */
+	_tlbie(UART0_IO_BASE);
+#endif
+
+	port.membase = ioremap64(PPC440GX_UART1_ADDR, 8);
+	port.irq = UART1_INT;
+	port.uartclk = clocks.uart1;
+	port.line = 1;
+
+	if (early_serial_setup(&port) != 0)
+		printk("Early serial init of port 1 failed\n");
+
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+	/* Configure debug serial access */
+	gen550_init(1, &port);
+#endif
+}
+
+static void __init
+taishan_setup_arch(void)
+{
+	taishan_set_emacdata();
+
+	ibm440gx_tah_enable();
+
+	/*
+	 * Determine various clocks.
+	 * To be completely correct we should get SysClk
+	 * from FPGA, because it can be changed by on-board switches
+	 * --ebs
+	 */
+	ibm440gx_get_clocks(&clocks, 33333333, 6 * 1843200);
+	ocp_sys_info.opb_bus_freq = clocks.opb;
+
+	/* init to some ~sane value until calibrate_delay() runs */
+        loops_per_jiffy = 50000000/HZ;
+
+	/* Setup PCI host bridge */
+	taishan_setup_hose();
+
+#ifdef CONFIG_BLK_DEV_INITRD
+	if (initrd_start)
+		ROOT_DEV = Root_RAM0;
+	else
+#endif
+#ifdef CONFIG_ROOT_NFS
+		ROOT_DEV = Root_NFS;
+#else
+		ROOT_DEV = Root_HDA1;
+#endif
+
+	taishan_early_serial_map();
+
+	/* Identify the system */
+	printk("AMCC PowerPC 440GX Taishan Platform\n");
+}
+
+static void __init taishan_init(void)
+{
+	ibm440gx_l2c_setup(&clocks);
+}
+
+void __init platform_init(unsigned long r3, unsigned long r4,
+		unsigned long r5, unsigned long r6, unsigned long r7)
+{
+	ibm44x_platform_init(r3, r4, r5, r6, r7);
+
+	ppc_md.setup_arch = taishan_setup_arch;
+	ppc_md.show_cpuinfo = taishan_show_cpuinfo;
+	ppc_md.get_irq = NULL;		/* Set in ppc4xx_pic_init() */
+
+	ppc_md.calibrate_decr = taishan_calibrate_decr;
+
+#ifdef CONFIG_KGDB
+	ppc_md.early_serial_map = taishan_early_serial_map;
+#endif
+	ppc_md.init = taishan_init;
+}
+
diff --git a/arch/ppc/platforms/4xx/taishan.h b/arch/ppc/platforms/4xx/taishan.h
new file mode 100644
index 0000000..ea7561a
--- /dev/null
+++ b/arch/ppc/platforms/4xx/taishan.h
@@ -0,0 +1,67 @@
+/*
+ * arch/ppc/platforms/4xx/taishan.h
+ *
+ * AMCC Taishan board definitions
+ *
+ * Copyright 2007 DENX Software Engineering, Stefan Roese <sr@denx.de>
+ *
+ * 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.
+ *
+ */
+
+#ifdef __KERNEL__
+#ifndef __ASM_TAISHAN_H__
+#define __ASM_TAISHAN_H__
+
+#include <platforms/4xx/ibm440gx.h>
+
+/* External timer clock frequency */
+#define TAISHAN_TMR_CLK	25000000
+
+/* Flash */
+#define TAISHAN_FPGA_ADDR		0x0000000141000000ULL
+#define TAISHAN_LCM_ADDR		0x0000000142000000ULL
+#define TAISHAN_FLASH_ADDR		0x00000001fc000000ULL
+#define TAISHAN_FLASH_SIZE		0x4000000
+
+/*
+ * Serial port defines
+ */
+#define RS_TABLE_SIZE	2
+
+/* head_44x.S created UART mapping, used before early_serial_setup.
+ * We cannot use default OpenBIOS UART mappings because they
+ * don't work for configurations with more than 512M RAM.    --ebs
+ */
+#define UART0_IO_BASE	0xF0000200
+#define UART1_IO_BASE	0xF0000300
+
+#define BASE_BAUD	11059200/16
+#define STD_UART_OP(num)					\
+	{ 0, BASE_BAUD, 0, UART##num##_INT,			\
+		(ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST),	\
+		iomem_base: (void*)UART##num##_IO_BASE,		\
+		io_type: SERIAL_IO_MEM},
+
+#define SERIAL_PORT_DFNS	\
+	STD_UART_OP(0)		\
+	STD_UART_OP(1)
+
+/* PCI support */
+#define TAISHAN_PCI_LOWER_IO	0x00000000
+#define TAISHAN_PCI_UPPER_IO	0x0000ffff
+#define TAISHAN_PCI_LOWER_MEM	0x80000000
+#define TAISHAN_PCI_UPPER_MEM	0xffffefff
+
+#define TAISHAN_PCI_CFGA_PLB32	0x0ec00000
+#define TAISHAN_PCI_CFGD_PLB32	0x0ec00004
+
+#define TAISHAN_PCI_IO_BASE	0x0000000208000000ULL
+#define TAISHAN_PCI_IO_SIZE	0x00010000
+#define TAISHAN_PCI_MEM_OFFSET	0x00000000
+
+#endif				/* __ASM_TAISHAN_H__ */
+#endif				/* __KERNEL__ */
diff --git a/arch/ppc/syslib/Makefile b/arch/ppc/syslib/Makefile
index d84f046..0991111 100644
--- a/arch/ppc/syslib/Makefile
+++ b/arch/ppc/syslib/Makefile
@@ -69,6 +69,7 @@ obj-$(CONFIG_SANDPOINT)		+= pci_auto.o todc_time.o
 obj-$(CONFIG_SBC82xx)		+= todc_time.o
 obj-$(CONFIG_SPRUCE)		+= cpc700_pic.o pci_auto.o \
 				   todc_time.o
+obj-$(CONFIG_TAISHAN)		+= pci_auto.o
 obj-$(CONFIG_8260)		+= m8260_setup.o pq2_devices.o pq2_sys.o \
 				   ppc_sys.o
 obj-$(CONFIG_PCI_8260)		+= m82xx_pci.o pci_auto.o
diff --git a/include/asm-ppc/ibm4xx.h b/include/asm-ppc/ibm4xx.h
index 7a64ede..92fd02d 100644
--- a/include/asm-ppc/ibm4xx.h
+++ b/include/asm-ppc/ibm4xx.h
@@ -109,6 +109,10 @@ void ppc4xx_init(unsigned long r3, unsigned long r4, unsigned long r5,
 #include <platforms/4xx/ocotea.h>
 #endif
 
+#if defined(CONFIG_TAISHAN)
+#include <platforms/4xx/taishan.h>
+#endif
+
 #ifndef __ASSEMBLY__
 #ifdef CONFIG_40x
 /*

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 10:29 [PATCH] ppc: Add support for AMCC Taishan 440GX eval board Stefan Roese
@ 2007-02-12 12:06 ` Benjamin Herrenschmidt
  2007-02-12 12:23   ` Stefan Roese
  2007-02-12 18:30   ` Roland Dreier
  0 siblings, 2 replies; 16+ messages in thread
From: Benjamin Herrenschmidt @ 2007-02-12 12:06 UTC (permalink / raw)
  To: Stefan Roese; +Cc: linuxppc-dev, linuxppc-embedded

On Mon, 2007-02-12 at 11:29 +0100, Stefan Roese wrote:
> [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
> 
> This patch adds support for the AMCC Taishan PPC440GX evaluation
> board.
> 
> This is still an arch/ppc port. I'm aware that the move
> 4xx -> arch/powerpc is making good progress right now. So this
> patch is mainly intended to make the Taishan support available
> for the community right now.

Excellent, thanks.

David Gibson is making some good progress with the powerpc port, we have
ebony booting and emac's up, though he's still ironing out some issues
and PCI is still to go. Hopefully, we'll port Taishan next as I really
want to have a 440GX in asap.

Cheers,
Ben.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 12:06 ` Benjamin Herrenschmidt
@ 2007-02-12 12:23   ` Stefan Roese
  2007-02-12 18:30   ` Roland Dreier
  1 sibling, 0 replies; 16+ messages in thread
From: Stefan Roese @ 2007-02-12 12:23 UTC (permalink / raw)
  To: linuxppc-embedded; +Cc: linuxppc-dev

On Monday 12 February 2007 13:06, Benjamin Herrenschmidt wrote:
> David Gibson is making some good progress with the powerpc port, we have
> ebony booting and emac's up, though he's still ironing out some issues
> and PCI is still to go.

That's great news. Finally we are getting there.

> Hopefully, we'll port Taishan next as I really 
> want to have a 440GX in asap.

Good. Please let me know if I can be of any assistance here.

Best regards,
Stefan

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 12:06 ` Benjamin Herrenschmidt
  2007-02-12 12:23   ` Stefan Roese
@ 2007-02-12 18:30   ` Roland Dreier
  2007-02-12 18:54     ` Stefan Roese
  2007-02-12 19:55     ` Benjamin Herrenschmidt
  1 sibling, 2 replies; 16+ messages in thread
From: Roland Dreier @ 2007-02-12 18:30 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, Stefan Roese, linuxppc-embedded

    Benjamin> David Gibson is making some good progress with the
    Benjamin> powerpc port, we have ebony booting and emac's up,
    Benjamin> though he's still ironing out some issues and PCI is
    Benjamin> still to go. Hopefully, we'll port Taishan next as I
    Benjamin> really want to have a 440GX in asap.

Hey Ben, is this work available anywhere?  I am planning on getting
Katmai (new 440SPe eval board) going soon.  It looks like it will take
only trivial changes from Yucca (old 440SPe eval board) so I'm
planning on doing it for arch/ppc first, but I'd be happy to get the
440SPe (esp. PCIe stuff) moved to arch/powerpc as soon as makes sense.

Thanks,
  Roland

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 18:30   ` Roland Dreier
@ 2007-02-12 18:54     ` Stefan Roese
  2007-02-12 19:55     ` Benjamin Herrenschmidt
  1 sibling, 0 replies; 16+ messages in thread
From: Stefan Roese @ 2007-02-12 18:54 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linuxppc-embedded, linuxppc-dev

Hi Roland,

On Monday 12 February 2007 19:30, Roland Dreier wrote:
> Hey Ben, is this work available anywhere?  I am planning on getting
> Katmai (new 440SPe eval board) going soon.  It looks like it will take
> only trivial changes from Yucca (old 440SPe eval board) so I'm
> planning on doing it for arch/ppc first, but I'd be happy to get the
> 440SPe (esp. PCIe stuff) moved to arch/powerpc as soon as makes sense.

I already have a preliminary Katmai Linux (and U-Boot by the way) port in my 
queue. Just some PCI-E tests missing and the Xilinx SYSACE driver. Hopefully 
I can post this port in the next week or so.

And it's of course also still a arch/ppc port. :-(

Best regards,
Stefan

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 18:30   ` Roland Dreier
  2007-02-12 18:54     ` Stefan Roese
@ 2007-02-12 19:55     ` Benjamin Herrenschmidt
  2007-02-12 20:16       ` Jon Loeliger
  1 sibling, 1 reply; 16+ messages in thread
From: Benjamin Herrenschmidt @ 2007-02-12 19:55 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linuxppc-dev, Stefan Roese, linuxppc-embedded

On Mon, 2007-02-12 at 10:30 -0800, Roland Dreier wrote:
>     Benjamin> David Gibson is making some good progress with the
>     Benjamin> powerpc port, we have ebony booting and emac's up,
>     Benjamin> though he's still ironing out some issues and PCI is
>     Benjamin> still to go. Hopefully, we'll port Taishan next as I
>     Benjamin> really want to have a 440GX in asap.
> 
> Hey Ben, is this work available anywhere?  I am planning on getting
> Katmai (new 440SPe eval board) going soon.  It looks like it will take
> only trivial changes from Yucca (old 440SPe eval board) so I'm
> planning on doing it for arch/ppc first, but I'd be happy to get the
> 440SPe (esp. PCIe stuff) moved to arch/powerpc as soon as makes sense.

Last I asked him (yesterday) he was cleaning up the patches to post a
first batch. So soon, yes.

Note that there are still things that we might want to change. For
example, I think we really should look into adding a macro mecanism
and/or an include mecanism to dtc so that we can do things like #include
<ibm440gp.dtc> to get the base processor/SoC definition and then
"overlay" some properties on top of it (like emac phy mode etc...)

Cheers,
Ben.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 19:55     ` Benjamin Herrenschmidt
@ 2007-02-12 20:16       ` Jon Loeliger
  2007-02-12 20:23         ` Benjamin Herrenschmidt
  2007-02-12 20:32         ` Scott Wood
  0 siblings, 2 replies; 16+ messages in thread
From: Jon Loeliger @ 2007-02-12 20:16 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: linuxppc-dev, Roland Dreier, Stefan Roese, linuxppc-embedded

So, like, the other day Benjamin Herrenschmidt mumbled:
> 
> Note that there are still things that we might want to change. For
> example, I think we really should look into adding a macro mecanism
> and/or an include mecanism to dtc so that we can do things like #include
> <ibm440gp.dtc> to get the base processor/SoC definition and then
> "overlay" some properties on top of it (like emac phy mode etc...)

What do people prefer here?  Straight CPP pre-run?
Direct support built into dtc to do file-inclusion, macros?

Thoughts, opinions, suggestions, pre-NACKs, Cabernet Franc bribes?

jdl

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 20:16       ` Jon Loeliger
@ 2007-02-12 20:23         ` Benjamin Herrenschmidt
  2007-02-12 20:41           ` Kumar Gala
  2007-02-12 20:32         ` Scott Wood
  1 sibling, 1 reply; 16+ messages in thread
From: Benjamin Herrenschmidt @ 2007-02-12 20:23 UTC (permalink / raw)
  To: Jon Loeliger; +Cc: linuxppc-dev, Roland Dreier, Stefan Roese, linuxppc-embedded

On Mon, 2007-02-12 at 14:16 -0600, Jon Loeliger wrote:
> So, like, the other day Benjamin Herrenschmidt mumbled:
> > 
> > Note that there are still things that we might want to change. For
> > example, I think we really should look into adding a macro mecanism
> > and/or an include mecanism to dtc so that we can do things like #include
> > <ibm440gp.dtc> to get the base processor/SoC definition and then
> > "overlay" some properties on top of it (like emac phy mode etc...)
> 
> What do people prefer here?  Straight CPP pre-run?

CPP pre-run has issue, notably due to the usage of "#" in property
names.

> Direct support built into dtc to do file-inclusion, macros?

We aren't sure yet, though David might have ideas.

> Thoughts, opinions, suggestions, pre-NACKs, Cabernet Franc bribes?

I'd take the later :-)

Ben.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 20:16       ` Jon Loeliger
  2007-02-12 20:23         ` Benjamin Herrenschmidt
@ 2007-02-12 20:32         ` Scott Wood
  2007-02-13  0:43           ` David Gibson
  1 sibling, 1 reply; 16+ messages in thread
From: Scott Wood @ 2007-02-12 20:32 UTC (permalink / raw)
  To: Jon Loeliger; +Cc: Roland Dreier, Stefan Roese, linuxppc-embedded, linuxppc-dev

Jon Loeliger wrote:
> So, like, the other day Benjamin Herrenschmidt mumbled:
> 
>>Note that there are still things that we might want to change. For
>>example, I think we really should look into adding a macro mecanism
>>and/or an include mecanism to dtc so that we can do things like #include
>><ibm440gp.dtc> to get the base processor/SoC definition and then
>>"overlay" some properties on top of it (like emac phy mode etc...)
> 
> 
> What do people prefer here?  Straight CPP pre-run?
> Direct support built into dtc to do file-inclusion, macros?

Simple textual macros would make it difficult to define 123A and 123B 
SoCs whose device tree nodes are mostly a generic 123, but require a few 
changes in various parts.  I'd rather see dtc support overlaying trees, 
with the "newer" tree able to add, modify, and remove nodes and 
properties from the "older", more generic tree.

Parametric macros (or "template" nodes) might be nice for a few things 
on top of that, though (preferably with better syntax than CPP).

-Scott

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 20:23         ` Benjamin Herrenschmidt
@ 2007-02-12 20:41           ` Kumar Gala
  2007-02-13  0:46             ` David Gibson
  0 siblings, 1 reply; 16+ messages in thread
From: Kumar Gala @ 2007-02-12 20:41 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: linuxppc-dev, Jon Loeliger, Stefan Roese, Roland Dreier,
	linuxppc-embedded


On Feb 12, 2007, at 2:23 PM, Benjamin Herrenschmidt wrote:

> On Mon, 2007-02-12 at 14:16 -0600, Jon Loeliger wrote:
>> So, like, the other day Benjamin Herrenschmidt mumbled:
>>>
>>> Note that there are still things that we might want to change. For
>>> example, I think we really should look into adding a macro mecanism
>>> and/or an include mecanism to dtc so that we can do things like  
>>> #include
>>> <ibm440gp.dtc> to get the base processor/SoC definition and then
>>> "overlay" some properties on top of it (like emac phy mode etc...)
>>
>> What do people prefer here?  Straight CPP pre-run?
>
> CPP pre-run has issue, notably due to the usage of "#" in property
> names.

You can get around that by invoking cpp with the right flags,  I  
looked at doing this a while back and had it working.

>> Direct support built into dtc to do file-inclusion, macros?
>
> We aren't sure yet, though David might have ideas.

Would be nice for simple math as well (addition, subtraction, bitwise  
ops, and shifts).  For example was thinking that having some macro's  
around the PCI dev node's would make it a bit more readable to mere  
mortals.

- k

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 20:32         ` Scott Wood
@ 2007-02-13  0:43           ` David Gibson
  0 siblings, 0 replies; 16+ messages in thread
From: David Gibson @ 2007-02-13  0:43 UTC (permalink / raw)
  To: Scott Wood
  Cc: linuxppc-dev, Jon Loeliger, Stefan Roese, Roland Dreier,
	linuxppc-embedded

On Mon, Feb 12, 2007 at 02:32:06PM -0600, Scott Wood wrote:
> Jon Loeliger wrote:
> > So, like, the other day Benjamin Herrenschmidt mumbled:
> > 
> >>Note that there are still things that we might want to change. For
> >>example, I think we really should look into adding a macro mecanism
> >>and/or an include mecanism to dtc so that we can do things like #include
> >><ibm440gp.dtc> to get the base processor/SoC definition and then
> >>"overlay" some properties on top of it (like emac phy mode etc...)
> > 
> > 
> > What do people prefer here?  Straight CPP pre-run?
> > Direct support built into dtc to do file-inclusion, macros?
> 
> Simple textual macros would make it difficult to define 123A and 123B 
> SoCs whose device tree nodes are mostly a generic 123, but require a few 
> changes in various parts.  I'd rather see dtc support overlaying trees, 
> with the "newer" tree able to add, modify, and remove nodes and 
> properties from the "older", more generic tree.

We'll certainly need both macros and overlaying trees.  Since SoC
nodes including external bus controllers in particular could have
entire board-dependent subtrees hanging off them a mere macro isn't
really sufficient.

Simple overlaying to add nodes, and/or add or replace properties is
pretty easy and natural to add.  Removing nodes or properties is
rather uglier and I'd like to avoid if possible.

More convenient overlaying, by say grafting to a given labelled node,
rather than having to reproduce step-by-step the path to the overlaid
node is more complex but should be doable.  The main thing is just
working out a sane syntax.

> Parametric macros (or "template" nodes) might be nice for a few things 
> on top of that, though (preferably with better syntax than CPP).

Yes, macros certainly want to be parametric.

I'm leaning towards the conclusion that CPP won't quite cut it, for a
handful of reasons.  But implementing macro and include support
directly in dtc strikes me as something which could suck up an
enormous amount of development.  I'm considering using m4.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-12 20:41           ` Kumar Gala
@ 2007-02-13  0:46             ` David Gibson
  2007-02-13  5:28               ` Kumar Gala
  0 siblings, 1 reply; 16+ messages in thread
From: David Gibson @ 2007-02-13  0:46 UTC (permalink / raw)
  To: Kumar Gala
  Cc: Jon Loeliger, Roland Dreier, linuxppc-dev, linuxppc-embedded,
	Stefan Roese

On Mon, Feb 12, 2007 at 02:41:36PM -0600, Kumar Gala wrote:
> 
> On Feb 12, 2007, at 2:23 PM, Benjamin Herrenschmidt wrote:
> 
> > On Mon, 2007-02-12 at 14:16 -0600, Jon Loeliger wrote:
> >> So, like, the other day Benjamin Herrenschmidt mumbled:
> >>>
> >>> Note that there are still things that we might want to change. For
> >>> example, I think we really should look into adding a macro mecanism
> >>> and/or an include mecanism to dtc so that we can do things like  
> >>> #include
> >>> <ibm440gp.dtc> to get the base processor/SoC definition and then
> >>> "overlay" some properties on top of it (like emac phy mode etc...)
> >>
> >> What do people prefer here?  Straight CPP pre-run?
> >
> > CPP pre-run has issue, notably due to the usage of "#" in property
> > names.
> 
> You can get around that by invoking cpp with the right flags,  I  
> looked at doing this a while back and had it working.

Umm.. which flags?

> >> Direct support built into dtc to do file-inclusion, macros?
> >
> > We aren't sure yet, though David might have ideas.
> 
> Would be nice for simple math as well (addition, subtraction, bitwise  
> ops, and shifts).  For example was thinking that having some macro's  
> around the PCI dev node's would make it a bit more readable to mere  
> mortals.

Yes.  Adding an expression model would be more complex though.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-13  0:46             ` David Gibson
@ 2007-02-13  5:28               ` Kumar Gala
  2007-02-14  0:11                 ` David Gibson
  0 siblings, 1 reply; 16+ messages in thread
From: Kumar Gala @ 2007-02-13  5:28 UTC (permalink / raw)
  To: David Gibson
  Cc: Jon Loeliger, Roland Dreier, linuxppc-dev, linuxppc-embedded,
	Stefan Roese


On Feb 12, 2007, at 6:46 PM, David Gibson wrote:

> On Mon, Feb 12, 2007 at 02:41:36PM -0600, Kumar Gala wrote:
>>
>> On Feb 12, 2007, at 2:23 PM, Benjamin Herrenschmidt wrote:
>>
>>> On Mon, 2007-02-12 at 14:16 -0600, Jon Loeliger wrote:
>>>> So, like, the other day Benjamin Herrenschmidt mumbled:
>>>>>
>>>>> Note that there are still things that we might want to change. For
>>>>> example, I think we really should look into adding a macro  
>>>>> mecanism
>>>>> and/or an include mecanism to dtc so that we can do things like
>>>>> #include
>>>>> <ibm440gp.dtc> to get the base processor/SoC definition and then
>>>>> "overlay" some properties on top of it (like emac phy mode etc...)
>>>>
>>>> What do people prefer here?  Straight CPP pre-run?
>>>
>>> CPP pre-run has issue, notably due to the usage of "#" in property
>>> names.
>>
>> You can get around that by invoking cpp with the right flags,  I
>> looked at doing this a while back and had it working.
>
> Umm.. which flags?

cpp -undef -P -x assembler-with-cpp

>>>> Direct support built into dtc to do file-inclusion, macros?
>>>
>>> We aren't sure yet, though David might have ideas.
>>
>> Would be nice for simple math as well (addition, subtraction, bitwise
>> ops, and shifts).  For example was thinking that having some macro's
>> around the PCI dev node's would make it a bit more readable to mere
>> mortals.
>
> Yes.  Adding an expression model would be more complex though.

Is there somewhere we can grab one from?

- k

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-13  5:28               ` Kumar Gala
@ 2007-02-14  0:11                 ` David Gibson
  2007-02-14  0:30                   ` Kumar Gala
  0 siblings, 1 reply; 16+ messages in thread
From: David Gibson @ 2007-02-14  0:11 UTC (permalink / raw)
  To: Kumar Gala
  Cc: linuxppc-dev, Jon Loeliger, Stefan Roese, Roland Dreier,
	linuxppc-embedded

On Mon, Feb 12, 2007 at 11:28:17PM -0600, Kumar Gala wrote:
> 
> On Feb 12, 2007, at 6:46 PM, David Gibson wrote:
> 
> > On Mon, Feb 12, 2007 at 02:41:36PM -0600, Kumar Gala wrote:
> >>
> >> On Feb 12, 2007, at 2:23 PM, Benjamin Herrenschmidt wrote:
> >>
> >>> On Mon, 2007-02-12 at 14:16 -0600, Jon Loeliger wrote:
> >>>> So, like, the other day Benjamin Herrenschmidt mumbled:
> >>>>>
> >>>>> Note that there are still things that we might want to change. For
> >>>>> example, I think we really should look into adding a macro  
> >>>>> mecanism
> >>>>> and/or an include mecanism to dtc so that we can do things like
> >>>>> #include
> >>>>> <ibm440gp.dtc> to get the base processor/SoC definition and then
> >>>>> "overlay" some properties on top of it (like emac phy mode etc...)
> >>>>
> >>>> What do people prefer here?  Straight CPP pre-run?
> >>>
> >>> CPP pre-run has issue, notably due to the usage of "#" in property
> >>> names.
> >>
> >> You can get around that by invoking cpp with the right flags,  I
> >> looked at doing this a while back and had it working.
> >
> > Umm.. which flags?
> 
> cpp -undef -P -x assembler-with-cpp

What exactly does the -x assembler-with-cpp do?  I can't seem to find
a useful description in the man page or info.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-14  0:11                 ` David Gibson
@ 2007-02-14  0:30                   ` Kumar Gala
  2007-02-14  1:33                     ` David Gibson
  0 siblings, 1 reply; 16+ messages in thread
From: Kumar Gala @ 2007-02-14  0:30 UTC (permalink / raw)
  To: David Gibson
  Cc: linuxppc-dev, Jon Loeliger, Stefan Roese, Roland Dreier,
	linuxppc-embedded


On Feb 13, 2007, at 6:11 PM, David Gibson wrote:

> On Mon, Feb 12, 2007 at 11:28:17PM -0600, Kumar Gala wrote:
>>
>> On Feb 12, 2007, at 6:46 PM, David Gibson wrote:
>>
>>> On Mon, Feb 12, 2007 at 02:41:36PM -0600, Kumar Gala wrote:
>>>>
>>>> On Feb 12, 2007, at 2:23 PM, Benjamin Herrenschmidt wrote:
>>>>
>>>>> On Mon, 2007-02-12 at 14:16 -0600, Jon Loeliger wrote:
>>>>>> So, like, the other day Benjamin Herrenschmidt mumbled:
>>>>>>>
>>>>>>> Note that there are still things that we might want to  
>>>>>>> change. For
>>>>>>> example, I think we really should look into adding a macro
>>>>>>> mecanism
>>>>>>> and/or an include mecanism to dtc so that we can do things like
>>>>>>> #include
>>>>>>> <ibm440gp.dtc> to get the base processor/SoC definition and then
>>>>>>> "overlay" some properties on top of it (like emac phy mode  
>>>>>>> etc...)
>>>>>>
>>>>>> What do people prefer here?  Straight CPP pre-run?
>>>>>
>>>>> CPP pre-run has issue, notably due to the usage of "#" in property
>>>>> names.
>>>>
>>>> You can get around that by invoking cpp with the right flags,  I
>>>> looked at doing this a while back and had it working.
>>>
>>> Umm.. which flags?
>>
>> cpp -undef -P -x assembler-with-cpp
>
> What exactly does the -x assembler-with-cpp do?  I can't seem to find
> a useful description in the man page or info.

I think it treats the input as if where of assembler syntax.  And  
thus # has special meaning in some places.

- k

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ppc: Add support for AMCC Taishan 440GX eval board
  2007-02-14  0:30                   ` Kumar Gala
@ 2007-02-14  1:33                     ` David Gibson
  0 siblings, 0 replies; 16+ messages in thread
From: David Gibson @ 2007-02-14  1:33 UTC (permalink / raw)
  To: Kumar Gala
  Cc: linuxppc-dev, Jon Loeliger, Stefan Roese, Roland Dreier,
	linuxppc-embedded

On Tue, Feb 13, 2007 at 06:30:40PM -0600, Kumar Gala wrote:
> 
> On Feb 13, 2007, at 6:11 PM, David Gibson wrote:
> 
> > On Mon, Feb 12, 2007 at 11:28:17PM -0600, Kumar Gala wrote:
> >>
> >> On Feb 12, 2007, at 6:46 PM, David Gibson wrote:
> >>
> >>> On Mon, Feb 12, 2007 at 02:41:36PM -0600, Kumar Gala wrote:
> >>>>
> >>>> On Feb 12, 2007, at 2:23 PM, Benjamin Herrenschmidt wrote:
> >>>>
> >>>>> On Mon, 2007-02-12 at 14:16 -0600, Jon Loeliger wrote:
> >>>>>> So, like, the other day Benjamin Herrenschmidt mumbled:
> >>>>>>>
> >>>>>>> Note that there are still things that we might want to  
> >>>>>>> change. For
> >>>>>>> example, I think we really should look into adding a macro
> >>>>>>> mecanism
> >>>>>>> and/or an include mecanism to dtc so that we can do things like
> >>>>>>> #include
> >>>>>>> <ibm440gp.dtc> to get the base processor/SoC definition and then
> >>>>>>> "overlay" some properties on top of it (like emac phy mode  
> >>>>>>> etc...)
> >>>>>>
> >>>>>> What do people prefer here?  Straight CPP pre-run?
> >>>>>
> >>>>> CPP pre-run has issue, notably due to the usage of "#" in property
> >>>>> names.
> >>>>
> >>>> You can get around that by invoking cpp with the right flags,  I
> >>>> looked at doing this a while back and had it working.
> >>>
> >>> Umm.. which flags?
> >>
> >> cpp -undef -P -x assembler-with-cpp
> >
> > What exactly does the -x assembler-with-cpp do?  I can't seem to find
> > a useful description in the man page or info.
> 
> I think it treats the input as if where of assembler syntax.  And  
> thus # has special meaning in some places.

Yes... what places, precisely.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2007-02-14  1:33 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-12 10:29 [PATCH] ppc: Add support for AMCC Taishan 440GX eval board Stefan Roese
2007-02-12 12:06 ` Benjamin Herrenschmidt
2007-02-12 12:23   ` Stefan Roese
2007-02-12 18:30   ` Roland Dreier
2007-02-12 18:54     ` Stefan Roese
2007-02-12 19:55     ` Benjamin Herrenschmidt
2007-02-12 20:16       ` Jon Loeliger
2007-02-12 20:23         ` Benjamin Herrenschmidt
2007-02-12 20:41           ` Kumar Gala
2007-02-13  0:46             ` David Gibson
2007-02-13  5:28               ` Kumar Gala
2007-02-14  0:11                 ` David Gibson
2007-02-14  0:30                   ` Kumar Gala
2007-02-14  1:33                     ` David Gibson
2007-02-12 20:32         ` Scott Wood
2007-02-13  0:43           ` David Gibson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.