On 04 Apr 2006 16:54:16 -0700
Wade Farnsworth <wfarnsworth at mvista.com> wrote:

> From: Wade Farnsworth <wfarnsworth at mvista.com>
> 
> Adds support for the Freescale PQ2FADS board.
> 
> Signed-off-by: Wade Farnsworth <wfarnsworth at mvista.com>
> 

Though I doubt if new boards are accepting to ppc/ currently, it's nice to have 
a patch 
available. BTW, I suggest to use phy abstraction and updated fs_enet (submitted 
here recently)

Some more notes below.

> ---
> 
>  arch/ppc/Kconfig                   |    2
>  arch/ppc/configs/pq2fads_defconfig |  712 +++++++++++++++++++++++++++
>  arch/ppc/platforms/Makefile        |    1
>  arch/ppc/platforms/pq2ads.h        |   10
>  arch/ppc/platforms/pq2ads_pd.h     |   11
>  arch/ppc/platforms/pq2fads_setup.c |  235 ++++++++
>  arch/ppc/syslib/m82xx_pci.c        |    5
>  7 files changed, 975 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig
> --- a/arch/ppc/Kconfig
> +++ b/arch/ppc/Kconfig
> @@ -731,7 +731,7 @@ endchoice
>  
>  config PQ2ADS
>       bool
> -     depends on ADS8272
> +     depends on ADS8272 || PQ2FADS
>       default y
>  
>  config TQM8xxL
> diff --git a/arch/ppc/configs/pq2fads_defconfig 
> b/arch/ppc/configs/pq2fads_defconfig
> new file mode 100644
> --- /dev/null
> +++ b/arch/ppc/configs/pq2fads_defconfig
> @@ -0,0 +1,712 @@
> +#
> +# Automatically generated make config: don't edit
> +# Linux kernel version: 2.6.10_mvl401
> +# Thu Mar 23 14:28:38 2006
> +#
> +CONFIG_MMU=y
> +CONFIG_GENERIC_HARDIRQS=y
> +CONFIG_RWSEM_GENERIC_SPINLOCK=y
> +CONFIG_ASM_SEMAPHORES=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_LOCALVERSION=""
> +CONFIG_SWAP=y
> +CONFIG_SYSVIPC=y
> +CONFIG_SYSVIPC_SEMMNI=128
> +CONFIG_SYSVIPC_SEMMSL=250
> +# CONFIG_POSIX_MQUEUE is not set
> +# CONFIG_BSD_PROCESS_ACCT is not set
> +CONFIG_SYSCTL=y
> +# CONFIG_AUDIT is not set
> +CONFIG_LOG_BUF_SHIFT=14
> +# CONFIG_HOTPLUG is not set
> +CONFIG_KOBJECT_UEVENT=y
> +# CONFIG_IKCONFIG is not set
> +CONFIG_EMBEDDED=y
> +# CONFIG_KALLSYMS is not set
> +CONFIG_FUTEX=y
> +# CONFIG_EPOLL is not set
> +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
> +CONFIG_SHMEM=y
> +CONFIG_CC_ALIGN_FUNCTIONS=0
> +CONFIG_CC_ALIGN_LABELS=0
> +CONFIG_CC_ALIGN_LOOPS=0
> +CONFIG_CC_ALIGN_JUMPS=0
> +# CONFIG_BOOT_FLIGHT_RECORDER is not set
> +CONFIG_LOCKLESS=y
> +CONFIG_BOOT_FLIGHT_BUFFERS=4
> +CONFIG_BOOT_FLIGHT_SIZE=524288
> +CONFIG_FLIGHT_PROC_BUFFERS=8
> +CONFIG_FLIGHT_PROC_SIZE=8192
> +CONFIG_NEWEV=y
> +CONFIG_CSTM=y
> +# CONFIG_TINY_SHMEM is not set
> +
> +#
> +# Loadable module support
> +#
> +# CONFIG_MODULES is not set
> +
> +#
> +# 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_E200 is not set
> +# CONFIG_E500 is not set
> +CONFIG_PPC_FPU=y
> +# CONFIG_CPU_FREQ is not set
> +CONFIG_EMBEDDEDBOOT=y
> +CONFIG_PPC_STD_MMU=y
> +
> +#
> +# Platform options
> +#
> +
> +#
> +# Freescale Ethernet driver platform-specific options
> +#
> +# CONFIG_PPC_MULTIPLATFORM is not set
> +# CONFIG_APUS is not set
> +# CONFIG_KATANA is not set
> +# CONFIG_WILLOW is not set
> +# CONFIG_CPCI690 is not set
> +# CONFIG_PCORE is not set
> +# CONFIG_POWERPMC250 is not set
> +# CONFIG_CHESTNUT is not set
> +# CONFIG_SPRUCE is not set
> +# CONFIG_EV64260 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_PQ2FADS=y
> +# CONFIG_LITE5200 is not set
> +# CONFIG_MPC834x_SYS is not set
> +CONFIG_PQ2ADS=y
> +CONFIG_8260=y
> +CONFIG_CPM2=y
> +# CONFIG_PC_KEYBOARD is not set
> +# CONFIG_SMP is not set
> +CONFIG_PREEMPT_NONE=y
> +# CONFIG_PREEMPT_VOLUNTARY is not set
> +# CONFIG_PREEMPT_DESKTOP is not set
> +# CONFIG_PREEMPT_RT is not set
> +# CONFIG_PREEMPT_SOFTIRQS is not set
> +# CONFIG_PREEMPT_HARDIRQS is not set
> +# CONFIG_PREEMPT_BKL is not set
> +# CONFIG_HIGHMEM is not set
> +# CONFIG_HIGH_RES_TIMERS is not set
> +CONFIG_BINFMT_ELF=y
> +# CONFIG_BINFMT_MISC is not set
> +# CONFIG_CMDLINE_BOOL is not set
> +
> +#
> +# Bus options
> +#
> +CONFIG_PCI=y
> +CONFIG_PCI_DOMAINS=y
> +CONFIG_PCI_8260=y
> +# CONFIG_8260_PCI9 is not set
> +# CONFIG_PCI_LEGACY_PROC is not set
> +# CONFIG_PCI_NAMES 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_BOOT_LOAD=0x00400000
> +
> +#
> +# Device Drivers
> +#
> +
> +#
> +# Generic Driver Options
> +#
> +CONFIG_STANDALONE=y
> +CONFIG_PREVENT_FIRMWARE_BUILD=y
> +
> +#
> +# Memory Technology Devices (MTD)
> +#
> +# CONFIG_MTD 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_LOOP=y
> +# CONFIG_BLK_DEV_CRYPTOLOOP 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=32768
> +CONFIG_BLK_DEV_INITRD=y
> +CONFIG_INITRAMFS_SOURCE=""
> +# CONFIG_LBD is not set
> +# CONFIG_CDROM_PKTCDVD is not set
> +
> +#
> +# IO Schedulers
> +#
> +CONFIG_IOSCHED_NOOP=y
> +CONFIG_IOSCHED_AS=y
> +CONFIG_IOSCHED_DEADLINE=y
> +CONFIG_IOSCHED_CFQ=y
> +
> +#
> +# ATA/ATAPI/MFM/RLL support
> +#
> +# CONFIG_IDE is not set
> +
> +#
> +# SCSI device support
> +#
> +# CONFIG_SCSI is not set
> +
> +#
> +# Multi-device support (RAID and LVM)
> +#
> +# CONFIG_MD is not set
> +
> +#
> +# Fusion MPT device support
> +#
> +
> +#
> +# IEEE 1394 (FireWire) support
> +#
> +# CONFIG_IEEE1394 is not set
> +
> +#
> +# I2O device support
> +#
> +# CONFIG_I2O is not set
> +
> +#
> +# Macintosh device drivers
> +#
> +
> +#
> +# Networking support
> +#
> +CONFIG_NET=y
> +
> +#
> +# Networking options
> +#
> +CONFIG_PACKET=y
> +# CONFIG_PACKET_MMAP is not set
> +# CONFIG_NETLINK_DEV is not set
> +CONFIG_UNIX=y
> +# CONFIG_NET_KEY is not set
> +CONFIG_USE_POLICY_FWD=y
> +CONFIG_INET=y
> +CONFIG_IP_MULTICAST=y
> +# CONFIG_IP_ADVANCED_ROUTER is not set
> +CONFIG_IP_PNP=y
> +CONFIG_IP_PNP_DHCP=y
> +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_IP_MROUTE is not set
> +# CONFIG_ARPD is not set
> +CONFIG_SYN_COOKIES=y
> +# CONFIG_INET_AH is not set
> +# CONFIG_INET_ESP is not set
> +# CONFIG_INET_IPCOMP is not set
> +# CONFIG_INET_TUNNEL is not set
> +CONFIG_IP_TCPDIAG=y
> +# CONFIG_IP_TCPDIAG_IPV6 is not set
> +# CONFIG_IPV6 is not set
> +# CONFIG_NETFILTER is not set
> +
> +#
> +# SCTP Configuration (EXPERIMENTAL)
> +#
> +# CONFIG_IP_SCTP is not set
> +# CONFIG_ATM is not set
> +# CONFIG_BRIDGE is not set
> +# CONFIG_VLAN_8021Q is not set
> +# CONFIG_DECNET is not set
> +# CONFIG_LLC2 is not set
> +# CONFIG_IPX is not set
> +# CONFIG_ATALK is not set
> +# CONFIG_X25 is not set
> +# CONFIG_LAPB is not set
> +# CONFIG_NET_DIVERT is not set
> +# CONFIG_ECONET is not set
> +# CONFIG_WAN_ROUTER is not set
> +
> +#
> +# QoS and/or fair queueing
> +#
> +# CONFIG_NET_SCHED is not set
> +# CONFIG_NET_CLS_ROUTE is not set
> +
> +#
> +# 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 is not set
> +# CONFIG_IEEE80211 is not set
> +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_NET_VENDOR_3COM is not set
> +
> +#
> +# Tulip family network device support
> +#
> +# CONFIG_NET_TULIP is not set
> +# CONFIG_HP100 is not set
> +
> +#
> +# Broadcom network devices
> +#
> +# CONFIG_HND is not set
> +# CONFIG_NET_PCI is not set
> +CONFIG_FS_ENET=y
> +# CONFIG_FS_ENET_HAS_SCC is not set
> +CONFIG_FS_ENET_HAS_FCC=y
> +
> +#
> +# 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_SK98LIN is not set
> +# 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 is not set
> +
> +#
> +# Wan interfaces
> +#
> +# CONFIG_WAN is not set
> +# CONFIG_FDDI is not set
> +# CONFIG_HIPPI is not set
> +# CONFIG_PPP is not set
> +# CONFIG_SLIP is not set
> +# CONFIG_SHAPER is not set
> +# CONFIG_NETCONSOLE is not set
> +
> +#
> +# ISDN subsystem
> +#
> +# CONFIG_ISDN is not set
> +
> +#
> +# Telephony Support
> +#
> +# CONFIG_PHONE is not set
> +
> +#
> +# Input device support
> +#
> +CONFIG_INPUT=y

This is useless for the board iirc.
> +
> +#
> +# Userland interfaces
> +#
> +# CONFIG_INPUT_MOUSEDEV is not set
> +# CONFIG_INPUT_JOYDEV is not set
> +# CONFIG_INPUT_TSDEV is not set
> +# CONFIG_INPUT_TSLIBDEV is not set
> +# CONFIG_INPUT_EVDEV is not set
> +# CONFIG_INPUT_EVBUG is not set
> +
> +#
> +# Input I/O drivers
> +#
> +# CONFIG_GAMEPORT is not set
> +CONFIG_SOUND_GAMEPORT=y
ditto.

> +# CONFIG_SERIO is not set
> +# CONFIG_SERIO_I8042 is not set
> +
> +#
> +# Input Device Drivers
> +#
> +# CONFIG_INPUT_KEYBOARD is not set
> +# CONFIG_INPUT_MOUSE is not set
> +# CONFIG_INPUT_JOYSTICK is not set
> +# CONFIG_INPUT_TOUCHSCREEN is not set
> +# CONFIG_INPUT_MISC is not set
> +
> +#
> +# Character devices
> +#
> +# CONFIG_VT is not set
> +# CONFIG_SERIAL_NONSTANDARD is not set
> +
> +#
> +# Serial drivers
> +#
> +# CONFIG_SERIAL_8250 is not set
> +
> +#
> +# Non-8250 serial port support
> +#
> +CONFIG_SERIAL_CORE=y
> +CONFIG_SERIAL_CORE_CONSOLE=y
> +CONFIG_SERIAL_CPM=y
> +CONFIG_SERIAL_CPM_CONSOLE=y
> +CONFIG_SERIAL_CPM_SCC1=y
> +CONFIG_SERIAL_CPM_SCC2=y
> +# CONFIG_SERIAL_CPM_SCC3 is not set
> +# CONFIG_SERIAL_CPM_SCC4 is not set
> +# CONFIG_SERIAL_CPM_SMC1 is not set
> +# CONFIG_SERIAL_CPM_SMC2 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_NVRAM is not set
> +# CONFIG_BLOCKER is not set
> +CONFIG_GEN_RTC=y
> +# CONFIG_GEN_RTC_X is not set
> +# CONFIG_DTLK is not set
> +# CONFIG_R3964 is not set
> +# CONFIG_APPLICOM is not set
> +
> +#
> +# Ftape, the floppy tape device driver
> +#
> +# CONFIG_AGP is not set
> +# CONFIG_DRM is not set
> +# CONFIG_RAW_DRIVER is not set
> +
> +#
> +# I2C support
> +#
> +# CONFIG_I2C is not set
> +
> +#
> +# SPI support
> +#
> +# CONFIG_SPI is not set
> +# CONFIG_SPI_MASTER is not set
> +
> +#
> +# Dallas's 1-wire bus
> +#
> +# CONFIG_W1 is not set
> +
> +#
> +# Misc devices
> +#
> +
> +#
> +# Multimedia Capabilities Port drivers
> +#
> +
> +#
> +# Multimedia devices
> +#
> +# CONFIG_VIDEO_DEV is not set
> +
> +#
> +# Digital Video Broadcasting Devices
> +#
> +# CONFIG_DVB is not set
> +
> +#
> +# Graphics support
> +#
> +# CONFIG_FB is not set
> +
> +#
> +# Sound
> +#
> +# CONFIG_SOUND is not set
> +
> +#
> +# USB support
> +#
> +# CONFIG_USB is not set
> +CONFIG_USB_ARCH_HAS_HCD=y
> +CONFIG_USB_ARCH_HAS_OHCI=y

Not sure this is required as well.

> +
> +#
> +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be 
> needed; see USB_STORAGE Help for more information
> +#
> +
> +#
> +# USB Gadget Support
> +#
> +# CONFIG_USB_GADGET is not set
> +
> +#
> +# MMC/SD Card support
> +#
> +# CONFIG_MMC is not set
> +
> +#
> +# Synchronous Serial Interfaces (SSI)
> +#
> +
> +#
> +# File systems
> +#
> +CONFIG_EXT2_FS=y
> +# CONFIG_EXT2_FS_XATTR is not set
> +CONFIG_EXT3_FS=y
> +CONFIG_EXT3_FS_XATTR=y
> +# CONFIG_EXT3_FS_POSIX_ACL is not set
> +# CONFIG_EXT3_FS_SECURITY is not set
> +CONFIG_JBD=y
> +# CONFIG_JBD_DEBUG is not set
> +CONFIG_FS_MBCACHE=y
> +# CONFIG_REISERFS_FS is not set
> +# CONFIG_JFS_FS is not set
> +# CONFIG_XFS_FS is not set
> +# CONFIG_MINIX_FS is not set
> +# CONFIG_ROMFS_FS is not set
> +# CONFIG_QUOTA is not set
> +CONFIG_DNOTIFY=y
> +# CONFIG_AUTOFS_FS is not set
> +# CONFIG_AUTOFS4_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_SYSFS=y
> +# CONFIG_DEVFS_FS is not set
> +# CONFIG_DEVPTS_FS_XATTR is not set
> +CONFIG_TMPFS=y
> +# CONFIG_TMPFS_XATTR is not set
> +# CONFIG_HUGETLB_PAGE is not set
> +CONFIG_RAMFS=y
> +# CONFIG_RELAYFS_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_COMPRESSION_OPTIONS 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
> +# CONFIG_YAFFS_FS is not set
> +# CONFIG_YAFFS1_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_EXPORTFS is not set
> +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
> +
> +#
> +# Partition Types
> +#
> +CONFIG_PARTITION_ADVANCED=y
> +# CONFIG_ACORN_PARTITION is not set
> +# CONFIG_OSF_PARTITION is not set
> +# CONFIG_AMIGA_PARTITION is not set
> +# CONFIG_ATARI_PARTITION is not set
> +# CONFIG_MAC_PARTITION is not set
> +# CONFIG_MSDOS_PARTITION 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 is not set
> +
> +#
> +# Native Language Support
> +#
> +# CONFIG_NLS is not set
> +# CONFIG_SCC_ENET is not set
> +# CONFIG_FEC_ENET is not set
> +
> +#
> +# CPM2 Options
> +#
> +
> +#
> +# Library routines
> +#
> +# CONFIG_CRC_CCITT is not set
> +# CONFIG_CRC32 is not set
> +# CONFIG_LIBCRC32C is not set
> +
> +#
> +# Fast Real-Time Domain
> +#
> +# CONFIG_FRD is not set
> +
> +#
> +# Fast Real-Time Domain Advanced Options
> +#
> +
> +#
> +# Profiling support
> +#
> +# CONFIG_PROFILING is not set
> +
> +#
> +# MontaVista System tools
> +#
> +# CONFIG_ILATENCY is not set
> +
> +#
> +# Kernel hacking
> +#
> +# CONFIG_DEBUG_KERNEL is not set
> +# CONFIG_WAKEUP_TIMING is not set
> +# CONFIG_CRITICAL_IRQSOFF_TIMING is not set
> +
> +#
> +# 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/Makefile b/arch/ppc/platforms/Makefile
> --- a/arch/ppc/platforms/Makefile
> +++ b/arch/ppc/platforms/Makefile
> @@ -21,6 +21,7 @@ obj-$(CONFIG_MVME5100)              += mvme5100.o
>  obj-$(CONFIG_PAL4)           += pal4_setup.o pal4_pci.o
>  obj-$(CONFIG_POWERPMC250)    += powerpmc250.o
>  obj-$(CONFIG_PPLUS)          += pplus.o
> +obj-$(CONFIG_PQ2FADS)                += pq2fads_setup.o
>  obj-$(CONFIG_PRPMC750)               += prpmc750.o
>  obj-$(CONFIG_PRPMC800)               += prpmc800.o
>  obj-$(CONFIG_RADSTONE_PPC7D) += radstone_ppc7d.o
> diff --git a/arch/ppc/platforms/pq2ads.h b/arch/ppc/platforms/pq2ads.h
> --- a/arch/ppc/platforms/pq2ads.h
> +++ b/arch/ppc/platforms/pq2ads.h
> @@ -15,6 +15,8 @@
>  
>  #if defined(CONFIG_ADS8272)
>  #define BOARD_CHIP_NAME "8272"
> +#elif defined(CONFIG_PQ2FADS)
> +#define BOARD_CHIP_NAME "8280"
>  #endif
>  
>  /* Memory map is configured by the PROM startup.
> @@ -25,7 +27,11 @@
>  #define BCSR_ADDR            ((uint)0xf4500000)
>  #define BCSR_SIZE            ((uint)(32 * 1024))
>  
> +#ifdef CONFIG_PQ2FADS
> +#define BOOTROM_RESTART_ADDR ((uint)0xfff40004)
> +#else
>  #define BOOTROM_RESTART_ADDR ((uint)0xff000104)
> +#endif
>  
>  /* For our show_cpuinfo hooks. */
>  #define CPUINFO_VENDOR               "Motorola"
> @@ -45,7 +51,11 @@
>  #define BCSR1_RS232_EN1              ((uint)0x02000000)      /* 0 == enable 
> */
>  #define BCSR1_RS232_EN2              ((uint)0x01000000)      /* 0 == enable 
> */
>  #define BCSR3_FETHIEN2               ((uint)0x10000000)      /* 0 == enable 
> */
> +#ifdef CONFIG_PQ2FADS
> +#define BCSR3_FETH2_RST      ((uint)0x08000000)      /* 0 == reset */
> +#else
>  #define BCSR3_FETH2_RST      ((uint)0x80000000)      /* 0 == reset */
> +#endif
>  
>  #define PHY_INTERRUPT        SIU_INT_IRQ7
>  
> diff --git a/arch/ppc/platforms/pq2ads_pd.h b/arch/ppc/platforms/pq2ads_pd.h
> --- a/arch/ppc/platforms/pq2ads_pd.h
> +++ b/arch/ppc/platforms/pq2ads_pd.h
> @@ -21,13 +21,23 @@
>  
>  /* FCC2 Clock Source Configuration.  These can be redefined in the board 
> specific file.
>     Can only choose from CLK13-16 */
> +#ifdef CONFIG_PQ2FADS
> +#define F2_RXCLK     13
> +#define F2_TXCLK     14
> +#else
>  #define F2_RXCLK     15
>  #define F2_TXCLK     16
> +#endif
>  
Hmm, this should go into the board-specific header - here should exist just a 
"reasonable default" (pq2ads.h in this context). 


>  /* FCC3 Clock Source Configuration.  These can be redefined in the board 
> specific file.
>     Can only choose from CLK13-16 */
> +#ifdef CONFIG_PQ2FADS
> +#define F3_RXCLK     15
> +#define F3_TXCLK     16
> +#else
>  #define F3_RXCLK     13
>  #define F3_TXCLK     14
> +#endif
>  
ditto.
>  /* Automatically generates register configurations */
>  #define PC_CLK(x)    ((uint)(1<<(x-1)))      /* FCC CLK I/O ports */
> @@ -110,5 +120,6 @@
>  #define FCC_MEM_OFFSET(x) (CPM_FCC_SPECIAL_BASE + (x*128))
>  #define FCC1_MEM_OFFSET FCC_MEM_OFFSET(0)
>  #define FCC2_MEM_OFFSET FCC_MEM_OFFSET(1)
> +#define FCC3_MEM_OFFSET FCC_MEM_OFFSET(2)
>  
>  #endif
> diff --git a/arch/ppc/platforms/pq2fads_setup.c 
> b/arch/ppc/platforms/pq2fads_setup.c
> new file mode 100644
> --- /dev/null
> +++ b/arch/ppc/platforms/pq2fads_setup.c
> @@ -0,0 +1,235 @@
> +/*
> + * arch/ppc/platforms/pq2fads_setup.c
> + *
> + * PQ2FADS Board-specific Platform Device descriptions
> + *
> + * 2006 (c) MontaVista Software, Inc.
> + *
> + * This file is licensed under the terms of the GNU General Public License
> + * version 2. This program is licensed "as is" without any warranty of any
> + * kind, whether express or implied.
> + */
> +
> +
> +#include <linux/init.h>
> +#include <linux/module.h>
> +#include <linux/device.h>
> +#include <linux/ioport.h>
> +#include <linux/fs_enet_pd.h>
> +
> +#include <asm/io.h>
> +#include <asm/mpc8260.h>
> +#include <asm/cpm2.h>
> +#include <asm/immap_cpm2.h>
> +#include <asm/irq.h>
> +#include <asm/ppc_sys.h>
> +#include <asm/ppcboot.h>
> +#include <asm/delay.h>
> +
> +#include "pq2ads_pd.h"
> +
> +void ppc_sys_device_enable(enum ppc_sys_devices);
> +static void init_fcc2_ioports(void);
> +static void init_fcc3_ioports(void);
> +
> +static struct fs_mii_bus_info mii_bus_info = {
> +     .method                 = fsmii_bitbang,
> +     .id                     = 0,
> +     .i.bitbang = {
> +             .mdio_port      = fsiop_portc,
> +             .mdc_port       = fsiop_portc,
> +             .mdio_bit       = 9,
> +             .mdc_bit        = 10,
> +             .delay          = 1,
> +     },
> +};
> +
> +/* First Ethernet Port - FCC2 */
> +static struct fs_platform_info mpc82xx_fcc2_pdata = {
> +     .fs_no          = fsid_fcc2,
> +     .cp_page        = CPM_CR_FCC2_PAGE,
> +     .cp_block       = CPM_CR_FCC2_SBLOCK,
> +     .clk_trx        = (PC_F2RXCLK | PC_F2TXCLK),
> +     .clk_route      = CMX2_CLK_ROUTE,
> +     .clk_mask       = CMX2_CLK_MASK,
> +     .init_ioports   = init_fcc2_ioports,
> +
> +     .phy_addr       = 0,
> +#ifdef PHY_INTERRUPT
> +     .phy_irq        = PHY_INTERRUPT,
> +#else
> +     .phy_irq        = -1;
> +#endif
> +     .mem_offset     = FCC2_MEM_OFFSET,
> +     .bus_info       = &mii_bus_info,
> +     .rx_ring        = 32,
> +     .tx_ring        = 32,
> +     .rx_copybreak   = 240,
> +     .use_napi       = 0,
> +     .napi_weight    = 17,
> +};
> +
> +/* Second Ethernet Port - FCC3 */
> +static struct fs_platform_info mpc82xx_fcc3_pdata = {
> +     .fs_no          = fsid_fcc3,
> +     .cp_page        = CPM_CR_FCC3_PAGE,
> +     .cp_block       = CPM_CR_FCC3_SBLOCK,
> +     .clk_trx        = (PC_F3RXCLK | PC_F3TXCLK),
> +     .clk_route      = CMX3_CLK_ROUTE,
> +     .clk_mask       = CMX3_CLK_MASK,
> +     .init_ioports   = init_fcc3_ioports,
> +
> +     .phy_addr       = 3,
> +#ifdef PHY_INTERRUPT
> +     .phy_irq        = PHY_INTERRUPT,
> +#else
> +     .phy_irq        = -1;
> +#endif
> +     .mem_offset     = FCC3_MEM_OFFSET,
> +     .bus_info       = &mii_bus_info,
> +     .rx_ring        = 32,
> +     .tx_ring        = 32,
> +     .rx_copybreak   = 240,
> +     .use_napi       = 0,
> +     .napi_weight    = 17,
> +};
> +
> +static void init_fcc2_ioports(void)
> +{
> +     struct io_port *io;
> +     u32 tempval;
> +     cpm2_map_t* immap = ioremap(CPM_MAP_ADDR, sizeof(cpm2_map_t));
> +     u32 *bcsr = ioremap(BCSR_ADDR+4, sizeof(u32));
> +
> +     io = &immap->im_ioport;
> +
> +     /* Enable the PHY */
> +     clrbits32(bcsr, BCSR1_FETHIEN);
> +     setbits32(bcsr, BCSR1_FETH_RST);
> +
> +     /* FCC2 pins are on port B/C. */
> +     /* Configure port B and C pins for FCC2 Ethernet. */
> +
> +     tempval = in_be32(&io->iop_pdirb);
> +     tempval &= ~PB2_DIRB0;
> +     tempval |= PB2_DIRB1;
> +     out_be32(&io->iop_pdirb, tempval);
> +
> +     tempval = in_be32(&io->iop_psorb);
> +     tempval &= ~PB2_PSORB0;
> +     tempval |= PB2_PSORB1;
> +     out_be32(&io->iop_psorb, tempval);
> +
> +     setbits32(&io->iop_pparb,PB2_DIRB0 | PB2_DIRB1);
> +
> +     tempval = PC_F2RXCLK|PC_F2TXCLK;
> +
> +     /* Alter clocks */
> +     clrbits32(&io->iop_psorc,tempval);
> +     clrbits32(&io->iop_pdirc,tempval);
> +     setbits32(&io->iop_pparc,tempval);
> +
> +     clrbits32(&immap->im_cpmux.cmx_fcr, CMX2_CLK_MASK);
> +     setbits32(&immap->im_cpmux.cmx_fcr, CMX2_CLK_ROUTE);
> +
> +     iounmap(bcsr);
> +     iounmap(immap);
> +}
> +
> +static void init_fcc3_ioports(void)
> +{
> +     struct io_port *io;
> +     u32 tempval;
> +     cpm2_map_t* immap = ioremap(CPM_MAP_ADDR, sizeof(cpm2_map_t));
> +     u32 *bcsr = ioremap(BCSR_ADDR+12, sizeof(u32));
> +
> +     io = &immap->im_ioport;
> +
> +     /* Enable the PHY */
> +     clrbits32(bcsr, BCSR3_FETHIEN2);
> +     setbits32(bcsr, BCSR3_FETH2_RST);
> +
> +     /* FCC3 pins are on port B/C. */
> +     /* Configure port B and C pins for FCC3 Ethernet. */
> +
> +     tempval = in_be32(&io->iop_pdirb);
> +     tempval &= ~PB3_DIRB0;
> +     tempval |= PB3_DIRB1;
> +     out_be32(&io->iop_pdirb, tempval);
> +
> +     tempval = in_be32(&io->iop_psorb);
> +     tempval &= ~PB3_PSORB0;
> +     tempval |= PB3_PSORB1;
> +     out_be32(&io->iop_psorb, tempval);
> +
> +     setbits32(&io->iop_pparb,PB3_DIRB0 | PB3_DIRB1);
> +
> +     /* Alter clocks */
> +     tempval = PC_F3TXCLK|PC_F3RXCLK;
> +
> +     clrbits32(&io->iop_psorc, tempval);
> +     clrbits32(&io->iop_pdirc, tempval);
> +     setbits32(&io->iop_pparc, tempval);
> +
> +     clrbits32(&immap->im_cpmux.cmx_fcr, CMX3_CLK_MASK);
> +     setbits32(&immap->im_cpmux.cmx_fcr, CMX3_CLK_ROUTE);
> +
> +     iounmap(bcsr);
> +     iounmap(immap);
> +}
> +
> +static void __init pq2fads_fixup_enet_pdata(struct platform_device *pdev,
> +                                           int idx)
> +{
> +     bd_t* bi = (void*)__res;
> +     int fs_no = fsid_fcc1+pdev->id-1;
> +
> +     mpc82xx_fcc3_pdata.dpram_offset = mpc82xx_fcc2_pdata.dpram_offset = 
> (u32)cpm2_immr->im_dprambase;
> +     mpc82xx_fcc3_pdata.fcc_regs_c = mpc82xx_fcc2_pdata.fcc_regs_c = 
> (u32)cpm2_immr->im_fcc_c;
> +
> +     switch(fs_no) {
> +             case fsid_fcc2:
> +                     memcpy(&mpc82xx_fcc2_pdata.macaddr,bi->bi_enetaddr,6);
> +                     pdev->dev.platform_data = &mpc82xx_fcc2_pdata;
> +             break;
> +             case fsid_fcc3:
> +                     memcpy(&mpc82xx_fcc3_pdata.macaddr,bi->bi_enetaddr,6);
> +                     mpc82xx_fcc3_pdata.macaddr[5] ^= 1;
> +                     pdev->dev.platform_data = &mpc82xx_fcc3_pdata;
> +             break;
> +     }
> +}
> +
> +static int pq2fads_platform_notify(struct device *dev)
> +{
> +     static const struct platform_notify_dev_map dev_map[] = {
> +             {
> +                     .bus_id = "fsl-cpm-fcc",
> +                     .rtn = pq2fads_fixup_enet_pdata
> +             },
> +             {
> +                     .bus_id = NULL
> +             }
> +     };
> +     platform_notify_map(dev_map,dev);
> +
> +     return 0;
> +
> +}
> +
> +int __init pq2fads_init(void)
> +{
> +     printk(KERN_NOTICE "pq2fads: Init\n");
> +
> +     platform_notify = pq2fads_platform_notify;
> +
> +     ppc_sys_device_initfunc();
> +
> +     ppc_sys_device_disable_all();
> +     ppc_sys_device_enable(MPC82xx_CPM_FCC2);
> +     ppc_sys_device_enable(MPC82xx_CPM_FCC3);
> +
> +     return 0;
> +}
> +
> +arch_initcall(pq2fads_init);
> diff --git a/arch/ppc/syslib/m82xx_pci.c b/arch/ppc/syslib/m82xx_pci.c
> --- a/arch/ppc/syslib/m82xx_pci.c
> +++ b/arch/ppc/syslib/m82xx_pci.c
> @@ -279,8 +279,13 @@ pq2ads_setup_pci(struct pci_controller *
>       immap->im_pci.pci_pobar2 = cpu_to_le32((M82xx_PCI_LOWER_MEM - 
> M82xx_PCI_MEM_OFFSET) >> POTA_ADDR_SHIFT);
>  
>       /* Inbound transactions from PCI memory space */
> +#ifdef CONFIG_PQ2FADS
> +     immap->im_pci.pci_picmr0 = cpu_to_le32(PICMR_ENABLE |
> +                                     ((~(M82xx_PCI_SLAVE_MEM_SIZE-1U)) >> 
> PITA_ADDR_SHIFT));
> +#else
>       immap->im_pci.pci_picmr0 = cpu_to_le32(PICMR_ENABLE | PICMR_PREFETCH_EN 
> |
>                                       ((~(M82xx_PCI_SLAVE_MEM_SIZE-1U)) >> 
> PITA_ADDR_SHIFT));
> +#endif
>       immap->im_pci.pci_pibar0 = cpu_to_le32(M82xx_PCI_SLAVE_MEM_BUS  >> 
> PITA_ADDR_SHIFT);
>       immap->im_pci.pci_pitar0 = cpu_to_le32(M82xx_PCI_SLAVE_MEM_LOCAL>> 
> PITA_ADDR_SHIFT);
>  
> 
> 

-- 
Sincerely, 
Vitaly

Reply via email to