aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/nandsim.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mtd/nand/nandsim.c')
-rw-r--r--drivers/mtd/nand/nandsim.c24
1 files changed, 6 insertions, 18 deletions
diff --git a/drivers/mtd/nand/nandsim.c b/drivers/mtd/nand/nandsim.c
index 891c52a30e6a..cb38f3d94218 100644
--- a/drivers/mtd/nand/nandsim.c
+++ b/drivers/mtd/nand/nandsim.c
@@ -218,7 +218,6 @@ MODULE_PARM_DESC(bch, "Enable BCH ecc and set how many bits should "
218#define STATE_CMD_READOOB 0x00000005 /* read OOB area */ 218#define STATE_CMD_READOOB 0x00000005 /* read OOB area */
219#define STATE_CMD_ERASE1 0x00000006 /* sector erase first command */ 219#define STATE_CMD_ERASE1 0x00000006 /* sector erase first command */
220#define STATE_CMD_STATUS 0x00000007 /* read status */ 220#define STATE_CMD_STATUS 0x00000007 /* read status */
221#define STATE_CMD_STATUS_M 0x00000008 /* read multi-plane status (isn't implemented) */
222#define STATE_CMD_SEQIN 0x00000009 /* sequential data input */ 221#define STATE_CMD_SEQIN 0x00000009 /* sequential data input */
223#define STATE_CMD_READID 0x0000000A /* read ID */ 222#define STATE_CMD_READID 0x0000000A /* read ID */
224#define STATE_CMD_ERASE2 0x0000000B /* sector erase second command */ 223#define STATE_CMD_ERASE2 0x0000000B /* sector erase second command */
@@ -263,14 +262,13 @@ MODULE_PARM_DESC(bch, "Enable BCH ecc and set how many bits should "
263#define NS_OPER_STATES 6 /* Maximum number of states in operation */ 262#define NS_OPER_STATES 6 /* Maximum number of states in operation */
264 263
265#define OPT_ANY 0xFFFFFFFF /* any chip supports this operation */ 264#define OPT_ANY 0xFFFFFFFF /* any chip supports this operation */
266#define OPT_PAGE256 0x00000001 /* 256-byte page chips */
267#define OPT_PAGE512 0x00000002 /* 512-byte page chips */ 265#define OPT_PAGE512 0x00000002 /* 512-byte page chips */
268#define OPT_PAGE2048 0x00000008 /* 2048-byte page chips */ 266#define OPT_PAGE2048 0x00000008 /* 2048-byte page chips */
269#define OPT_SMARTMEDIA 0x00000010 /* SmartMedia technology chips */ 267#define OPT_SMARTMEDIA 0x00000010 /* SmartMedia technology chips */
270#define OPT_PAGE512_8BIT 0x00000040 /* 512-byte page chips with 8-bit bus width */ 268#define OPT_PAGE512_8BIT 0x00000040 /* 512-byte page chips with 8-bit bus width */
271#define OPT_PAGE4096 0x00000080 /* 4096-byte page chips */ 269#define OPT_PAGE4096 0x00000080 /* 4096-byte page chips */
272#define OPT_LARGEPAGE (OPT_PAGE2048 | OPT_PAGE4096) /* 2048 & 4096-byte page chips */ 270#define OPT_LARGEPAGE (OPT_PAGE2048 | OPT_PAGE4096) /* 2048 & 4096-byte page chips */
273#define OPT_SMALLPAGE (OPT_PAGE256 | OPT_PAGE512) /* 256 and 512-byte page chips */ 271#define OPT_SMALLPAGE (OPT_PAGE512) /* 512-byte page chips */
274 272
275/* Remove action bits from state */ 273/* Remove action bits from state */
276#define NS_STATE(x) ((x) & ~ACTION_MASK) 274#define NS_STATE(x) ((x) & ~ACTION_MASK)
@@ -406,8 +404,6 @@ static struct nandsim_operations {
406 {OPT_ANY, {STATE_CMD_ERASE1, STATE_ADDR_SEC, STATE_CMD_ERASE2 | ACTION_SECERASE, STATE_READY}}, 404 {OPT_ANY, {STATE_CMD_ERASE1, STATE_ADDR_SEC, STATE_CMD_ERASE2 | ACTION_SECERASE, STATE_READY}},
407 /* Read status */ 405 /* Read status */
408 {OPT_ANY, {STATE_CMD_STATUS, STATE_DATAOUT_STATUS, STATE_READY}}, 406 {OPT_ANY, {STATE_CMD_STATUS, STATE_DATAOUT_STATUS, STATE_READY}},
409 /* Read multi-plane status */
410 {OPT_SMARTMEDIA, {STATE_CMD_STATUS_M, STATE_DATAOUT_STATUS_M, STATE_READY}},
411 /* Read ID */ 407 /* Read ID */
412 {OPT_ANY, {STATE_CMD_READID, STATE_ADDR_ZERO, STATE_DATAOUT_ID, STATE_READY}}, 408 {OPT_ANY, {STATE_CMD_READID, STATE_ADDR_ZERO, STATE_DATAOUT_ID, STATE_READY}},
413 /* Large page devices read page */ 409 /* Large page devices read page */
@@ -699,10 +695,7 @@ static int init_nandsim(struct mtd_info *mtd)
699 ns->geom.secszoob = ns->geom.secsz + ns->geom.oobsz * ns->geom.pgsec; 695 ns->geom.secszoob = ns->geom.secsz + ns->geom.oobsz * ns->geom.pgsec;
700 ns->options = 0; 696 ns->options = 0;
701 697
702 if (ns->geom.pgsz == 256) { 698 if (ns->geom.pgsz == 512) {
703 ns->options |= OPT_PAGE256;
704 }
705 else if (ns->geom.pgsz == 512) {
706 ns->options |= OPT_PAGE512; 699 ns->options |= OPT_PAGE512;
707 if (ns->busw == 8) 700 if (ns->busw == 8)
708 ns->options |= OPT_PAGE512_8BIT; 701 ns->options |= OPT_PAGE512_8BIT;
@@ -769,9 +762,9 @@ static int init_nandsim(struct mtd_info *mtd)
769 } 762 }
770 763
771 /* Detect how many ID bytes the NAND chip outputs */ 764 /* Detect how many ID bytes the NAND chip outputs */
772 for (i = 0; nand_flash_ids[i].name != NULL; i++) { 765 for (i = 0; nand_flash_ids[i].name != NULL; i++) {
773 if (second_id_byte != nand_flash_ids[i].id) 766 if (second_id_byte != nand_flash_ids[i].dev_id)
774 continue; 767 continue;
775 } 768 }
776 769
777 if (ns->busw == 16) 770 if (ns->busw == 16)
@@ -1079,8 +1072,6 @@ static char *get_state_name(uint32_t state)
1079 return "STATE_CMD_ERASE1"; 1072 return "STATE_CMD_ERASE1";
1080 case STATE_CMD_STATUS: 1073 case STATE_CMD_STATUS:
1081 return "STATE_CMD_STATUS"; 1074 return "STATE_CMD_STATUS";
1082 case STATE_CMD_STATUS_M:
1083 return "STATE_CMD_STATUS_M";
1084 case STATE_CMD_SEQIN: 1075 case STATE_CMD_SEQIN:
1085 return "STATE_CMD_SEQIN"; 1076 return "STATE_CMD_SEQIN";
1086 case STATE_CMD_READID: 1077 case STATE_CMD_READID:
@@ -1145,7 +1136,6 @@ static int check_command(int cmd)
1145 case NAND_CMD_RNDOUTSTART: 1136 case NAND_CMD_RNDOUTSTART:
1146 return 0; 1137 return 0;
1147 1138
1148 case NAND_CMD_STATUS_MULTI:
1149 default: 1139 default:
1150 return 1; 1140 return 1;
1151 } 1141 }
@@ -1171,8 +1161,6 @@ static uint32_t get_state_by_command(unsigned command)
1171 return STATE_CMD_ERASE1; 1161 return STATE_CMD_ERASE1;
1172 case NAND_CMD_STATUS: 1162 case NAND_CMD_STATUS:
1173 return STATE_CMD_STATUS; 1163 return STATE_CMD_STATUS;
1174 case NAND_CMD_STATUS_MULTI:
1175 return STATE_CMD_STATUS_M;
1176 case NAND_CMD_SEQIN: 1164 case NAND_CMD_SEQIN:
1177 return STATE_CMD_SEQIN; 1165 return STATE_CMD_SEQIN;
1178 case NAND_CMD_READID: 1166 case NAND_CMD_READID:
@@ -2306,7 +2294,7 @@ static int __init ns_init_module(void)
2306 nand->geom.idbytes = 2; 2294 nand->geom.idbytes = 2;
2307 nand->regs.status = NS_STATUS_OK(nand); 2295 nand->regs.status = NS_STATUS_OK(nand);
2308 nand->nxstate = STATE_UNKNOWN; 2296 nand->nxstate = STATE_UNKNOWN;
2309 nand->options |= OPT_PAGE256; /* temporary value */ 2297 nand->options |= OPT_PAGE512; /* temporary value */
2310 nand->ids[0] = first_id_byte; 2298 nand->ids[0] = first_id_byte;
2311 nand->ids[1] = second_id_byte; 2299 nand->ids[1] = second_id_byte;
2312 nand->ids[2] = third_id_byte; 2300 nand->ids[2] = third_id_byte;