diff options
Diffstat (limited to 'firmware/target/arm/ata-nand-telechips.c')
-rw-r--r-- | firmware/target/arm/ata-nand-telechips.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/firmware/target/arm/ata-nand-telechips.c b/firmware/target/arm/ata-nand-telechips.c index 5401f0d3ab..ceabf96169 100644 --- a/firmware/target/arm/ata-nand-telechips.c +++ b/firmware/target/arm/ata-nand-telechips.c | |||
@@ -40,6 +40,9 @@ long last_disk_activity = -1; | |||
40 | /** static, private data **/ | 40 | /** static, private data **/ |
41 | static bool initialized = false; | 41 | static bool initialized = false; |
42 | 42 | ||
43 | static long next_yield = 0; | ||
44 | #define MIN_YIELD_PERIOD 1000 | ||
45 | |||
43 | static struct mutex ata_mtx SHAREDBSS_ATTR; | 46 | static struct mutex ata_mtx SHAREDBSS_ATTR; |
44 | 47 | ||
45 | #if defined(COWON_D2) || defined(IAUDIO_7) | 48 | #if defined(COWON_D2) || defined(IAUDIO_7) |
@@ -714,6 +717,14 @@ int nand_read_sectors(IF_MV2(int drive,) unsigned long start, int incount, | |||
714 | return -1; | 717 | return -1; |
715 | } | 718 | } |
716 | 719 | ||
720 | #ifdef CPU_TCC780X /* 77x doesn't have USEC_TIMER yet */ | ||
721 | if (TIME_AFTER(USEC_TIMER, next_yield)) | ||
722 | { | ||
723 | next_yield = USEC_TIMER + MIN_YIELD_PERIOD; | ||
724 | yield(); | ||
725 | } | ||
726 | #endif | ||
727 | |||
717 | inbuf += SECTOR_SIZE; | 728 | inbuf += SECTOR_SIZE; |
718 | incount--; | 729 | incount--; |
719 | secmod++; | 730 | secmod++; |