summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aic94xx/aic94xx_init.c
diff options
context:
space:
mode:
authorOndrej Zary <linux@rainbow-software.org>2017-07-03 09:59:05 +0200
committerMartin K. Petersen <martin.petersen@oracle.com>2017-08-07 20:04:00 +0200
commite9dbadf7881375ebb234ff579838f85df2abe4cf (patch)
treec2ce36bb7471f10c4681e50d5809fba8383832ab /drivers/scsi/aic94xx/aic94xx_init.c
parentscsi: g_NCR5380: Fix PDMA transfer size (diff)
downloadlinux-e9dbadf7881375ebb234ff579838f85df2abe4cf.tar.xz
linux-e9dbadf7881375ebb234ff579838f85df2abe4cf.zip
scsi: g_NCR5380: End PDMA transfer correctly on target disconnection
When an IRQ arrives during PDMA transfer, pread() and pwrite() return without waiting for the 53C80 registers to be ready and this ends up messing up the chip state. This was observed with SONY CDU-55S which is slow enough to disconnect during 4096-byte reads. IRQ during PDMA is not an error so don't return -1. Instead, store the remaining byte count for use by NCR5380_dma_residual(). [Poll for the BASR_END_DMA_TRANSFER condition rather than remove the error message -- F.T.] Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Tested-by: Ondrej Zary <linux@rainbow-software.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/aic94xx/aic94xx_init.c')
0 files changed, 0 insertions, 0 deletions