mtd: spi-nor: spansion: Make RD_ANY_REG_OP macro take number of dummy bytes
authorTakahiro Kuwano <Takahiro.Kuwano@infineon.com>
Thu, 2 Mar 2023 07:35:06 +0000 (16:35 +0900)
committerTudor Ambarus <tudor.ambarus@linaro.org>
Fri, 17 Mar 2023 09:11:03 +0000 (11:11 +0200)
Currently Read Any Register op is used to read volatile registers without
any dummy cycles, but the op requires dummy cycles depending on register
type (volatiler or non-volatile), device family, and device configuration.
Add 'ndummy' argument to RD_ANY_REG_OP macro to support other use cases.

Suggested-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
Link: https://lore.kernel.org/r/03756e9e3ac41d2016a71d2afb702398dd0b19ed.1677557525.git.Takahiro.Kuwano@infineon.com
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
drivers/mtd/spi-nor/spansion.c

index 12a256c..9faab29 100644 (file)
                   SPI_MEM_OP_NO_DUMMY,                                 \
                   SPI_MEM_OP_DATA_OUT(ndata, buf, 0))
 
-#define CYPRESS_NOR_RD_ANY_REG_OP(naddr, addr, buf)                    \
+#define CYPRESS_NOR_RD_ANY_REG_OP(naddr, addr, ndummy, buf)            \
        SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RD_ANY_REG, 0),             \
                   SPI_MEM_OP_ADDR(naddr, addr, 0),                     \
-                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DUMMY(ndummy, 0),                         \
                   SPI_MEM_OP_DATA_IN(1, buf, 0))
 
 #define SPANSION_CLSR_OP                                               \
@@ -148,7 +148,7 @@ static int cypress_nor_quad_enable_volatile(struct spi_nor *nor)
 
        op = (struct spi_mem_op)
                CYPRESS_NOR_RD_ANY_REG_OP(addr_mode_nbytes,
-                                         SPINOR_REG_CYPRESS_CFR1V,
+                                         SPINOR_REG_CYPRESS_CFR1V, 0,
                                          nor->bouncebuf);
 
        ret = spi_nor_read_any_reg(nor, &op, nor->reg_proto);
@@ -173,7 +173,7 @@ static int cypress_nor_quad_enable_volatile(struct spi_nor *nor)
        /* Read back and check it. */
        op = (struct spi_mem_op)
                CYPRESS_NOR_RD_ANY_REG_OP(addr_mode_nbytes,
-                                         SPINOR_REG_CYPRESS_CFR1V,
+                                         SPINOR_REG_CYPRESS_CFR1V, 0,
                                          nor->bouncebuf);
        ret = spi_nor_read_any_reg(nor, &op, nor->reg_proto);
        if (ret)
@@ -202,7 +202,7 @@ static int cypress_nor_set_page_size(struct spi_nor *nor)
 {
        struct spi_mem_op op =
                CYPRESS_NOR_RD_ANY_REG_OP(nor->params->addr_mode_nbytes,
-                                         SPINOR_REG_CYPRESS_CFR3V,
+                                         SPINOR_REG_CYPRESS_CFR3V, 0,
                                          nor->bouncebuf);
        int ret;