Re: [PATCH v2 10/22] mtd: spi-nor: Rework write_sr()

From: Tudor.Ambarus
Date: Fri Oct 04 2019 - 06:03:46 EST


Hi, John,

On 10/04/2019 12:39 PM, John Garry wrote:
> External E-Mail
>
>
> On 24/09/2019 08:46, Tudor.Ambarus@xxxxxxxxxxxxx wrote:
>> +}
>> +
>> +/**
>> + * spi_nor_write_sr() - Write the Status Register.
>> + * @nor:ÂÂÂ pointer to 'struct spi_nor'.
>> + * @sr:ÂÂÂÂÂÂÂ buffer to write to the Status Register.
>> + * @len:ÂÂÂ number of bytes to write to the Status Register.
>> + *
>> + * Return: 0 on success, -errno otherwise.
>> Â */
>> -static int write_sr(struct spi_nor *nor, u8 val)
>> +static int spi_nor_write_sr(struct spi_nor *nor, const u8 *sr, size_t len)
>> Â{
>> -ÂÂÂ nor->bouncebuf[0] = val;
>> +ÂÂÂ int ret;
>> +
>> +ÂÂÂ ret = spi_nor_write_enable(nor);
>> +ÂÂÂ if (ret)
>> +ÂÂÂÂÂÂÂ return ret;
>> +
>
> Hi Tudor,
>
>> ÂÂÂÂ if (nor->spimem) {
>> ÂÂÂÂÂÂÂÂ struct spi_mem_op op =
>> ÂÂÂÂÂÂÂÂÂÂÂÂ SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WRSR, 1),
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ SPI_MEM_OP_NO_ADDR,
>> ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ SPI_MEM_OP_NO_DUMMY,
>> -ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ SPI_MEM_OP_DATA_IN(1, nor->bouncebuf, 1));
>
> This be SPI_MEM_OP_DATA_OUT() in the current mainline code also, right?

In v5.4-rc1 this is defined as SPI_MEM_OP_DATA_IN, so the Mainline code should
fail. This looks like a bug. I didn't noticed it when doing the patch.

>
> I'm testing my under development driver on top of v5.4-rc1, and flash_lock -u is broken.

It's not clear to me, does flash_lock fail with my patches on top of v5.4-rc1?
Or it fails when testing v5.4-rc1?

Can you test v5.4-rc1 and see if flash_lock works on you flash or not?

Please specify which flash do you use, and which controller.

Thanks for testing this!
ta