[PATCH] fix via586 irq routing for pirq 5
Fix interrupt routing for via 586 bridges. pirq can be 5 which needs to be mapped to INTD. But currently the access functions can handle only pirq 1-4. this is similar to the other via chipsets where pirq 4 and 5 are both mapped to INTD. Fixes bugzilla #7490 Cc: Daniel Paschka <monkey20181@gmx.net> Cc: Adrian Bunk <bunk@susta.de> Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
8b126b7753
Коммит
f3ac84324f
|
@ -255,13 +255,13 @@ static int pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, i
|
||||||
*/
|
*/
|
||||||
static int pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
|
static int pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
|
||||||
{
|
{
|
||||||
static const unsigned int pirqmap[4] = { 3, 2, 5, 1 };
|
static const unsigned int pirqmap[5] = { 3, 2, 5, 1, 1 };
|
||||||
return read_config_nybble(router, 0x55, pirqmap[pirq-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 int pirq_via586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
|
||||||
{
|
{
|
||||||
static const unsigned int pirqmap[4] = { 3, 2, 5, 1 };
|
static const unsigned int pirqmap[5] = { 3, 2, 5, 1, 1 };
|
||||||
write_config_nybble(router, 0x55, pirqmap[pirq-1], irq);
|
write_config_nybble(router, 0x55, pirqmap[pirq-1], irq);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче