Commit 6152dd15283dbc3bb65ff02d6faad7ef9ef7f7bc

Authored by Jagannadha Sutradharudu Teki
1 parent a707b3db56

sf_ops: Unify bank_sel calculation code

Unified the bank_sel calculation code for erase and
write ops.

Signed-off-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>

Showing 1 changed file with 20 additions and 16 deletions Side-by-side Diff

drivers/mtd/spi/sf_ops.c
... ... @@ -59,6 +59,22 @@
59 59  
60 60 return 0;
61 61 }
  62 +
  63 +static int spi_flash_bank(struct spi_flash *flash, u32 offset)
  64 +{
  65 + u8 bank_sel;
  66 + int ret;
  67 +
  68 + bank_sel = offset / SPI_FLASH_16MB_BOUN;
  69 +
  70 + ret = spi_flash_cmd_bankaddr_write(flash, bank_sel);
  71 + if (ret) {
  72 + debug("SF: fail to set bank%d\n", bank_sel);
  73 + return ret;
  74 + }
  75 +
  76 + return 0;
  77 +}
62 78 #endif
63 79  
64 80 int spi_flash_cmd_wait_ready(struct spi_flash *flash, unsigned long timeout)
65 81  
... ... @@ -162,15 +178,9 @@
162 178 cmd[0] = flash->erase_cmd;
163 179 while (len) {
164 180 #ifdef CONFIG_SPI_FLASH_BAR
165   - u8 bank_sel;
166   -
167   - bank_sel = offset / SPI_FLASH_16MB_BOUN;
168   -
169   - ret = spi_flash_cmd_bankaddr_write(flash, bank_sel);
170   - if (ret) {
171   - debug("SF: fail to set bank%d\n", bank_sel);
  181 + ret = spi_flash_bank(flash, offset);
  182 + if (ret < 0)
172 183 return ret;
173   - }
174 184 #endif
175 185 spi_flash_addr(offset, cmd);
176 186  
177 187  
... ... @@ -203,15 +213,9 @@
203 213 cmd[0] = CMD_PAGE_PROGRAM;
204 214 for (actual = 0; actual < len; actual += chunk_len) {
205 215 #ifdef CONFIG_SPI_FLASH_BAR
206   - u8 bank_sel;
207   -
208   - bank_sel = offset / SPI_FLASH_16MB_BOUN;
209   -
210   - ret = spi_flash_cmd_bankaddr_write(flash, bank_sel);
211   - if (ret) {
212   - debug("SF: fail to set bank%d\n", bank_sel);
  216 + ret = spi_flash_bank(flash, offset);
  217 + if (ret < 0)
213 218 return ret;
214   - }
215 219 #endif
216 220 byte_addr = offset % page_size;
217 221 chunk_len = min(len - actual, page_size - byte_addr);