Patric Gualat tells me that I can't do basic bit math. He's right.

When either bit 3 or 4 is set, we need to *SET* bit 5, not clear it in
the card control register.  This makes TI PCI-1030, 1130 and 1131 not
work anymore without this fix.

MFC: soon
This commit is contained in:
Warner Losh 2001-09-05 22:26:14 +00:00
parent 0fa2bf5423
commit 98435cf714

View File

@ -576,9 +576,9 @@ pcic_pci_ti113x_func(struct pcic_slot *sp, enum pcic_intr_way way)
else else
cardcntl &= ~TI113X_CARDCNTL_PCI_IREQ; cardcntl &= ~TI113X_CARDCNTL_PCI_IREQ;
if (cardcntl & (TI113X_CARDCNTL_PCI_IREQ | TI113X_CARDCNTL_PCI_CSC)) if (cardcntl & (TI113X_CARDCNTL_PCI_IREQ | TI113X_CARDCNTL_PCI_CSC))
cardcntl &= ~TI113X_CARDCNTL_PCI_IRQ_ENA;
else
cardcntl |= TI113X_CARDCNTL_PCI_IRQ_ENA; cardcntl |= TI113X_CARDCNTL_PCI_IRQ_ENA;
else
cardcntl &= ~TI113X_CARDCNTL_PCI_IRQ_ENA;
pci_write_config(dev, TI113X_PCI_CARD_CONTROL, cardcntl, 1); pci_write_config(dev, TI113X_PCI_CARD_CONTROL, cardcntl, 1);
return (pcic_pci_gen_func(sp, way)); return (pcic_pci_gen_func(sp, way));
@ -609,9 +609,9 @@ pcic_pci_ti113x_csc(struct pcic_slot *sp, enum pcic_intr_way way)
else else
cardcntl &= ~TI113X_CARDCNTL_PCI_CSC; cardcntl &= ~TI113X_CARDCNTL_PCI_CSC;
if (cardcntl & (TI113X_CARDCNTL_PCI_IREQ | TI113X_CARDCNTL_PCI_CSC)) if (cardcntl & (TI113X_CARDCNTL_PCI_IREQ | TI113X_CARDCNTL_PCI_CSC))
cardcntl &= ~TI113X_CARDCNTL_PCI_IRQ_ENA;
else
cardcntl |= TI113X_CARDCNTL_PCI_IRQ_ENA; cardcntl |= TI113X_CARDCNTL_PCI_IRQ_ENA;
else
cardcntl &= ~TI113X_CARDCNTL_PCI_IRQ_ENA;
pci_write_config(dev, TI113X_PCI_CARD_CONTROL, cardcntl, 1); pci_write_config(dev, TI113X_PCI_CARD_CONTROL, cardcntl, 1);
return (0); return (0);