[PATCH] VIA 82C586B IRQ routing fix
According to the VIA 82C586B datasheet (still available from http://gkernel.sourceforge.net/specs/via/586b.pdf.bz2) this chip need a special PIRQ mapping. Signed-off-by: Karsten Keil <kkeil@suse.de> Signed-off-by: Aleksey Gorelov <aleksey_gorelov@phoenix.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
c434b7a6ae
commit
80bb82afea
|
@ -226,6 +226,24 @@ static int pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, i
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The VIA pirq rules are nibble-based, like ALI,
|
||||||
|
* but without the ugly irq number munging.
|
||||||
|
* However, for 82C586, nibble map is different .
|
||||||
|
*/
|
||||||
|
static int pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
|
||||||
|
{
|
||||||
|
static unsigned int pirqmap[4] = { 3, 2, 5, 1 };
|
||||||
|
return read_config_nybble(router, 0x55, pirqmap[pirq-1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int pirq_via586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
|
||||||
|
{
|
||||||
|
static unsigned int pirqmap[4] = { 3, 2, 5, 1 };
|
||||||
|
write_config_nybble(router, 0x55, pirqmap[pirq-1], irq);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ITE 8330G pirq rules are nibble-based
|
* ITE 8330G pirq rules are nibble-based
|
||||||
* FIXME: pirqmap may be { 1, 0, 3, 2 },
|
* FIXME: pirqmap may be { 1, 0, 3, 2 },
|
||||||
|
@ -512,6 +530,10 @@ static __init int via_router_probe(struct irq_router *r, struct pci_dev *router,
|
||||||
switch(device)
|
switch(device)
|
||||||
{
|
{
|
||||||
case PCI_DEVICE_ID_VIA_82C586_0:
|
case PCI_DEVICE_ID_VIA_82C586_0:
|
||||||
|
r->name = "VIA";
|
||||||
|
r->get = pirq_via586_get;
|
||||||
|
r->set = pirq_via586_set;
|
||||||
|
return 1;
|
||||||
case PCI_DEVICE_ID_VIA_82C596:
|
case PCI_DEVICE_ID_VIA_82C596:
|
||||||
case PCI_DEVICE_ID_VIA_82C686:
|
case PCI_DEVICE_ID_VIA_82C686:
|
||||||
case PCI_DEVICE_ID_VIA_8231:
|
case PCI_DEVICE_ID_VIA_8231:
|
||||||
|
|
Loading…
Reference in a new issue