This reverts commit c480ec2c45b221b2044c6268c9773e78fa47f305.
Signed-off-by: Marek Vasut <[email protected]>
---
Cc: Andre Przywara <[email protected]>
Cc: Ashok Reddy Soma <[email protected]>
Cc: Jagan Teki <[email protected]>
Cc: Michael Walle <[email protected]>
Cc: Michal Simek <[email protected]>
Cc: Patrice Chotard <[email protected]>
Cc: Patrick Delaunay <[email protected]>
Cc: Pratyush Yadav <[email protected]>
Cc: Quentin Schulz <[email protected]>
Cc: Sean Anderson <[email protected]>
Cc: Simon Glass <[email protected]>
Cc: Takahiro Kuwano <[email protected]>
Cc: Tom Rini <[email protected]>
Cc: Tudor Ambarus <[email protected]>
Cc: Venkatesh Yadav Abbarapu <[email protected]>
Cc: [email protected]
Cc: [email protected]
---
drivers/mtd/spi/spi-nor-core.c | 55 +++++-----------------------------
1 file changed, 8 insertions(+), 47 deletions(-)
diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
index f5c9868bbca..19bf5cfb4f0 100644
--- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c
@@ -956,32 +956,12 @@ static int clean_bar(struct spi_nor *nor)
static int write_bar(struct spi_nor *nor, u32 offset)
{
- u8 cmd, bank_sel, upage_curr;
+ u8 cmd, bank_sel;
int ret;
- struct mtd_info *mtd = &nor->mtd;
-
- /* Wait until previous write command is finished */
- if (spi_nor_wait_till_ready(nor))
- return 1;
-
- if (nor->flags & (SNOR_F_HAS_PARALLEL | SNOR_F_HAS_STACKED) &&
- mtd->size <= SZ_32M)
- return 0;
-
- if (mtd->size <= SZ_16M)
- return 0;
-
- offset = offset % (u32)mtd->size;
- bank_sel = offset >> 24;
- upage_curr = nor->spi->flags & SPI_XFER_U_PAGE;
-
- if (!(nor->flags & SNOR_F_HAS_STACKED) && bank_sel == nor->bank_curr)
- return 0;
- else if (upage_curr == nor->upage_prev && bank_sel == nor->bank_curr)
- return 0;
-
- nor->upage_prev = upage_curr;
+ bank_sel = offset / SZ_16M;
+ if (bank_sel == nor->bank_curr)
+ goto bar_end;
cmd = nor->bank_write_cmd;
write_enable(nor);
@@ -991,19 +971,15 @@ static int write_bar(struct spi_nor *nor, u32 offset)
return ret;
}
+bar_end:
nor->bank_curr = bank_sel;
-
- return write_disable(nor);
+ return nor->bank_curr;
}
static int read_bar(struct spi_nor *nor, const struct flash_info *info)
{
u8 curr_bank = 0;
int ret;
- struct mtd_info *mtd = &nor->mtd;
-
- if (mtd->size <= SZ_16M)
- return 0;
switch (JEDEC_MFR(info)) {
case SNOR_MFR_SPANSION:
@@ -1015,30 +991,15 @@ static int read_bar(struct spi_nor *nor, const struct
flash_info *info)
nor->bank_write_cmd = SPINOR_OP_WREAR;
}
- if (nor->flags & SNOR_F_HAS_PARALLEL)
- nor->spi->flags |= SPI_XFER_LOWER;
-
ret = nor->read_reg(nor, nor->bank_read_cmd,
- &curr_bank, 1);
+ &curr_bank, 1);
if (ret) {
debug("SF: fail to read bank addr register\n");
return ret;
}
nor->bank_curr = curr_bank;
- // Make sure both chips use the same BAR
- if (nor->flags & SNOR_F_HAS_PARALLEL) {
- write_enable(nor);
- ret = nor->write_reg(nor, nor->bank_write_cmd, &curr_bank, 1);
- if (ret)
- return ret;
-
- ret = write_disable(nor);
- if (ret)
- return ret;
- }
-
- return ret;
+ return 0;
}
#endif
--
2.45.2