lkml.org 
[lkml]   [2005]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] bug in VIA PCI IRQ routing
Aleksey Gorelov wrote:
>>-----Original Message-----
>>From: Karsten Keil [mailto:kkeil@suse.de]
>>Sent: Monday, May 23, 2005 5:59 AM
>>To: linux-kernel@vger.kernel.org
>>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.
>

This is from 82C586B datasheet (the 82C586A datasheet shows the same
register layout):

Note: The definitions of the fields of the following three
registers were incorrectly documented in some earlier
revisions of this document. The silicon has not changed
and the following definition should be used for all silicon
revisions:

Offset 55 - PNP IRQ Routing 1 ....................................... RW
These bits control routing for external IRQ inputs MIRQ0-1.
7-4 PIRQD# Routing (see PnP IRQ routing table)
3-0 MIRQ0 Routing (see PnP IRQ routing table)

Offset 56 - PNP IRQ Routing 2 ....................................... RW
7-4 PIRQA# Routing (see PnP IRQ routing table)
3-0 PIRQB# Routing (see PnP IRQ routing table)

Offset 57 - PNP IRQ Routing 3 ....................................... RW
7-4 PIRQC# Routing (see PnP IRQ routing table)
3-0 MIRQ1 Routing (see PnP IRQ routing table)

Note: these bits must be set to 0 if Rx48[4]=1 and
Rx59[1]=1 (input IRQ8# on MIRQ1 pin 106)

PnP IRQ Routing Table
0000 Disabled................................................. default
0001 IRQ1
0010 Reserved
0011 IRQ3
0100 IRQ4
0101 IRQ5
0110 IRQ6
0111 IRQ7
1000 Reserved
1001 IRQ9
1010 IRQ10
1011 IRQ11
1100 IRQ12
1101 Reserved
1110 IRQ14
1111 IRQ15


>
>>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 majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>


--
Ondrej Zary
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-05-23 20:28    [W:0.986 / U:0.100 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site