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

Commit 39f83d15 authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Brian Norris
Browse files

mtd: nand: pxa3xx: Move the data buffer clean to prepare_start_command()



To allow future support of multiple page reading/writing, move the data
buffer clean out of prepare_set_command().

This is done to prevent the data buffer from being cleaned on every command
preparation, when a multiple command sequence is implemented to read/write
pages larger than the FIFO size (2 KiB).

Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Tested-by: default avatarDaniel Mack <zonque@gmail.com>
Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
parent c39ff03a
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -605,6 +605,9 @@ static void set_command_address(struct pxa3xx_nand_info *info,

static void prepare_start_command(struct pxa3xx_nand_info *info, int command)
{
	struct pxa3xx_nand_host *host = info->host[info->cs];
	struct mtd_info *mtd = host->mtd;

	/* reset data and oob column point to handle data */
	info->buf_start		= 0;
	info->buf_count		= 0;
@@ -629,6 +632,19 @@ static void prepare_start_command(struct pxa3xx_nand_info *info, int command)
		info->ndcb2 = 0;
		break;
	}

	/*
	 * If we are about to issue a read command, or about to set
	 * the write address, then clean the data buffer.
	 */
	if (command == NAND_CMD_READ0 ||
	    command == NAND_CMD_READOOB ||
	    command == NAND_CMD_SEQIN) {

		info->buf_count = mtd->writesize + mtd->oobsize;
		memset(info->data_buff, 0xFF, info->buf_count);
	}

}

static int prepare_set_command(struct pxa3xx_nand_info *info, int command,
@@ -670,16 +686,11 @@ static int prepare_set_command(struct pxa3xx_nand_info *info, int command,
			info->ndcb0 |= NDCB0_DBC | (NAND_CMD_READSTART << 8);

		set_command_address(info, mtd->writesize, column, page_addr);
		info->buf_count = mtd->writesize + mtd->oobsize;
		memset(info->data_buff, 0xFF, info->buf_count);
		break;

	case NAND_CMD_SEQIN:

		set_command_address(info, mtd->writesize, column, page_addr);
		info->buf_count = mtd->writesize + mtd->oobsize;
		memset(info->data_buff, 0xFF, info->buf_count);

		break;

	case NAND_CMD_PAGEPROG: