Fix a bug introduced as part of r287726; use the right device_t for
determining the softc of the bridge in psycho_route_interrupt(). [1] While at it, update the corresponding comment that the code in question is also necessary for U30s in addition to E450s (a fact that has been known for ages). PR: 218478 Submitted by: Yoshihiko Iwama
This commit is contained in:
parent
8d88056d06
commit
16d43a0ed2
@ -944,14 +944,14 @@ psycho_route_interrupt(device_t bridge, device_t dev, int pin)
|
||||
if (pin > 4)
|
||||
return (pin);
|
||||
/*
|
||||
* Guess the INO; we always assume that this is a non-OBIO
|
||||
* device, and that pin is a "real" intpin number. Determine
|
||||
* the mapping register to be used by the slot number.
|
||||
* We only need to do this on E450s, it seems; here, the slot numbers
|
||||
* for bus A are one-based, while those for bus B seemingly have an
|
||||
* offset of 2 (hence the factor of 3 below).
|
||||
* Guess the INO; we always assume that this is a non-OBIO device,
|
||||
* and that pin is a "real" intpin number. Determine the mapping
|
||||
* register to be used by the slot number.
|
||||
* We only need to do this on E450s and U30s, though; here, the
|
||||
* slot numbers for bus A are one-based, while those for bus B
|
||||
* seemingly have an offset of 2 (hence the factor of 3 below).
|
||||
*/
|
||||
sc = device_get_softc(dev);
|
||||
sc = device_get_softc(bridge);
|
||||
intrmap = PSR_PCIA0_INT_MAP +
|
||||
8 * (pci_get_slot(dev) - 1 + 3 * sc->sc_half);
|
||||
mintr = INTINO(PSYCHO_READ8(sc, intrmap)) + pin - 1;
|
||||
|
Loading…
Reference in New Issue
Block a user