Add support for APIC_IO to pci IRQ configuration.

The support for APIC_IO was lost in the new set of pci modules.  This patch
restores the ability to build SMP/APIC_IO kernels.
This commit is contained in:
Steve Passe 1997-05-27 04:09:01 +00:00
parent b866529aa9
commit ce595b36d5
2 changed files with 38 additions and 2 deletions

View File

@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id$
* $Id: pci.c,v 1.72 1997/05/26 15:08:34 se Exp $
*
*/
@ -330,6 +330,24 @@ pci_readcfg(pcicfgregs *probe)
cfg->lattimer = pci_cfgread(cfg, PCIR_LATTIMER, 1);
cfg->intpin = pci_cfgread(cfg, PCIR_INTPIN, 1);
cfg->intline = pci_cfgread(cfg, PCIR_INTLINE, 1);
#ifdef APIC_IO
if (cfg->intline && (cfg->intline != 0xff)) {
u_char airq = 0xff;
u_char rirq = 0xff;
airq = get_pci_apic_irq(cfg->bus,
cfg->slot, cfg->intpin);
if (airq != 0xff) { /* APIC IRQ exists */
rirq = cfg->intline; /* 're-directed' IRQ */
cfg->intline = airq; /* use APIC IRQ */
pci_cfgwrite(cfg, PCIR_INTLINE, airq, 1);
undirect_pci_irq(rirq);
}
}
#endif /* APIC_IO */
cfg->mingnt = pci_cfgread(cfg, PCIR_MINGNT, 1);
cfg->maxlat = pci_cfgread(cfg, PCIR_MAXLAT, 1);

View File

@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id$
* $Id: pci.c,v 1.72 1997/05/26 15:08:34 se Exp $
*
*/
@ -330,6 +330,24 @@ pci_readcfg(pcicfgregs *probe)
cfg->lattimer = pci_cfgread(cfg, PCIR_LATTIMER, 1);
cfg->intpin = pci_cfgread(cfg, PCIR_INTPIN, 1);
cfg->intline = pci_cfgread(cfg, PCIR_INTLINE, 1);
#ifdef APIC_IO
if (cfg->intline && (cfg->intline != 0xff)) {
u_char airq = 0xff;
u_char rirq = 0xff;
airq = get_pci_apic_irq(cfg->bus,
cfg->slot, cfg->intpin);
if (airq != 0xff) { /* APIC IRQ exists */
rirq = cfg->intline; /* 're-directed' IRQ */
cfg->intline = airq; /* use APIC IRQ */
pci_cfgwrite(cfg, PCIR_INTLINE, airq, 1);
undirect_pci_irq(rirq);
}
}
#endif /* APIC_IO */
cfg->mingnt = pci_cfgread(cfg, PCIR_MINGNT, 1);
cfg->maxlat = pci_cfgread(cfg, PCIR_MAXLAT, 1);