mtd: nand: pxa3xx: fix raw read when last_chunk_size == 0
authorBaruch Siach <baruch@tkos.co.il>
Sun, 5 Apr 2020 16:19:31 +0000 (19:19 +0300)
committerTom Rini <trini@konsulko.com>
Fri, 24 Apr 2020 19:17:14 +0000 (15:17 -0400)
Commit 6293b0361d9 ("mtd: nand: pxa3xx: add raw read support") added the
local data_len variable in handle_data_pio() to track read size, but
forgot to update the condition of drain_fifo() call. That happens to
work when the layout last_chunk_size != 0. But when last_chunk_size ==
0, drain_fifo() is not called to read the last chunk, which leads to
"Wait timeout!!!" error. Fix this.

Fixes: 6293b0361d9 ("mtd: nand: pxa3xx: add raw read support")
Cc: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
drivers/mtd/nand/raw/pxa3xx_nand.c

index 03f210bdb0b3f9bcc998505f370a98dfc14cc733..7e3346dfcc2d2b397f9163404f1e8aea4b826ec2 100644 (file)
@@ -639,7 +639,7 @@ static void handle_data_pio(struct pxa3xx_nand_info *info)
                                DIV_ROUND_UP(info->step_spare_size, 4));
                break;
        case STATE_PIO_READING:
-               if (info->step_chunk_size)
+               if (data_len)
                        drain_fifo(info,
                                   info->data_buff + info->data_buff_pos,
                                   DIV_ROUND_UP(data_len, 4));