]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mtd: spi-nor-core: Consolidate non-uniform erase helpers for S25 and S28
authorTakahiro Kuwano <Takahiro.Kuwano@infineon.com>
Fri, 22 Dec 2023 05:45:59 +0000 (14:45 +0900)
committerJagan Teki <jagan@edgeble.ai>
Mon, 29 Jan 2024 14:04:17 +0000 (19:34 +0530)
s25_erase_non_uniform() and s28hx_t_erase_uniform() support hybrid sector
layout (32 x 4KB sectors overlaid at bottom address) and doing same thing.
Consolidate them into single helper named s25_s28_erase_non_uniform().

Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
drivers/mtd/spi/spi-nor-core.c
include/linux/mtd/spi-nor.h

index 9120f860242af5004b4b591c1768f838625c00c5..eed3459ba825a4268126a9ce1f45a226584d7040 100644 (file)
@@ -3374,7 +3374,7 @@ static int s25_quad_enable(struct spi_nor *nor)
        return 0;
 }
 
-static int s25_erase_non_uniform(struct spi_nor *nor, loff_t addr)
+static int s25_s28_erase_non_uniform(struct spi_nor *nor, loff_t addr)
 {
        /* Support 32 x 4KB sectors at bottom */
        return spansion_erase_non_uniform(nor, addr, SPINOR_OP_BE_4K_4B, 0,
@@ -3415,7 +3415,7 @@ static int s25_setup(struct spi_nor *nor, const struct flash_info *info,
        if (ret)
                return ret;
        if (!(cr & SPINOR_REG_CYPRESS_CFR3_UNISECT))
-               nor->erase = s25_erase_non_uniform;
+               nor->erase = s25_s28_erase_non_uniform;
 
        /*
         * For the multi-die package parts, the ready() hook is needed to check
@@ -3588,13 +3588,6 @@ static int spi_nor_cypress_octal_dtr_enable(struct spi_nor *nor)
        return 0;
 }
 
-static int s28hx_t_erase_non_uniform(struct spi_nor *nor, loff_t addr)
-{
-       /* Factory default configuration: 32 x 4 KiB sectors at bottom. */
-       return spansion_erase_non_uniform(nor, addr, SPINOR_OP_S28_SE_4K,
-                                         0, SZ_128K);
-}
-
 static int s28hx_t_setup(struct spi_nor *nor, const struct flash_info *info,
                         const struct spi_nor_flash_parameter *params)
 {
@@ -3623,7 +3616,7 @@ static int s28hx_t_setup(struct spi_nor *nor, const struct flash_info *info,
                return ret;
 
        if (!(buf & SPINOR_REG_CYPRESS_CFR3_UNISECT))
-               nor->erase = s28hx_t_erase_non_uniform;
+               nor->erase = s25_s28_erase_non_uniform;
 
        return spi_nor_default_setup(nor, info, params);
 }
index f9a55c8e740c98e4653d101a08ec754c40dddcd2..ebe38306a1d21304fa848fa39cfaa0514b12f8b3 100644 (file)
 /* For Cypress flash. */
 #define SPINOR_OP_RD_ANY_REG                   0x65    /* Read any register */
 #define SPINOR_OP_WR_ANY_REG                   0x71    /* Write any register */
-#define SPINOR_OP_S28_SE_4K                    0x21
 #define SPINOR_REG_CYPRESS_ARCFN               0x00000006
 #define SPINOR_REG_CYPRESS_STR1V               0x00800000
 #define SPINOR_REG_CYPRESS_CFR1V               0x00800002