|
@@ -2786,7 +2786,9 @@ static void nand_set_defaults(struct nand_chip *chip, int busw)
|
|
|
|
|
|
if (!chip->select_chip)
|
|
|
chip->select_chip = nand_select_chip;
|
|
|
- if (!chip->read_byte)
|
|
|
+
|
|
|
+ /* If called twice, pointers that depend on busw may need to be reset */
|
|
|
+ if (!chip->read_byte || chip->read_byte == nand_read_byte)
|
|
|
chip->read_byte = busw ? nand_read_byte16 : nand_read_byte;
|
|
|
if (!chip->read_word)
|
|
|
chip->read_word = nand_read_word;
|
|
@@ -2794,9 +2796,9 @@ static void nand_set_defaults(struct nand_chip *chip, int busw)
|
|
|
chip->block_bad = nand_block_bad;
|
|
|
if (!chip->block_markbad)
|
|
|
chip->block_markbad = nand_default_block_markbad;
|
|
|
- if (!chip->write_buf)
|
|
|
+ if (!chip->write_buf || chip->write_buf == nand_write_buf)
|
|
|
chip->write_buf = busw ? nand_write_buf16 : nand_write_buf;
|
|
|
- if (!chip->read_buf)
|
|
|
+ if (!chip->read_buf || chip->read_buf == nand_read_buf)
|
|
|
chip->read_buf = busw ? nand_read_buf16 : nand_read_buf;
|
|
|
if (!chip->scan_bbt)
|
|
|
chip->scan_bbt = nand_default_bbt;
|