This patch adds random output enable command support in IFC nand controller driver. This command implements change read column (05h-E0h).
Signed-off-by: Ronak Desai <ronak.de...@rockwellcollins.com> Signed-off-by: Matthew Weber <matthew.we...@rockwellcollins.com> --- drivers/mtd/nand/fsl_ifc_nand.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/drivers/mtd/nand/fsl_ifc_nand.c b/drivers/mtd/nand/fsl_ifc_nand.c index 7001cbd..b4e05c6 100644 --- a/drivers/mtd/nand/fsl_ifc_nand.c +++ b/drivers/mtd/nand/fsl_ifc_nand.c @@ -460,10 +460,11 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command, /* * although currently it's 8 bytes for READID, we always read - * the maximum 256 bytes(for PARAM) + * the maximum 8192 bytes(for PARAM) supported by IFC controller + * as extended page may be available for some NAND devices. */ - ifc_out32(&ifc->ifc_nand.nand_fbcr, 256); - ctrl->read_bytes = 256; + ifc_out32(&ifc->ifc_nand.nand_fbcr, 0); /* Read whole page */ + ctrl->read_bytes = 8192; /* Maximum supported page by IFC */ set_addr(mtd, 0, 0, 0); fsl_ifc_run_command(mtd); @@ -596,6 +597,29 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command, fsl_ifc_run_command(mtd); return; + case NAND_CMD_RNDOUT: { + __le16 Tccs = 0; + chip->onfi_version ? (Tccs = chip->onfi_params.t_ccs) + : (Tccs = chip->jedec_params.t_ccs); + ifc_out32(&ifc->ifc_nand.nand_fcr0, + (IFC_FIR_OP_CW0 << IFC_NAND_FIR0_OP0_SHIFT) | + (IFC_FIR_OP_CA0 << IFC_NAND_FIR0_OP1_SHIFT) | + (IFC_FIR_OP_CMD1 << IFC_NAND_FIR0_OP2_SHIFT) | + (IFC_FIR_OP_NWAIT << IFC_NAND_FIR0_OP3_SHIFT)); + + ifc_out32(&ifc->ifc_nand.nand_fcr0, + (NAND_CMD_RNDOUT << IFC_NAND_FCR0_CMD0_SHIFT) | + (NAND_CMD_RNDOUTSTART << IFC_NAND_FCR0_CMD1_SHIFT)); + + /* Wait for minimum change column set-up time. But it does not harm + * to wait more time, so calculated based on 333.3 MHz input IFC clock + */ + ifc_out32(&ifc->ifc_nand.ncfgr, (0xFF & (le16_to_cpu(Tccs)/3))); + set_addr(mtd, column, 0, 0); + fsl_ifc_run_command(mtd); + return; + } + default: printf("%s: error, unsupported command 0x%x.\n", __func__, command); -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot