Bartlomiej Zolnierkiewicz f75d4a2387 icside: bring back ->maskproc method
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 dff8817 (I became confused due to
non-standard & undocumented ->maskproc method, anyway sorry about that).

Noticed-by: Russell King <rmk@arm.linux.org.uk>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-01-12 01:49:23 -08:00
..
2009-06-15 18:52:58 +02:00
2009-05-17 19:12:25 +02:00
2009-03-27 12:46:28 +01:00
2009-11-18 10:38:37 -08:00
2010-01-12 01:49:23 -08:00
2009-05-17 19:12:25 +02:00
2009-11-28 18:03:14 +01:00
2009-09-01 17:52:57 -07:00
2009-05-15 06:44:38 +02:00
2009-09-01 17:52:57 -07:00
2009-03-27 12:46:34 +01:00
2009-05-17 19:12:25 +02:00
2009-05-17 19:12:25 +02:00
2009-04-08 14:13:03 +02:00
2009-09-15 01:36:25 -07:00
2009-05-17 19:12:25 +02:00
2009-05-17 19:12:25 +02:00
2009-09-22 16:29:00 -07:00
2009-10-29 03:09:25 -07:00
2009-06-15 18:52:53 +02:00
2009-06-15 18:52:53 +02:00
2008-11-02 21:40:08 +01:00
2009-04-08 14:13:03 +02:00
2009-06-15 18:52:53 +02:00
2009-05-17 19:12:25 +02:00
2010-01-08 00:11:01 -08:00
2009-06-15 18:52:55 +02:00
2009-06-15 18:53:00 +02:00
2009-12-03 17:25:58 +01:00
2009-12-01 15:44:18 -08:00
2009-01-06 17:20:52 +01:00