diff options
Diffstat (limited to 'firmware/target/arm/as3525/sd-as3525.c')
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525.c b/firmware/target/arm/as3525/sd-as3525.c index 5a6e0df39a..a2d20c36fa 100644 --- a/firmware/target/arm/as3525/sd-as3525.c +++ b/firmware/target/arm/as3525/sd-as3525.c | |||
@@ -136,7 +136,7 @@ static bool hs_card = false; | |||
136 | #define EXT_SD_BITS (1<<2) | 136 | #define EXT_SD_BITS (1<<2) |
137 | #endif | 137 | #endif |
138 | 138 | ||
139 | static struct wakeup transfer_completion_signal; | 139 | static struct semaphore transfer_completion_signal; |
140 | static volatile unsigned int transfer_error[NUM_VOLUMES]; | 140 | static volatile unsigned int transfer_error[NUM_VOLUMES]; |
141 | #define PL180_MAX_TRANSFER_ERRORS 10 | 141 | #define PL180_MAX_TRANSFER_ERRORS 10 |
142 | 142 | ||
@@ -191,7 +191,7 @@ void INT_NAND(void) | |||
191 | 191 | ||
192 | transfer_error[INTERNAL_AS3525] = status & MCI_DATA_ERROR; | 192 | transfer_error[INTERNAL_AS3525] = status & MCI_DATA_ERROR; |
193 | 193 | ||
194 | wakeup_signal(&transfer_completion_signal); | 194 | semaphore_release(&transfer_completion_signal); |
195 | MCI_CLEAR(INTERNAL_AS3525) = status; | 195 | MCI_CLEAR(INTERNAL_AS3525) = status; |
196 | } | 196 | } |
197 | 197 | ||
@@ -202,7 +202,7 @@ void INT_MCI0(void) | |||
202 | 202 | ||
203 | transfer_error[SD_SLOT_AS3525] = status & MCI_DATA_ERROR; | 203 | transfer_error[SD_SLOT_AS3525] = status & MCI_DATA_ERROR; |
204 | 204 | ||
205 | wakeup_signal(&transfer_completion_signal); | 205 | semaphore_release(&transfer_completion_signal); |
206 | MCI_CLEAR(SD_SLOT_AS3525) = status; | 206 | MCI_CLEAR(SD_SLOT_AS3525) = status; |
207 | } | 207 | } |
208 | #endif | 208 | #endif |
@@ -568,7 +568,7 @@ int sd_init(void) | |||
568 | bitset32(&CCU_IO, 1<<2); | 568 | bitset32(&CCU_IO, 1<<2); |
569 | #endif | 569 | #endif |
570 | 570 | ||
571 | wakeup_init(&transfer_completion_signal); | 571 | semaphore_init(&transfer_completion_signal, 1, 0); |
572 | 572 | ||
573 | init_pl180_controller(INTERNAL_AS3525); | 573 | init_pl180_controller(INTERNAL_AS3525); |
574 | ret = sd_init_card(INTERNAL_AS3525); | 574 | ret = sd_init_card(INTERNAL_AS3525); |
@@ -678,7 +678,7 @@ static int sd_select_bank(signed char bank) | |||
678 | (9<<4) /* 2^9 = 512 */ ; | 678 | (9<<4) /* 2^9 = 512 */ ; |
679 | 679 | ||
680 | /* Wakeup signal from NAND/MCIO isr on MCI_DATA_ERROR | MCI_DATA_END */ | 680 | /* Wakeup signal from NAND/MCIO isr on MCI_DATA_ERROR | MCI_DATA_END */ |
681 | wakeup_wait(&transfer_completion_signal, TIMEOUT_BLOCK); | 681 | semaphore_wait(&transfer_completion_signal, TIMEOUT_BLOCK); |
682 | 682 | ||
683 | /* Wait for FIFO to empty, card may still be in PRG state */ | 683 | /* Wait for FIFO to empty, card may still be in PRG state */ |
684 | while(MCI_STATUS(INTERNAL_AS3525) & MCI_TX_ACTIVE ); | 684 | while(MCI_STATUS(INTERNAL_AS3525) & MCI_TX_ACTIVE ); |
@@ -837,7 +837,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start, | |||
837 | (9<<4) /* 2^9 = 512 */ ; | 837 | (9<<4) /* 2^9 = 512 */ ; |
838 | 838 | ||
839 | /* Wakeup signal from NAND/MCIO isr on MCI_DATA_ERROR | MCI_DATA_END */ | 839 | /* Wakeup signal from NAND/MCIO isr on MCI_DATA_ERROR | MCI_DATA_END */ |
840 | wakeup_wait(&transfer_completion_signal, TIMEOUT_BLOCK); | 840 | semaphore_wait(&transfer_completion_signal, TIMEOUT_BLOCK); |
841 | 841 | ||
842 | /* Wait for FIFO to empty, card may still be in PRG state for writes */ | 842 | /* Wait for FIFO to empty, card may still be in PRG state for writes */ |
843 | while(MCI_STATUS(drive) & MCI_TX_ACTIVE); | 843 | while(MCI_STATUS(drive) & MCI_TX_ACTIVE); |