diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2012-03-28 20:44:24 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2012-03-28 20:44:24 +0000 |
commit | 6ea0ed8392999d052b79785548a577d7e55b7184 (patch) | |
tree | b4c5fb05563150bb09cc3d203971a18a2b5277bc /sys/arch/sgi/conf | |
parent | b71835f84a40d614f56816274c2400a719e82600 (diff) |
Work in progress support for the SGI Indigo, Indigo 2 and Indy systems
(IP20, IP22, IP24) in 64-bit mode, adapated from NetBSD. Currently limited
to headless operation, input and video drivers will get ported soon.
Should work on all R4000, R4440 and R5000 based systems. L2 cache on R5000SC
Indy not supported yet (coming soon), R4600 not supported yet either (coming
soon as well).
Tested to boot multiuser on: Indigo2 R4000SC, Indy R4000PC, Indy R4000SC,
Indy R5000SC, Indigo2 R4400SC. There are still glitches in the Ethernet driver
which are being looked at.
Expansion support is limited to the GIO E++ board; GIO boards with PCI-GIO
bridges not ported yet due to the lack of hardware, and this kind of driver
does not port blindly.
Most of this work comes from NetBSD, polishing and integration work, as well
as putting as many ``R4x00 in 64-bit mode'' erratas as necessary, by yours
truly.
More work is coming, as well as trying to get some easy way to boot install
kernels (as older PROM can only boot ECOFF binaries, which won't do for the
kernel).
Diffstat (limited to 'sys/arch/sgi/conf')
-rw-r--r-- | sys/arch/sgi/conf/GENERIC-IP22 | 85 | ||||
-rw-r--r-- | sys/arch/sgi/conf/RAMDISK-IP22 | 95 | ||||
-rw-r--r-- | sys/arch/sgi/conf/files.sgi | 29 |
3 files changed, 206 insertions, 3 deletions
diff --git a/sys/arch/sgi/conf/GENERIC-IP22 b/sys/arch/sgi/conf/GENERIC-IP22 new file mode 100644 index 00000000000..c062b6c4cb4 --- /dev/null +++ b/sys/arch/sgi/conf/GENERIC-IP22 @@ -0,0 +1,85 @@ +# $OpenBSD: GENERIC-IP22,v 1.1 2012/03/28 20:44:23 miod Exp $ +# +# THIS KERNEL IS FOR INDIGO (IP20), INDY (IP22) AND INDIGO2 (IP24) SYSTEMS ONLY. +# +# For further information on compiling OpenBSD kernels, see the config(8) +# man page. +# +# For further information on hardware support for this architecture, see +# the intro(4) man page. For further information about kernel options +# for this architecture, see the options(4) man page. For an explanation +# of each device driver in this file see the section 4 man page for the +# device. + +machine sgi mips64 +include "../../../conf/GENERIC" +maxusers 32 # Estimated number of users + +# Make options +makeoption LINK_ADDRESS="0xffffffff88100000" +# Force use of 16KB pages. The R5000 Indy, which has the infamous XKPHYS +# coherency bug wrt ll/sc instructions, can not have more than 256MB of +# physical memory, all of it fitting within CKSEG0. +option PAGE_SHIFT="14" + +#option WSDISPLAY_COMPAT_RAWKBD # Provide raw scancodes; needed for X11 + +# Define what targets to support +option TGT_INDIGO # R4x00 Indigo (IP20) +option TGT_INDIGO2 # Indigo2 (IP22/IP26/IP28) +option TGT_INDY # Indy (IP24) +option ARCBIOS # mandatory +option CPU_R4000 # R4000/R4400 support (IP20/IP22/IP24) +#option CPU_R4600 # R4600 support (IP22/IP24) +option CPU_R5000 # R5000 support (IP24) + +config bsd swap generic + +# +# Definition of system +# +mainbus0 at root +cpu* at mainbus0 +clock0 at mainbus0 + +int0 at mainbus0 # Interrupt Controller +imc0 at mainbus0 # Memory Controller +gio0 at imc0 +#eisa0 at imc0 + +hpc0 at gio? addr 0x1fb80000 +hpc1 at gio? addr 0x1fb00000 +hpc2 at gio? addr 0x1f980000 + +dpclock0 at hpc0 # IP20 +dsclock0 at hpc0 # IP22/24 +sq* at hpc? # On-board Ethernet or E++ adapter +wdsc* at hpc? # On-board SCSI or GIO32 SCSI adapter +#haltwo* at hpc? # Indy/Indigo2 Audio +#panel* at hpc? # Indy front panel buttons +#pckbc* at hpc? # Indy/Indigo2 keyboard and mouse + +zs* at hpc? +zstty* at zs? # Serial ports + +#newport* at gio? # Indy Newport graphics +#wsdisplay* at newport? + +#grtwo* at gio? # Express (GR2) graphics +#wsdisplay* at grtwo? + +#light* at gio? # Light/Starter/Entry (LG1/LG2) graphics +#wsdisplay* at light? + +scsibus* at scsi? +sd* at scsibus? +st* at scsibus? +cd* at scsibus? +ch* at scsibus? +safte* at scsibus? +ses* at scsibus? +uk* at scsibus? + +pseudo-device crypto 1 +#pseudo-device hotplug 1 # devices hot plugging +#pseudo-device wsmux 2 # Mouse and keyboard multiplexor diff --git a/sys/arch/sgi/conf/RAMDISK-IP22 b/sys/arch/sgi/conf/RAMDISK-IP22 new file mode 100644 index 00000000000..91e2e00f390 --- /dev/null +++ b/sys/arch/sgi/conf/RAMDISK-IP22 @@ -0,0 +1,95 @@ +# $OpenBSD: RAMDISK-IP22,v 1.1 2012/03/28 20:44:23 miod Exp $ +# +# THIS KERNEL IS FOR INDIGO (IP20), INDY (IP22) AND INDIGO2 (IP24) SYSTEMS ONLY. + +machine sgi mips64 + +maxusers 4 +option TIMEZONE=0 # minutes west of GMT (for) +option DST=0 # use daylight savings rules + +# Make options +makeoption LINK_ADDRESS="0xffffffff88100000" +# Force use of 16KB pages. The R5000 Indy, which has the infamous XKPHYS +# coherency bug wrt ll/sc instructions, can not have more than 256MB of +# physical memory, all of it fitting within CKSEG0. +option PAGE_SHIFT="14" + +option DDB + +# Filesystem options +option CD9660 # ISO 9660 + Rock Ridge file system +option FIFO # POSIX fifo support (in all filesystems) +option FFS # fast filesystem +#option MSDOSFS # Ability to read write MS-Dos filesystem +option NFSCLIENT # Sun NFS-compatible filesystem (client) + +# Networking options +option INET # IP + ICMP + TCP + UDP +option INET6 # IPv6 (needs INET) + +# RAMDISK stuff +option MINIROOTSIZE=10240 +option RAMDISK_HOOKS + +# Define what targets to support +option TGT_INDIGO # R4x00 Indigo (IP20) +option TGT_INDIGO2 # Indigo2 (IP22/IP26/IP28) +option TGT_INDY # Indy (IP24) +option ARCBIOS # mandatory +option CPU_R4000 # R4000/R4400 support (IP20/IP22/IP24) +#option CPU_R4600 # R4600 support (IP22/IP24) +option CPU_R5000 # R5000 support (IP24) + +# Specify storage configuration using ramdisk +config bsd root on rd0a swap on rd0b + +# +# Definition of system +# +mainbus0 at root +cpu* at mainbus0 +clock0 at mainbus0 + +int0 at mainbus0 # Interrupt Controller +imc0 at mainbus0 # Memory Controller +gio0 at imc0 +#eisa0 at imc0 + +hpc0 at gio? addr 0x1fb80000 +hpc1 at gio? addr 0x1fb00000 +hpc2 at gio? addr 0x1f980000 + +dpclock0 at hpc0 # IP20 +dsclock0 at hpc0 # IP22/24 +sq* at hpc? # On-board Ethernet or E++ adapter +wdsc* at hpc? # On-board SCSI or GIO32 SCSI adapter +#pckbc* at hpc? # Indy/Indigo2 keyboard and mouse + +zs* at hpc? +zstty* at zs? # Serial ports + +#newport* at gio? # Indy Newport graphics +#wsdisplay* at newport? + +#grtwo* at gio? # Express (GR2) graphics +#wsdisplay* at grtwo? + +#light* at gio? # Light/Starter/Entry (LG1/LG2) graphics +#wsdisplay* at light? + +scsibus* at scsi? +sd* at scsibus? +st* at scsibus? +cd* at scsibus? +#ch* at scsibus? +#uk* at scsibus? + +#### PSEUDO Devices +pseudo-device loop 1 # network loopback +pseudo-device bpfilter 1 # packet filter ports + +pseudo-device rd 1 # Ram disk. +pseudo-device bio 1 # ioctl multiplexing device + +option BOOT_CONFIG # add support for boot -c diff --git a/sys/arch/sgi/conf/files.sgi b/sys/arch/sgi/conf/files.sgi index 83953010ed9..a13ff36f3c7 100644 --- a/sys/arch/sgi/conf/files.sgi +++ b/sys/arch/sgi/conf/files.sgi @@ -1,4 +1,4 @@ -# $OpenBSD: files.sgi,v 1.46 2011/11/15 22:27:53 deraadt Exp $ +# $OpenBSD: files.sgi,v 1.47 2012/03/28 20:44:23 miod Exp $ # # maxpartitions must be first item in files.${ARCH} # @@ -14,6 +14,8 @@ file arch/sgi/sgi/bus_dma.c file arch/sgi/sgi/conf.c file arch/sgi/sgi/disksubr.c disk file arch/sgi/sgi/lock_machdep.c multiprocessor +file arch/sgi/sgi/ip22_machdep.c tgt_indigo | tgt_indigo2 | + tgt_indy file arch/sgi/sgi/ip27_machdep.c tgt_origin file arch/sgi/sgi/ip30_machdep.c tgt_octane file arch/sgi/sgi/ip30_nmi.S tgt_octane & ddb @@ -56,6 +58,21 @@ device clock attach clock at mainbus # +# IP20/22/24 specific devices +# +define giobus {} +device imc: giobus, eisabus +attach imc at mainbus +file arch/sgi/localbus/imc.c imc + +device int +attach int at mainbus +file arch/sgi/localbus/int.c int + +include "arch/sgi/gio/files.gio" +include "arch/sgi/hpc/files.hpc" + +# # O2 MACE localbus autoconfiguration devices # define macebus {[base = -1]} @@ -87,6 +104,13 @@ major {cd = 3} include "dev/i2o/files.i2o" # +# EISA Bus support +# + +include "dev/eisa/files.eisa" +file arch/sgi/sgi/eisa_machdep.c eisa + +# # PCI Bus support # @@ -132,9 +156,9 @@ file arch/sgi/dev/iockbc.c iockbc | # DS1687 Time-Of-Day calendar device device dsrtc -attach dsrtc at macebus with dsrtc_macebus attach dsrtc at ioc with dsrtc_ioc attach dsrtc at iof with dsrtc_iof +attach dsrtc at macebus with dsrtc_macebus file arch/sgi/dev/dsrtc.c dsrtc # GBE framebuffer @@ -207,4 +231,3 @@ file arch/sgi/dev/owmem_subr.c owmac | owserial # IP35 SPD memory information attach spdmem at mainbus with spdmem_mainbus file arch/sgi/dev/spdmem_mainbus.c spdmem_mainbus - |