summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/spi-nor/cadence-quadspi.c
diff options
context:
space:
mode:
authorIan Abbott <abbotti@mev.co.uk>2020-09-16 17:23:17 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2020-09-18 11:46:31 +0200
commit21297485a95c9127c862dd5efed5f69611442984 (patch)
tree79412ed28f6ce4cc4cb279a94b3c67c4d86203a6 /drivers/mtd/spi-nor/cadence-quadspi.c
parent5d2ae3b7ffb25cdc6bd4b36e039da296c992d00d (diff)
downloadbarebox-21297485a95c9127c862dd5efed5f69611442984.tar.gz
barebox-21297485a95c9127c862dd5efed5f69611442984.tar.xz
mtd: spi-nor: cadence: fix csqpi corruption in cqspi_set_protocol
cqspi_set_protocol() sets `inst_width`, `addr_width` and `data_width` for the previous chip-select in `cqspi->current_cs`, but that is initially set to -1, leading to corruption of other `cqspi->` members. Change it to set `inst_width`, `addr_width` and `data_width` for the chip-select associated with the `nor` parameter. Fixes: 5085d2ef3fbf ("mtd: spi-nor: cadence: add cqspi_set_protocol") Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mtd/spi-nor/cadence-quadspi.c')
-rw-r--r--drivers/mtd/spi-nor/cadence-quadspi.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/mtd/spi-nor/cadence-quadspi.c b/drivers/mtd/spi-nor/cadence-quadspi.c
index 11e4d236dd..2372482ac1 100644
--- a/drivers/mtd/spi-nor/cadence-quadspi.c
+++ b/drivers/mtd/spi-nor/cadence-quadspi.c
@@ -896,8 +896,12 @@ static int cqspi_set_protocol(struct spi_nor *nor, const int read)
{
struct cqspi_st *cqspi = nor->priv;
struct cqspi_flash_pdata *f_pdata;
+ int cs = cqspi_find_chipselect(nor);
- f_pdata = &cqspi->f_pdata[cqspi->current_cs];
+ if (cs < 0)
+ return -EINVAL;
+
+ f_pdata = &cqspi->f_pdata[cs];
f_pdata->inst_width = CQSPI_INST_TYPE_SINGLE;
f_pdata->addr_width = CQSPI_INST_TYPE_SINGLE;