Skip to content

Commit 43f173e

Browse files
westeribroonie
authored andcommitted
spi: intel: Take possible chip address into account in intel_spi_read/write_reg()
The SPI-NOR operation can have non-zero chip address as well so take this into account in intel_spi_read/write_reg(). Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Link: https://lore.kernel.org/r/20221025064623.22808-4-mika.westerberg@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 8a9a784 commit 43f173e

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

drivers/spi/spi-intel.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,11 +457,12 @@ static int intel_spi_read_reg(struct intel_spi *ispi, const struct spi_mem *mem,
457457
const struct intel_spi_mem_op *iop,
458458
const struct spi_mem_op *op)
459459
{
460+
u32 addr = intel_spi_chip_addr(ispi, mem) + op->addr.val;
460461
size_t nbytes = op->data.nbytes;
461462
u8 opcode = op->cmd.opcode;
462463
int ret;
463464

464-
writel(intel_spi_chip_addr(ispi, mem), ispi->base + FADDR);
465+
writel(addr, ispi->base + FADDR);
465466

466467
if (ispi->swseq_reg)
467468
ret = intel_spi_sw_cycle(ispi, opcode, nbytes,
@@ -479,6 +480,7 @@ static int intel_spi_write_reg(struct intel_spi *ispi, const struct spi_mem *mem
479480
const struct intel_spi_mem_op *iop,
480481
const struct spi_mem_op *op)
481482
{
483+
u32 addr = intel_spi_chip_addr(ispi, mem) + op->addr.val;
482484
size_t nbytes = op->data.nbytes;
483485
u8 opcode = op->cmd.opcode;
484486
int ret;
@@ -522,7 +524,7 @@ static int intel_spi_write_reg(struct intel_spi *ispi, const struct spi_mem *mem
522524
if (opcode == SPINOR_OP_WRDI)
523525
return 0;
524526

525-
writel(intel_spi_chip_addr(ispi, mem), ispi->base + FADDR);
527+
writel(addr, ispi->base + FADDR);
526528

527529
/* Write the value beforehand */
528530
ret = intel_spi_write_block(ispi, op->data.buf.out, nbytes);

0 commit comments

Comments
 (0)