diff options
Diffstat (limited to 'firmware/target/arm/rk27xx/sd-rk27xx.c')
-rw-r--r-- | firmware/target/arm/rk27xx/sd-rk27xx.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/firmware/target/arm/rk27xx/sd-rk27xx.c b/firmware/target/arm/rk27xx/sd-rk27xx.c index 2ddfd0cf0a..e5467058de 100644 --- a/firmware/target/arm/rk27xx/sd-rk27xx.c +++ b/firmware/target/arm/rk27xx/sd-rk27xx.c | |||
@@ -97,7 +97,7 @@ void INT_SD(void) | |||
97 | /* get the status */ | 97 | /* get the status */ |
98 | cmd_error = SD_CMDRES; | 98 | cmd_error = SD_CMDRES; |
99 | semaphore_release(&command_completion_signal); | 99 | semaphore_release(&command_completion_signal); |
100 | } | 100 | } |
101 | 101 | ||
102 | /* data transfer status pending */ | 102 | /* data transfer status pending */ |
103 | if(status & DATA_XFER_STAT) | 103 | if(status & DATA_XFER_STAT) |
@@ -140,13 +140,15 @@ static void mmu_buff_reset(void) | |||
140 | 140 | ||
141 | static inline bool card_detect_target(void) | 141 | static inline bool card_detect_target(void) |
142 | { | 142 | { |
143 | #if defined(RK27_GENERIC) | 143 | #if defined(RK27_GENERIC) || defined(IHIFI770) || defined(IHIFI770C) || defined(IHIFI800) |
144 | /* My generic device uses PC7 pin, active low */ | 144 | /* PC7, active low */ |
145 | return !(GPIO_PCDR & 0x80); | 145 | return !(GPIO_PCDR & 0x80); |
146 | #elif defined(HM60X) || defined(HM801) | 146 | #elif defined(HM60X) || defined(HM801) |
147 | /* PF2, active low */ | ||
147 | return !(GPIO_PFDR & (1<<2)); | 148 | return !(GPIO_PFDR & (1<<2)); |
148 | #elif defined(MA9) || defined(MA9C) || defined(MA8) || defined(MA8C) | 149 | #elif defined(MA9) || defined(MA9C) || defined(MA8) || defined(MA8C) |
149 | return (GPIO_PCDR & 0x80); | 150 | /* PC7, active high */ |
151 | return (GPIO_PCDR & (1<<7)); | ||
150 | #elif defined(IHIFI760) || defined(IHIFI960) | 152 | #elif defined(IHIFI760) || defined(IHIFI960) |
151 | /* TODO: find out pin */ | 153 | /* TODO: find out pin */ |
152 | return true; | 154 | return true; |
@@ -190,7 +192,7 @@ static bool send_cmd(const int cmd, const int arg, const int res, | |||
190 | #if 0 | 192 | #if 0 |
191 | /* for some misterious reason the card does not report itself as being in TRAN | 193 | /* for some misterious reason the card does not report itself as being in TRAN |
192 | * but transfers are successful. Rockchip OF does not check the card state | 194 | * but transfers are successful. Rockchip OF does not check the card state |
193 | * after SELECT. I checked two different cards. | 195 | * after SELECT. I checked two different cards. |
194 | */ | 196 | */ |
195 | static void print_card_status(void) | 197 | static void print_card_status(void) |
196 | { | 198 | { |
@@ -224,7 +226,7 @@ static int sd_wait_for_tran_state(void) | |||
224 | { | 226 | { |
225 | return 0; | 227 | return 0; |
226 | } | 228 | } |
227 | 229 | ||
228 | if(TIME_AFTER(current_tick, timeout)) | 230 | if(TIME_AFTER(current_tick, timeout)) |
229 | { | 231 | { |
230 | return -10 * ((response >> 9) & 0xf); | 232 | return -10 * ((response >> 9) & 0xf); |
@@ -265,7 +267,7 @@ static int sd_init_card(void) | |||
265 | /* CMD0 Go Idle */ | 267 | /* CMD0 Go Idle */ |
266 | if(!send_cmd(SD_GO_IDLE_STATE, 0, RES_NO, NULL)) | 268 | if(!send_cmd(SD_GO_IDLE_STATE, 0, RES_NO, NULL)) |
267 | return -1; | 269 | return -1; |
268 | 270 | ||
269 | sleep(1); | 271 | sleep(1); |
270 | 272 | ||
271 | /* CMD8 Check for v2 sd card. Must be sent before using ACMD41 | 273 | /* CMD8 Check for v2 sd card. Must be sent before using ACMD41 |
@@ -671,7 +673,7 @@ int sd_write_sectors(IF_MD(int drive,) unsigned long start, int count, | |||
671 | #endif | 673 | #endif |
672 | 674 | ||
673 | return ret; | 675 | return ret; |
674 | 676 | ||
675 | #endif /* defined(BOOTLOADER) */ | 677 | #endif /* defined(BOOTLOADER) */ |
676 | } | 678 | } |
677 | 679 | ||