diff options
Diffstat (limited to 'firmware/target/arm/tms320dm320/sdmmc-dm320.c')
-rw-r--r-- | firmware/target/arm/tms320dm320/sdmmc-dm320.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/firmware/target/arm/tms320dm320/sdmmc-dm320.c b/firmware/target/arm/tms320dm320/sdmmc-dm320.c index e66a4cb3c7..17cb239374 100644 --- a/firmware/target/arm/tms320dm320/sdmmc-dm320.c +++ b/firmware/target/arm/tms320dm320/sdmmc-dm320.c | |||
@@ -18,7 +18,7 @@ | |||
18 | * KIND, either express or implied. | 18 | * KIND, either express or implied. |
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | 21 | ||
22 | #include "system.h" | 22 | #include "system.h" |
23 | #include <string.h> | 23 | #include <string.h> |
24 | #include "gcc_extensions.h" | 24 | #include "gcc_extensions.h" |
@@ -97,7 +97,7 @@ struct sd_card_status | |||
97 | int retry_max; | 97 | int retry_max; |
98 | }; | 98 | }; |
99 | 99 | ||
100 | /** static, private data **/ | 100 | /** static, private data **/ |
101 | 101 | ||
102 | /* for compatibility */ | 102 | /* for compatibility */ |
103 | static long last_disk_activity = -1; | 103 | static long last_disk_activity = -1; |
@@ -123,7 +123,7 @@ static struct mutex sd_mtx SHAREDBSS_ATTR; | |||
123 | static struct semaphore data_done SHAREDBSS_ATTR; | 123 | static struct semaphore data_done SHAREDBSS_ATTR; |
124 | static volatile unsigned int transfer_error[NUM_DRIVES]; | 124 | static volatile unsigned int transfer_error[NUM_DRIVES]; |
125 | /* align on cache line size */ | 125 | /* align on cache line size */ |
126 | static unsigned char aligned_buffer[UNALIGNED_NUM_SECTORS * SD_BLOCK_SIZE] | 126 | static unsigned char aligned_buffer[UNALIGNED_NUM_SECTORS * SD_BLOCK_SIZE] |
127 | __attribute__((aligned(32))); | 127 | __attribute__((aligned(32))); |
128 | 128 | ||
129 | static void sd_card_mux(int card_no) | 129 | static void sd_card_mux(int card_no) |
@@ -397,7 +397,7 @@ static int sd_init_card(const int card_no) | |||
397 | SDHC_RESP_FMT_1, &currcard->rca); | 397 | SDHC_RESP_FMT_1, &currcard->rca); |
398 | if (ret < 0) | 398 | if (ret < 0) |
399 | { | 399 | { |
400 | dbgprintf("SD_SEND_RELATIVE_ADDR failed"); | 400 | dbgprintf("SD_SEND_RELATIVE_ADDR failed"); |
401 | return -1; | 401 | return -1; |
402 | } | 402 | } |
403 | 403 | ||
@@ -559,7 +559,7 @@ bool sd_removable(IF_MD_NONVOID(int card_no)) | |||
559 | #ifdef HAVE_MULTIDRIVE | 559 | #ifdef HAVE_MULTIDRIVE |
560 | (void)card_no; | 560 | (void)card_no; |
561 | #endif | 561 | #endif |
562 | 562 | ||
563 | /* not applicable */ | 563 | /* not applicable */ |
564 | return false; | 564 | return false; |
565 | } | 565 | } |
@@ -597,17 +597,17 @@ static int sd_wait_for_state(unsigned int state) | |||
597 | } | 597 | } |
598 | } | 598 | } |
599 | 599 | ||
600 | static int sd_transfer_sectors(int card_no, unsigned long start, | 600 | static int sd_transfer_sectors(int card_no, sector_t start, |
601 | int count, void *buffer, bool write) | 601 | int count, void *buffer, bool write) |
602 | { | 602 | { |
603 | int ret; | 603 | int ret; |
604 | unsigned long start_addr; | 604 | sector_t start_addr; |
605 | int dma_channel = -1; | 605 | int dma_channel = -1; |
606 | bool use_direct_dma; | 606 | bool use_direct_dma; |
607 | int count_per_dma; | 607 | int count_per_dma; |
608 | unsigned long rel_addr; | 608 | unsigned long rel_addr; |
609 | 609 | ||
610 | dbgprintf("transfer %d %d %d", card_no, start, count); | 610 | dbgprintf("transfer %d %lu %d", card_no, start, count); |
611 | mutex_lock(&sd_mtx); | 611 | mutex_lock(&sd_mtx); |
612 | enable_controller(true); | 612 | enable_controller(true); |
613 | 613 | ||
@@ -673,6 +673,7 @@ sd_transfer_retry: | |||
673 | if (!(card_info[card_no].ocr & SD_OCR_CARD_CAPACITY_STATUS)) | 673 | if (!(card_info[card_no].ocr & SD_OCR_CARD_CAPACITY_STATUS)) |
674 | start_addr *= SD_BLOCK_SIZE; /* not SDHC */ | 674 | start_addr *= SD_BLOCK_SIZE; /* not SDHC */ |
675 | 675 | ||
676 | // XXX 64-bit | ||
676 | ret = sd_command(write ? SD_WRITE_MULTIPLE_BLOCK : SD_READ_MULTIPLE_BLOCK, | 677 | ret = sd_command(write ? SD_WRITE_MULTIPLE_BLOCK : SD_READ_MULTIPLE_BLOCK, |
677 | start_addr, MMC_CMD_DCLR | MMC_CMD_DATA | | 678 | start_addr, MMC_CMD_DCLR | MMC_CMD_DATA | |
678 | SDHC_RESP_FMT_1 | (write ? MMC_CMD_WRITE : 0), | 679 | SDHC_RESP_FMT_1 | (write ? MMC_CMD_WRITE : 0), |
@@ -765,7 +766,7 @@ sd_transfer_error: | |||
765 | } | 766 | } |
766 | } | 767 | } |
767 | 768 | ||
768 | int sd_read_sectors(IF_MD(int card_no,) unsigned long start, int incount, | 769 | int sd_read_sectors(IF_MD(int card_no,) sector_t start, int incount, |
769 | void* inbuf) | 770 | void* inbuf) |
770 | { | 771 | { |
771 | #ifndef HAVE_MULTIDRIVE | 772 | #ifndef HAVE_MULTIDRIVE |
@@ -774,7 +775,7 @@ int sd_read_sectors(IF_MD(int card_no,) unsigned long start, int incount, | |||
774 | return sd_transfer_sectors(card_no, start, incount, inbuf, false); | 775 | return sd_transfer_sectors(card_no, start, incount, inbuf, false); |
775 | } | 776 | } |
776 | 777 | ||
777 | int sd_write_sectors(IF_MD(int card_no,) unsigned long start, int count, | 778 | int sd_write_sectors(IF_MD(int card_no,) sector_t start, int count, |
778 | const void* outbuf) | 779 | const void* outbuf) |
779 | { | 780 | { |
780 | #ifndef HAVE_MULTIDRIVE | 781 | #ifndef HAVE_MULTIDRIVE |
@@ -862,7 +863,7 @@ long sd_last_disk_activity(void) | |||
862 | } | 863 | } |
863 | 864 | ||
864 | tCardInfo *card_get_info_target(int card_no) | 865 | tCardInfo *card_get_info_target(int card_no) |
865 | { | 866 | { |
866 | return &card_info[card_no]; | 867 | return &card_info[card_no]; |
867 | } | 868 | } |
868 | 869 | ||