|
@@ -2461,20 +2461,24 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd,
|
|
|
|
|
|
/* check version */
|
|
/* check version */
|
|
val = le16_to_cpu(p->revision);
|
|
val = le16_to_cpu(p->revision);
|
|
- if (val == 1 || val > (1 << 4)) {
|
|
|
|
- printk(KERN_INFO "%s: unsupported ONFI "
|
|
|
|
- "version: %d\n", __func__, val);
|
|
|
|
- return 0;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (val & (1 << 4))
|
|
|
|
|
|
+ if (val & (1 << 5))
|
|
|
|
+ chip->onfi_version = 23;
|
|
|
|
+ else if (val & (1 << 4))
|
|
chip->onfi_version = 22;
|
|
chip->onfi_version = 22;
|
|
else if (val & (1 << 3))
|
|
else if (val & (1 << 3))
|
|
chip->onfi_version = 21;
|
|
chip->onfi_version = 21;
|
|
else if (val & (1 << 2))
|
|
else if (val & (1 << 2))
|
|
chip->onfi_version = 20;
|
|
chip->onfi_version = 20;
|
|
- else
|
|
|
|
|
|
+ else if (val & (1 << 1))
|
|
chip->onfi_version = 10;
|
|
chip->onfi_version = 10;
|
|
|
|
+ else
|
|
|
|
+ chip->onfi_version = 0;
|
|
|
|
+
|
|
|
|
+ if (!chip->onfi_version) {
|
|
|
|
+ printk(KERN_INFO "%s: unsupported ONFI "
|
|
|
|
+ "version: %d\n", __func__, val);
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
|
|
if (!mtd->name)
|
|
if (!mtd->name)
|
|
mtd->name = p->model;
|
|
mtd->name = p->model;
|