32bit length for HPS-FPGA block transfer functions.

This commit is contained in:
sorgelig
2021-07-01 14:29:04 +08:00
parent d59fddf9e3
commit 30e978f488
5 changed files with 15 additions and 15 deletions

View File

@@ -162,11 +162,11 @@ void spi_n(uint8_t value, uint16_t cnt)
while (cnt--) spi_b(value);
}
void spi_read(uint8_t *addr, uint16_t len, int wide)
void spi_read(uint8_t *addr, uint32_t len, int wide)
{
if (wide)
{
uint16_t len16 = len >> 1;
uint32_t len16 = len >> 1;
uint16_t *a16 = (uint16_t*)addr;
while (len16--) *a16++ = spi_w(0);
if (len & 1) *((uint8_t*)a16) = spi_w(0);
@@ -177,11 +177,11 @@ void spi_read(uint8_t *addr, uint16_t len, int wide)
}
}
void spi_write(const uint8_t *addr, uint16_t len, int wide)
void spi_write(const uint8_t *addr, uint32_t len, int wide)
{
if (wide)
{
uint16_t len16 = len >> 1;
uint32_t len16 = len >> 1;
uint16_t *a16 = (uint16_t*)addr;
while (len16--) spi_w(*a16++);
if(len & 1) spi_w(*((uint8_t*)a16));

4
spi.h
View File

@@ -39,8 +39,8 @@ void spi32_b(uint32_t parm);
uint32_t spi32_w(uint32_t parm);
/* block transfer functions */
void spi_read(uint8_t *addr, uint16_t len, int wide);
void spi_write(const uint8_t *addr, uint16_t len, int wide);
void spi_read(uint8_t *addr, uint32_t len, int wide);
void spi_write(const uint8_t *addr, uint32_t len, int wide);
void spi_block_read(uint8_t *addr, int wide, int sz = 512);
void spi_block_write(const uint8_t *addr, int wide, int sz = 512);

View File

@@ -340,7 +340,7 @@ static void rom_finish(int send, uint32_t address, int index)
{
ProgressMessage("Sending", str, len - romlen[0], len);
uint16_t chunk = (romlen[0] > 4096) ? 4096 : romlen[0];
uint32_t chunk = (romlen[0] > 4096) ? 4096 : romlen[0];
user_io_file_tx_data(data, chunk);
romlen[0] -= chunk;

View File

@@ -1446,7 +1446,7 @@ void user_io_set_download(unsigned char enable, int addr)
DisableFpga();
}
void user_io_file_tx_data(const uint8_t *addr, uint16_t len)
void user_io_file_tx_data(const uint8_t *addr, uint32_t len)
{
EnableFpga();
spi8(FIO_FILE_TX_DAT);
@@ -1467,7 +1467,7 @@ void user_io_set_upload(unsigned char enable, int addr)
DisableFpga();
}
void user_io_file_rx_data(uint8_t *addr, uint16_t len)
void user_io_file_rx_data(uint8_t *addr, uint32_t len)
{
EnableFpga();
spi8(FIO_FILE_TX_DAT);
@@ -2036,7 +2036,7 @@ int user_io_file_tx_a(const char* name, uint16_t index)
if (use_progress) ProgressMessage(0, 0, 0, 0);
while (bytes2send)
{
uint16_t chunk = (bytes2send > sizeof(buf)) ? sizeof(buf) : bytes2send;
uint32_t chunk = (bytes2send > sizeof(buf)) ? sizeof(buf) : bytes2send;
FileReadAdv(&f, buf, chunk);
user_io_file_tx_data(buf, chunk);
@@ -2127,7 +2127,7 @@ int user_io_file_tx(const char* name, unsigned char index, char opensave, char m
uint32_t sz = fb.size;
while (sz)
{
uint16_t chunk = (sz > sizeof(buf)) ? sizeof(buf) : sz;
uint32_t chunk = (sz > sizeof(buf)) ? sizeof(buf) : sz;
FileReadAdv(&fb, buf, chunk);
user_io_file_tx_data(buf, chunk);
sz -= chunk;
@@ -2193,7 +2193,7 @@ int user_io_file_tx(const char* name, unsigned char index, char opensave, char m
uint32_t sz = fg.size;
while (sz)
{
uint16_t chunk = (sz > sizeof(buf)) ? sizeof(buf) : sz;
uint32_t chunk = (sz > sizeof(buf)) ? sizeof(buf) : sz;
FileReadAdv(&fg, buf, chunk);
user_io_file_tx_data(buf, chunk);
sz -= chunk;
@@ -2227,7 +2227,7 @@ int user_io_file_tx(const char* name, unsigned char index, char opensave, char m
{
while (dosend && bytes2send)
{
uint16_t chunk = (bytes2send > sizeof(buf)) ? sizeof(buf) : bytes2send;
uint32_t chunk = (bytes2send > sizeof(buf)) ? sizeof(buf) : bytes2send;
FileReadAdv(&f, buf, chunk);
if (is_snes() && is_snes_bs) snes_patch_bs_header(&f, buf);

View File

@@ -227,9 +227,9 @@ unsigned char user_io_ext_idx(char *, char*);
void user_io_set_index(unsigned char index);
void user_io_set_aindex(uint16_t index);
void user_io_set_download(unsigned char enable, int addr = 0);
void user_io_file_tx_data(const uint8_t *addr, uint16_t len);
void user_io_file_tx_data(const uint8_t *addr, uint32_t len);
void user_io_set_upload(unsigned char enable, int addr = 0);
void user_io_file_rx_data(uint8_t *addr, uint16_t len);
void user_io_file_rx_data(uint8_t *addr, uint32_t len);
void user_io_file_info(const char *ext);
int user_io_get_width();