OSDN Git Service

mtd: spi-nor: unify read opcode variants with ST SPI FSM
authorBrian Norris <computersforpeace@gmail.com>
Wed, 9 Apr 2014 02:16:49 +0000 (19:16 -0700)
committerBrian Norris <computersforpeace@gmail.com>
Mon, 14 Apr 2014 18:23:00 +0000 (11:23 -0700)
serial_flash_cmds.h defines our opcodes a little differently. Let's
borrow its naming, since it's borrowed from the SFDP standard, and it's
more extensible.

This prepares us for merging serial_flash_cmds.h and spi-nor.h opcode
listing.

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

index 2977f02..b41bbbc 100644 (file)
@@ -294,12 +294,12 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q)
        lut_base = SEQID_QUAD_READ * 4;
 
        if (q->nor_size <= SZ_16M) {
-               cmd = SPINOR_OP_QUAD_READ;
+               cmd = SPINOR_OP_READ_1_1_4;
                addrlen = ADDR24BIT;
                dummy = 8;
        } else {
                /* use the 4-byte address */
-               cmd = SPINOR_OP_QUAD_READ;
+               cmd = SPINOR_OP_READ_1_1_4;
                addrlen = ADDR32BIT;
                dummy = 8;
        }
@@ -388,7 +388,7 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q)
 static int fsl_qspi_get_seqid(struct fsl_qspi *q, u8 cmd)
 {
        switch (cmd) {
-       case SPINOR_OP_QUAD_READ:
+       case SPINOR_OP_READ_1_1_4:
                return SEQID_QUAD_READ;
        case SPINOR_OP_WREN:
                return SEQID_WREN;
index 1716f3c..d6f44d5 100644 (file)
@@ -1014,16 +1014,16 @@ int spi_nor_scan(struct spi_nor *nor, const struct spi_device_id *id,
        /* Default commands */
        switch (nor->flash_read) {
        case SPI_NOR_QUAD:
-               nor->read_opcode = SPINOR_OP_QUAD_READ;
+               nor->read_opcode = SPINOR_OP_READ_1_1_4;
                break;
        case SPI_NOR_DUAL:
-               nor->read_opcode = SPINOR_OP_DUAL_READ;
+               nor->read_opcode = SPINOR_OP_READ_1_1_2;
                break;
        case SPI_NOR_FAST:
-               nor->read_opcode = SPINOR_OP_FAST_READ;
+               nor->read_opcode = SPINOR_OP_READ_FAST;
                break;
        case SPI_NOR_NORMAL:
-               nor->read_opcode = SPINOR_OP_NORM_READ;
+               nor->read_opcode = SPINOR_OP_READ;
                break;
        default:
                dev_err(dev, "No Read opcode defined\n");
@@ -1041,16 +1041,16 @@ int spi_nor_scan(struct spi_nor *nor, const struct spi_device_id *id,
                        /* Dedicated 4-byte command set */
                        switch (nor->flash_read) {
                        case SPI_NOR_QUAD:
-                               nor->read_opcode = SPINOR_OP_QUAD_READ_4B;
+                               nor->read_opcode = SPINOR_OP_READ4_1_1_4;
                                break;
                        case SPI_NOR_DUAL:
-                               nor->read_opcode = SPINOR_OP_DUAL_READ_4B;
+                               nor->read_opcode = SPINOR_OP_READ4_1_1_2;
                                break;
                        case SPI_NOR_FAST:
-                               nor->read_opcode = SPINOR_OP_FAST_READ_4B;
+                               nor->read_opcode = SPINOR_OP_READ4_FAST;
                                break;
                        case SPI_NOR_NORMAL:
-                               nor->read_opcode = SPINOR_OP_NORM_READ_4B;
+                               nor->read_opcode = SPINOR_OP_READ4;
                                break;
                        }
                        nor->program_opcode = SPINOR_OP_PP_4B;
index f1fe1a6..5324184 100644 (file)
 #ifndef __LINUX_MTD_SPI_NOR_H
 #define __LINUX_MTD_SPI_NOR_H
 
+/*
+ * Note on opcode nomenclature: some opcodes have a format like
+ * SPINOR_OP_FUNCTION{4,}_x_y_z. The numbers x, y, and z stand for the number
+ * of I/O lines used for the opcode, address, and data (respectively). The
+ * FUNCTION has an optional suffix of '4', to represent an opcode which
+ * requires a 4-byte (32-bit) address.
+ */
+
 /* Flash opcodes. */
 #define SPINOR_OP_WREN         0x06    /* Write enable */
 #define SPINOR_OP_RDSR         0x05    /* Read status register */
 #define SPINOR_OP_WRSR         0x01    /* Write status register 1 byte */
-#define SPINOR_OP_NORM_READ    0x03    /* Read data bytes (low frequency) */
-#define SPINOR_OP_FAST_READ    0x0b    /* Read data bytes (high frequency) */
-#define SPINOR_OP_DUAL_READ    0x3b    /* Read data bytes (Dual SPI) */
-#define SPINOR_OP_QUAD_READ    0x6b    /* Read data bytes (Quad SPI) */
+#define SPINOR_OP_READ         0x03    /* Read data bytes (low frequency) */
+#define SPINOR_OP_READ_FAST    0x0b    /* Read data bytes (high frequency) */
+#define SPINOR_OP_READ_1_1_2   0x3b    /* Read data bytes (Dual SPI) */
+#define SPINOR_OP_READ_1_1_4   0x6b    /* Read data bytes (Quad SPI) */
 #define SPINOR_OP_PP           0x02    /* Page program (up to 256 bytes) */
 #define SPINOR_OP_BE_4K                0x20    /* Erase 4KiB block */
 #define SPINOR_OP_BE_4K_PMC    0xd7    /* Erase 4KiB block on PMC chips */
 #define SPINOR_OP_RDCR         0x35    /* Read configuration register */
 
 /* 4-byte address opcodes - used on Spansion and some Macronix flashes. */
-#define SPINOR_OP_NORM_READ_4B 0x13    /* Read data bytes (low frequency) */
-#define SPINOR_OP_FAST_READ_4B 0x0c    /* Read data bytes (high frequency) */
-#define SPINOR_OP_DUAL_READ_4B 0x3c    /* Read data bytes (Dual SPI) */
-#define SPINOR_OP_QUAD_READ_4B 0x6c    /* Read data bytes (Quad SPI) */
+#define SPINOR_OP_READ4                0x13    /* Read data bytes (low frequency) */
+#define SPINOR_OP_READ4_FAST   0x0c    /* Read data bytes (high frequency) */
+#define SPINOR_OP_READ4_1_1_2  0x3c    /* Read data bytes (Dual SPI) */
+#define SPINOR_OP_READ4_1_1_4  0x6c    /* Read data bytes (Quad SPI) */
 #define SPINOR_OP_PP_4B                0x12    /* Page program (up to 256 bytes) */
 #define SPINOR_OP_SE_4B                0xdc    /* Sector erase (usually 64KiB) */