|
@@ -448,21 +448,19 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command,
|
|
|
out_be32(&ifc->ifc_nand.nand_fir1,
|
|
|
(IFC_FIR_OP_CW1 << IFC_NAND_FIR1_OP5_SHIFT));
|
|
|
|
|
|
- if (column >= mtd->writesize) {
|
|
|
- /* OOB area --> READOOB */
|
|
|
- column -= mtd->writesize;
|
|
|
- nand_fcr0 |= NAND_CMD_READOOB <<
|
|
|
- IFC_NAND_FCR0_CMD0_SHIFT;
|
|
|
- ctrl->oob = 1;
|
|
|
- } else if (column < 256) {
|
|
|
- /* First 256 bytes --> READ0 */
|
|
|
- nand_fcr0 |= NAND_CMD_READ0 << FCR_CMD0_SHIFT;
|
|
|
- } else {
|
|
|
- /* Second 256 bytes --> READ1 */
|
|
|
- nand_fcr0 |= NAND_CMD_READ1 << FCR_CMD0_SHIFT;
|
|
|
- }
|
|
|
+ if (column >= mtd->writesize)
|
|
|
+ nand_fcr0 |=
|
|
|
+ NAND_CMD_READOOB << IFC_NAND_FCR0_CMD0_SHIFT;
|
|
|
+ else
|
|
|
+ nand_fcr0 |=
|
|
|
+ NAND_CMD_READ0 << IFC_NAND_FCR0_CMD0_SHIFT;
|
|
|
}
|
|
|
|
|
|
+ if (column >= mtd->writesize) {
|
|
|
+ /* OOB area --> READOOB */
|
|
|
+ column -= mtd->writesize;
|
|
|
+ ctrl->oob = 1;
|
|
|
+ }
|
|
|
out_be32(&ifc->ifc_nand.nand_fcr0, nand_fcr0);
|
|
|
set_addr(mtd, column, page_addr, ctrl->oob);
|
|
|
return;
|
|
@@ -471,7 +469,8 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command,
|
|
|
/* PAGEPROG reuses all of the setup from SEQIN and adds the length */
|
|
|
case NAND_CMD_PAGEPROG:
|
|
|
if (ctrl->oob)
|
|
|
- out_be32(&ifc->ifc_nand.nand_fbcr, ctrl->index);
|
|
|
+ out_be32(&ifc->ifc_nand.nand_fbcr,
|
|
|
+ ctrl->index - ctrl->column);
|
|
|
else
|
|
|
out_be32(&ifc->ifc_nand.nand_fbcr, 0);
|
|
|
|