Merge tag 'mfd-fixes-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
[linux-2.6-microblaze.git] / drivers / spi / spi-mtk-nor.c
index 7bc302b..b08d8e9 100644 (file)
@@ -195,7 +195,7 @@ static int mtk_nor_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op)
                }
        }
 
-       len = MTK_NOR_PRG_MAX_SIZE - sizeof(op->cmd.opcode) - op->addr.nbytes -
+       len = MTK_NOR_PRG_MAX_SIZE - op->cmd.nbytes - op->addr.nbytes -
              op->dummy.nbytes;
        if (op->data.nbytes > len)
                op->data.nbytes = len;
@@ -211,6 +211,12 @@ static bool mtk_nor_supports_op(struct spi_mem *mem,
        if (op->cmd.buswidth != 1)
                return false;
 
+       /* DTR ops not supported. */
+       if (op->cmd.dtr || op->addr.dtr || op->dummy.dtr || op->data.dtr)
+               return false;
+       if (op->cmd.nbytes != 1)
+               return false;
+
        if ((op->addr.nbytes == 3) || (op->addr.nbytes == 4)) {
                if ((op->data.dir == SPI_MEM_DATA_IN) && mtk_nor_match_read(op))
                        return true;
@@ -219,7 +225,7 @@ static bool mtk_nor_supports_op(struct spi_mem *mem,
                               (op->dummy.buswidth == 0) &&
                               (op->data.buswidth == 1);
        }
-       len = sizeof(op->cmd.opcode) + op->addr.nbytes + op->dummy.nbytes;
+       len = op->cmd.nbytes + op->addr.nbytes + op->dummy.nbytes;
        if ((len > MTK_NOR_PRG_MAX_SIZE) ||
            ((op->data.nbytes) && (len == MTK_NOR_PRG_MAX_SIZE)))
                return false;