Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 59fdd5b9 authored by Prabhakar Kushwaha's avatar Prabhakar Kushwaha Committed by David Woodhouse
Browse files

mtd: IFC NAND: Add support of ONFI NAND flash



  - Fix NAND_CMD_READID command for ONFI detect.
  - Add NAND_CMD_PARAM command to read the ONFI parameter page.

Signed-off-by: default avatarPrabhakar Kushwaha <prabhakar@freescale.com>
Acked-by: default avatarScott Wood <scottwood@freescale.com>
Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@linux.intel.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent 287558fe
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -375,21 +375,31 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command,

		return;

	/* READID must read all 8 possible bytes */
	case NAND_CMD_READID:
	case NAND_CMD_PARAM: {
		int timing = IFC_FIR_OP_RB;
		if (command == NAND_CMD_PARAM)
			timing = IFC_FIR_OP_RBCD;

		out_be32(&ifc->ifc_nand.nand_fir0,
				(IFC_FIR_OP_CMD0 << IFC_NAND_FIR0_OP0_SHIFT) |
				(IFC_FIR_OP_UA  << IFC_NAND_FIR0_OP1_SHIFT) |
				(IFC_FIR_OP_RB << IFC_NAND_FIR0_OP2_SHIFT));
				(timing << IFC_NAND_FIR0_OP2_SHIFT));
		out_be32(&ifc->ifc_nand.nand_fcr0,
				NAND_CMD_READID << IFC_NAND_FCR0_CMD0_SHIFT);
		/* 8 bytes for manuf, device and exts */
		out_be32(&ifc->ifc_nand.nand_fbcr, 8);
		ifc_nand_ctrl->read_bytes = 8;
				command << IFC_NAND_FCR0_CMD0_SHIFT);
		out_be32(&ifc->ifc_nand.row3, column);

		/*
		 * although currently it's 8 bytes for READID, we always read
		 * the maximum 256 bytes(for PARAM)
		 */
		out_be32(&ifc->ifc_nand.nand_fbcr, 256);
		ifc_nand_ctrl->read_bytes = 256;

		set_addr(mtd, 0, 0, 0);
		fsl_ifc_run_command(mtd);
		return;
	}

	/* ERASE1 stores the block and page address */
	case NAND_CMD_ERASE1: