All of lore.kernel.org
 help / color / mirror / Atom feed
From: Damien Le Moal <damien.lemoal@opensource.wdc.com>
To: Niklas Cassel <Niklas.Cassel@wdc.com>,
	Jagan Teki <jagan@amarulasolutions.com>
Cc: Pratyush Yadav <p.yadav@ti.com>,
	Sean Anderson <seanga2@gmail.com>,
	"u-boot@lists.denx.de" <u-boot@lists.denx.de>
Subject: Re: [PATCH] spi: dw: Fix broken dw_spi_mem_ops()
Date: Thu, 10 Feb 2022 08:18:37 +0900	[thread overview]
Message-ID: <ea8ef426-dc8d-386b-2250-eac58bb1ea77@opensource.wdc.com> (raw)
In-Reply-To: <20220208225236.1058824-1-Niklas.Cassel@wdc.com>

On 2/9/22 07:52, Niklas Cassel wrote:
> From: Niklas Cassel <niklas.cassel@wdc.com>
> 
> The driver is currently using sizeof(op->cmd.opcode) in the op_len
> calculation. Commit d15de623013c ("spi: spi-mem: allow specifying a
> command's extension") changed op->cmd.opcode from one byte to two.
> 
> Instead, a new struct member op->cmd.nbytes is supposed to be used.
> For regular commands op->cmd.nbytes will be one.
> 
> Commit d15de623013c ("spi: spi-mem: allow specifying a command's
> extension") did update some drivers that overload the generic mem_ops()
> implementation, but forgot to update dw_spi_mem_ops().
> 
> Calculating op_len incorrectly causes dw_spi_mem_ops() to misbehave, since
> op_len is used to determine how many bytes that should be read/written.
> 
> On the canaan k210 board, this causes the probe of the SPI flash to fail.
> 
> Fix the op_len calculation in dw_spi_mem_ops(). Doing so results in
> working SPI flash on the canaan k210 board.
> 
> Fixes: d15de623013c ("spi: spi-mem: allow specifying a command's extension")
> Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
> ---
>  drivers/spi/designware_spi.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/spi/designware_spi.c b/drivers/spi/designware_spi.c
> index 742121140d..fc22f540fe 100644
> --- a/drivers/spi/designware_spi.c
> +++ b/drivers/spi/designware_spi.c
> @@ -572,7 +572,7 @@ static int dw_spi_exec_op(struct spi_slave *slave, const struct spi_mem_op *op)
>  	int pos, i, ret = 0;
>  	struct udevice *bus = slave->dev->parent;
>  	struct dw_spi_priv *priv = dev_get_priv(bus);
> -	u8 op_len = sizeof(op->cmd.opcode) + op->addr.nbytes + op->dummy.nbytes;
> +	u8 op_len = op->cmd.nbytes + op->addr.nbytes + op->dummy.nbytes;
>  	u8 op_buf[op_len];
>  	u32 cr0;
>  

Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>


-- 
Damien Le Moal
Western Digital Research

  parent reply	other threads:[~2022-02-10 12:38 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-08 22:52 [PATCH] spi: dw: Fix broken dw_spi_mem_ops() Niklas Cassel
2022-02-09 11:31 ` Pratyush Yadav
2022-02-09 23:18 ` Damien Le Moal [this message]
2022-02-24  8:11 ` Jagan Teki
2022-03-01 11:33   ` Niklas Cassel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ea8ef426-dc8d-386b-2250-eac58bb1ea77@opensource.wdc.com \
    --to=damien.lemoal@opensource.wdc.com \
    --cc=Niklas.Cassel@wdc.com \
    --cc=jagan@amarulasolutions.com \
    --cc=p.yadav@ti.com \
    --cc=seanga2@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.