execmd_read_page_sector(mtd, page_addr);
                        break;
                }
-               empty_fifo(flctl);
                if (flctl->page_size)
                        set_cmd_regs(mtd, command, (NAND_CMD_READSTART << 8)
                                | command);
                        break;
                }
 
-               empty_fifo(flctl);
                if (flctl->page_size) {
                        set_cmd_regs(mtd, command, (NAND_CMD_READSTART << 8)
                                | NAND_CMD_READ0);
                goto read_normal_exit;
 
        case NAND_CMD_READID:
-               empty_fifo(flctl);
                set_cmd_regs(mtd, command, command);
                set_addr(mtd, 0, 0);
 
                flctl->read_bytes = 4;
                writel(flctl->read_bytes, FLDTCNTR(flctl)); /* set read size */
+               empty_fifo(flctl);
                start_translation(flctl);
                read_datareg(flctl, 0); /* read and end */
                break;
 
 read_normal_exit:
        writel(flctl->read_bytes, FLDTCNTR(flctl));     /* set read size */
+       empty_fifo(flctl);
        start_translation(flctl);
        read_fiforeg(flctl, flctl->read_bytes, 0);
        wait_completion(flctl);