]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mtd: spinand: make spinand_{wait,otp_page_size} global
authorMartin Kurbanov <mmkurbanov@salutedevices.com>
Mon, 10 Feb 2025 14:34:15 +0000 (17:34 +0300)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 10 Feb 2025 14:52:59 +0000 (15:52 +0100)
Change the functions spinand_wait() and spinand_otp_page_size() from
static to global so that SPI NAND flash drivers don't duplicate it.

Signed-off-by: Martin Kurbanov <mmkurbanov@salutedevices.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/spi/core.c
drivers/mtd/nand/spi/otp.c
include/linux/mtd/spinand.h

index 0b9bf321afb631411a2380308ce8d768448035c4..dc5b11fa7a1583ea0bae22b0d01e0b0d88c34f21 100644 (file)
@@ -534,10 +534,20 @@ static int spinand_erase_op(struct spinand_device *spinand,
        return spi_mem_exec_op(spinand->spimem, &op);
 }
 
-static int spinand_wait(struct spinand_device *spinand,
-                       unsigned long initial_delay_us,
-                       unsigned long poll_delay_us,
-                       u8 *s)
+/**
+ * spinand_wait() - Poll memory device status
+ * @spinand: the spinand device
+ * @initial_delay_us: delay in us before starting to poll
+ * @poll_delay_us: time to sleep between reads in us
+ * @s: the pointer to variable to store the value of REG_STATUS
+ *
+ * This function polls a status register (REG_STATUS) and returns when
+ * the STATUS_READY bit is 0 or when the timeout has expired.
+ *
+ * Return: 0 on success, a negative error code otherwise.
+ */
+int spinand_wait(struct spinand_device *spinand, unsigned long initial_delay_us,
+                unsigned long poll_delay_us, u8 *s)
 {
        struct spi_mem_op op = SPINAND_GET_FEATURE_OP(REG_STATUS,
                                                      spinand->scratchbuf);
index 172e62e481cf0a211ffc50de3507c1eed13b25a0..af9a7a69fc0f52e11d82950dc4906f2204a6d97a 100644 (file)
@@ -8,14 +8,23 @@
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/spinand.h>
 
-static size_t spinand_otp_size(struct spinand_device *spinand,
-                              const struct spinand_otp_layout *layout)
+/**
+ * spinand_otp_page_size() - Get SPI-NAND OTP page size
+ * @spinand: the spinand device
+ *
+ * Return: the OTP page size.
+ */
+size_t spinand_otp_page_size(struct spinand_device *spinand)
 {
        struct nand_device *nand = spinand_to_nand(spinand);
-       size_t otp_pagesize = nanddev_page_size(nand) +
-                             nanddev_per_page_oobsize(nand);
 
-       return layout->npages * otp_pagesize;
+       return nanddev_page_size(nand) + nanddev_per_page_oobsize(nand);
+}
+
+static size_t spinand_otp_size(struct spinand_device *spinand,
+                              const struct spinand_otp_layout *layout)
+{
+       return layout->npages * spinand_otp_page_size(spinand);
 }
 
 /**
index f4c965ae2f655eb0ec4ca11f0a5efb5aa2b4d792..597d28339d153c89b848a5cb0a84612377294961 100644 (file)
@@ -676,12 +676,16 @@ int spinand_upd_cfg(struct spinand_device *spinand, u8 mask, u8 val);
 int spinand_write_reg_op(struct spinand_device *spinand, u8 reg, u8 val);
 int spinand_select_target(struct spinand_device *spinand, unsigned int target);
 
+int spinand_wait(struct spinand_device *spinand, unsigned long initial_delay_us,
+                unsigned long poll_delay_us, u8 *s);
+
 int spinand_read_page(struct spinand_device *spinand,
                      const struct nand_page_io_req *req);
 
 int spinand_write_page(struct spinand_device *spinand,
                       const struct nand_page_io_req *req);
 
+size_t spinand_otp_page_size(struct spinand_device *spinand);
 size_t spinand_fact_otp_size(struct spinand_device *spinand);
 size_t spinand_user_otp_size(struct spinand_device *spinand);