fdc/i8257: implement verify transfer mode
commit9e58f172700a3fc56fd6c97d033efa8ade51c9ce
authorSven Schnelle <svens@stackframe.org>
Fri, 1 Nov 2019 16:55:13 +0000 (1 17:55 +0100)
committerJohn Snow <jsnow@redhat.com>
Fri, 27 Mar 2020 18:30:08 +0000 (27 14:30 -0400)
tree66adff16809ae427a6740601ed13ef5cb0733ea7
parentcfe68ae025f704f336d7dd3d1903ce37b445831d
fdc/i8257: implement verify transfer mode

While working on the Tulip driver i tried to write some Teledisk images to
a floppy image which didn't work. Turned out that Teledisk checks the written
data by issuing a READ command to the FDC but running the DMA controller
in VERIFY mode. As we ignored the DMA request in that case, the DMA transfer
never finished, and Teledisk reported an error.

The i8257 spec says about verify transfers:

3) DMA verify, which does not actually involve the transfer of data. When an
8257 channel is in the DMA verify mode, it will respond the same as described
for transfer operations, except that no memory or I/O read/write control signals
will be generated.

Hervé proposed to remove all the dma_mode_ok stuff from fdc to have a more
clear boundary between DMA and FDC, so this patch also does that.

Suggested-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Sven Schnelle <svens@stackframe.org>
Reviewed-by: Hervé Poussineau <hpoussin@reactos.org>
hw/block/fdc.c
hw/dma/i8257.c
include/hw/isa/isa.h