diff options
Diffstat (limited to 'firmware/target/arm/as3525')
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525.c | 15 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525v2.c | 8 |
2 files changed, 12 insertions, 11 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 |
diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c index b512cc2ea4..f9ef7d9c97 100644 --- a/firmware/target/arm/as3525/sd-as3525v2.c +++ b/firmware/target/arm/as3525/sd-as3525v2.c | |||
@@ -677,7 +677,7 @@ int sd_init(void) | |||
677 | return 0; | 677 | return 0; |
678 | } | 678 | } |
679 | 679 | ||
680 | static int sd_transfer_sectors(IF_MD(int drive,) unsigned long start, | 680 | static int sd_transfer_sectors(IF_MD(int drive,) sector_t start, |
681 | int count, void* buf, bool write) | 681 | int count, void* buf, bool write) |
682 | { | 682 | { |
683 | unsigned long response; | 683 | unsigned long response; |
@@ -776,7 +776,7 @@ retry_with_reinit: | |||
776 | 776 | ||
777 | MCI_BYTCNT = transfer * SD_BLOCK_SIZE; | 777 | MCI_BYTCNT = transfer * SD_BLOCK_SIZE; |
778 | 778 | ||
779 | int arg = start; | 779 | sector_t arg = start; // XXX 64-bit |
780 | if(!(card_info[drive].ocr & (1<<30))) /* not SDHC */ | 780 | if(!(card_info[drive].ocr & (1<<30))) /* not SDHC */ |
781 | arg *= SD_BLOCK_SIZE; | 781 | arg *= SD_BLOCK_SIZE; |
782 | 782 | ||
@@ -858,13 +858,13 @@ exit: | |||
858 | return ret; | 858 | return ret; |
859 | } | 859 | } |
860 | 860 | ||
861 | int sd_read_sectors(IF_MD(int drive,) unsigned long start, int count, | 861 | int sd_read_sectors(IF_MD(int drive,) sector_t start, int count, |
862 | void* buf) | 862 | void* buf) |
863 | { | 863 | { |
864 | return sd_transfer_sectors(IF_MD(drive,) start, count, buf, false); | 864 | return sd_transfer_sectors(IF_MD(drive,) start, count, buf, false); |
865 | } | 865 | } |
866 | 866 | ||
867 | int sd_write_sectors(IF_MD(int drive,) unsigned long start, int count, | 867 | int sd_write_sectors(IF_MD(int drive,) sector_t start, int count, |
868 | const void* buf) | 868 | const void* buf) |
869 | { | 869 | { |
870 | return sd_transfer_sectors(IF_MD(drive,) start, count, (void*)buf, true); | 870 | return sd_transfer_sectors(IF_MD(drive,) start, count, (void*)buf, true); |