From: Ezequiel Garcia Date: Mon, 12 Aug 2013 17:14:51 +0000 (-0300) Subject: mtd: nand: pxa3xx: Use 'length override' in ONFI paramater page read X-Git-Tag: next-20130822~69^2~39 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=19d67ba82278be9ab257e58842a6de8b3962e2ba;p=karo-tx-linux.git mtd: nand: pxa3xx: Use 'length override' in ONFI paramater page read The ONFI command 'parameter page read' needs a non-standard length. Therefore, we enable the 'length override' field in NDCB0 and set a non-zero 'length count' in NDCB3. Additionally, the 'spare enable' bit must be disabled for any command that sets a non-zero 'length count' in NDCB3. Signed-off-by: Ezequiel Garcia Tested-by: Daniel Mack Signed-off-by: Brian Norris --- diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c index 35fdc0d169c1..ae8801673e7f 100644 --- a/drivers/mtd/nand/pxa3xx_nand.c +++ b/drivers/mtd/nand/pxa3xx_nand.c @@ -80,6 +80,7 @@ #define NDSR_RDDREQ (0x1 << 1) #define NDSR_WRCMDREQ (0x1) +#define NDCB0_LEN_OVRD (0x1 << 28) #define NDCB0_ST_ROW_EN (0x1 << 26) #define NDCB0_AUTO_RS (0x1 << 25) #define NDCB0_CSEL (0x1 << 24) @@ -562,6 +563,9 @@ static int prepare_command_pool(struct pxa3xx_nand_info *info, int command, case NAND_CMD_READOOB: pxa3xx_set_datasize(info); break; + case NAND_CMD_PARAM: + info->use_spare = 0; + break; case NAND_CMD_SEQIN: exec_cmd = 0; break; @@ -637,8 +641,10 @@ static int prepare_command_pool(struct pxa3xx_nand_info *info, int command, info->buf_count = 256; info->ndcb0 |= NDCB0_CMD_TYPE(0) | NDCB0_ADDR_CYC(1) + | NDCB0_LEN_OVRD | cmd; info->ndcb1 = (column & 0xFF); + info->ndcb3 = 256; info->data_size = 256; break;