summaryrefslogtreecommitdiff
path: root/sys/arch/sgi/hpc
AgeCommit message (Collapse)Author
2013-05-18fix cut'n'paste abuse in "can't happen" error messageMiod Vallat
2013-04-21Unify the zs tty driver.Sebastian Reitenbach
Most of the hard work by mpi@, who provided the initial diff. Fixes for sparc from myself. Tested on sgi and sparc myself. Compiles and detects zstty on my powerbook, compile tested on sparc64 by me. Real testing with zs device on sparc64 by miod@ who also gave a lot of help and feedback. ok miod@, mpi@
2012-10-03Don't include <mips64/archtype.h> unless you really need it.Miod Vallat
2012-09-29Handle the coprocessor 0 cause and status registers as a 64 bit value now,Miod Vallat
as some odd mips designs need moro than 32 bits in there. This causes a lot of mechanical changes everywhere getsr() is used.
2012-09-29Proide a mips_sync() macro to wrap asm("sync"), and replace gazillions ofMiod Vallat
such statements with it.
2012-05-28The link state code does not work correctly on Indigo (IP20) and E++ GIO boardsMiod Vallat
and will report the link being down too aggressively. Better to always report the link as up - these systems and boards are single media only so it won't harm much. Unbreaks dhcp in the installer on these interfaces; found the hard way by sebastia@
2012-05-27Proper support for the so-called `fast mode' of the Indigo2 ECC memoryMiod Vallat
controller. In this mode, access to physical memory are not allowed to bypass the cache, and this allows the memory subsystem to run faster. Of course, some device drivers will require uncached memory access (e.g. for proper HPC DMA descriptor operation). New ip22-specific functions to switch between `fast mode' and `slow mode' are introduced. hpc(4) now provides read and write routines to fetch a dma descriptor from uncached memory into a local copy, and update it from said modified copy. On systems without the ECC MC, these will do nothing and operation will continue to access the uncached memory directly. On systems with the ECC MC, they will perform a copy, and the writeback will be done in slow mode. bus_dmamem_map() requests for DMA memory with BUS_DMA_COHERENT set in flags, which would return uncached memory, will now always fail on systems with the ECC memory controller. Drivers which really need uncached memory, and are aware of this particular setup, will now pass BUS_DMA_COHERENT | BUS_DMA_BUS1, which will let the request succeed. sq(4) will use all of the above to work mostly unmodified on ECC MC systems in fast mode. Finally, fast mode is enabled after autoconf. Tested on IP22 and IP28.
2012-05-22Make the multicast filter routine conform to the Party's standards. AdaptedMiod Vallat
from a (non-compiling) diff from Brad.
2012-05-17Better probes for sq and wdsc in gio-masqueraded-as-hpc expansion boards.Miod Vallat
Previous change was a tad too optimistic. This repairs E++ and GIO SCSI board operation.
2012-05-12It turns out that, when the IRIX header files mention CTR/DCD/DTR/RTS wiringMiod Vallat
is inverted on Indigo, this just means that Indigo does not use the same values as the later models. It does not mean that the Indigo is using wrong values, which is how I first read this. In reality, Indigo systems use the expected values of these signals being active low, while later designs use active high signals. So yes, some systems have inverted values - but the ones which need compensating are not those I thought. Change the logic to do TRT, but keep the device flags check, to be able to force the other behaviour if the kernel guesses wrongly. Tested on Indigo, Indy and Indigo 2.
2012-05-02sq needs ifmedia attribute now, repairs RAMDISK_IP22Miod Vallat
2012-04-30Add ifmedia support to sq(4).Miod Vallat
2012-04-30Pass the base address of the hpc to child devices, to let them be able toMiod Vallat
figure out whether they attach to the onboard hpc or to an expansion slot (or the Challenge S IO+ mezzanine). No functional change (yet)
2012-04-29Recognize 85230 chips, and take advantage of their FIFOs to reduce theMiod Vallat
amount of TX empty interrupts.
2012-04-29I am not sure what the mess with the wiring of carrier lines on Indigo resolvesMiod Vallat
to, so make this controllable with device flags, and default to non-bogus wiring.
2012-04-28Be sure to initialize the `state' member of the softc when attaching theMiod Vallat
console keyboard, otherwise led update commands will never get transmitted. Noticed by sebastia@
2012-04-27Fix the `all keys up' event handling logic to only apply to it, and not toMiod Vallat
regular `one key is up' events. Makes the shift, alt, ctrl, etc keys behave as expected after the next keystroke.
2012-04-18One more routine needed to cope for CTS and DCD being inverted on IP20.Miod Vallat
2012-04-17Drivers for the SGI Indigo serial keyboard and mouse (not PS/2 devices).Miod Vallat
From NetBSD.
2012-04-17panel@hpc: driver for the power button on IP22/IP24, and the volume buttonsMiod Vallat
where applicable (i.e. Indy only).
2012-04-17Infrastructure to allow an interrupt handler to request its interrupt to beMiod Vallat
temporarily disabled (and then reenabled later). Will be necessary for the next driver commit.
2012-04-16Drivers for the Indy and Indigo 2 PS/2 keyboard ports, and the ``Newport''Miod Vallat
(NG1, XL, XGE) frame buffer. Adapted from NetBSD; newport extended to support underline and fonts wider than 8 pixels, such as the default 12x22 Gallant font. Framebuffer depth computation seems to be wrong on Indy models, to be investigated later (but doesn't prevent text console from working).
2012-04-15Overhaul hpc child device attachments:Miod Vallat
- break each hpc1/hpc3 child lists into two lists, one for the onboard devices, and one for the expansion devices. - do not try to attach Indy-only devices (pckbc, haltwo) on Challenge S. - do not duplicate entries for expansion devices, only with different interrupt numbers depending on the system, but instead use a single entry with -1 as the interrupt level, and have the attachment glue figure out which interrupt vector applies, depending upon the system. - on expansion hpc1 (or 1.5) boards, do a minimal bus check to decide whether or not the hardware we are attaching is there, since we currently don't know how to tell E++ (sq only) and GIO32 SCSI (wdsc only) boards apart. This hopefully will get rid of misleading `device not configured' messages.
2012-04-15Provide an hpc_intr_establish() function for hpc subdevices, so they don'tMiod Vallat
need to have knowledge of the underlying interrupt controller. No functional change.
2012-04-15Tell Indy and Challenge S apart.Miod Vallat
2012-04-08Be more careful when reprogramming the sq(4) DMA and PIO timing parameters;Miod Vallat
the current logic can be traced back to DaveM's intership at SGI in 1996, and are adequate for the hardware he had access to. However, ``recent'' Indigo2 and Indy systems are fit with a faster (33MHz instead of 25MHz) GIO64 bus, which need different timing parameters, and guess what? The PROM knows the right values to set. Since programming these timing registers was apparently only necessary for the Challenge S second interface: 1) only reprogram those registers on an IP24 (Indy, Challenge S) system. 2) pick proper values depending upon the actual GIO64 bus speed. Item #1 fixes Ethernet operation on Indigo2 (at least my teal R4400SC). Item #2 fixes Ethernet operation on my R5000SC Indy. For the record, programming unoptimal value caused `TX DMA underrun' errors (documented as `can't happen' in the HPC3 documentation, oh the irony), which could be reproduced reliably with ypbind(8).
2012-04-06Rework IP22 RTC year base computation, again. It turns out that differentMiod Vallat
Indy PROM versions use different year bases - after all, using 1970 instead of the previously used value of 1940 smelled like a bug, and probably was, so this eventually got fixed in later PROM versions. Instead of hardcoding a year base depending upon the system, we will now ask ARCBios for its current year, and compare it to what can be read from the RTC registers to figure out what year base is in use by the PROM.
2012-04-05In the neverending tradition of never making things simple, SGI used 1940 asMiod Vallat
the timebase on Indigo 2, but 1970 on Indy (verified with the `date' command at the PROM prompt and checking what values ended up in the DS1286). Indy will no longer be 30 years in the future from an IRIX point of view.
2012-04-05Lower ZS_DELAY() back to what it was, but issue a bus_space_barrier() afterMiod Vallat
every register write. Hinted by IRIX' <sys/z8530.h>. While there, flip the CTS, DCD, RTS and DTR bits in registers #0 and #5. Aforementioned header says they are inverted due to a hardware bug. Tested on IP20, IP22 and IP24.
2012-04-05Add an explicit bus_space_barrier() function for revision 3 hpc, which has aMiod Vallat
PIO write buffer.
2012-04-05DMA descriptors only need to be aligned on 8-byte boundaries, and the structMiod Vallat
layout is enough to enforce this. Don't request DMA page boundary alignment when allocating them.
2012-04-03Default DMA-reachable address constraints to the whole address space, andMiod Vallat
narrow these in the various ipXX_machdep.c. On IP22-like systems, narrow them to 28 bit physical addresses, but unpessimize this by extending this to 32 bit after autoconf, if no 28-bit limited hpc(4) device has been found. Since physical memory on these systems start at 128MB, this means that Indigo systems with more than 128MB memory will behave correctly (and so will Indy systems with E++ boards and more than 128MB memory).
2012-04-01Fix merge botch when porting this from NetBSD; we don't need to disable theMiod Vallat
TX interrupts since the TX interrupt handler now correctly acknowledges it.
2012-04-01Increase delay between chip register accesses. Fixes the console freeze duringMiod Vallat
install seen on IP22 and IP24.
2012-03-31softintr_establish() takes IPL_xxx, not SI_xxx (harmless here since they turnedMiod Vallat
out to be the same value).
2012-03-28Work in progress support for the SGI Indigo, Indigo 2 and Indy systemsMiod Vallat
(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).