From 15e52374698ba7395ff0ece0d3d70435a66406c4 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Fri, 5 Jul 2024 16:00:30 -0400 Subject: storage: 64-bit sector offsets * Create new 'sector_t' type alias: * uint64_t for all targets with HAVE_LBA48 or HAVE_SDUC * unsigned long for the everything else * Alter all storage APIs to use sector_t instead of 'unsigned long' * Alter Volume/Partition/storage info structures to use sector_t * Disk cache converted to sector_t * ATA Core: * convert to using sector_t for sector addresses and drive sizes * Always fill out upper 16 bits of LBA48 addresses * IDENTIFY INFO is fixed at 512 bytes, not SECTOR_SIZE * USB mass storage: * convert to using sector_t for sector addesses and drive sizes * Implement READ_16/WRITE_16 for LBA48 addresses * Convert FAT code to use sector_t for all sector references * output_dyn_value() now accepts int64_t instead of 'int' * Corrected "rockbox info" to work for (MULTIVOLUME & !MULTIDRIVE) * Better reporting of disk and (logical+physical) sector sizes in debug info * Detect SDUC cards and report on storage debug_info screen To-do: SDUC * Refactor SD core to remove duplicate code in every driver * Card probe and init state machine * Implement core SDUC support * SD2.0 needs to be 2.0+ (fixed for jz47xx and x1000) * Host and Card ID (ACMD41) * 32-bit addressing for all read/write/erase operations (CMD22) * ADD SDUC to target device drivers, defining HAVE_SDUC as appropriate Change-Id: Ib0138781a0081664d11511037685503df1b93608 --- firmware/target/arm/imx233/sdmmc-imx233.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'firmware/target/arm/imx233/sdmmc-imx233.c') diff --git a/firmware/target/arm/imx233/sdmmc-imx233.c b/firmware/target/arm/imx233/sdmmc-imx233.c index af090e8a07..5577c6002d 100644 --- a/firmware/target/arm/imx233/sdmmc-imx233.c +++ b/firmware/target/arm/imx233/sdmmc-imx233.c @@ -648,7 +648,7 @@ int mmc_event(long id, intptr_t data) #endif /* CONFIG_STORAGE & STORAGE_MMC */ /* low-level function, don't call directly! */ -static int __xfer_sectors(int drive, unsigned long start, int count, void *buf, bool read) +static int __xfer_sectors(int drive, sector_t start, int count, void *buf, bool read) { uint32_t resp; int ret = 0; @@ -660,7 +660,7 @@ static int __xfer_sectors(int drive, unsigned long start, int count, void *buf, need_stop = false; /* Set bank_start to the correct unit (blocks or bytes). * MMC drives use block addressing, SD cards bytes or blocks */ - int bank_start = start; + sector_t bank_start = start; if(SDMMC_MODE(drive) == SD_MODE && !(SDMMC_INFO(drive).ocr & (1<<30))) /* not SDHC */ bank_start *= SD_BLOCK_SIZE; /* issue read/write @@ -686,7 +686,7 @@ static int __xfer_sectors(int drive, unsigned long start, int count, void *buf, return ret; } -static int transfer_sectors(int drive, unsigned long start, int count, void *buf, bool read) +static int transfer_sectors(int drive, sector_t start, int count, void *buf, bool read) { int ret = 0; /* the function doesn't work when count is 0 */ @@ -806,7 +806,7 @@ static int transfer_sectors(int drive, unsigned long start, int count, void *buf } /* user specifies the sdmmc drive */ -static int part_read_fn(intptr_t user, unsigned long start, int count, void* buf) +static int part_read_fn(intptr_t user, sector_t start, int count, void* buf) { return transfer_sectors(user, start, count, buf, true); } @@ -917,7 +917,7 @@ void sd_enable(bool on) (void) on; } -int sd_read_sectors(IF_MD(int sd_drive,) unsigned long start, int count, void *buf) +int sd_read_sectors(IF_MD(int sd_drive,) sector_t start, int count, void *buf) { #ifndef HAVE_MULTIDRIVE int sd_drive = 0; @@ -925,7 +925,7 @@ int sd_read_sectors(IF_MD(int sd_drive,) unsigned long start, int count, void *b return transfer_sectors(sd_map[sd_drive], start, count, buf, true); } -int sd_write_sectors(IF_MD(int sd_drive,) unsigned long start, int count, const void* buf) +int sd_write_sectors(IF_MD(int sd_drive,) sector_t start, int count, const void* buf) { #ifndef HAVE_MULTIDRIVE int sd_drive = 0; @@ -1039,7 +1039,7 @@ int mmc_spinup_time(void) return 0; } -int mmc_read_sectors(IF_MD(int mmc_drive,) unsigned long start, int count, void *buf) +int mmc_read_sectors(IF_MD(int mmc_drive,) sector_t start, int count, void *buf) { #ifndef HAVE_MULTIDRIVE int mmc_drive = 0; @@ -1047,7 +1047,7 @@ int mmc_read_sectors(IF_MD(int mmc_drive,) unsigned long start, int count, void return transfer_sectors(mmc_map[mmc_drive], start, count, buf, true); } -int mmc_write_sectors(IF_MD(int mmc_drive,) unsigned long start, int count, const void* buf) +int mmc_write_sectors(IF_MD(int mmc_drive,) sector_t start, int count, const void* buf) { #ifndef HAVE_MULTIDRIVE int mmc_drive = 0; -- cgit v1.2.3