mtd: introduce mtd_has_oob helper
authorArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Wed, 28 Dec 2011 16:35:07 +0000 (18:35 +0200)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 9 Jan 2012 18:26:08 +0000 (18:26 +0000)
We are working in the direction of making sure that MTD clients to not
use 'mtd->func' pointers directly. In some places we want to know if
OOB operations are supported by an MTD device. Introduce 'mtd_has_oob()'
helper for these purposes.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/mtdchar.c
drivers/mtd/sm_ftl.c
include/linux/mtd/mtd.h

index 83b0c82..c501eec 100644 (file)
@@ -1004,7 +1004,7 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg)
                        break;
 
                case MTD_FILE_MODE_RAW:
-                       if (!mtd->read_oob || !mtd->write_oob)
+                       if (!mtd_has_oob(mtd))
                                return -EOPNOTSUPP;
                        mfi->mode = arg;
 
index 4ec2af7..072ed59 100644 (file)
@@ -645,8 +645,8 @@ int sm_get_media_info(struct sm_ftl *ftl, struct mtd_info *mtd)
        if (!ftl->smallpagenand && mtd->oobsize < SM_OOB_SIZE)
                return -ENODEV;
 
-       /* We use these functions for IO */
-       if (!mtd->read_oob || !mtd->write_oob)
+       /* We use OOB */
+       if (!mtd_has_oob(mtd))
                return -ENODEV;
 
        /* Find geometry information */
index f0dd5a3..4787015 100644 (file)
@@ -454,6 +454,11 @@ static inline uint32_t mtd_mod_by_ws(uint64_t sz, struct mtd_info *mtd)
        return do_div(sz, mtd->writesize);
 }
 
+static inline int mtd_has_oob(const struct mtd_info *mtd)
+{
+       return mtd->read_oob && mtd->write_oob;
+}
+
        /* Kernel-side ioctl definitions */
 
 struct mtd_partition;