- struct mtd_info *mtd;
-
- T(YAFFS_TRACE_ALWAYS,("yaffs: Attempting MTD mount on %u.%u, \"%s\"\n",
- MAJOR(sb->s_dev),MINOR(sb->s_dev), yaffs_devname(sb, devname_buf)));
-
- // Check it's an mtd device.....
- if(MAJOR(sb->s_dev) != MTD_BLOCK_MAJOR)
- {
- return NULL; // This isn't an mtd device
- }
-
- // Get the device
- mtd = get_mtd_device(NULL, MINOR(sb->s_dev));
- if (!mtd)
+ T(YAFFS_TRACE_ALWAYS,("yaffs: MTD device #%u doesn't appear to exist\n", MINOR(sb->s_dev)));
+ return NULL;
+ }
+
+ // Check it's NAND
+ if(mtd->type != MTD_NANDFLASH)
+ {
+ T(YAFFS_TRACE_ALWAYS,("yaffs: MTD device is not NAND it's type %d\n", mtd->type));
+ return NULL;
+ }
+
+ T(YAFFS_TRACE_OS,(" erase %p\n",mtd->erase));
+ T(YAFFS_TRACE_OS,(" read %p\n",mtd->read));
+ T(YAFFS_TRACE_OS,(" write %p\n",mtd->write));
+ T(YAFFS_TRACE_OS,(" readoob %p\n",mtd->read_oob));
+ T(YAFFS_TRACE_OS,(" writeoob %p\n",mtd->write_oob));
+ T(YAFFS_TRACE_OS,(" block_isbad %p\n",mtd->block_isbad));
+ T(YAFFS_TRACE_OS,(" block_markbad %p\n",mtd->block_markbad));
+ T(YAFFS_TRACE_OS,(" oobblock %d\n",mtd->oobblock));
+ T(YAFFS_TRACE_OS,(" oobsize %d\n",mtd->oobsize));
+ T(YAFFS_TRACE_OS,(" erasesize %d\n",mtd->erasesize));
+ T(YAFFS_TRACE_OS,(" size %d\n",mtd->size));
+
+ if(yaffsVersion == 2)
+ {
+ // Check for version 2 style functions
+ if(!mtd->erase ||
+ !mtd->block_isbad ||
+ !mtd->block_markbad ||
+ !mtd->read ||
+ !mtd->write ||
+ !mtd->write_ecc ||
+ !mtd->read_ecc ||
+ !mtd->read_oob ||
+ !mtd->write_oob )