• Christoph Schulz's avatar
    [ALSA] cs4236-irq-handling-fix.patch · 37538928
    Christoph Schulz authored
    CS4236+ driver
    Background: The card/chipset supports an external MIDI interrupt.  By
    default, this interrupt isn't used (because the isapnp mechanism chooses a
    configuration without an assigned interrupt).  If the user wishes to
    explicitly select an interrupt via the mpu_irq parameter for such a
    configured device, it doesn't work: The driver always shows:
    
    isapnp MPU: port=0x330, irq=-1
    
    (note the 'irq=-1')
    
    Problem: The driver only allows to set the irq if pnp_irq_valid returns
    true for this particular pnp device.  This, however, is only true if an
    interrupt has already been assigned (pnp_valid_irq returns true if the flag
    IORESOURCE_IRQ is set and IORESOURCE_UNSET is not set).  If no interrupt
    has been assigned so far, IORESOURCE_UNSET is set and pnp_irq_valid returns
    false, thereby inhibiting the selection of a valid irq.
    
    Solution: Don't check for a valid (= already assigned) irq at the point of
    calling pnp_resource_change.
    
    Tested successfully on Linux 2.6.11.
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
    37538928
cs4236.c 20.1 KB