Subject: mods for proposed port "tsarm"
To: None <port-arm@NetBSD.org>
From: Jesse Off <joff@NetBSD.org>
List: port-arm
Date: 12/04/2004 09:47:37
I'd like to commit a set of intial changes for support of the Cirrus Logic
EP93xx line of processors and specifically, the TS-7200 ARM single board
computer.  Currently, everything except ethernet now works.  The board
currently boots to compact flash or USB thumb drive and uses a serial
console.

//Jesse Off

These are the generic modifications/additions for the EP93xx CPU:

sys/arch/arm/ep93xx/ <new directory>
sys/arch/arm/ep93xx/ep93xxreg.h
sys/arch/arm/ep93xx/ep93xx_intr.h
sys/arch/arm/ep93xx/ep93xx_intr.c
sys/arch/arm/ep93xx/ep93xxvar.h
sys/arch/arm/ep93xx/ep93xx_busdma.c
sys/arch/arm/ep93xx/files.ep93xx
sys/arch/arm/ep93xx/ep93xx_space.c
sys/arch/arm/ep93xx/epohci.c
sys/arch/arm/ep93xx/epevar.h
sys/arch/arm/ep93xx/epe.c
sys/arch/arm/ep93xx/epcom.c
sys/arch/arm/ep93xx/epclkreg.h
sys/arch/arm/ep93xx/epclk.c
sys/arch/arm/ep93xx/epcomreg.h
sys/arch/arm/ep93xx/epcomvar.h
sys/arch/arm/ep93xx/epereg.h
sys/arch/arm/ep93xx/epsoc.c
sys/arch/arm/ep93xx/epsocvar.h

Following addition of a new port:
========================
sys/arch/tsarm
sys/arch/tsarm/include
sys/arch/tsarm/include/aout_machdep.h
sys/arch/tsarm/include/Makefile
sys/arch/tsarm/include/ansi.h
sys/arch/tsarm/include/autoconf.h
sys/arch/tsarm/include/asm.h
sys/arch/tsarm/include/atomic.h
sys/arch/tsarm/include/elf_machdep.h
sys/arch/tsarm/include/bootconfig.h
sys/arch/tsarm/include/bswap.h
sys/arch/tsarm/include/bus.h
sys/arch/tsarm/include/cdefs.h
sys/arch/tsarm/include/cpu.h
sys/arch/tsarm/include/db_machdep.h
sys/arch/tsarm/include/disklabel.h
sys/arch/tsarm/include/int_const.h
sys/arch/tsarm/include/endian.h
sys/arch/tsarm/include/float.h
sys/arch/tsarm/include/fp.h
sys/arch/tsarm/include/endian_machdep.h
sys/arch/tsarm/include/frame.h
sys/arch/tsarm/include/ieee.h
sys/arch/tsarm/include/ieeefp.h
sys/arch/tsarm/include/int_mwgwtypes.h
sys/arch/tsarm/include/int_fmtio.h
sys/arch/tsarm/include/int_limits.h
sys/arch/tsarm/include/pci_machdep.h
sys/arch/tsarm/include/int_types.h
sys/arch/tsarm/include/intr.h
sys/arch/tsarm/include/ipkdb.h
sys/arch/tsarm/include/joystick.h
sys/arch/tsarm/include/limits.h
sys/arch/tsarm/include/lock.h
sys/arch/tsarm/include/math.h
sys/arch/tsarm/include/mcontext.h
sys/arch/tsarm/include/param.h
sys/arch/tsarm/include/pcb.h
sys/arch/tsarm/include/profile.h
sys/arch/tsarm/include/pmap.h
sys/arch/tsarm/include/pmc.h
sys/arch/tsarm/include/proc.h
sys/arch/tsarm/include/sysarch.h
sys/arch/tsarm/include/ptrace.h
sys/arch/tsarm/include/reg.h
sys/arch/tsarm/include/setjmp.h
sys/arch/tsarm/include/signal.h
sys/arch/tsarm/include/stdarg.h
sys/arch/tsarm/include/varargs.h
sys/arch/tsarm/include/trap.h
sys/arch/tsarm/include/types.h
sys/arch/tsarm/include/vmparam.h
sys/arch/tsarm/include/wchar_limits.h
sys/arch/tsarm/include/pio.h
sys/arch/tsarm/include/isa_machdep.h
sys/arch/tsarm/conf
sys/arch/tsarm/conf/std.tsarm
sys/arch/tsarm/conf/GENERIC
sys/arch/tsarm/conf/files.tsarm
sys/arch/tsarm/conf/mk.tsarm
sys/arch/tsarm/conf/ldscript.tsarm
sys/arch/tsarm/conf/Makefile.tsarm.inc
sys/arch/tsarm/compile
sys/arch/tsarm/compile/obj
sys/arch/tsarm/compile/obj/GENERIC
sys/arch/tsarm/compile/Makefile
sys/arch/tsarm/Makefile
sys/arch/tsarm/tsarm
sys/arch/tsarm/tsarm/isa
sys/arch/tsarm/tsarm/isa/isa_io_asm.S
sys/arch/tsarm/tsarm/isa/isa_machdep.c
sys/arch/tsarm/tsarm/isa/isa_io.c
sys/arch/tsarm/tsarm/tsarm_start.S
sys/arch/tsarm/tsarm/autoconf.c
sys/arch/tsarm/tsarm/epcom_ts.c
sys/arch/tsarm/tsarm/tsarmreg.h
sys/arch/tsarm/tsarm/tsarmvar.h
sys/arch/tsarm/tsarm/tspldvar.h
sys/arch/tsarm/tsarm/epcom_tsvar.h
sys/arch/tsarm/tsarm/tspld.c
sys/arch/tsarm/tsarm/wdc_ts.c
sys/arch/tsarm/tsarm/tsarm_machdep.c

New devices:

sys/arch/arm/ep93xx stuff
=========================
epsoc: EP93xx system-on-chip
 epcom: onchip AMBA UARTs (fully impl, console)
 epe: onchip 10/100 ethernet MAC (not yet completely impl)
 epclk: onchip timers, hardclock(), microtime(), delay() impl
 ohci: (not new, just attachment glue in epohci.c)

sys/arch/tsarm/tsarm stuff
====================
tspld: TS-7000 series PLD (incl not-yet-impl wdog timer)
 isa: (not new, attachment only) PC/104 isa compatible bus
 wdc: (not new, attachment only) compact flash controller

New major:
=====================
device-major    epcom           char 107                epcom

Modification to sys/arch/arm/arm/cpufunc.c: (set high vectors in arm9 CPSR)
=====================
--- cpufunc.c   3 Apr 2004 04:34:40 -0000       1.67
+++ cpufunc.c   4 Dec 2004 16:00:53 -0000
@@ -1870,6 +1870,9 @@
        cpuctrl |= CPU_CONTROL_BEND_ENABLE;
 #endif

+       if (vector_page == ARM_VECTORS_HIGH)
+               cpuctrl |= CPU_CONTROL_VECRELOC;
+
        /* Clear out the cache */
        cpu_idcache_wbinv_all();

Modifications to sys/dev/usb/ohci.c: (fixes USB initialization hang)
======================
--- ohci.c      26 Oct 2004 20:46:16 -0000      1.152
+++ ohci.c      4 Dec 2004 16:36:55 -0000
@@ -1092,6 +1092,9 @@
 #ifdef DIAGNOSTIC
                DPRINTFN(16, ("ohci_intr: ignored interrupt while
polling\n"));
 #endif
+               /* for level triggered intrs, should do something to ack */
+               OWRITE4(sc, OHCI_INTERRUPT_STATUS,
+                       OREAD4(sc, OHCI_INTERRUPT_STATUS));
                return (0);
        }