|
|
|
@ -127,7 +127,7 @@ static int spi_flash_bank(struct spi_flash *flash, u32 offset) |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
return bank_sel; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -321,8 +321,9 @@ int spi_flash_read_common(struct spi_flash *flash, const u8 *cmd, |
|
|
|
|
int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset, |
|
|
|
|
size_t len, void *data) |
|
|
|
|
{ |
|
|
|
|
u8 *cmd, cmdsz, bank_sel = 0; |
|
|
|
|
u8 *cmd, cmdsz; |
|
|
|
|
u32 remain_len, read_len; |
|
|
|
|
int bank_sel = 0; |
|
|
|
|
int ret = -1; |
|
|
|
|
|
|
|
|
|
/* Handle memory-mapped SPI */ |
|
|
|
@ -346,13 +347,9 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset, |
|
|
|
|
cmd[0] = flash->read_cmd; |
|
|
|
|
while (len) { |
|
|
|
|
#ifdef CONFIG_SPI_FLASH_BAR |
|
|
|
|
bank_sel = offset / SPI_FLASH_16MB_BOUN; |
|
|
|
|
|
|
|
|
|
ret = spi_flash_cmd_bankaddr_write(flash, bank_sel); |
|
|
|
|
if (ret) { |
|
|
|
|
debug("SF: fail to set bank%d\n", bank_sel); |
|
|
|
|
bank_sel = spi_flash_bank(flash, offset); |
|
|
|
|
if (bank_sel < 0) |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
remain_len = (SPI_FLASH_16MB_BOUN * (bank_sel + 1)) - offset; |
|
|
|
|
if (len < remain_len) |
|
|
|
|