summaryrefslogtreecommitdiff
path: root/sys/arch/sgi/pci
AgeCommit message (Collapse)Author
2009-11-18Add glue to attach iockbc(4) to iof(4) as well. Tested by deraadt@Miod Vallat
2009-11-11Let ioc(4) pass the information whether it is an onboard device or not, to itsMiod Vallat
subdevices; use this on iockbc to only perform the fuel workaround on the onboard ioc.
2009-11-11Perform a bit more kbc initialization, instead of relying upon the prom toMiod Vallat
do this for us; PS/2 ports on CADduo boards attach keyboard and mouse now. ok jsing@
2009-11-11It turns out PCI IOC3 card which embed both the Ethernet controller and theMiod Vallat
superio chip interrupt on two different pins (yet do not advertize themselves as a multi-function device, of course). So, on one hand, this makes the ioc attachment code simpler, because it simply needs to map interrupt pins A and B, and another hand, this moves all the interrupt knowledge to the PCI bridge driver, since routing of pin B differs whether the device is the onboard IOC3 chip (and able to use any of the 8 bridge interrupt sources...) or on a PCI board (with pin mapping sane, since controlled by the bridge). This makes superio interrupts on CADduo boards work. Tested to cause no regressions on Origin 200, Octane and Fuel.
2009-11-10Add iockbc(4), a driver for the PS/2 keyboard and mouse interface found onJoel Sing
ioc(4) devices. Joint work with miod@. Committed from the glass console on an SGI Fuel.
2009-11-09Only invoke the L1 code if IP35.Miod Vallat
2009-11-08Add code to send L1 commands and parse command results; use it to add a wayMiod Vallat
for IP35 systems with IOC3 onboard Ethernet to get their Ethernet address since it's no longer stored as an owmac(4) device on the IOC3 device itself.
2009-11-08Figure out the size of the SSRAM used as internal memory by the chip onMiod Vallat
attach, print it, and decide how many RX descriptors to use accordingly.
2009-11-08Do not risk touching nonexisting registers on MENET boards; untested due toMiod Vallat
lack of such hardware.
2009-11-07In case an ioc(4) device has lost its NIC component, do not recognize itMiod Vallat
as the onboard ioc device, if one has already been found on this node. Also, on Origin 300, do not attempt to attach the PS/2 controller on the onboard ioc(4) since PS/2 ports are not wired.
2009-11-07Change sgi system identification from a single system type list, to a smallerMiod Vallat
system type list (which really is the system family) and a subsystem type. No functional change yet.
2009-11-03A few cleanups and also reflect duplex state in mcr in addition to tcsr.Miod Vallat
2009-11-02When the iec(4) Ethernet address is unkown, pass ff:ff:ff:ff:ff:ff instead ofMiod Vallat
00:00:00:00:00:00, in order to trigger the code which will assign a `feel bad' random address.
2009-11-01Driver for the sgi IOC3 onboard Ethernet interface. Tested on Octane only soMiod Vallat
far, and needs help to figure out its Ethernet address on IP35 systems. Heavily derived from mec(4) written by Izumi Tsutsui and Christopher Sekiya, although it required many changes to fit the IOC3 chip.
2009-10-26Add support for the Octane power button to power(4). Took me a while toMiod Vallat
figure out how the interrupt was routed from xbridge to xheart... (it bypasses the regular `have xbridge send a xio interrupt packet' mechanism)
2009-10-26Better crime/mace interrupt handling; interrupt information is no longerMiod Vallat
specified in the kernel configuration file, but is provided by macebus(4) as part of the child device attachment args, and provide both crime and mace interrupt bitmasks; this allows us to only really enable interrupt sources we care about, and to avoid invoking interrupt handler we don't need to for the few mace interrupts multiplexed at the crime level.
2009-10-22Implement bus_space_vaddr() for macepcibr.Miod Vallat
2009-10-22Make macebus_intr_disestablish() signature sane, and update its caller.Miod Vallat
Still unimplemented for now.
2009-10-14On IP30 and IP35 systems, try harder to figure out exactly what model we areMiod Vallat
running on, and report this both as the hw.product sysctl and in dmesg. Fuel and Origin 350 are no longer reported as being Origin 300 systems!
2009-10-13Make iof(4) pass its bus speed to children, this in turn allows com(4) toMiod Vallat
pick the right clock if the PCI bus the I/O board is on degrades to 33MHz.
2009-10-07Attach DS1742 style dsrtc to iof (IOC4) too.Miod Vallat
2009-10-07Missing semicolon in dmesgMiod Vallat
2009-08-22Constify the what/name parameter of pci_intr_establish().Michael Knudsen
Tested by myself, sthen, oga, kettenis, and jasper. Input from sthen and jasper. ok kettenis (Manpage follows shortly.)
2009-08-18Blind partial support for IOC4 chip, found on IO8 and IO9 base I/O boards onMiod Vallat
Origin 350 and Tezro systems. While this chip provides serial ports, an ATAPI interface and a PS/2 keyboard and mouse interface, this code currently only attempts to support the serial ports.
2009-08-18Replace a few hardcoded numbers from the interrupt register with properMiod Vallat
commented symbolic constants.
2009-08-18On dual interrupt IOC3 designs, disestablish the ethernet interrupt if noMiod Vallat
ethernet driver attaches; prevents interrupt storms on Octane caused by the way ARCS initializes the chip, when not booting from the network.
2009-08-09typo; bradMiod Vallat
2009-08-09Clear the upper part of 64 bit memory BARs, for they show up as 0xffffffffMiod Vallat
otherwise. Found the hard way by jasper@, playing with a bge card.
2009-07-26Rework ioc children attachment: instead of having ioc build a semi-bogusMiod Vallat
bus_space_handle_t, pass them ioc's own bus_space_handle and bus_space_tag, and have the children use bus_space_subregion() on it.
2009-07-26Don't forget to bus_space_unmap(), even if it's a no-op, in rbus_space_unmap().Miod Vallat
2009-07-23When computing the total resources required by devices behind a ppb, takeMiod Vallat
PCI ROM into account, if any.
2009-07-22Get rid of now unused extent_malloc_ok variable.Miod Vallat
2009-07-22Get rid of bus_space_tag_t now unused bus_extent and bus_reverse fields.Miod Vallat
2009-07-22Overhaul resource handling and mapping in macepcibr(4):Miod Vallat
- do not use a stinking extent to track bus_space_map allocations, but directly map in XKPHYS instead. What are 64 bit address spaces good for if we still need to use TLB for that? - provide proper resource management extents to the MI pci code, so that, in turn, the cardbus code can reuse them instead of providing their own. - use the whole 4GB address space window for PCI I/O resources, just because we can. - make sure no device can get assigned address zero in I/O space, because this address triggers a PCI error.
2009-07-21PCI-Cardbus bridge support for both O2 (macepcibr) and Octane/Origin (xbridge)Miod Vallat
class systems. Tested on O2 and Origin 200 with wi@pcmcia and xl@cardbus, using a Ricoh 5C475-based cbb(4) board. acx@cardbus doesn't work reliably yet, so your mileage may vary until more bugs are fixed. Thanks to matthieu@ for lending me some cardbus devices for testing.
2009-07-19Simplify code that sanitizes pci resources on the O2's mace PCI bridge.Mark Kettenis
The firmware messes up I/O BARs, so whack those back to 0, such that the MI PCI code initializes on an as-needed basis. ok miod@
2009-07-17Update bus_dma to the better codebase found on almost all other platforms,Miod Vallat
where the common part to all bus_dmamap_load*() functions is implemented in in an internal load_buffer routine. This allows the xbridge-specific dma code to only provide this function, instead of three; and this also brings us a working bus_dmamap_load_uio() on all supported sgi machines, which in turns make crpyto(4) devices really work. Tested with hifn(4).
2009-07-16Program PPB_REG_PREFLIM_HI32, not PPB_REG_PREFBASE_HI32 a second time. Oops.Miod Vallat
2009-07-16Make the PCI-PCI bridge initialization code bus-independent, relying on aMiod Vallat
per-pci_chipset_t function to perform actual resource allocation. Add the necessary bits to macepcibr(4), and enable ppb(4) on O2 kernels now. Joint effort with kettenis@
2009-07-16Cheat in pci_conf_read() and force the REXTVALID bit in the O2 onboard ahc(4)Miod Vallat
configuration register; this allows the driver to select ultra speed, which this particular hardware supports. From Linux, ok kettenis@
2009-07-13Extend xbridge to support shared interrupt handlers, and perform PCI-PCIMiod Vallat
bridge initialization if necessary; enable ppb on IP27 and IP30 kernels. With feedback from kettenis@; macepcibr to gain the same functionality soon.
2009-07-01The widget mapping code has been written back when I was only working onMiod Vallat
Octane support. The Octane being a single-node system, address space is ludicrous enough to allow the whole address space of every widget to be directly accessible in whole, using the address bits reserved to nasid. However, on IP27 and IP35, things do not work this way - while we still have the low 16MB address space of each widget available (the so-called ``short window''), access to other parts of the wiget address space is done through translation slots (IOTTE) at the Hub I/O space level, on a per-node basis. Given the imminent release lock, give up completely on ``large'' mappings of widgets, and restrict ourselves to short window operation, all the time (thus reinforcing the use of devio registers to map pci resources on xbridge). A proper interface to request mappings of specific widget areas, either directly on Octane, or through IOTTE if available on Origin, will appear post-release. No functional change (except from silently repairing Octane support which the previous xbridge commit silently broke).
2009-06-21Remove the ioc interrupt probe code, the heuristic is correct; origin 300Miod Vallat
is still unhappy due to ``interferences'' between the L1 console and the brick's serial ports, unfortunately.
2009-05-27Yet another attempt at a more reliable detection of the second interruptMiod Vallat
used by onboard IOC chips, by forcing the IOC to trigger this interrupt, and some help from the PCI bridge driver to report which interrupt has fired through a fake PCI configuration register. This works nicely on IP27 and IP35, but on IP30 the interrupt doesn't happen, for some reason; so keep the existing heuristic in case the above trick did not give us a valid interrupt number. In case we got an interrupt, this will also detect IOC configurations where there is actually one interrupt, should such configurations exist. <rant style="beck"> I probably deserve to rot in hell for this abomination, but I won't mind as long as the IOC designers who came with the bright ``let's use more than one interrupt and defecate on the pci spec'' ideas are there, too. </rant>
2009-05-22According to pics on ebay, CADDuo boards indeed have Ethernet connectors.Miod Vallat
2009-05-08Attach children with config_found_sm() instead of directly invokingMiod Vallat
config_search(), so that disabled or unconfigured child device appear in dmesg as ``not configured''.
2009-05-03Pass 0 as base offset, not -1, for child devices which ignore the value.Miod Vallat
2009-05-02Let ioc(4) decide which child devices to attach depending on its identificationMiod Vallat
information, instead of trying to attach whatever is defined in the kernel configuration file.
2009-04-25More IOC3 flavour partnumbers. And apparently there are some flavours whichMiod Vallat
have a shared ethernet/superio interrupt source, so deal with this.
2009-04-25Extend PCI mmio address space by using a bigger window that requires 64-bitMark Kettenis
adressing (no problem since we only support 64-bit mode). ok miod@, jsing@