mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
mtd: spinand: winbond: Create a helper to detect the need for the HS bit
The logic is not complex but might be reused to cleanup a bit the section by moving it to a dedicated helper. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
This commit is contained in:
parent
240e65cb44
commit
ca842a62fe
|
|
@ -421,30 +421,33 @@ static int w25n0xjw_set_sr4_hs(struct spinand_device *spinand, bool enable)
|
|||
return spinand_write_reg_op(spinand, W25N0XJW_SR4, sr4);
|
||||
}
|
||||
|
||||
/*
|
||||
* SDR dual and quad I/O operations over 104MHz require the HS bit to
|
||||
* enable a few more dummy cycles.
|
||||
*/
|
||||
static bool w25n0xjw_op_needs_hs(const struct spi_mem_op *op)
|
||||
{
|
||||
if (op->cmd.dtr || op->addr.dtr || op->dummy.dtr || op->data.dtr)
|
||||
return false;
|
||||
else if (op->cmd.buswidth != 1 || op->addr.buswidth == 1)
|
||||
return false;
|
||||
else if (op->max_freq && op->max_freq <= 104 * HZ_PER_MHZ)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static int w25n0xjw_hs_cfg(struct spinand_device *spinand,
|
||||
enum spinand_bus_interface iface)
|
||||
{
|
||||
const struct spi_mem_op *op;
|
||||
bool hs;
|
||||
|
||||
if (iface != SSDR)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/*
|
||||
* SDR dual and quad I/O operations over 104MHz require the HS bit to
|
||||
* enable a few more dummy cycles.
|
||||
*/
|
||||
op = spinand->op_templates->read_cache;
|
||||
if (op->cmd.dtr || op->addr.dtr || op->dummy.dtr || op->data.dtr)
|
||||
hs = false;
|
||||
else if (op->cmd.buswidth != 1 || op->addr.buswidth == 1)
|
||||
hs = false;
|
||||
else if (op->max_freq && op->max_freq <= 104 * HZ_PER_MHZ)
|
||||
hs = false;
|
||||
else
|
||||
hs = true;
|
||||
|
||||
return w25n0xjw_set_sr4_hs(spinand, hs);
|
||||
return w25n0xjw_set_sr4_hs(spinand, w25n0xjw_op_needs_hs(op));
|
||||
}
|
||||
|
||||
static int w35n0xjw_write_vcr(struct spinand_device *spinand, u8 reg, u8 val)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user