diff options
Diffstat (limited to 'firmware/target/arm/tms320dm320')
3 files changed, 26 insertions, 23 deletions
diff --git a/firmware/target/arm/tms320dm320/creative-zvm/ata-creativezvm.c b/firmware/target/arm/tms320dm320/creative-zvm/ata-creativezvm.c index a1985472a0..76929e603e 100644 --- a/firmware/target/arm/tms320dm320/creative-zvm/ata-creativezvm.c +++ b/firmware/target/arm/tms320dm320/creative-zvm/ata-creativezvm.c | |||
@@ -126,8 +126,10 @@ void GIO2(void) | |||
126 | 126 | ||
127 | #define VFAT_SECTOR_SIZE(x) ( (x)/0x8000 ) /* 1GB array requires 80kB of RAM */ | 127 | #define VFAT_SECTOR_SIZE(x) ( (x)/0x8000 ) /* 1GB array requires 80kB of RAM */ |
128 | 128 | ||
129 | extern int ata_read_sectors(IF_MD(int drive,) unsigned long start, int count, void* buf); | 129 | extern int ata_read_sectors(IF_MD(int drive,) sector_t start, int count, void* buf); |
130 | extern int ata_write_sectors(IF_MD(int drive,) unsigned long start, int count, const void* buf); | 130 | extern int ata_write_sectors(IF_MD(int drive,) sector_t start, int count, const void* buf); |
131 | |||
132 | // XXX 64-bit: Due to this it's not likely that this target will ever handle 64-bit storage. | ||
131 | 133 | ||
132 | struct main_header | 134 | struct main_header |
133 | { | 135 | { |
@@ -253,9 +255,9 @@ static void cfs_init(void) | |||
253 | /* Read root inode */ | 255 | /* Read root inode */ |
254 | _ata_read_sectors(CFS_CLUSTER2CLUSTER(cfs->first_inode), 64, §or2); | 256 | _ata_read_sectors(CFS_CLUSTER2CLUSTER(cfs->first_inode), 64, §or2); |
255 | root_inode = (struct cfs_inode*)§or2; | 257 | root_inode = (struct cfs_inode*)§or2; |
256 | 258 | ||
257 | logf("Root inode = 0x%x", root_inode); | 259 | logf("Root inode = 0x%x", root_inode); |
258 | 260 | ||
259 | logf("0x%x 0x%x", CFS_CLUSTER2CLUSTER(root_inode->first_class_chain[0]), root_inode->first_class_chain[0]); | 261 | logf("0x%x 0x%x", CFS_CLUSTER2CLUSTER(root_inode->first_class_chain[0]), root_inode->first_class_chain[0]); |
260 | 262 | ||
261 | /* Read root inode's first sector */ | 263 | /* Read root inode's first sector */ |
@@ -277,9 +279,9 @@ static void cfs_init(void) | |||
277 | vfat_inode_nr = root_direntry_items[i].inode_number; | 279 | vfat_inode_nr = root_direntry_items[i].inode_number; |
278 | } | 280 | } |
279 | } | 281 | } |
280 | 282 | ||
281 | logf("VFAT inode = 0x%x", vfat_inode_nr); | 283 | logf("VFAT inode = 0x%x", vfat_inode_nr); |
282 | 284 | ||
283 | if(vfat_inode_nr != 0) | 285 | if(vfat_inode_nr != 0) |
284 | { | 286 | { |
285 | /* Read VFAT inode */ | 287 | /* Read VFAT inode */ |
@@ -384,19 +386,19 @@ static void cfs_init(void) | |||
384 | cfs_inited = true; | 386 | cfs_inited = true; |
385 | } | 387 | } |
386 | 388 | ||
387 | static inline unsigned long map_sector(unsigned long sector) | 389 | static inline sector_t map_sector(sector_t sector) |
388 | { | 390 | { |
389 | /* | 391 | /* |
390 | * Sector mapping: start of CFS + FAT_SECTOR2CFS_SECTOR(sector) + missing part | 392 | * Sector mapping: start of CFS + FAT_SECTOR2CFS_SECTOR(sector) + missing part |
391 | * FAT works with sectors of 0x200 bytes, CFS with sectors of 0x8000 bytes. | 393 | * FAT works with sectors of 0x200 bytes, CFS with sectors of 0x8000 bytes. |
392 | */ | 394 | */ |
393 | #ifndef BOOTLOADER | 395 | #ifndef BOOTLOADER |
394 | unsigned long *sectors = core_get_data(sectors_handle); | 396 | sector_t *sectors = core_get_data(sectors_handle); |
395 | #endif | 397 | #endif |
396 | return cfs_start+sectors[sector/64]*64+sector%64; | 398 | return cfs_start+sectors[sector/64]*64+sector%64; |
397 | } | 399 | } |
398 | 400 | ||
399 | int ata_read_sectors(IF_MD(int drive,) unsigned long start, int count, void* buf) | 401 | int ata_read_sectors(IF_MD(int drive,) sector_t start, int count, void* buf) |
400 | { | 402 | { |
401 | if(!cfs_inited) | 403 | if(!cfs_inited) |
402 | cfs_init(); | 404 | cfs_init(); |
@@ -423,7 +425,7 @@ int ata_read_sectors(IF_MD(int drive,) unsigned long start, int count, void* buf | |||
423 | } | 425 | } |
424 | } | 426 | } |
425 | 427 | ||
426 | int ata_write_sectors(IF_MD(int drive,) unsigned long start, int count, const void* buf) | 428 | int ata_write_sectors(IF_MD(int drive,) sector_t start, int count, const void* buf) |
427 | { | 429 | { |
428 | if(!cfs_inited) | 430 | if(!cfs_inited) |
429 | cfs_init(); | 431 | cfs_init(); |
diff --git a/firmware/target/arm/tms320dm320/creative-zvm/ata-target.h b/firmware/target/arm/tms320dm320/creative-zvm/ata-target.h index d0aa12e040..41b8e73ad4 100644 --- a/firmware/target/arm/tms320dm320/creative-zvm/ata-target.h +++ b/firmware/target/arm/tms320dm320/creative-zvm/ata-target.h | |||
@@ -36,8 +36,8 @@ | |||
36 | /* Nasty hack, but Creative is nasty... */ | 36 | /* Nasty hack, but Creative is nasty... */ |
37 | #define ata_read_sectors _ata_read_sectors | 37 | #define ata_read_sectors _ata_read_sectors |
38 | #define ata_write_sectors _ata_write_sectors | 38 | #define ata_write_sectors _ata_write_sectors |
39 | extern int _ata_read_sectors(IF_MD(int drive,) unsigned long start, int count, void* buf); | 39 | extern int _ata_read_sectors(IF_MD(int drive,) sector_t start, int count, void* buf); |
40 | extern int _ata_write_sectors(IF_MD(int drive,) unsigned long start, int count, const void* buf); | 40 | extern int _ata_write_sectors(IF_MD(int drive,) sector_t start, int count, const void* buf); |
41 | 41 | ||
42 | /* General purpose memory region #1 */ | 42 | /* General purpose memory region #1 */ |
43 | #define ATA_IOBASE 0x50FEE000 | 43 | #define ATA_IOBASE 0x50FEE000 |
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 | ||