Re: [PATCH 13/31] swim: Check for CRC errors

Laurent Vivier <[email protected]>
Newsgroups org.kernel.vger.linux-block,org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k
Message-ID <[email protected]>
Le 16/07/2026 à 12:02, Finn Thain a écrit :
> After reading either the sector header or sector data, examine that flag
> in the handshake register which holds the result of the CRC calculation.
> CRC validation has to take place with the last byte still in the FIFO.
> This flag can't be checked by the caller because by then all bytes will
> have been retrieved from the FIFO. Return an error code when appropriate.
> 
> Fixes: 8852ecd97488 ("m68k: mac - Add SWIM floppy support")
> Signed-off-by: Finn Thain <[email protected]>
> ---
>   drivers/block/swim_asm.S | 16 ++++++++++++----
>   1 file changed, 12 insertions(+), 4 deletions(-)

Reviewed-by: Laurent Vivier <[email protected]>

> 
> diff --git a/drivers/block/swim_asm.S b/drivers/block/swim_asm.S
> index 31fc63b074dc..f40e19e48021 100644
> --- a/drivers/block/swim_asm.S
> +++ b/drivers/block/swim_asm.S
> @@ -42,6 +42,8 @@
>   	.equ	max_retry, 40
>   	.equ	sector_size, 512
>   
> +	.equ	.Lhr_crc_error,		0x02
> +
>   	.global swim_read_sector_header
>   swim_read_sector_header:
>   	link	%a6, #0
> @@ -128,12 +130,15 @@ crc0:	tstb	%a2@
>   
>   	moveq	#max_retry, %d2
>   
> -crc1:	tstb	%a2@
> +crc1:	moveb	%a2@, %d5
>   	dbmi	%d2, crc1
>   	bpl	signal_nonyb
>   
>   	moveb	%a3@, %a4@(o_crc1)
>   
> +	andb	#.Lhr_crc_error, %d5
> +	bne	signal_nonyb
> +
>   	tstb	%a3@(read_error - read_mark)
>   
>   	moveq	#0, %d0
> @@ -212,17 +217,20 @@ data_crc0:
>   	dbmi	%d2, data_crc0
>   	bpl	data_exit
>   
> -	moveb	%a3@, %d5
> +	moveb	%a3@, %d2
>   
>   	moveq	#max_retry, %d2
>   
>   data_crc1:
>   
> -	tstb	%a2@
> +	moveb	%a2@, %d5
>   	dbmi	%d2, data_crc1
>   	bpl	data_exit
>   
> -	moveb	%a3@, %d5
> +	moveb	%a3@, %d2
> +
> +	andb	#.Lhr_crc_error, %d5
> +	bne	data_exit
>   
>   	tstb	%a3@(read_error - read_mark)
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.