int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WREN, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_NO_DATA);
+               struct spi_mem_op op = SPI_NOR_WREN_OP;
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
        int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WRDI, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_NO_DATA);
+               struct spi_mem_op op = SPI_NOR_WRDI_OP;
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
        int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RDSR, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_IN(1, sr, 0));
+               struct spi_mem_op op = SPI_NOR_RDSR_OP(sr);
 
                if (nor->reg_proto == SNOR_PROTO_8_8_8_DTR) {
                        op.addr.nbytes = nor->params->rdsr_addr_nbytes;
        int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RDCR, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_IN(1, cr, 0));
+               struct spi_mem_op op = SPI_NOR_RDCR_OP(cr);
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
        int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(enable ?
-                                                 SPINOR_OP_EN4B :
-                                                 SPINOR_OP_EX4B,
-                                                 0),
-                                 SPI_MEM_OP_NO_ADDR,
-                                 SPI_MEM_OP_NO_DUMMY,
-                                 SPI_MEM_OP_NO_DATA);
+               struct spi_mem_op op = SPI_NOR_EN4B_EX4B_OP(enable);
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
        nor->bouncebuf[0] = enable << 7;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_BRWR, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_OUT(1, nor->bouncebuf, 0));
+               struct spi_mem_op op = SPI_NOR_BRWR_OP(nor->bouncebuf);
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
        nor->bouncebuf[0] = ear;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WREAR, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_OUT(1, nor->bouncebuf, 0));
+               struct spi_mem_op op = SPI_NOR_WREAR_OP(nor->bouncebuf);
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
                return ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_GBULK, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_NO_DATA);
+               struct spi_mem_op op = SPI_NOR_GBULK_OP;
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
                return ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WRSR, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_OUT(len, sr, 0));
+               struct spi_mem_op op = SPI_NOR_WRSR_OP(sr, len);
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
                return ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WRSR2, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_OUT(1, sr2, 0));
+               struct spi_mem_op op = SPI_NOR_WRSR2_OP(sr2);
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
        int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RDSR2, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_IN(1, sr2, 0));
+               struct spi_mem_op op = SPI_NOR_RDSR2_OP(sr2);
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
        dev_dbg(nor->dev, " %lldKiB\n", (long long)(nor->mtd.size >> 10));
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_CHIP_ERASE, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_NO_DATA);
+               struct spi_mem_op op = SPI_NOR_CHIP_ERASE_OP;
 
                spi_nor_spimem_setup_op(nor, &op, nor->write_proto);
 
 
        if (nor->spimem) {
                struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(nor->erase_opcode, 0),
-                                  SPI_MEM_OP_ADDR(nor->addr_width, addr, 0),
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_NO_DATA);
+                       SPI_NOR_SECTOR_ERASE_OP(nor->erase_opcode,
+                                               nor->addr_width, addr);
 
                spi_nor_spimem_setup_op(nor, &op, nor->write_proto);
 
 static int spi_nor_spimem_check_readop(struct spi_nor *nor,
                                       const struct spi_nor_read_command *read)
 {
-       struct spi_mem_op op = SPI_MEM_OP(SPI_MEM_OP_CMD(read->opcode, 0),
-                                         SPI_MEM_OP_ADDR(3, 0, 0),
-                                         SPI_MEM_OP_DUMMY(1, 0),
-                                         SPI_MEM_OP_DATA_IN(2, NULL, 0));
+       struct spi_mem_op op = SPI_NOR_READ_OP(read->opcode);
 
        spi_nor_spimem_setup_op(nor, &op, read->proto);
 
 static int spi_nor_spimem_check_pp(struct spi_nor *nor,
                                   const struct spi_nor_pp_command *pp)
 {
-       struct spi_mem_op op = SPI_MEM_OP(SPI_MEM_OP_CMD(pp->opcode, 0),
-                                         SPI_MEM_OP_ADDR(3, 0, 0),
-                                         SPI_MEM_OP_NO_DUMMY,
-                                         SPI_MEM_OP_DATA_OUT(2, NULL, 0));
+       struct spi_mem_op op = SPI_NOR_PP_OP(pp->opcode);
 
        spi_nor_spimem_setup_op(nor, &op, pp->proto);
 
        struct spi_mem_op op;
        int ret;
 
-       op = (struct spi_mem_op)SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_SRSTEN, 0),
-                       SPI_MEM_OP_NO_DUMMY,
-                       SPI_MEM_OP_NO_ADDR,
-                       SPI_MEM_OP_NO_DATA);
+       op = (struct spi_mem_op)SPINOR_SRSTEN_OP;
 
        spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
                return;
        }
 
-       op = (struct spi_mem_op)SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_SRST, 0),
-                       SPI_MEM_OP_NO_DUMMY,
-                       SPI_MEM_OP_NO_ADDR,
-                       SPI_MEM_OP_NO_DATA);
+       op = (struct spi_mem_op)SPINOR_SRST_OP;
 
        spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
 
                   SPI_MEM_OP_DUMMY(ndummy, 0),                         \
                   SPI_MEM_OP_DATA_IN(len, buf, 0))
 
+#define SPI_NOR_WREN_OP                                                        \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WREN, 0),                   \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_DATA)
+
+#define SPI_NOR_WRDI_OP                                                        \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WRDI, 0),                   \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_DATA)
+
+#define SPI_NOR_RDSR_OP(buf)                                           \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RDSR, 0),                   \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_IN(1, buf, 0))
+
+#define SPI_NOR_WRSR_OP(buf, len)                                      \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WRSR, 0),                   \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_OUT(len, buf, 0))
+
+#define SPI_NOR_RDSR2_OP(buf)                                          \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RDSR2, 0),                  \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_OUT(1, buf, 0))
+
+#define SPI_NOR_WRSR2_OP(buf)                                          \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WRSR2, 0),                  \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_OUT(1, buf, 0))
+
+#define SPI_NOR_RDCR_OP(buf)                                           \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RDCR, 0),                   \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_IN(1, buf, 0))
+
+#define SPI_NOR_EN4B_EX4B_OP(enable)                                   \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(enable ? SPINOR_OP_EN4B : SPINOR_OP_EX4B, 0), \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_DATA)
+
+#define SPI_NOR_BRWR_OP(buf)                                           \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_BRWR, 0),                   \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_OUT(1, buf, 0))
+
+#define SPI_NOR_WREAR_OP(buf)                                          \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WREAR, 0),                  \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_OUT(1, buf, 0))
+
+#define SPI_NOR_GBULK_OP                                               \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_GBULK, 0),                  \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_DATA)
+
+#define SPI_NOR_CHIP_ERASE_OP                                          \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_CHIP_ERASE, 0),             \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_DATA)
+
+#define SPI_NOR_SECTOR_ERASE_OP(opcode, addr_width, addr)              \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(opcode, 0),                           \
+                  SPI_MEM_OP_ADDR(addr_width, addr, 0),                \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_DATA)
+
+#define SPI_NOR_READ_OP(opcode)                                                \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(opcode, 0),                           \
+                  SPI_MEM_OP_ADDR(3, 0, 0),                            \
+                  SPI_MEM_OP_DUMMY(1, 0),                              \
+                  SPI_MEM_OP_DATA_IN(2, NULL, 0))
+
+#define SPI_NOR_PP_OP(opcode)                                          \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(opcode, 0),                           \
+                  SPI_MEM_OP_ADDR(3, 0, 0),                            \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_OUT(2, NULL, 0))
+
+#define SPINOR_SRSTEN_OP                                               \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_SRSTEN, 0),                 \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DATA)
+
+#define SPINOR_SRST_OP                                                 \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_SRST, 0),                   \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DATA)
+
 enum spi_nor_option_flags {
        SNOR_F_HAS_SR_TB        = BIT(0),
        SNOR_F_NO_OP_CHIP_ERASE = BIT(1),
 
                   SPI_MEM_OP_NO_DUMMY,                                 \
                   SPI_MEM_OP_DATA_OUT(ndata, buf, 0))
 
+#define MICRON_ST_RDFSR_OP(buf)                                                \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RDFSR, 0),                  \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_IN(1, buf, 0))
+
+#define MICRON_ST_CLFSR_OP                                             \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_CLFSR, 0),                  \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_DATA)
+
 static int micron_st_nor_octal_dtr_en(struct spi_nor *nor)
 {
        struct spi_mem_op op;
        int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RDFSR, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_IN(1, fsr, 0));
+               struct spi_mem_op op = MICRON_ST_RDFSR_OP(fsr);
 
                if (nor->reg_proto == SNOR_PROTO_8_8_8_DTR) {
                        op.addr.nbytes = nor->params->rdsr_addr_nbytes;
        int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_CLFSR, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_NO_DATA);
+               struct spi_mem_op op = MICRON_ST_CLFSR_OP;
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
 
                   SPI_MEM_OP_NO_DUMMY,                                 \
                   SPI_MEM_OP_DATA_OUT(ndata, buf, 0))
 
+#define CYPRESS_NOR_RD_ANY_REG_OP(naddr, addr, 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_DATA_IN(1, buf, 0))
+
+#define SPANSION_CLSR_OP                                               \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_CLSR, 0),                   \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_NO_DATA)
+
 static int cypress_nor_octal_dtr_en(struct spi_nor *nor)
 {
        struct spi_mem_op op;
         * CFR3V[4] and set the correct size.
         */
        struct spi_mem_op op =
-               SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RD_ANY_REG, 1),
-                          SPI_MEM_OP_ADDR(3, SPINOR_REG_CYPRESS_CFR3V, 1),
-                          SPI_MEM_OP_NO_DUMMY,
-                          SPI_MEM_OP_DATA_IN(1, nor->bouncebuf, 1));
+               CYPRESS_NOR_RD_ANY_REG_OP(3, SPINOR_REG_CYPRESS_CFR3V,
+                                         nor->bouncebuf);
        int ret;
 
+       spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
+
        ret = spi_mem_exec_op(nor->spimem, &op);
        if (ret)
                return ret;
        int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_CLSR, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_NO_DATA);
+               struct spi_mem_op op = SPANSION_CLSR_OP;
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);
 
 
 #define XSR_PAGESIZE           BIT(0)  /* Page size in Po2 or Linear */
 #define XSR_RDY                        BIT(7)  /* Ready */
 
+#define XILINX_RDSR_OP(buf)                                            \
+       SPI_MEM_OP(SPI_MEM_OP_CMD(XILINX_OP_RDSR, 0),                   \
+                  SPI_MEM_OP_NO_ADDR,                                  \
+                  SPI_MEM_OP_NO_DUMMY,                                 \
+                  SPI_MEM_OP_DATA_IN(1, buf, 0))
+
 #define S3AN_INFO(_jedec_id, _n_sectors, _page_size)                   \
                .id = {                                                 \
                        ((_jedec_id) >> 16) & 0xff,                     \
        int ret;
 
        if (nor->spimem) {
-               struct spi_mem_op op =
-                       SPI_MEM_OP(SPI_MEM_OP_CMD(XILINX_OP_RDSR, 0),
-                                  SPI_MEM_OP_NO_ADDR,
-                                  SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_IN(1, sr, 0));
+               struct spi_mem_op op = XILINX_RDSR_OP(sr);
 
                spi_nor_spimem_setup_op(nor, &op, nor->reg_proto);