1
0
Fork 0
forked from len0rd/rockbox

ipod6g, ata: Fix audio drop off while waiting for ata not busy

Change-Id: Id8fe39593fe3e6c5f0801bfa47ee1e04f7e7045f
Reviewed-on: http://gerrit.rockbox.org/970
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
Tested: Nial Shui <nialv7@gmail.com>
This commit is contained in:
nialv7 2014-09-17 23:10:31 -04:00 committed by Marcin Bukat
parent f5e2c25cb8
commit 4a396ac1ed

View file

@ -131,6 +131,7 @@ static int ata_wait_for_not_bsy(long timeout)
uint8_t csd = ata_read_cbr(&ATA_PIO_CSD); uint8_t csd = ata_read_cbr(&ATA_PIO_CSD);
if (!(csd & BIT(7))) return 0; if (!(csd & BIT(7))) return 0;
if (TIMEOUT_EXPIRED(startusec, timeout)) RET_ERR(0); if (TIMEOUT_EXPIRED(startusec, timeout)) RET_ERR(0);
yield();
} }
} }
@ -143,6 +144,7 @@ static int ata_wait_for_rdy(long timeout)
uint8_t dad = ata_read_cbr(&ATA_PIO_DAD); uint8_t dad = ata_read_cbr(&ATA_PIO_DAD);
if (dad & BIT(6)) return 0; if (dad & BIT(6)) return 0;
if (TIMEOUT_EXPIRED(startusec, timeout)) RET_ERR(1); if (TIMEOUT_EXPIRED(startusec, timeout)) RET_ERR(1);
yield();
} }
} }
@ -156,6 +158,7 @@ static int ata_wait_for_start_of_transfer(long timeout)
if (dad & BIT(0)) RET_ERR(1); if (dad & BIT(0)) RET_ERR(1);
if ((dad & (BIT(7) | BIT(3))) == BIT(3)) return 0; if ((dad & (BIT(7) | BIT(3))) == BIT(3)) return 0;
if (TIMEOUT_EXPIRED(startusec, timeout)) RET_ERR(2); if (TIMEOUT_EXPIRED(startusec, timeout)) RET_ERR(2);
yield();
} }
} }