mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 21:25:19 -05:00
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
This commit is contained in:
parent
9ff308a589
commit
15e5237469
49 changed files with 629 additions and 435 deletions
|
|
@ -84,7 +84,7 @@ struct nand_param
|
|||
*
|
||||
*/
|
||||
|
||||
static volatile unsigned long nand_address;
|
||||
static volatile sector_t nand_address;
|
||||
#define NAND_DATAPORT (nand_address)
|
||||
#define NAND_ADDRPORT (nand_address+0x10000)
|
||||
#define NAND_COMMPORT (nand_address+0x08000)
|
||||
|
|
@ -111,7 +111,7 @@ static volatile unsigned long nand_address;
|
|||
static struct nand_info* chip_info = NULL;
|
||||
static struct nand_info* banks[4];
|
||||
static unsigned int nr_banks = 1;
|
||||
static unsigned long bank_size;
|
||||
static sector_t bank_size;
|
||||
static struct nand_param internal_param;
|
||||
static struct mutex nand_mtx;
|
||||
#ifdef USE_DMA
|
||||
|
|
@ -282,7 +282,7 @@ static void jz_rs_correct(unsigned char *dat, int idx, int mask)
|
|||
/*
|
||||
* Read oob
|
||||
*/
|
||||
static int jz_nand_read_oob(unsigned long page_addr, unsigned char *buf, int size)
|
||||
static int jz_nand_read_oob(sector_t page_addr, unsigned char *buf, int size)
|
||||
{
|
||||
struct nand_param *nandp = &internal_param;
|
||||
int page_size, row_cycle, bus_width;
|
||||
|
|
@ -338,7 +338,7 @@ static int jz_nand_read_oob(unsigned long page_addr, unsigned char *buf, int siz
|
|||
* page - page number within a block: 0, 1, 2, ...
|
||||
* dst - pointer to target buffer
|
||||
*/
|
||||
static int jz_nand_read_page(unsigned long page_addr, unsigned char *dst)
|
||||
static int jz_nand_read_page(sector_t page_addr, unsigned char *dst)
|
||||
{
|
||||
struct nand_param *nandp = &internal_param;
|
||||
int page_size, oob_size;
|
||||
|
|
@ -611,7 +611,7 @@ int nand_init(void)
|
|||
return res;
|
||||
}
|
||||
|
||||
static inline int read_sector(unsigned long start, unsigned int count,
|
||||
static inline int read_sector(sector_t start, unsigned int count,
|
||||
void* buf, unsigned int chip_size)
|
||||
{
|
||||
register int ret;
|
||||
|
|
@ -627,14 +627,14 @@ static inline int read_sector(unsigned long start, unsigned int count,
|
|||
return ret;
|
||||
}
|
||||
|
||||
int nand_read_sectors(IF_MD(int drive,) unsigned long start, int count, void* buf)
|
||||
int nand_read_sectors(IF_MD(int drive,) sector_t start, int count, void* buf)
|
||||
{
|
||||
#ifdef HAVE_MULTIDRIVE
|
||||
(void)drive;
|
||||
#endif
|
||||
int ret = 0;
|
||||
unsigned int i, _count, chip_size = chip_info->page_size;
|
||||
unsigned long _start;
|
||||
sector_t _start;
|
||||
|
||||
logf("start");
|
||||
mutex_lock(&nand_mtx);
|
||||
|
|
@ -670,7 +670,7 @@ int nand_read_sectors(IF_MD(int drive,) unsigned long start, int count, void* bu
|
|||
}
|
||||
|
||||
/* TODO */
|
||||
int nand_write_sectors(IF_MD(int drive,) unsigned long start, int count, const void* buf)
|
||||
int nand_write_sectors(IF_MD(int drive,) sector_t start, int count, const void* buf)
|
||||
{
|
||||
(void)start;
|
||||
(void)count;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue