|
Rockbox mail archiveSubject: Re: Red freezeRe: Red freeze
From: Mike Holden <rockbox_at_mikeholden.uklinux.net>
Date: Mon, 31 Mar 2003 13:51:37 +0100 (BST) Björn Stenberg said: > Mike Holden wrote: >> We hit a disk error and the mpeg thread skips to the next track. It >> then tries to start loading the next track, and gets as far as the >> perform_soft_reset() at the top of ata_read_sectors(). This calls >> wait_for_rdy() which calls wait_for_busy(). Both of these function >> calls will wait for 10 seconds each before timing out and returning. > > Only if the disk is actually BSY for all that time. Why would it be? On > read error, the disk is immediately available for new commands. Ok, let me try to explain that bit again! wait_for_rdy calls wait_for_bsy. If the disk is NOT busy, wait_for_bsy immediately returns 1. In this case, wait_for_rdy sets a 10 second timeout and waits for the disk to become STATUS_RDY - it's this bit that times out, since the disk shows an error state. We sleep for 10 seconds, then return an error (zero). We then loop round the soft reset a further 8 times, for a total of 90 seconds. Any comment on the other points I made? -- Mike HoldenReceived on 2003-03-31 Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy |