Commit 6152dd15283dbc3bb65ff02d6faad7ef9ef7f7bc
1 parent
a707b3db56
Exists in
master
and in
53 other branches
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); |