diff options
Diffstat (limited to 'firmware/target/arm/as3525/sd-as3525.c')
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525.c b/firmware/target/arm/as3525/sd-as3525.c index 70e0778d2b..df39cba495 100644 --- a/firmware/target/arm/as3525/sd-as3525.c +++ b/firmware/target/arm/as3525/sd-as3525.c | |||
@@ -446,7 +446,7 @@ static int sd_init_card(const int drive) | |||
446 | sd_parse_csd(&card_info[drive]); | 446 | sd_parse_csd(&card_info[drive]); |
447 | 447 | ||
448 | #if defined(HAVE_MULTIDRIVE) | 448 | #if defined(HAVE_MULTIDRIVE) |
449 | hs_card = (card_info[drive].speed == 50000000); | 449 | hs_card = (card_info[drive].speed >= 50000000); |
450 | #endif | 450 | #endif |
451 | 451 | ||
452 | /* Boost MCICLK to operating speed */ | 452 | /* Boost MCICLK to operating speed */ |
@@ -455,7 +455,7 @@ static int sd_init_card(const int drive) | |||
455 | #if defined(HAVE_MULTIDRIVE) | 455 | #if defined(HAVE_MULTIDRIVE) |
456 | else | 456 | else |
457 | /* MCICLK = PCLK/2 = 31MHz(HS) or PCLK/4 = 15.5 Mhz (STD)*/ | 457 | /* MCICLK = PCLK/2 = 31MHz(HS) or PCLK/4 = 15.5 Mhz (STD)*/ |
458 | MCI_CLOCK(drive) = (hs_card ? MCI_HALFSPEED : MCI_QUARTERSPEED) | | 458 | MCI_CLOCK(drive) = (hs_card ? MCI_HALFSPEED : MCI_QUARTERSPEED) | |
459 | MCI_CLOCK_POWERSAVE; /* SD supports powersave */ | 459 | MCI_CLOCK_POWERSAVE; /* SD supports powersave */ |
460 | #endif | 460 | #endif |
461 | 461 | ||
@@ -680,7 +680,7 @@ static int sd_select_bank(signed char bank) | |||
680 | return 0; | 680 | return 0; |
681 | } | 681 | } |
682 | 682 | ||
683 | static int sd_transfer_sectors(IF_MD(int drive,) unsigned long start, | 683 | static int sd_transfer_sectors(IF_MD(int drive,) sector_t start, |
684 | int count, void* buf, const bool write) | 684 | int count, void* buf, const bool write) |
685 | { | 685 | { |
686 | #ifndef HAVE_MULTIDRIVE | 686 | #ifndef HAVE_MULTIDRIVE |
@@ -735,7 +735,8 @@ static int sd_transfer_sectors(IF_MD(int drive,) unsigned long start, | |||
735 | unsigned int transfer = (count >= 128) ? 127 : count; /* sectors */ | 735 | unsigned int transfer = (count >= 128) ? 127 : count; /* sectors */ |
736 | void *dma_buf; | 736 | void *dma_buf; |
737 | 737 | ||
738 | unsigned long bank_start = start; | 738 | sector_t bank_start = start; |
739 | // XXX 64-bit sectors? | ||
739 | 740 | ||
740 | /* Only switch banks for internal storage */ | 741 | /* Only switch banks for internal storage */ |
741 | if(drive == INTERNAL_AS3525) | 742 | if(drive == INTERNAL_AS3525) |
@@ -869,7 +870,7 @@ sd_transfer_error_nodma: | |||
869 | return ret; | 870 | return ret; |
870 | } | 871 | } |
871 | 872 | ||
872 | int sd_read_sectors(IF_MD(int drive,) unsigned long start, int count, | 873 | int sd_read_sectors(IF_MD(int drive,) sector_t start, int count, |
873 | void* buf) | 874 | void* buf) |
874 | { | 875 | { |
875 | int ret; | 876 | int ret; |
@@ -881,11 +882,11 @@ int sd_read_sectors(IF_MD(int drive,) unsigned long start, int count, | |||
881 | return ret; | 882 | return ret; |
882 | } | 883 | } |
883 | 884 | ||
884 | int sd_write_sectors(IF_MD(int drive,) unsigned long start, int count, | 885 | int sd_write_sectors(IF_MD(int drive,) sector_t start, int count, |
885 | const void* buf) | 886 | const void* buf) |
886 | { | 887 | { |
887 | #ifdef VERIFY_WRITE | 888 | #ifdef VERIFY_WRITE |
888 | unsigned long saved_start = start; | 889 | sector_t saved_start = start; |
889 | int saved_count = count; | 890 | int saved_count = count; |
890 | void *saved_buf = (void*)buf; | 891 | void *saved_buf = (void*)buf; |
891 | #endif | 892 | #endif |