All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <marcelo.tosatti@cyclades.com>
To: "Salomon, Frank" <frank.salomon@wincor-nixdorf.com>
Cc: linux-net <linux-net@vger.kernel.org>,
	linux-kernel@vger.kernel.org, Don Fry <brazilnut@us.ibm.com>
Subject: Re: pci-irq VIA82C586 problem on IBM 4694-205 kernel version 2.4.29
Date: Wed, 18 May 2005 08:33:15 -0300	[thread overview]
Message-ID: <20050518113315.GC7793@logos.cnet> (raw)
In-Reply-To: <4289FF48.9070205@wincor-nixdorf.com>


Hi Frank,

On Tue, May 17, 2005 at 04:27:20PM +0200, Salomon, Frank wrote:
> Hi All,
> 
> With kernel version 2.4.18 I have no problem to run pcnet32.o on the IBM 
> 4694-205. Now I switch to kernel version 2.4.29. insmod crc32 : ok , 
> insmod mii : ok , insmod pcnet32 : ok.
> 
> But if I run ifconfig (ifup) the system fries. Can't toggle the numlock 
> led. I find out that the system generates permanently interrupts from 
> the pcnet32 chip after calling request_irq (irq=9).
> 
> lspci:
> 00:00.0 Host bridge: VIA Technologies, Inc. VT82C585VP [Apollo VP1/VPX] 
> (rev 25)
> 00:07.0 ISA bridge: VIA Technologies, Inc. VT82C586/A/B PCI-to-ISA 
> [Apollo VP] (rev 47)
> 00:07.1 IDE interface: VIA Technologies, Inc. VT82C586/B/686A/B PIPC Bus 
> Master IDE (rev 06)
> 00:07.2 USB Controller: VIA Technologies, Inc. USB (rev 02)
> 00:07.3 Non-VGA unclassified device: VIA Technologies, Inc. VT82C586B 
> ACPI (rev 10)
> 00:0a.0 VGA compatible controller: Cirrus Logic GD 5446
> 00:0b.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 
> [PCnet32 LANCE] (rev 43)
> 
> 
> A possible solution could be (only tested on IBM 4694-205 and I don't 
> have other systems with VIA Tech.):

Why the current get/set methods for via pirq do not work as expected? 
                                                                                                                                                                                   
/*
 * The VIA pirq rules are nibble-based, like ALI,
 * but without the ugly irq number munging.
 * However, PIRQD is in the upper instead of lower nibble.
 */
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);
}
                                                                                
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);
        return 1;
}

Only difference is that your change ignores the "pirq" value... Is that 
the problem?


> diff -u 2.4.29_orig/arch/i386/kernel/pci-irq.c 
> 2.4.29/arch/i386/kernel/pci-irq.c
> --- 2.4.29_orig/arch/i386/kernel/pci-irq.c      Wed Jan 19 15:09:25 2005
> +++ 2.4.29/arch/i386/kernel/pci-irq.c   Tue May 17 15:55:28 2005
> @@ -214,6 +214,17 @@
>         return 1;
>  }
> 
> +static int pirq_via_586_get(struct pci_dev *router, struct pci_dev 
> *dev, int pirq)
> +{
> +       return read_config_nybble(router, 0x55, pirq);
> +}
> +static int pirq_via_586_set(struct pci_dev *router, struct pci_dev 
> *dev, int pirq, int irq)
> +{
> +       write_config_nybble(router, 0x55, pirq, irq);
> +       return 1;
> +}
> +
> +
>  /*
>   * ITE 8330G pirq rules are nibble-based
>   * FIXME: pirqmap may be { 1, 0, 3, 2 },
> @@ -649,6 +660,10 @@
>         switch(device)
>         {
>                 case PCI_DEVICE_ID_VIA_82C586_0:
> +                       r->name = "VIA";
> +                       r->get = pirq_via_586_get;
> +                       r->set = pirq_via_586_set;
> +                       return 1;
>                 case PCI_DEVICE_ID_VIA_82C596:
>                 case PCI_DEVICE_ID_VIA_82C686:
>                 case PCI_DEVICE_ID_VIA_8231:

  reply	other threads:[~2005-05-18 16:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <428379AC.9080206@wincor-nixdorf.com>
     [not found] ` <20050512162803.GA15201@us.ibm.com>
     [not found]   ` <42847C64.5080405@wincor-nixdorf.com>
     [not found]     ` <20050513164654.GB30792@us.ibm.com>
2005-05-17 14:27       ` pci-irq VIA82C586 problem on IBM 4694-205 kernel version 2.4.29 Salomon, Frank
2005-05-18 11:33         ` Marcelo Tosatti [this message]
2005-05-19  7:44           ` Salomon, Frank
     [not found]             ` <20050525115910.GA15873@logos.cnet>
2005-05-31 13:54               ` Salomon, Frank

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050518113315.GC7793@logos.cnet \
    --to=marcelo.tosatti@cyclades.com \
    --cc=brazilnut@us.ibm.com \
    --cc=frank.salomon@wincor-nixdorf.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-net@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.