>-----Original Message-----
>From: Karsten Keil [mailto:[email protected]]
>Sent: Monday, May 23, 2005 5:59 AM
>To: [email protected]
>Cc: Andrew Morton; Aleksey Gorelov
>Subject: [PATCH] bug in VIA PCI IRQ routing
>
>Hi,
>
>during certification of some systems with VIA 82C586_0 chipset
>we found that the PCI IRQ routing of PIRQD line goes wrong and
>the system
>will get stuck because of unacknowledged IRQs.
>It seems that the special case for PIRQD (pirq 4) is not needed for all
>VIA versions. With this patch, the IRQ routing on these systems works
>again (It did work with older 2.4 kernel versions prior the
>PIRQD change)
Does anybody have 82C586 datasheet to verify 0x57 register ?
For all I can say, both 82C686 & 8231 DO need special handling for
PIRQD,
since PIRQD routing is setup via bits 7-4 in 0x57 (see datasheets from
VIA
website). It seems like 82C586 might be different...
Aleks.
>
>diff -urN linux-2.6.12-rc4-git7.org/arch/i386/pci/irq.c
>linux-2.6.12-rc4-git7/arch/i386/pci/irq.c
>--- linux-2.6.12-rc4-git7.org/arch/i386/pci/irq.c
>2005-05-23 13:35:48.562759583 +0200
>+++ linux-2.6.12-rc4-git7/arch/i386/pci/irq.c 2005-05-23
>13:41:47.349473060 +0200
>@@ -26,6 +26,7 @@
>
> static int broken_hp_bios_irq9;
> static int acer_tm360_irqrouting;
>+static int via_pirq_patch_value = 5;
>
> static struct irq_routing_table *pirq_table;
>
>@@ -217,12 +218,12 @@
> */
> static int pirq_via_get(struct pci_dev *router, struct
>pci_dev *dev, int pirq)
> {
>- return read_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq);
>+ return read_config_nybble(router, 0x55, pirq == 4 ?
>via_pirq_patch_value : pirq);
> }
>
> static int pirq_via_set(struct pci_dev *router, struct
>pci_dev *dev, int pirq, int irq)
> {
>- write_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq, irq);
>+ write_config_nybble(router, 0x55, pirq == 4 ?
>via_pirq_patch_value : pirq, irq);
> return 1;
> }
>
>@@ -512,6 +513,7 @@
> switch(device)
> {
> case PCI_DEVICE_ID_VIA_82C586_0:
>+ via_pirq_patch_value = 4;
> case PCI_DEVICE_ID_VIA_82C596:
> case PCI_DEVICE_ID_VIA_82C686:
> case PCI_DEVICE_ID_VIA_8231:
>
>--
>Karsten Keil
>SuSE Labs
>ISDN development
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]