{
        if (iop->mem_op.cmd.nbytes != op->cmd.nbytes ||
            iop->mem_op.cmd.buswidth != op->cmd.buswidth ||
-           iop->mem_op.cmd.dtr != op->cmd.dtr ||
-           iop->mem_op.cmd.opcode != op->cmd.opcode)
+           iop->mem_op.cmd.dtr != op->cmd.dtr)
                return false;
 
        if (iop->mem_op.addr.nbytes != op->addr.nbytes ||
        const struct intel_spi_mem_op *iop;
 
        for (iop = ispi->mem_ops; iop->mem_op.cmd.opcode; iop++) {
-               if (intel_spi_cmp_mem_op(iop, op))
-                       break;
+               if (iop->mem_op.cmd.opcode == op->cmd.opcode &&
+                   intel_spi_cmp_mem_op(iop, op))
+                       return iop;
        }
 
-       return iop->mem_op.cmd.opcode ? iop : NULL;
+       return NULL;
 }
 
 static bool intel_spi_supports_mem_op(struct spi_mem *mem,