cmd[3] = addr >> 0;
}
+static int spi_flash_bank(struct spi_flash *flash, u32 addr, u8 *bank_sel)
+{
+ *bank_sel = addr / SPI_FLASH_16MB_BOUN;
+ if ((flash->spi->is_dual == 1) && (flash->spi->u_page == 1))
+ *bank_sel -= ((flash->size / 2) / SPI_FLASH_16MB_BOUN);
+
+ return spi_flash_cmd_bankaddr_write(flash, *bank_sel, flash->idcode0);
+}
+
static int spi_flash_read_write(struct spi_slave *spi,
const u8 *cmd, size_t cmd_len,
const u8 *data_out, u8 *data_in,
if (flash->spi->is_dual == 2)
offset /= 2;
- bank_sel = offset / SPI_FLASH_16MB_BOUN;
- if ((flash->spi->is_dual == 1) && (flash->spi->u_page == 1))
- bank_sel -= ((flash->size / 2) / SPI_FLASH_16MB_BOUN);
-
- ret = spi_flash_cmd_bankaddr_write(flash,
- bank_sel, flash->idcode0);
+ ret = spi_flash_bank(flash, offset, &bank_sel);
if (ret) {
debug("SF: fail to set bank%d\n", bank_sel);
return ret;
if (flash->spi->is_dual == 2)
offset /= 2;
- bank_sel = offset / SPI_FLASH_16MB_BOUN;
- if ((flash->spi->is_dual == 1) && (flash->spi->u_page == 1))
- bank_sel -= ((flash->size / 2) / SPI_FLASH_16MB_BOUN);
-
- ret = spi_flash_cmd_bankaddr_write(flash,
- bank_sel, flash->idcode0);
+ ret = spi_flash_bank(flash, offset, &bank_sel);
if (ret) {
debug("SF: fail to set bank%d\n", bank_sel);
return ret;
flash->spi->u_page = 0;
}
- bank_sel = offset / SPI_FLASH_16MB_BOUN;
- if (((flash->spi->is_dual == 1) && (flash->spi->u_page == 1)) ||
- (flash->spi->is_dual == 2))
- bank_sel -= ((flash->size / 2) / SPI_FLASH_16MB_BOUN);
-
- ret = spi_flash_cmd_bankaddr_write(flash,
- bank_sel, flash->idcode0);
+ ret = spi_flash_bank(flash, offset, &bank_sel);
if (ret) {
debug("SF: fail to set bank%d\n", bank_sel);
return ret;