]> git.baikalelectronics.ru Git - kernel.git/commit
sata_promise: fix irq clearing buglets
authorMikael Pettersson <mikpe@it.uu.se>
Sat, 17 May 2008 16:47:35 +0000 (18:47 +0200)
committerJeff Garzik <jgarzik@redhat.com>
Mon, 19 May 2008 21:30:47 +0000 (17:30 -0400)
commit1ee4e110aee004cbb3993f2ad86b7a24f13ffd4a
tree6e20091316cf2742825ef3f17e8069391657b6f0
parent42eda793a56c399effe0756a3814717b21c006aa
sata_promise: fix irq clearing buglets

This patch fixes two bugs in sata_promise's irq status clearing paths:
1. When clearing the irq status for a specific port, the driver
   read the global SEQMASK register. This is wrong because that
   clears the irq status for _all_ ports.
2. pdc_thaw() incorrectly added the PDC_INT_SEQMASK host register
   offset to a per-port ata engine base address. This resulted in
   it reading the unrelated PDC_PKT_SUBMIT register, which did not
   have the desired irq status clearing effect.

In both cases the fix is to read from the port's Command/Status
register. This also matches what Promise's own driver does.

Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/sata_promise.c