]> git.sur5r.net Git - u-boot/blobdiff - drivers/mtd/spi/sf_ops.c
Merge branch 'master' of git://git.denx.de/u-boot-mmc
[u-boot] / drivers / mtd / spi / sf_ops.c
index 2396e2272fe0abe4aba46ce7f9f15a304c6e4f6f..108665f4415f60433ccefa596b1c39e3836d5017 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright (C) 2010 Reinhard Meyer, EMK Elektronik
  * Copyright (C) 2013 Jagannadha Sutradharudu Teki, Xilinx Inc.
  *
- * Licensed under the GPL-2 or later.
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -59,6 +59,22 @@ static int spi_flash_cmd_bankaddr_write(struct spi_flash *flash, u8 bank_sel)
 
        return 0;
 }
+
+static int spi_flash_bank(struct spi_flash *flash, u32 offset)
+{
+       u8 bank_sel;
+       int ret;
+
+       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);
+               return ret;
+       }
+
+       return 0;
+}
 #endif
 
 int spi_flash_cmd_wait_ready(struct spi_flash *flash, unsigned long timeout)
@@ -162,15 +178,9 @@ int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len)
        cmd[0] = flash->erase_cmd;
        while (len) {
 #ifdef CONFIG_SPI_FLASH_BAR
-               u8 bank_sel;
-
-               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);
+               ret = spi_flash_bank(flash, offset);
+               if (ret < 0)
                        return ret;
-               }
 #endif
                spi_flash_addr(offset, cmd);
 
@@ -203,15 +213,9 @@ int spi_flash_cmd_write_ops(struct spi_flash *flash, u32 offset,
        cmd[0] = CMD_PAGE_PROGRAM;
        for (actual = 0; actual < len; actual += chunk_len) {
 #ifdef CONFIG_SPI_FLASH_BAR
-               u8 bank_sel;
-
-               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);
+               ret = spi_flash_bank(flash, offset);
+               if (ret < 0)
                        return ret;
-               }
 #endif
                byte_addr = offset % page_size;
                chunk_len = min(len - actual, page_size - byte_addr);
@@ -288,7 +292,7 @@ int spi_flash_cmd_read_ops(struct spi_flash *flash, u32 offset,
                        return ret;
                }
 #endif
-               remain_len = (SPI_FLASH_16MB_BOUN * (bank_sel + 1) - offset);
+               remain_len = (SPI_FLASH_16MB_BOUN * (bank_sel + 1)) - offset;
                if (len < remain_len)
                        read_len = len;
                else