mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-16 14:08:45 +00:00
mtd: spi-nor-core: Read status by Read Any Register
The spansion_sr_ready() reads status register 1 by Read Any Register commnad. This function is called from Flash specific hook with die address and dummy cycles to support multi-die package parts from Spansion/Cypress. Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com> Reviewed-by: Pratyush Yadav <p.yadav@ti.com> Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
This commit is contained in:
parent
24b1e2c690
commit
d2d79895da
2 changed files with 30 additions and 0 deletions
|
@ -669,6 +669,35 @@ static int set_4byte(struct spi_nor *nor, const struct flash_info *info,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPI_FLASH_SPANSION
|
||||
/*
|
||||
* Read status register 1 by using Read Any Register command to support multi
|
||||
* die package parts.
|
||||
*/
|
||||
static int spansion_sr_ready(struct spi_nor *nor, u32 addr_base, u8 dummy)
|
||||
{
|
||||
u32 reg_addr = addr_base + SPINOR_REG_ADDR_STR1V;
|
||||
u8 sr;
|
||||
int ret;
|
||||
|
||||
ret = spansion_read_any_reg(nor, reg_addr, dummy, &sr);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (sr & (SR_E_ERR | SR_P_ERR)) {
|
||||
if (sr & SR_E_ERR)
|
||||
dev_dbg(nor->dev, "Erase Error occurred\n");
|
||||
else
|
||||
dev_dbg(nor->dev, "Programming Error occurred\n");
|
||||
|
||||
nor->write_reg(nor, SPINOR_OP_CLSR, NULL, 0);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
return !(sr & SR_WIP);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int spi_nor_sr_ready(struct spi_nor *nor)
|
||||
{
|
||||
int sr = read_sr(nor);
|
||||
|
|
|
@ -125,6 +125,7 @@
|
|||
#define SPINOR_OP_CLSR 0x30 /* Clear status register 1 */
|
||||
#define SPINOR_OP_RDAR 0x65 /* Read any register */
|
||||
#define SPINOR_OP_WRAR 0x71 /* Write any register */
|
||||
#define SPINOR_REG_ADDR_STR1V 0x00800000
|
||||
#define SPINOR_REG_ADDR_CFR1V 0x00800002
|
||||
|
||||
/* Used for Micron flashes only. */
|
||||
|
|
Loading…
Add table
Reference in a new issue