• Bartlomiej Zolnierkiewicz's avatar
    icside: bring back ->maskproc method · f75d4a23
    Bartlomiej Zolnierkiewicz authored
    Bring back ->maskproc method since it is still needed for proper operation,
    as noticed by Russell King:
    
    > This change is bogus.
    >
    >         writeb(0, base + ICS_ARCIN_V6_INTROFFSET_1);
    >         readb(base + ICS_ARCIN_V6_INTROFFSET_2);
    >
    >         writeb(0, base + ICS_ARCIN_V6_INTROFFSET_2);
    >         readb(base + ICS_ARCIN_V6_INTROFFSET_1);
    >
    > This sequence of code does:
    >
    > 1. enable interrupt 1
    > 2. disable interrupt 2
    > 3. enable interrupt 2
    > 4. disable interrupt 1
    >
    > which results in the interrupt for the second channel being enabled -
    > leaving channel 1 blocked.
    >
    > Firstly, icside shares its two IDE channels with one DMA engine - so it's
    > a simplex interface.  IDE supports those (or did when the code was written)
    > serializing requests between the two interfaces.  libata does not.
    >
    > Secondly, the interrupt lines on icside float when there's no drive connected
    > or when the drive has its NIEN bit set, which means that you get spurious
    > screaming interrupts which can kill off all expansion card interrupts on
    > the machine unless you disable the channel interrupt on the card.
    >
    > Since libata can not serialize the operation of the two channels like IDE
    > can, the libata version of the icside driver does not contain the interrupt
    > stearing logic.  Instead, it looks at the status after reset, and if
    > nothing was found on that channel, it masks the interrupt from that
    > channel.
    
    This patch reverts changes done in commit dff8817b (I became confused due to
    non-standard & undocumented ->maskproc method, anyway sorry about that).
    Noticed-by: default avatarRussell King <rmk@arm.linux.org.uk>
    Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f75d4a23
icside.c 16.2 KB