int s5c73m3_spi_write(const u8 *addr, const int len, const int txSize) { int i, j = 0; int ret = 0; u8 paddingData[32]; u32 count = len/txSize; u32 extra = len%txSize; memset(paddingData, 0, sizeof(paddingData)); for (i = 0 ; i < count ; i++) { ret = spi_xmit(&addr[j], txSize); j += txSize; if (ret < 0) goto exit_err; } if (extra) { ret = spi_xmit(&addr[j], extra); if (ret < 0) goto exit_err; } ret = spi_xmit(paddingData, 32); if (ret < 0) goto exit_err; exit_err: return ret; }
static int bootloader_write(struct lte_modem_bootloader *loader, const char *addr, const int len) { int i; int ret = 0; unsigned char lenbuf[4]; if (loader->xmit_status == XMIT_LOADER_READY) { memcpy(lenbuf, &len, ARRAY_SIZE(lenbuf)); ret = spi_xmit(loader, lenbuf, ARRAY_SIZE(lenbuf)); if (ret < 0) return ret; msleep(LEN_XMIT_DELEY); } for (i = 0 ; i < len / MAX_XMIT_SIZE ; i++) { ret = spi_xmit(loader, addr + i * MAX_XMIT_SIZE, MAX_XMIT_SIZE); if (ret < 0) return ret; } ret = spi_xmit(loader, addr + i * MAX_XMIT_SIZE , len % MAX_XMIT_SIZE); return 0; }
int s5c73m3_spi_write(struct s5c73m3 *state, const void *addr, const unsigned int len, const unsigned int tx_size) { struct spi_device *spi_dev = state->spi_dev; u32 count = len / tx_size; u32 extra = len % tx_size; unsigned int i, j = 0; u8 padding[32]; int r = 0; memset(padding, 0, sizeof(padding)); for (i = 0; i < count; i++) { r = spi_xmit(spi_dev, (void *)addr + j, tx_size, SPI_DIR_TX); if (r < 0) return r; j += tx_size; } if (extra > 0) { r = spi_xmit(spi_dev, (void *)addr + j, extra, SPI_DIR_TX); if (r < 0) return r; } return spi_xmit(spi_dev, padding, sizeof(padding), SPI_DIR_TX); }
void read_multi ( BYTE src, /* Read from.. FLASH/EEPROM/SIGNATURE */ DWORD adr, /* Address */ DWORD cnt, /* Number of bytes to read */ BYTE *buff /* Read buffer */ ) { BYTE cmd, spicmd[5]; DWORD n, devadr=0; if (src == FLASH && Device->FlashSize > (128*1024) && (adr & 0x1FFFF) == 0) { /* Load extended address if needed */ #if AVRSPX spi_transmit( C_LD_ADRX, /* Extended address command */ 0, /* 0 */ (BYTE)(devadr >> 17), /* address extended */ 0); /* 0 */ #else spi_xmit(C_LD_ADRX); /* Extended address command */ spi_xmit(0); /* 0 */ spi_xmit((BYTE)(adr >> 17)); /* address extended */ spi_xmit(0); /* 0 */ #endif }
int s5c73m3_spi_write(const u8 *addr, const int len, const int txSize) { int i, j = 0; int ret = 0; u8 paddingData[8]; u32 count = len/txSize; u32 extra = len%txSize; cam_err("Entered\n"); cam_err("count = %d extra = %d\n", count, extra); memset(paddingData, 0, sizeof(paddingData)); for (i = 0 ; i < count ; i++) { ret = spi_xmit(&addr[j], txSize); j += txSize; if (ret < 0) { cam_err("failed to write spi_xmit\n"); goto exit_err; } } if (extra) { ret = spi_xmit(&addr[j], extra); if (ret < 0) { cam_err("failed to write spi_xmit\n"); goto exit_err; } } for (i = 0; i < 4; i++) { memset(paddingData, 0, sizeof(paddingData)); ret = spi_xmit(paddingData, 8); if (ret < 0) { cam_err("failed to write spi_xmit\n"); goto exit_err; } } cam_err("Finish!!\n"); exit_err: return ret; }
int s5c73m3_spi_read(struct s5c73m3 *state, void *addr, const unsigned int len, const unsigned int tx_size) { struct spi_device *spi_dev = state->spi_dev; u32 count = len / tx_size; u32 extra = len % tx_size; unsigned int i, j = 0; int r = 0; for (i = 0; i < count; i++) { r = spi_xmit(spi_dev, addr + j, tx_size, SPI_DIR_RX); if (r < 0) return r; j += tx_size; } if (extra > 0) return spi_xmit(spi_dev, addr + j, extra, SPI_DIR_RX); return 0; }
int m10mo_spi_write(struct spi_device *spi, const u8 *addr, const int len, const int txSize) { int i, j = 0; int ret = 0; u8 paddingData[8]; u32 count = len / txSize; u32 extra = len % txSize; dev_dbg(&spi->dev, "Entered to spi write with count = %d extra = %d\n", count, extra); for (i = 0 ; i < count ; i++) { ret = spi_xmit(spi, &addr[j], txSize); j += txSize; if (ret < 0) { dev_err(&spi->dev, "failed to write spi_xmit\n"); goto exit_err; } } if (extra) { ret = spi_xmit(spi, &addr[j], extra); if (ret < 0) { dev_err(&spi->dev, "failed to write spi_xmit\n"); goto exit_err; } } for (i = 0; i < 4; i++) { memset(paddingData, 0, sizeof(paddingData)); ret = spi_xmit(spi, paddingData, 8); if (ret < 0) { dev_err(&spi->dev, "failed to write spi_xmit\n"); goto exit_err; } } dev_dbg(&spi->dev, "FW upload done!!\n"); exit_err: return ret; }
int drime4_spi_write(const u8 *addr, const int len, const int txSize) { int i, j = 0; int ret = 0; #if 0 u8 paddingData[32]; #endif u32 count = len/txSize; u32 extra = len%txSize; #if 0 memset(paddingData, 0, sizeof(paddingData)); #endif for (i = 0 ; i < count ; i++) { ret = spi_xmit(&addr[j], txSize); j += txSize; if (ret < 0) goto exit_err; } if (extra) { ret = spi_xmit(&addr[j], extra); if (ret < 0) goto exit_err; } #if 0 ret = spi_xmit(paddingData, 32); if (ret < 0) goto exit_err; #endif exit_err: return ret; }