@@ -356,6 +356,7 @@ static int mxic_spi_mem_exec_op(struct spi_mem *mem,
int nio = 1, i, ret;
u32 ss_ctrl;
u8 addr[8];
+ u8 cmd[2];
ret = mxic_spi_set_freq(mxic, mem->spi->max_speed_hz);
if (ret)
@@ -393,7 +394,10 @@ static int mxic_spi_mem_exec_op(struct spi_mem *mem,
writel(readl(mxic->regs + HC_CFG) | HC_CFG_MAN_CS_ASSERT,
mxic->regs + HC_CFG);
- ret = mxic_spi_data_xfer(mxic, &op->cmd.opcode, NULL, 1);
+ for (i = 0; i < op->cmd.nbytes; i++)
+ cmd[i] = op->cmd.opcode >> (8 * (op->cmd.nbytes - i - 1));
+
+ ret = mxic_spi_data_xfer(mxic, cmd, NULL, op->cmd.nbytes);
if (ret)
goto out;
spi-mem now supports 2-byte opcodes. Since we directly use the address of the opcode in data transfer, the result can be different based on whether the machine is little endian or big endian. So instead extract the individual bytes from the opcode before using them. Suggested-by: Boris Brezillon <boris.brezillon@collabora.com> Signed-off-by: Pratyush Yadav <p.yadav@ti.com> --- drivers/spi/spi-mxic.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)