• Finn Thain's avatar
    ncr5380: Split NCR5380_init() into two functions · b6488f97
    Finn Thain authored
    This patch splits the NCR5380_init() function into two parts, similar
    to the scheme used with atari_NCR5380.c. This avoids two problems.
    
    Firstly, NCR5380_init() may perform a bus reset, which would cause the
    chip to assert IRQ. The chip is unable to mask its bus reset interrupt.
    Drivers can't call request_irq() before calling NCR5380_init(), because
    initialization must happen before the interrupt handler executes. If
    driver initialization causes an interrupt it may be problematic on some
    platforms. To avoid that, first move the bus reset code into
    NCR5380_maybe_reset_bus().
    
    Secondly, NCR5380_init() contains some board-specific interrupt setup code
    for the NCR53C400 that does not belong in the core driver. In moving this
    code, better not re-order interrupt initialization and bus reset. Again,
    the solution is to move the bus reset code into NCR5380_maybe_reset_bus().
    Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    Tested-by: default avatarOndrej Zary <linux@rainbow-software.org>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    b6488f97
NCR5380.c 87.4 KB