Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mtd: spinand: winbond: Fix ODTR write VCR on W35NxxJW

In most scenarios this variant is actually unused (VCR is written in
SSDR mode), but we need to provide an octal variant. The address is 24
bits but is sent over 4 bytes MSB first. This means we need to shift the
register address by one extra byte for the address to be correct.

I didn't catch this initially because the volatile register region is
256 bytes wide, so the write-then-read procedure did work with the small
register addresses I was using at that time: 0 and 1.

Fixes: 44a2f49b9bdc ("mtd: spinand: winbond: W35N octal DTR support")
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>

+1 -1
+1 -1
drivers/mtd/nand/spi/winbond.c
··· 99 99 100 100 #define SPINAND_WINBOND_WRITE_VCR_8D_8D_8D(reg, buf) \ 101 101 SPI_MEM_OP(SPI_MEM_DTR_OP_RPT_CMD(0x81, 8), \ 102 - SPI_MEM_DTR_OP_ADDR(4, reg, 8), \ 102 + SPI_MEM_DTR_OP_ADDR(4, reg << 8, 8), \ 103 103 SPI_MEM_OP_NO_DUMMY, \ 104 104 SPI_MEM_DTR_OP_DATA_OUT(2, buf, 8)) 105 105