Module Name:    src
Committed By:   kiyohara
Date:           Thu Mar 18 14:15:38 UTC 2010

Modified Files:
        src/sys/arch/evbppc/conf: Makefile.obs405.inc OPENBLOCKS266 std.obs200
            std.obs405
        src/sys/arch/evbppc/include: obs405.h
        src/sys/arch/evbppc/obs405: obs200_machdep.c obs266_machdep.c
Added Files:
        src/sys/arch/evbppc/conf: OPENBLOCKS600 files.obs266 files.obs600
            std.obs266 std.obs600
        src/sys/arch/evbppc/include: obs600.h
        src/sys/arch/evbppc/obs405: obs600_autoconf.c obs600_locore.S
            obs600_machdep.c
Removed Files:
        src/sys/arch/evbppc/obs405: consinit.c

Log Message:
Support Plathome's OpenBlockS600.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/evbppc/conf/Makefile.obs405.inc
cvs rdiff -u -r1.47 -r1.48 src/sys/arch/evbppc/conf/OPENBLOCKS266
cvs rdiff -u -r0 -r1.1 src/sys/arch/evbppc/conf/OPENBLOCKS600 \
    src/sys/arch/evbppc/conf/files.obs266 \
    src/sys/arch/evbppc/conf/files.obs600 src/sys/arch/evbppc/conf/std.obs266 \
    src/sys/arch/evbppc/conf/std.obs600
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/evbppc/conf/std.obs200 \
    src/sys/arch/evbppc/conf/std.obs405
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/evbppc/include/obs405.h
cvs rdiff -u -r0 -r1.1 src/sys/arch/evbppc/include/obs600.h
cvs rdiff -u -r1.5 -r0 src/sys/arch/evbppc/obs405/consinit.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/evbppc/obs405/obs200_machdep.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/evbppc/obs405/obs266_machdep.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/evbppc/obs405/obs600_autoconf.c \
    src/sys/arch/evbppc/obs405/obs600_locore.S \
    src/sys/arch/evbppc/obs405/obs600_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/evbppc/conf/Makefile.obs405.inc
diff -u src/sys/arch/evbppc/conf/Makefile.obs405.inc:1.4 src/sys/arch/evbppc/conf/Makefile.obs405.inc:1.5
--- src/sys/arch/evbppc/conf/Makefile.obs405.inc:1.4	Mon May 18 05:17:28 2009
+++ src/sys/arch/evbppc/conf/Makefile.obs405.inc	Thu Mar 18 14:15:38 2010
@@ -1,9 +1,28 @@
-#	$NetBSD: Makefile.obs405.inc,v 1.4 2009/05/18 05:17:28 mrg Exp $
-
-MKIMG?=	${HOST_SH} ${THISPPC}/compile/walnut-mkimg.sh
+#	$NetBSD: Makefile.obs405.inc,v 1.5 2010/03/18 14:15:38 kiyohara Exp $
 
 CFLAGS+=-mcpu=405
 AFLAGS+=-mcpu=405
+
+
+.if ${PRDCTTYPE} == "obs200"
+
+MKIMG?=	${HOST_SH} ${THISPPC}/compile/walnut-mkimg.sh
+
+TEXTADDR?=	450000
+
+SYSTEM_FIRST_OBJ=	obs200_locore.o
+SYSTEM_FIRST_SFILE=	${THISPPC}/obs405/obs200_locore.S
+
+SYSTEM_LD_TAIL_EXTRA+=; \
+	echo ${MKIMG} netbsd netbsd.img ; \
+	OBJDUMP=${OBJDUMP}; OBJCOPY=${OBJCOPY}; export OBJDUMP OBJCOPY; \
+		${MKIMG} $@ $...@.img
+
+
+.elif ${PRDCTTYPE} == "obs266"
+
+MKIMG?=	${HOST_SH} ${THISPPC}/compile/walnut-mkimg.sh
+
 TEXTADDR?=	25000
 
 SYSTEM_FIRST_OBJ=	locore.o
@@ -13,3 +32,17 @@
 	echo ${MKIMG} netbsd netbsd.img ; \
 	OBJDUMP=${OBJDUMP}; OBJCOPY=${OBJCOPY}; export OBJDUMP OBJCOPY; \
 		${MKIMG} $@ $...@.img
+
+
+.elif ${PRDCTTYPE} == "obs600"
+
+TEXTADDR?=	25000
+
+SYSTEM_FIRST_OBJ=	obs600_locore.o
+SYSTEM_FIRST_SFILE=	${THISPPC}/obs405/obs600_locore.S
+
+SYSTEM_LD_TAIL_EXTRA+=; \
+	echo ${OBJCOPY} -S -O binary $@ $...@.bin; \
+	${OBJCOPY} -S -O binary $@ $...@.bin;
+
+.endif

Index: src/sys/arch/evbppc/conf/OPENBLOCKS266
diff -u src/sys/arch/evbppc/conf/OPENBLOCKS266:1.47 src/sys/arch/evbppc/conf/OPENBLOCKS266:1.48
--- src/sys/arch/evbppc/conf/OPENBLOCKS266:1.47	Wed Mar 10 17:25:21 2010
+++ src/sys/arch/evbppc/conf/OPENBLOCKS266	Thu Mar 18 14:15:38 2010
@@ -1,13 +1,13 @@
-#	$NetBSD: OPENBLOCKS266,v 1.47 2010/03/10 17:25:21 kiyohara Exp $
+#	$NetBSD: OPENBLOCKS266,v 1.48 2010/03/18 14:15:38 kiyohara Exp $
 #
 #	GENERIC -- everything that's currently supported
 #
 
-include		"arch/evbppc/conf/std.obs405"
+include		"arch/evbppc/conf/std.obs266"
 
 #options 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
 
-#ident 		"OPENBLOCKS266-$Revision: 1.47 $"
+#ident 		"OPENBLOCKS266-$Revision: 1.48 $"
 
 maxusers	32
 

Index: src/sys/arch/evbppc/conf/std.obs200
diff -u src/sys/arch/evbppc/conf/std.obs200:1.3 src/sys/arch/evbppc/conf/std.obs200:1.4
--- src/sys/arch/evbppc/conf/std.obs200:1.3	Sun Dec 11 12:17:11 2005
+++ src/sys/arch/evbppc/conf/std.obs200	Thu Mar 18 14:15:38 2010
@@ -1,29 +1,11 @@
-#	$NetBSD: std.obs200,v 1.3 2005/12/11 12:17:11 christos Exp $
+#	$NetBSD: std.obs200,v 1.4 2010/03/18 14:15:38 kiyohara Exp $
 #
-# Standard/required options for NetBSD/obs200
+# Standard/required options for obs200
 
-machine	evbppc powerpc
-include		"conf/std"	# MI standard options
-
-# standard ("mandatory") kernel options.
-options 	PPC_IBM4XX	# IBM 40x family
-
-# Executable support:
-options 	EXEC_ELF32	# (native) ELF32 binary support
-options 	EXEC_AOUT	# (native) a.out binary support (deprecated)
-options 	EXEC_SCRIPT	# shell script support
+include		"arch/evbppc/conf/std.obs405"
 
+makeoptions	PRDCTTYPE="obs200"
 makeoptions	TEXTADDR=0x450000
-makeoptions	BOARDTYPE="obs200"
-makeoptions	PPCDIR="ibm4xx"
-
-options 	PPC_INTR_IMPL="<powerpc/ibm4xx/ibm4xx_intr.h>"
-options 	PPC_PCI_MACHDEP_IMPL="<powerpc/ibm4xx/pci_machdep.h>"
 options 	KERNBASE=0x450000
 
-options 	INTSTK=16384
-options 	SPILLSTK=1024
-
-include		"arch/powerpc/conf/files.ibm4xx"
-include		"arch/powerpc/conf/files.ibm405gp"
 include		"arch/evbppc/conf/files.obs200"
Index: src/sys/arch/evbppc/conf/std.obs405
diff -u src/sys/arch/evbppc/conf/std.obs405:1.3 src/sys/arch/evbppc/conf/std.obs405:1.4
--- src/sys/arch/evbppc/conf/std.obs405:1.3	Sun Dec 11 12:17:11 2005
+++ src/sys/arch/evbppc/conf/std.obs405	Thu Mar 18 14:15:38 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: std.obs405,v 1.3 2005/12/11 12:17:11 christos Exp $
+#	$NetBSD: std.obs405,v 1.4 2010/03/18 14:15:38 kiyohara Exp $
 #
 # Standard/required options for NetBSD/obs405.
 
@@ -13,17 +13,14 @@
 options 	EXEC_AOUT	# (native) a.out binary support (deprecated)
 options 	EXEC_SCRIPT	# shell script support
 
-makeoptions	TEXTADDR=0x25000
 makeoptions	BOARDTYPE="obs405"
 makeoptions	PPCDIR="ibm4xx"
 
 options 	PPC_INTR_IMPL="<powerpc/ibm4xx/ibm4xx_intr.h>"
 options 	PPC_PCI_MACHDEP_IMPL="<powerpc/ibm4xx/pci_machdep.h>"
-options 	KERNBASE=0x25000
 
 options 	INTSTK=16384
 options 	SPILLSTK=1024
 
 include		"arch/powerpc/conf/files.ibm4xx"
-include		"arch/powerpc/conf/files.ibm405gp"
 include		"arch/evbppc/conf/files.obs405"

Index: src/sys/arch/evbppc/include/obs405.h
diff -u src/sys/arch/evbppc/include/obs405.h:1.6 src/sys/arch/evbppc/include/obs405.h:1.7
--- src/sys/arch/evbppc/include/obs405.h:1.6	Sun Dec 11 12:17:12 2005
+++ src/sys/arch/evbppc/include/obs405.h	Thu Mar 18 14:15:38 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: obs405.h,v 1.6 2005/12/11 12:17:12 christos Exp $	*/
+/*	$NetBSD: obs405.h,v 1.7 2010/03/18 14:15:38 kiyohara Exp $	*/
 
 /*
  * Copyright 2004 Shigeyuki Fukushima.
@@ -36,39 +36,9 @@
 #ifndef	_EVBPPC_OBS405_H_
 #define	_EVBPPC_OBS405_H_
 
-#include <sys/param.h>
-#include <sys/device.h>
-
-#include <powerpc/ibm4xx/ibm405gp.h>
-
-#include "com.h"
-#if (NCOM > 0)
-
-#include <sys/termios.h>
-
-#  ifndef CONADDR
-#  define CONADDR	IBM405GP_UART0_BASE
-#  endif
-#  ifndef CONSPEED
-#  define CONSPEED	B9600
-#  endif
-#  ifndef CONMODE
-   /* 8N1 */
-#  define CONMODE	((TTYDEF_CFLAG & ~(CSIZE | CSTOPB | PARENB)) | CS8)
-#  endif
-
-#define OBS405_CONADDR		(CONADDR)
-#define OBS405_CONSPEED		(CONSPEED)
-#define OBS405_CONMODE		(CONMODE)
-
-#endif /* NCOM */
-
-#include <dev/ic/comreg.h>
-
 /*
  * extern variables and functions
  */
-extern void obs405_consinit(int com_freq);
 extern void obs405_device_register(struct device *dev, void *aux, int com_freq);
 
 #endif	/* _EVBPPC_OBS405_H_ */

Index: src/sys/arch/evbppc/obs405/obs200_machdep.c
diff -u src/sys/arch/evbppc/obs405/obs200_machdep.c:1.11 src/sys/arch/evbppc/obs405/obs200_machdep.c:1.12
--- src/sys/arch/evbppc/obs405/obs200_machdep.c:1.11	Thu Mar 18 13:47:04 2010
+++ src/sys/arch/evbppc/obs405/obs200_machdep.c	Thu Mar 18 14:15:38 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: obs200_machdep.c,v 1.11 2010/03/18 13:47:04 kiyohara Exp $	*/
+/*	$NetBSD: obs200_machdep.c,v 1.12 2010/03/18 14:15:38 kiyohara Exp $	*/
 /*	Original: machdep.c,v 1.3 2005/01/17 17:24:09 shige Exp	*/
 
 /*
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: obs200_machdep.c,v 1.11 2010/03/18 13:47:04 kiyohara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: obs200_machdep.c,v 1.12 2010/03/18 14:15:38 kiyohara Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_ddb.h"
@@ -96,11 +96,27 @@
 #include <powerpc/ibm4xx/ibm405gp.h>
 #include <powerpc/ibm4xx/dev/comopbvar.h>
 
+#include <dev/ic/comreg.h>
 #include <dev/pci/pcivar.h>
 #include <dev/pci/pciconf.h>
 
 #include "ksyms.h"
 
+#include "com.h"
+#if (NCOM > 0)
+#include <sys/termios.h>
+
+#ifndef CONADDR
+#define CONADDR		IBM405GP_UART0_BASE
+#endif
+#ifndef CONSPEED
+#define CONSPEED	B9600
+#endif
+#ifndef CONMODE
+			/* 8N1 */
+#define CONMODE		((TTYDEF_CFLAG & ~(CSIZE | CSTOPB | PARENB)) | CS8)
+#endif
+#endif	/* NCOM */
 
 #define	TLB_PG_SIZE 	(16*1024*1024)
 
@@ -141,8 +157,8 @@
 		ppc4xx_tlb_reserve(va, va, TLB_PG_SIZE, TLB_EX);
 
 	/* Map console after physmem (see pmap_tlbmiss()). */
-	ppc4xx_tlb_reserve(OBS405_CONADDR, roundup(memsize, TLB_PG_SIZE),
-	    TLB_PG_SIZE, TLB_I | TLB_G);
+	ppc4xx_tlb_reserve(CONADDR, roundup(memsize, TLB_PG_SIZE), TLB_PG_SIZE,
+	    TLB_I | TLB_G);
 
 	/* Initialize IBM405GPr CPU */
 	ibm40x_memsize_init(memsize, startkernel);
@@ -185,7 +201,9 @@
 consinit(void)
 {
 
-	obs405_consinit(OBS200_COM_FREQ);
+#if (NCOM > 0)
+	com_opb_cnattach(OBS200_COM_FREQ, CONADDR, CONSPEED, CONMODE);
+#endif
 }
 
 int
@@ -396,6 +414,6 @@
 			return;
 		}
 		*iline = ilinemap[dev - 1];
-        } else
+	} else
 		*iline = 19 + ((swiz + dev + 1) & 3);
 }

Index: src/sys/arch/evbppc/obs405/obs266_machdep.c
diff -u src/sys/arch/evbppc/obs405/obs266_machdep.c:1.12 src/sys/arch/evbppc/obs405/obs266_machdep.c:1.13
--- src/sys/arch/evbppc/obs405/obs266_machdep.c:1.12	Thu Mar 18 13:47:04 2010
+++ src/sys/arch/evbppc/obs405/obs266_machdep.c	Thu Mar 18 14:15:38 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: obs266_machdep.c,v 1.12 2010/03/18 13:47:04 kiyohara Exp $	*/
+/*	$NetBSD: obs266_machdep.c,v 1.13 2010/03/18 14:15:38 kiyohara Exp $	*/
 /*	Original: md_machdep.c,v 1.3 2005/01/24 18:47:37 shige Exp $	*/
 
 /*
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: obs266_machdep.c,v 1.12 2010/03/18 13:47:04 kiyohara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: obs266_machdep.c,v 1.13 2010/03/18 14:15:38 kiyohara Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_ddb.h"
@@ -96,11 +96,27 @@
 #include <powerpc/ibm4xx/openbios.h>
 #include <powerpc/ibm4xx/spr.h>
 
+#include <dev/ic/comreg.h>
 #include <dev/pci/pcivar.h>
 #include <dev/pci/pciconf.h>
 
 #include "ksyms.h"
 
+#include "com.h"
+#if (NCOM > 0)
+#include <sys/termios.h>
+
+#ifndef CONADDR
+#define CONADDR		IBM405GP_UART0_BASE
+#endif
+#ifndef CONSPEED
+#define CONSPEED	B9600
+#endif
+#ifndef CONMODE
+			/* 8N1 */
+#define CONMODE		((TTYDEF_CFLAG & ~(CSIZE | CSTOPB | PARENB)) | CS8)
+#endif
+#endif	/* NCOM */
 
 #define	TLB_PG_SIZE 	(16*1024*1024)
 
@@ -134,8 +150,8 @@
 		ppc4xx_tlb_reserve(va, va, TLB_PG_SIZE, TLB_EX);
 
 	/* Map console after RAM (see pmap_tlbmiss()) */
-	ppc4xx_tlb_reserve(OBS405_CONADDR, roundup(memsize, TLB_PG_SIZE),
-	    TLB_PG_SIZE, TLB_I | TLB_G);
+	ppc4xx_tlb_reserve(CONADDR, roundup(memsize, TLB_PG_SIZE), TLB_PG_SIZE,
+	    TLB_I | TLB_G);
 
 	/* Initialize IBM405GPr CPU */
 	ibm40x_memsize_init(memsize, startkernel);
@@ -176,7 +192,9 @@
 consinit(void)
 {
 
-	obs405_consinit(OBS266_COM_FREQ);
+#if (NCOM > 0)
+	com_opb_cnattach(OBS266_COM_FREQ, CONADDR, CONSPEED, CONMODE);
+#endif
 }
 
 int

Added files:

Index: src/sys/arch/evbppc/conf/OPENBLOCKS600
diff -u /dev/null src/sys/arch/evbppc/conf/OPENBLOCKS600:1.1
--- /dev/null	Thu Mar 18 14:15:38 2010
+++ src/sys/arch/evbppc/conf/OPENBLOCKS600	Thu Mar 18 14:15:38 2010
@@ -0,0 +1,212 @@
+#	$NetBSD: OPENBLOCKS600,v 1.1 2010/03/18 14:15:38 kiyohara Exp $
+#
+#	GENERIC -- everything that's currently supported
+#
+
+include		"arch/evbppc/conf/std.obs600"
+
+#options 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
+
+#ident 		"OPENBLOCKS600-$Revision: 1.1 $"
+
+maxusers	32
+
+
+#
+# Standard system options
+#
+
+#options 	INSECURE		# disable kernel security levels
+#options 	NTP			# NTP phase/frequency locked loop
+#options 	KTRACE			# system call tracing via ktrace(1)
+
+options 	SYSVMSG			# System V message queues
+options 	SYSVSEM			# System V semaphores
+options 	SYSVSHM			# System V shared memory
+options		P1003_1B_SEMAPHORE	# p1003.1b semaphore support
+
+
+#options 	USERCONF		# userconf(4) support
+#options	PIPE_SOCKETPAIR		# smaller, but slower pipe(2)
+#options 	SYSCTL_INCLUDE_DESCR	# Include sysctl descriptions in kernel
+
+#options 	UVMHIST
+#options 	UVMHIST_PRINT
+
+
+#
+# Diagnostic/debugging support options
+#
+
+#options 	DIAGNOSTIC		# cheap kernel consistency checks
+options 	DEBUG			# expensive debugging checks/support
+#options	KMEMSTATS		# kernel memory statistics (vmstat -m)
+options 	DDB			# in-kernel debugger
+options 	DDB_HISTORY_SIZE=512	# enable history editing in DDB
+options 	TRAP_PANICWAIT
+options 	SYMTAB_SPACE=410000	# size for embedded symbol table
+
+makeoptions	DEBUG="-g"		# compile full symbol table
+
+
+#
+# Compatibility options
+#
+
+#options 	COMPAT_09		# NetBSD 0.9,
+#options 	COMPAT_10		# NetBSD 1.0,
+#options 	COMPAT_11		# NetBSD 1.1,
+#options 	COMPAT_12		# NetBSD 1.2,
+options 	COMPAT_13		# NetBSD 1.3,
+options 	COMPAT_14		# NetBSD 1.4,
+options 	COMPAT_15		# NetBSD 1.5,
+options 	COMPAT_16		# NetBSD 1.6,
+options 	COMPAT_20		# NetBSD 2.0,
+options 	COMPAT_30		# NetBSD 3.0,
+options 	COMPAT_40		# NetBSD 4.0,
+options 	COMPAT_50		# NetBSD 5.0 compatibility.
+options 	COMPAT_43		# and 4.3BSD
+#options 	COMPAT_386BSD_MBRPART	# recognize old partition ID
+options		COMPAT_BSDPTY		# /dev/[pt]ty?? ptys.
+
+
+#
+# File systems
+#
+
+file-system 	FFS		# UFS
+file-system 	EXT2FS		# second extended file system (linux)
+file-system 	LFS		# log-structured file system
+file-system 	MFS		# memory file system
+file-system 	NFS		# Network File System client
+file-system 	CD9660		# ISO 9660 + Rock Ridge file system
+file-system 	MSDOSFS		# MS-DOS file system
+file-system 	FDESC		# /dev/fd
+file-system 	KERNFS		# /kern
+file-system 	NULLFS		# loopback file system
+file-system 	OVERLAY		# overlay file system
+file-system	PUFFS		# Userspace file systems (e.g. ntfs-3g & sshfs)
+file-system 	PROCFS		# /proc
+file-system 	UMAPFS		# NULLFS + uid and gid remapping
+file-system 	UNION		# union file system
+file-system	PTYFS		# /dev/pts/N support
+file-system	TMPFS		# Efficient memory file-system
+#file-system	NTFS		# Windows NT file system (experimental)
+
+
+#
+# File system options
+#
+
+options 	QUOTA			# UFS quotas
+options 	FFS_EI			# FFS Endian Independant support
+options 	WAPBL		# File system journaling support - Experimental
+options 	NFSSERVER		# Network File System server
+#options 	FFS_NO_SNAPSHOT		# No FFS snapshot support
+options 	EXT2FS_SYSTEM_FLAGS	# makes ext2fs file flags (append and
+					# immutable) behave as system flags.
+options 	NFS_BOOT_DHCP		# Support DHCP NFS root
+
+
+#
+# Networking options
+#
+
+options 	GATEWAY		# packet forwarding
+options 	INET		# IP + ICMP + TCP + UDP
+options 	INET6		# IPv6
+#options 	IPSEC		# IP security
+#options 	IPSEC_ESP	# IP security (encryption part; define w/IPSEC)
+#options 	IPSEC_NAT_T	# IPsec NAT traversal (NAT-T)
+#options 	IPSEC_DEBUG	# debug for IP security
+#options 	MROUTING	# IP multicast routing
+#options 	PIM		# Protocol Independent Multicast
+#options        DIRECTED_BROADCAST      # allow broadcasts through routers
+options 	ISO,TPIP	# OSI
+#options 	EON		# OSI tunneling over IP
+#options 	NETATALK	# AppleTalk networking protocols
+options 	PPP_BSDCOMP	# BSD-Compress compression support for PPP
+options 	PPP_DEFLATE	# Deflate compression support for PPP
+options 	PPP_FILTER	# Active filter support for PPP (requires bpf)
+options 	PFIL_HOOKS	# pfil(9) packet filter hooks
+options 	IPFILTER_LOG	# ipmon(8) log support
+options 	IPFILTER_LOOKUP	# ippool(8) support
+#options 	TCP_COMPAT_42	# 4.2BSD TCP/IP bug compat. Not recommended.
+#options 	TCP_DEBUG	# Record last TCP_NDEBUG packets with SO_DEBUG
+
+
+#
+# Kernel root file system and dump configuration.
+#
+
+config		netbsd	root on ? type ?
+
+
+#
+# Device configuration
+#
+
+plb0 at root				# Processor Local Bus
+cpu0	at plb?				# CPU
+ecc0	at plb? irq 17			# On-chip ECC controller
+
+# On-chip Peripheral Bus support
+opb*	at plb?				# On-chip Peripheral Bus
+wdog*	at opb?				# Watchdog timer
+com*	at opb? addr ? irq ?		# UARTs
+emac*	at opb? addr ? irq ?		# Ethernet Media Access Controller
+options	EMAC_EVENT_COUNTERS
+options	EMAC_RGMII_PHY
+gpiic*	at opb? addr ? irq ?		# On-chip IIC controller
+iic*	at gpiic?			# I2C bus
+m41trtc0 at iic? addr 0x68		# Dallas DS1340C Real Time Clock
+opbgpio0 at opb? addr ? irq ?		# On-chip GPIO controller
+gpio*	at opbgpio?			# GPIO framework
+
+# MII/PHY support
+brgphy*	at mii? phy ?			# Broadcom BCM5400-family PHYs
+options 	MIIVERBOSE		# verbose PHY autoconfig messages
+
+
+#
+# Pseudo devices
+#
+
+# disk/mass storage pseudo-devices
+#pseudo-device	ccd		4	# concatenated/striped disk devices
+#pseudo-device	cgd		4	# cryptographic disk devices
+#pseudo-device	raid		4	# RAIDframe disk driver
+#options 	RAID_AUTOCONFIG		# auto-configuration of RAID components
+#pseudo-device	fss		4	# file system snapshot device
+#pseudo-device	md		1	# memory disk device
+#pseudo-device	vnd			# disk-like interface to files
+
+# network pseudo-devices
+pseudo-device	loop			# network loopback
+pseudo-device	bpfilter		# packet filter
+pseudo-device	ipfilter		# IP filter (firewall) and NAT
+pseudo-device	ppp			# Point-to-Point Protocol
+pseudo-device	pppoe			# PPP over Ethernet (RFC 2516)
+#options 	PPPOE_SERVER		# Enable PPPoE server via link0
+pseudo-device	sl			# Serial Line IP
+pseudo-device	strip			# Starmode Radio IP (Metricom)
+#pseudo-device	irframetty		# IrDA frame line discipline
+pseudo-device	tap			# virtual ethernet
+pseudo-device	tun			# network tunneling over tty
+pseudo-device	gre			# generic L3 over IP tunnel
+pseudo-device	gif			# IPv[46] over IPv[46] tunnel (RFC 1933)
+#pseudo-device	faith			# IPv[46] TCP relay translation i/f
+pseudo-device	stf			# 6to4 IPv6 over IPv4 encapsulation
+pseudo-device	vlan			# IEEE 802.1q encapsulation
+pseudo-device	bridge			# simple inter-network bridging
+#options	BRIDGE_IPF		# bridge uses IPv[46] pfil hooks too
+pseudo-device	agr			# IEEE 802.3ad link aggregation
+#pseudo-device	pf			# PF packet filter
+#pseudo-device	pflog			# PF log if
+
+# miscellaneous pseudo-devices
+pseudo-device	pty			# pseudo-terminals
+pseudo-device	rnd			# /dev/random and in-kernel generator
+pseudo-device	clockctl		# user control of clock subsystem
+pseudo-device	ksyms			# /dev/ksyms
+pseudo-device	putter			# for puffs and pud
Index: src/sys/arch/evbppc/conf/files.obs266
diff -u /dev/null src/sys/arch/evbppc/conf/files.obs266:1.1
--- /dev/null	Thu Mar 18 14:15:38 2010
+++ src/sys/arch/evbppc/conf/files.obs266	Thu Mar 18 14:15:38 2010
@@ -0,0 +1,21 @@
+#	$NetBSD: files.obs266,v 1.1 2010/03/18 14:15:38 kiyohara Exp $
+#
+# obs266-specific configuration info
+
+file	arch/powerpc/ibm4xx/openbios/openbios.c
+file	arch/evbppc/obs405/obs266_autoconf.c
+file	arch/evbppc/obs405/obs266_machdep.c
+
+#
+# Machine-independent CardBus drivers
+#
+include "dev/cardbus/files.cardbus"
+include "dev/pcmcia/files.pcmcia"
+
+file arch/evbppc/obs405/rbus_machdep.c		cardbus
+
+include "dev/usb/files.usb"
+
+include "dev/ieee1394/files.ieee1394"
+
+include "dev/bluetooth/files.bluetooth"
Index: src/sys/arch/evbppc/conf/files.obs600
diff -u /dev/null src/sys/arch/evbppc/conf/files.obs600:1.1
--- /dev/null	Thu Mar 18 14:15:38 2010
+++ src/sys/arch/evbppc/conf/files.obs600	Thu Mar 18 14:15:38 2010
@@ -0,0 +1,10 @@
+#	$NetBSD: files.obs600,v 1.1 2010/03/18 14:15:38 kiyohara Exp $
+#
+# obs600-specific configuration info
+
+file	arch/evbppc/obs405/obs600_autoconf.c
+file	arch/evbppc/obs405/obs600_machdep.c
+
+include "dev/usb/files.usb"
+
+include "dev/bluetooth/files.bluetooth"
Index: src/sys/arch/evbppc/conf/std.obs266
diff -u /dev/null src/sys/arch/evbppc/conf/std.obs266:1.1
--- /dev/null	Thu Mar 18 14:15:38 2010
+++ src/sys/arch/evbppc/conf/std.obs266	Thu Mar 18 14:15:38 2010
@@ -0,0 +1,11 @@
+#	$NetBSD: std.obs266,v 1.1 2010/03/18 14:15:38 kiyohara Exp $
+#
+# Standard/required options for obs266.
+
+include		"arch/evbppc/conf/std.obs405"
+
+makeoptions	PRDCTTYPE="obs266"
+makeoptions	TEXTADDR=0x25000
+options 	KERNBASE=0x25000
+
+include		"arch/evbppc/conf/files.obs266"
Index: src/sys/arch/evbppc/conf/std.obs600
diff -u /dev/null src/sys/arch/evbppc/conf/std.obs600:1.1
--- /dev/null	Thu Mar 18 14:15:38 2010
+++ src/sys/arch/evbppc/conf/std.obs600	Thu Mar 18 14:15:38 2010
@@ -0,0 +1,12 @@
+#	$NetBSD: std.obs600,v 1.1 2010/03/18 14:15:38 kiyohara Exp $
+#
+# Standard/required options for obs600.
+
+include		"arch/evbppc/conf/std.obs405"
+options 	MULTIUIC
+
+makeoptions	PRDCTTYPE="obs600"
+makeoptions	TEXTADDR=0x25000
+options 	KERNBASE=0x25000
+
+include		"arch/evbppc/conf/files.obs600"

Index: src/sys/arch/evbppc/include/obs600.h
diff -u /dev/null src/sys/arch/evbppc/include/obs600.h:1.1
--- /dev/null	Thu Mar 18 14:15:38 2010
+++ src/sys/arch/evbppc/include/obs600.h	Thu Mar 18 14:15:38 2010
@@ -0,0 +1,44 @@
+/*	$NetBSD: obs600.h,v 1.1 2010/03/18 14:15:38 kiyohara Exp $	*/
+/*
+ * Copyright (c) 2009 KIYOHARA Takashi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef	_EVBPPC_OBS600_H_
+#define	_EVBPPC_OBS600_H_
+
+/*
+ * Device Properties for OpenBlockS600 (AMCC 405EX 600MHz)
+ */
+
+/* UART Clock */
+#define OBS600_COM_FREQ		(COM_FREQ * 4)	/* UART CLK 7.3728 MHz */
+
+/*
+ * extern variables and functions
+ */
+
+#include <machine/obs405.h>
+
+#endif	/* _EVBPPC_OBS600_H_ */

Index: src/sys/arch/evbppc/obs405/obs600_autoconf.c
diff -u /dev/null src/sys/arch/evbppc/obs405/obs600_autoconf.c:1.1
--- /dev/null	Thu Mar 18 14:15:38 2010
+++ src/sys/arch/evbppc/obs405/obs600_autoconf.c	Thu Mar 18 14:15:38 2010
@@ -0,0 +1,85 @@
+/*	$NetBSD: obs600_autoconf.c,v 1.1 2010/03/18 14:15:38 kiyohara Exp $	*/
+
+/*
+ * Copyright 2004 Shigeyuki Fukushima.
+ * All rights reserved.
+ *
+ * Written by Shigeyuki Fukushima for The NetBSD Project.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ */
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: obs600_autoconf.c,v 1.1 2010/03/18 14:15:38 kiyohara Exp $");
+
+#include <sys/systm.h>
+#include <sys/device.h>
+
+#include <machine/intr.h>
+#include <machine/obs600.h>
+
+#include <powerpc/ibm4xx/cpu.h>
+#include <powerpc/ibm4xx/dcr4xx.h>
+
+#include <dev/ic/comreg.h>
+
+
+/*
+ * Determine device configuration for a machine.
+ */
+void
+cpu_configure(void)
+{
+
+	/* Initialize intr and add UICs */
+	intr_init();
+	uic_add(DCR_UIC1_BASE, 28);	/* UIC1 cascade to irq 28 */
+	uic_add(DCR_UIC2_BASE, 30);	/* UIC2 cascade to irq 30 */
+
+	calc_delayconst();
+
+	/* Make sure that timers run at CPU frequency */
+	mtdcr(DCR_CPC0_CR1, mfdcr(DCR_CPC0_CR1) & ~CPC0_CR1_CETE);
+
+	if (config_rootfound("plb", NULL) == NULL)
+		panic("configure: mainbus not configured");
+
+	printf("biomask %x netmask %x ttymask %x\n",
+	    imask[IPL_BIO], imask[IPL_NET], imask[IPL_TTY]);
+
+	(void)spl0();
+
+	/*
+	 * Now allow hardware interrupts.
+	 */
+	__asm volatile ("wrteei 1");
+}
+
+void device_register(struct device *dev, void *aux)
+{
+
+	obs405_device_register(dev, aux, OBS600_COM_FREQ);
+}
Index: src/sys/arch/evbppc/obs405/obs600_locore.S
diff -u /dev/null src/sys/arch/evbppc/obs405/obs600_locore.S:1.1
--- /dev/null	Thu Mar 18 14:15:38 2010
+++ src/sys/arch/evbppc/obs405/obs600_locore.S	Thu Mar 18 14:15:38 2010
@@ -0,0 +1,134 @@
+/*	$NetBSD: obs600_locore.S,v 1.1 2010/03/18 14:15:38 kiyohara Exp $	*/
+/*
+ * Copyright (c) 2009 KIYOHARA Takashi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#undef PPC_4XX_NOCACHE
+#define _NOREGNAMES
+
+#include "opt_ddb.h"
+#include "opt_ppcarch.h"
+#include "opt_ppcparam.h"
+#include "assym.h"
+#include "ksyms.h"
+
+#include <machine/param.h>
+#include <machine/psl.h>
+#include <machine/trap.h>
+#include <machine/asm.h>
+
+#include <powerpc/ibm4xx/spr.h>
+#include <powerpc/ibm4xx/pmap.h>
+
+
+/*
+ * Globals
+ */
+GLOBAL(proc0paddr)
+	.long	0			/* proc0 p_addr */
+
+/*
+ * This symbol is here for the benefit of kvm_mkdb, and is supposed to
+ * mark the start of kernel text.
+ */
+	.text
+	.globl	_C_LABEL(kernel_text)
+_C_LABEL(kernel_text):
+
+/*
+ * Kernel start routine for OpenBlockS600
+ * this code is excuted at the very first after the kernel is loaded
+ * by U-Boot.
+ */
+	.text
+	.globl	__start
+__start:
+	mr	%r31, %r3		/* argc of 'go's */
+	mr	%r30, %r4		/* argv of 'go's */
+	mr	%r29, %r6		/* arg string of 'bootm's */
+
+	li	%r0, 0
+	mtmsr	%r0			/* Disable FPU/MMU/exceptions */
+	isync
+
+#ifdef PPC_4XX_NOCACHE
+	/* Disable all caches for physical addresses */
+	li	%r0, 0
+#else
+	/* Allow cacheing for only the first 2GB of RAM */
+	lis	%r0, 0xffff
+#endif
+	mtdccr	%r0
+	mticcr	%r0
+
+	/* Invalidate all TLB entries */
+	tlbia
+	sync
+	isync
+
+	/* get start of bss */
+	lis	%r3, _C_LABEL(_edata)-...@ha
+	addi	%r3, %r3, _C_LABEL(_edata)-...@l
+	/* get end of kernel memory */
+	lis	%r8, _C_LABEL(end)@ha
+	addi	%r8, %r8, _C_LABEL(end)@l
+	/* zero bss */
+	li	%r4, 0
+2:	stwu	%r4, %r4(3)
+	cmpw	%r3, %r8
+	bne+	2b
+
+#if NKSYMS || defined(DDB) || defined(MODULAR)
+	/* If we had symbol table location we'd store it here and would've adjusted r8 here */
+	lis	%r7, _C_LABEL(startsym)@ha
+	addi	%r7, %r7, _C_LABEL(startsym)@l
+	stw	%r8, 0(%r7)
+	lis	%r7, _C_LABEL(endsym)@ha
+	addi	%r7, %r7, _C_LABEL(endsym)@l
+	stw	%r8, 0(%r7)
+#endif
+
+	/* Set kernel MMU context. */
+	li	%r0, KERNEL_PID
+	mtpid	%r0
+	sync
+
+	INIT_CPUINFO(8,1,9,0)
+	mr	%r4, %r8
+
+	lis	%r3, __st...@ha
+	addi	%r3, %r3, __st...@l
+
+	mr	%r6, %r31		/* argc of 'go's */
+	mr	%r7, %r30		/* argv of 'go's */
+	mr	%r8, %r29		/* arg strings of 'bootm's */
+
+	bl	_C_LABEL(initppc)
+	bl	_C_LABEL(main)
+
+not_reached:
+	b	not_reached
+
+#include <powerpc/ibm4xx/4xx_locore.S>
Index: src/sys/arch/evbppc/obs405/obs600_machdep.c
diff -u /dev/null src/sys/arch/evbppc/obs405/obs600_machdep.c:1.1
--- /dev/null	Thu Mar 18 14:15:38 2010
+++ src/sys/arch/evbppc/obs405/obs600_machdep.c	Thu Mar 18 14:15:38 2010
@@ -0,0 +1,440 @@
+/*	$NetBSD: obs600_machdep.c,v 1.1 2010/03/18 14:15:38 kiyohara Exp $	*/
+/*	Original: md_machdep.c,v 1.3 2005/01/24 18:47:37 shige Exp $	*/
+
+/*
+ * Copyright 2001, 2002 Wasabi Systems, Inc.
+ * All rights reserved.
+ *
+ * Written by Eduardo Horvath and Simon Burge for Wasabi Systems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed for the NetBSD Project by
+ *      Wasabi Systems, Inc.
+ * 4. The name of Wasabi Systems, Inc. may not be used to endorse
+ *    or promote products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Copyright (C) 1995, 1996 Wolfgang Solfrank.
+ * Copyright (C) 1995, 1996 TooLs GmbH.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by TooLs GmbH.
+ * 4. The name of TooLs GmbH may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: obs600_machdep.c,v 1.1 2010/03/18 14:15:38 kiyohara Exp $");
+
+#include "opt_compat_netbsd.h"
+#include "opt_ddb.h"
+#include "opt_ipkdb.h"
+#include "opt_modular.h"
+
+#include <sys/param.h>
+#include <sys/bus.h>
+#include <sys/errno.h>
+#include <sys/kernel.h>
+#include <sys/ksyms.h>
+#include <sys/mount.h>
+#include <sys/reboot.h>
+#include <sys/systm.h>
+#include <sys/device.h>
+
+#include <uvm/uvm.h>
+#include <uvm/uvm_extern.h>
+
+#include <machine/bus.h>
+#include <machine/cpu.h>
+#include <machine/obs600.h>
+
+#include <powerpc/ibm4xx/amcc405ex.h>
+#include <powerpc/ibm4xx/dcr4xx.h>
+#include <powerpc/ibm4xx/dev/comopbvar.h>
+#include <powerpc/ibm4xx/dev/gpiicreg.h>
+#include <powerpc/ibm4xx/dev/opbvar.h>
+#include <powerpc/ibm4xx/spr.h>
+#include <powerpc/spr.h>
+
+#include <dev/ic/comreg.h>
+
+#include "ksyms.h"
+
+#include "com.h"
+#if (NCOM > 0)
+#include <sys/termios.h>
+
+#ifndef CONADDR
+#define CONADDR		AMCC405EX_UART0_BASE
+#endif
+#ifndef CONSPEED
+#define CONSPEED	B115200
+#endif
+#ifndef CONMODE
+			/* 8N1 */
+#define CONMODE		((TTYDEF_CFLAG & ~(CSIZE | CSTOPB | PARENB)) | CS8)
+#endif
+#endif	/* NCOM */
+
+/*
+ * XXXX:
+ * It is very troublesome though we can calculate from various registers. X-<
+ */
+#define OBS600_CPU_FREQ	(600 * 1000 * 1000)
+#define OBS600_MEM_SIZE	(1 * 1024 * 1024 * 1024)
+
+#define	TLB_PG_SIZE 	(16 * 1024 * 1024)
+
+/*
+ * Global variables used here and there
+ */
+char bootpath[256];
+
+extern paddr_t msgbuf_paddr;
+
+#if NKSYMS || defined(DDB) || defined(MODULAR)
+void *startsym, *endsym;
+#endif
+
+void initppc(u_int, u_int, int, char *[], char *);
+int lcsplx(int);
+static int read_eeprom(int, char *);
+
+
+void
+initppc(u_int startkernel, u_int endkernel, int argc, char *argv[],
+	char *argstr)
+{
+	vaddr_t va;
+	u_int memsize;
+
+	memsize = OBS600_MEM_SIZE;
+
+	/* Linear map kernel memory */
+	for (va = 0; va < endkernel; va += TLB_PG_SIZE)
+		ppc4xx_tlb_reserve(va, va, TLB_PG_SIZE, TLB_EX);
+
+	/*
+	 * Map console and I2C after RAM. (see pmap_tlbmiss())
+	 * All peripherals mapped on a page.
+	 */
+	ppc4xx_tlb_reserve(AMCC405EX_OPB_BASE, roundup(memsize, TLB_PG_SIZE),
+	    TLB_PG_SIZE, TLB_I | TLB_G);
+
+	/* Initialize AMCC 405EX CPU */
+	ibm40x_memsize_init(memsize, startkernel);
+	ibm4xx_init((void (*)(void))ext_intr);
+
+	/* Disable Watchdog, PIT and FIT interrupts. (u-boot uses PIT...) */
+	mtspr(SPR_TCR, 0);
+
+	/*
+	 * Set the page size.
+	 */
+	uvm_setpagesize();
+
+	/*
+	 * Initialize pmap module.
+	 */
+	pmap_bootstrap(startkernel, endkernel);
+
+
+#if NKSYMS || defined(DDB) || defined(MODULAR)
+	ksyms_addsyms_elf((int)((u_int)endsym - (u_int)startsym), startsym, endsym);
+#endif
+#ifdef DDB
+	if (boothowto & RB_KDB)
+		Debugger();
+#endif
+#ifdef IPKDB
+	/*
+	 * Now trap to IPKDB
+	 */
+	ipkdb_init();
+	if (boothowto & RB_KDB)
+		ipkdb_connect(0);
+#endif
+}
+
+void
+consinit(void)
+{
+
+#if (NCOM > 0)
+	com_opb_cnattach(OBS600_COM_FREQ, CONADDR, CONSPEED, CONMODE);
+#endif /* NCOM */
+}
+
+int
+lcsplx(int ipl)
+{
+
+	return spllower(ipl); 	/* XXX */
+}
+
+
+/*
+ * Machine dependent startup code.
+ */
+void
+cpu_startup(void)
+{
+	prop_number_t pn;
+	prop_data_t pd;
+	u_char *macaddr, *macaddr1;
+	static u_char buf[16];	/* MAC address x2 buffer */
+
+	/*
+	 * cpu common startup
+	 */
+	ibm4xx_cpu_startup("OpenBlockS600 AMCC PowerPC 405EX Board");
+
+	/*
+	 * Set up the board properties database.
+	 */
+	board_info_init();
+
+	read_eeprom(sizeof(buf), buf);
+	macaddr = &buf[0];
+	macaddr1 = &buf[8];
+
+	pn = prop_number_create_integer(OBS600_CPU_FREQ);
+	KASSERT(pn != NULL);
+	if (prop_dictionary_set(board_properties, "processor-frequency", pn) ==
+	    false)
+		panic("setting processor-frequency");
+	prop_object_release(pn);
+
+	pn = prop_number_create_integer(OBS600_MEM_SIZE);
+	KASSERT(pn != NULL);
+	if (prop_dictionary_set(board_properties, "mem-size", pn) == false)
+		panic("setting mem-size");
+	prop_object_release(pn);
+
+#define ETHER_ADDR_LEN	6
+
+	pd = prop_data_create_data_nocopy(macaddr, ETHER_ADDR_LEN);
+	KASSERT(pd != NULL);
+	if (prop_dictionary_set(board_properties, "emac0-mac-addr", pd) ==
+	    false)
+		panic("setting emac0-mac-addr");
+	prop_object_release(pd);
+	pd = prop_data_create_data_nocopy(macaddr1, ETHER_ADDR_LEN);
+	KASSERT(pd != NULL);
+	if (prop_dictionary_set(board_properties, "emac1-mac-addr", pd) ==
+	    false)
+		panic("setting emac1-mac-addr");
+	prop_object_release(pd);
+
+	/* emac0 connects to phy 2 and emac1 to phy 3 via RGMII. */
+	pn = prop_number_create_integer(2);
+	KASSERT(pn != NULL);
+	if (prop_dictionary_set(board_properties, "emac0-mii-phy", pn) == false)
+		panic("setting emac0-mii-phy");
+	prop_object_release(pn);
+	pn = prop_number_create_integer(3);
+	KASSERT(pn != NULL);
+	if (prop_dictionary_set(board_properties, "emac1-mii-phy", pn) == false)
+		panic("setting emac1-mii-phy");
+	prop_object_release(pn);
+
+	/*
+	 * Now that we have VM, malloc()s are OK in bus_space.
+	 */
+	bus_space_mallocok();
+
+	/*
+	 * no fake mapiodev
+	 */
+	fake_mapiodev = 0;
+}
+
+/*
+ * Halt or reboot the machine after syncing/dumping according to howto.
+ */
+void
+cpu_reboot(int howto, char *what)
+{
+	static int syncing;
+	static char str[256];
+	char *ap = str, *ap1 = ap;
+
+	boothowto = howto;
+	if (!cold && !(howto & RB_NOSYNC) && !syncing) {
+		syncing = 1;
+		vfs_shutdown();		/* sync */
+		resettodr();		/* set wall clock */
+	}
+
+	splhigh();
+
+	if (!cold && (howto & RB_DUMP))
+		ibm4xx_dumpsys();
+
+	doshutdownhooks();
+
+	pmf_system_shutdown(boothowto);
+
+	if ((howto & RB_POWERDOWN) == RB_POWERDOWN) {
+	  /* Power off here if we know how...*/
+	}
+
+	if (howto & RB_HALT) {
+		printf("halted\n\n");
+
+#if 0
+		goto reboot;	/* XXX for now... */
+#endif
+
+#ifdef DDB
+		printf("dropping to debugger\n");
+		while(1)
+			Debugger();
+#endif
+	}
+
+	printf("rebooting\n\n");
+	if (what && *what) {
+		if (strlen(what) > sizeof str - 5)
+			printf("boot string too large, ignored\n");
+		else {
+			strcpy(str, what);
+			ap1 = ap = str + strlen(str);
+			*ap++ = ' ';
+		}
+	}
+	*ap++ = '-';
+	if (howto & RB_SINGLE)
+		*ap++ = 's';
+	if (howto & RB_KDB)
+		*ap++ = 'd';
+	*ap++ = 0;
+	if (ap[-2] == '-')
+		*ap1 = 0;
+
+	/* flush cache for msgbuf */
+	__syncicache((void *)msgbuf_paddr, round_page(MSGBUFSIZE));
+
+#if 0
+ reboot:
+#endif
+	ppc4xx_reset();
+
+	printf("ppc4xx_reset() failed!\n");
+#ifdef DDB
+	while(1)
+		Debugger();
+#else
+	while (1)
+		/* nothing */;
+#endif
+}
+
+/* This function assume already initialized for I2C... */
+static int
+read_eeprom(int len, char *buf)
+{
+	bus_space_tag_t bst = opb_get_bus_space_tag();
+	bus_space_handle_t bsh;
+	uint8_t mdcntl, sts;
+	int cnt, i = 0;
+
+#define I2C_EEPROM_ADDR	0x52
+
+	if (bus_space_map(bst, AMCC405EX_IIC0_BASE, IIC_NREG, 0, &bsh))
+		return ENOMEM; /* ??? */
+
+	/* Clear Stop Complete Bit */
+	bus_space_write_1(bst, bsh, IIC_STS, IIC_STS_SCMP);
+	/* Check init */
+	do {
+		/* Get status */
+		sts = bus_space_read_1(bst, bsh, IIC_STS);
+	} while ((sts & IIC_STS_PT));
+
+	mdcntl = bus_space_read_1(bst, bsh, IIC_MDCNTL);
+	bus_space_write_1(bst, bsh, IIC_MDCNTL,
+	    mdcntl | IIC_MDCNTL_FMDB | IIC_MDCNTL_FSDB);
+
+	/* 7-bit adressing */
+	bus_space_write_1(bst, bsh, IIC_HMADR, 0);
+	bus_space_write_1(bst, bsh, IIC_LMADR, I2C_EEPROM_ADDR << 1);
+
+	bus_space_write_1(bst, bsh, IIC_MDBUF, 0);
+	bus_space_write_1(bst, bsh, IIC_CNTL, IIC_CNTL_PT);
+	do {
+		/* Get status */
+		sts = bus_space_read_1(bst, bsh, IIC_STS);
+	} while ((sts & IIC_STS_PT) && !(sts & IIC_STS_ERR));
+
+	cnt = 0;
+	while (cnt < len) {
+		/* always read 4byte */
+		bus_space_write_1(bst, bsh, IIC_CNTL,
+		    IIC_CNTL_PT | IIC_CNTL_RW | IIC_CNTL_TCT);
+		do {
+			/* Get status */
+			sts = bus_space_read_1(bst, bsh, IIC_STS);
+		} while ((sts & IIC_STS_PT) && !(sts & IIC_STS_ERR));
+
+		if ((sts & IIC_STS_PT) || (sts & IIC_STS_ERR))
+			break;
+		if (sts & IIC_STS_MDBS) {
+			delay(1);
+			/* read 4byte */
+			for (i = 0; i < 4 && cnt < len; i++, cnt++)
+				buf[cnt] =
+				    bus_space_read_1(bst, bsh, IIC_MDBUF);
+		}
+	}
+	for ( ; i < 4; i++)
+		(void) bus_space_read_1(bst, bsh, IIC_MDBUF);
+
+	bus_space_unmap(bst, bsh, IIC_NREG);
+
+	return (cnt == len) ? 0 : EINVAL;
+}

Reply via email to