|
@@ -3065,7 +3065,7 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd, struct nand_chip *chip,
|
|
|
int *busw)
|
|
|
{
|
|
|
struct nand_onfi_params *p = &chip->onfi_params;
|
|
|
- int i;
|
|
|
+ int i, j;
|
|
|
int val;
|
|
|
|
|
|
/* Try ONFI for unknown chip or LP */
|
|
@@ -3074,18 +3074,10 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd, struct nand_chip *chip,
|
|
|
chip->read_byte(mtd) != 'F' || chip->read_byte(mtd) != 'I')
|
|
|
return 0;
|
|
|
|
|
|
- /*
|
|
|
- * ONFI must be probed in 8-bit mode or with NAND_BUSWIDTH_AUTO, not
|
|
|
- * with NAND_BUSWIDTH_16
|
|
|
- */
|
|
|
- if (chip->options & NAND_BUSWIDTH_16) {
|
|
|
- pr_err("ONFI cannot be probed in 16-bit mode; aborting\n");
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
chip->cmdfunc(mtd, NAND_CMD_PARAM, 0, -1);
|
|
|
for (i = 0; i < 3; i++) {
|
|
|
- chip->read_buf(mtd, (uint8_t *)p, sizeof(*p));
|
|
|
+ for (j = 0; j < sizeof(*p); j++)
|
|
|
+ ((uint8_t *)p)[j] = chip->read_byte(mtd);
|
|
|
if (onfi_crc16(ONFI_CRC_BASE, (uint8_t *)p, 254) ==
|
|
|
le16_to_cpu(p->crc)) {
|
|
|
break;
|