lkml.org 
[lkml]   [2004]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: Linux 2.4.28-rc1
    Marcelo Tosatti wrote:
    > Hi,
    >
    > If you have been suddenly CC'ed to this message please search
    > your name below - there is something which concerns you.
    >
    > Replying only to the list, myself and O.Sezer is appreciated.
    >
    > On Tue, Oct 26, 2004 at 05:02:44PM +0300, O.Sezer wrote:
    >
    >>There are many lost/forgotten patches posted here on lkml. Since 2.4.28
    >>is near and 2.4 is going into "deep maintainance" mode soon, I gathered
    >>a short list of some of them.
    >
    >
    > Oh it is hard to bookkeep all of this. I hope people check and resend, but
    > they dont do that always.
    >
    >
    >>There, sure, are many more of them, but here it goes.
    >
    >
    > Please send'em all. I really appreciate your efforts.
    [...]
    >>- Michael Mueller: opti-viper pci-chipset support
    >> (have an updated-for-2.4.23+ patch for this)
    >> http://marc.theaimsgroup.com/?t=106698970100002&r=1&w=2
    >> http://marc.theaimsgroup.com/?l=linux-kernel&m=106698965700864&w=2
    >
    >
    > Should be applied - v2.6 also lacks it AFAICS.

    Attached is a one that's supposed to apply cleanly to and work
    with 2.4.23+ kernels.

    --- 23/arch/i386/kernel/pci-irq.c~
    +++ 23/arch/i386/kernel/pci-irq.c
    @@ -241,18 +241,56 @@
    }

    static int pirq_opti_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
    {
    write_config_nybble(router, 0xb8, pirq >> 4, irq);
    return 1;
    }

    /*
    + * OPTI Viper-M/N+: Bit field with 3 bits per entry.
    + * Due to the lack of a specification the information about this chipset
    + * was taken from the NetBSD source code.
    + */
    +static int pirq_viper_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
    +{
    + static const int viper_irq_decode[] = { 0, 5, 9, 10, 11, 12, 14, 15 };
    + u32 irq;
    +
    + pci_read_config_dword(router, 0x40, &irq);
    + irq >>= (pirq-1)*3;
    + irq &= 7;
    +
    + return viper_irq_decode[irq];
    +}
    +
    +static int pirq_viper_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
    +{
    + static const int viper_irq_map[] = { -1, -1, -1, -1, -1, 1, -1, -1, -1, 2, 3, 4, 5, -1, 6, 7 };
    + int newval = viper_irq_map[irq];
    + u32 val;
    + u32 mask = 7 << (3*(pirq-1));
    +#if 0
    + mask |= 0x10000UL << (pirq-1); /* edge triggered */
    +#endif
    +
    + if ( newval == -1 )
    + return 0;
    +
    + pci_read_config_dword(router, 0x40, &val);
    + val &= ~mask;
    + val |= newval << (3*(pirq-1));
    + pci_write_config_dword(router, 0x40, val);
    +
    + return 1;
    +}
    +
    +/*
    * Cyrix: nibble offset 0x5C
    */
    static int pirq_cyrix_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
    {
    return read_config_nybble(router, 0x5C, (pirq-1)^1);
    }

    static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
    {
    @@ -707,21 +745,28 @@

    static __init int opti_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
    {
    switch(device)
    {
    case PCI_DEVICE_ID_OPTI_82C700:
    r->name = "OPTI";
    r->get = pirq_opti_get;
    r->set = pirq_opti_set;
    - return 1;
    + break;
    + case PCI_DEVICE_ID_OPTI_82C558:
    + r->name = "OPTI VIPER";
    + r->get = pirq_viper_get;
    + r->set = pirq_viper_set;
    + break;
    + default:
    + return 0;
    }
    - return 0;
    + return 1;
    }

    static __init int ite_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
    {
    switch(device)
    {
    case PCI_DEVICE_ID_ITE_IT8330G_0:
    r->name = "ITE";
    r->get = pirq_ite_get;
    \
     
     \ /
      Last update: 2005-03-22 14:07    [W:0.029 / U:30.328 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site