lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 533/779] mtd: spi-nor: fix spi_nor_spimem_setup_op() call in spi_nor_erase_{sector,chip}()
    Date
    From: Patrice Chotard <patrice.chotard@foss.st.com>

    [ Upstream commit f8cd9f632f4415b1e8838bdca8ab42cfb37a6584 ]

    For erase operations, reg_proto must be used as indicated in
    struct spi_nor description in spi-nor.h.

    This issue was found when DT property spi-tx-bus-width is set to 4.
    In this case the spi_mem_op->addr.buswidth is set to 4 for erase command
    which is not correct.

    Tested on stm32mp157c-ev1 board with mx66l51235f spi-nor.

    Fixes: 0e30f47232ab ("mtd: spi-nor: add support for DTR protocol")
    Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
    [ta: use nor->reg_proto in spi_nor_controller_ops_erase()]
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Tested-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Reviewed-by: Pratyush Yadav <p.yadav@ti.com>
    Link: https://lore.kernel.org/r/20220629133013.3382393-1-patrice.chotard@foss.st.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/mtd/spi-nor/core.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
    index d97cdbc2b9de..eb5d7b3d1860 100644
    --- a/drivers/mtd/spi-nor/core.c
    +++ b/drivers/mtd/spi-nor/core.c
    @@ -177,7 +177,7 @@ static int spi_nor_controller_ops_write_reg(struct spi_nor *nor, u8 opcode,

    static int spi_nor_controller_ops_erase(struct spi_nor *nor, loff_t offs)
    {
    - if (spi_nor_protocol_is_dtr(nor->write_proto))
    + if (spi_nor_protocol_is_dtr(nor->reg_proto))
    return -EOPNOTSUPP;

    return nor->controller_ops->erase(nor, offs);
    @@ -1195,7 +1195,7 @@ static int spi_nor_erase_chip(struct spi_nor *nor)
    SPI_MEM_OP_NO_DUMMY,
    SPI_MEM_OP_NO_DATA);

    - spi_nor_spimem_setup_op(nor, &op, nor->write_proto);
    + spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);

    ret = spi_mem_exec_op(nor->spimem, &op);
    } else {
    @@ -1340,7 +1340,7 @@ int spi_nor_erase_sector(struct spi_nor *nor, u32 addr)
    SPI_MEM_OP_NO_DUMMY,
    SPI_MEM_OP_NO_DATA);

    - spi_nor_spimem_setup_op(nor, &op, nor->write_proto);
    + spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);

    return spi_mem_exec_op(nor->spimem, &op);
    } else if (nor->controller_ops->erase) {
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-15 21:29    [W:2.525 / U:0.772 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site