OSDN Git Service

mtd: spi-nor: drop replaceable wait-till-ready function pointer
authorBrian Norris <computersforpeace@gmail.com>
Thu, 7 Aug 2014 01:17:00 +0000 (18:17 -0700)
committerBrian Norris <computersforpeace@gmail.com>
Wed, 5 Nov 2014 10:08:21 +0000 (02:08 -0800)
We don't need to expose a 'wait-till-ready' interface to drivers. Status
register polling should be handled by the core spi-nor.c library, and as
of now, I see no need to provide a special driver-specific hook for it.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Reviewed-by: Marek Vasut <marex@denx.de>
drivers/mtd/spi-nor/spi-nor.c
include/linux/mtd/spi-nor.h

index 93cd104..bfb67f1 100644 (file)
@@ -195,6 +195,10 @@ static int spi_nor_ready(struct spi_nor *nor)
        return sr && fsr;
 }
 
+/*
+ * Service routine to read status register until ready, or timeout occurs.
+ * Returns non-zero if error.
+ */
 static int spi_nor_wait_till_ready(struct spi_nor *nor)
 {
        unsigned long deadline;
@@ -216,15 +220,6 @@ static int spi_nor_wait_till_ready(struct spi_nor *nor)
 }
 
 /*
- * Service routine to read status register until ready, or timeout occurs.
- * Returns non-zero if error.
- */
-static int wait_till_ready(struct spi_nor *nor)
-{
-       return nor->wait_till_ready(nor);
-}
-
-/*
  * Erase the whole flash memory
  *
  * Returns 0 if successful, non-zero otherwise.
@@ -708,7 +703,7 @@ static int sst_write(struct mtd_info *mtd, loff_t to, size_t len,
 
                /* write one byte. */
                nor->write(nor, to, 1, retlen, buf);
-               ret = wait_till_ready(nor);
+               ret = spi_nor_wait_till_ready(nor);
                if (ret)
                        goto time_out;
        }
@@ -720,7 +715,7 @@ static int sst_write(struct mtd_info *mtd, loff_t to, size_t len,
 
                /* write two bytes. */
                nor->write(nor, to, 2, retlen, buf + actual);
-               ret = wait_till_ready(nor);
+               ret = spi_nor_wait_till_ready(nor);
                if (ret)
                        goto time_out;
                to += 2;
@@ -729,7 +724,7 @@ static int sst_write(struct mtd_info *mtd, loff_t to, size_t len,
        nor->sst_write_second = false;
 
        write_disable(nor);
-       ret = wait_till_ready(nor);
+       ret = spi_nor_wait_till_ready(nor);
        if (ret)
                goto time_out;
 
@@ -740,7 +735,7 @@ static int sst_write(struct mtd_info *mtd, loff_t to, size_t len,
                nor->program_opcode = SPINOR_OP_BP;
                nor->write(nor, to, 1, retlen, buf + actual);
 
-               ret = wait_till_ready(nor);
+               ret = spi_nor_wait_till_ready(nor);
                if (ret)
                        goto time_out;
                write_disable(nor);
@@ -786,7 +781,7 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t to, size_t len,
                        if (page_size > nor->page_size)
                                page_size = nor->page_size;
 
-                       ret = wait_till_ready(nor);
+                       ret = spi_nor_wait_till_ready(nor);
                        if (ret)
                                goto write_err;
 
@@ -812,7 +807,7 @@ static int macronix_quad_enable(struct spi_nor *nor)
        nor->cmd_buf[0] = val | SR_QUAD_EN_MX;
        nor->write_reg(nor, SPINOR_OP_WRSR, nor->cmd_buf, 1, 0);
 
-       if (wait_till_ready(nor))
+       if (spi_nor_wait_till_ready(nor))
                return 1;
 
        ret = read_sr(nor);
@@ -892,9 +887,6 @@ static int spi_nor_check(struct spi_nor *nor)
                return -EINVAL;
        }
 
-       if (!nor->wait_till_ready)
-               nor->wait_till_ready = spi_nor_wait_till_ready;
-
        return 0;
 }
 
index d691025..63aeccf 100644 (file)
@@ -144,7 +144,6 @@ enum spi_nor_option_flags {
  * @write_xfer:                [OPTIONAL] the writefundamental primitive
  * @read_reg:          [DRIVER-SPECIFIC] read out the register
  * @write_reg:         [DRIVER-SPECIFIC] write data to the register
- * @wait_till_ready:   [REPLACEABLE] wait till the NOR becomes ready
  * @read:              [DRIVER-SPECIFIC] read data from the SPI NOR
  * @write:             [DRIVER-SPECIFIC] write data to the SPI NOR
  * @erase:             [DRIVER-SPECIFIC] erase a sector of the SPI NOR
@@ -176,7 +175,6 @@ struct spi_nor {
        int (*read_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len);
        int (*write_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len,
                        int write_enable);
-       int (*wait_till_ready)(struct spi_nor *nor);
 
        int (*read)(struct spi_nor *nor, loff_t from,
                        size_t len, size_t *retlen, u_char *read_buf);