struct device_node              *of_node;
 };
 
+static inline struct omap_nand_info *mtd_to_omap(struct mtd_info *mtd)
+{
+       return container_of(mtd, struct omap_nand_info, mtd);
+}
 /**
  * omap_prefetch_enable - configures and starts prefetch transfer
  * @cs: cs (chip select) number
  */
 static void omap_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
-       struct omap_nand_info *info = container_of(mtd,
-                                       struct omap_nand_info, mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
 
        if (cmd != NAND_CMD_NONE) {
                if (ctrl & NAND_CLE)
  */
 static void omap_write_buf8(struct mtd_info *mtd, const u_char *buf, int len)
 {
-       struct omap_nand_info *info = container_of(mtd,
-                                               struct omap_nand_info, mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        u_char *p = (u_char *)buf;
        u32     status = 0;
 
  */
 static void omap_write_buf16(struct mtd_info *mtd, const u_char * buf, int len)
 {
-       struct omap_nand_info *info = container_of(mtd,
-                                               struct omap_nand_info, mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        u16 *p = (u16 *) buf;
        u32     status = 0;
        /* FIXME try bursts of writesw() or DMA ... */
  */
 static void omap_read_buf_pref(struct mtd_info *mtd, u_char *buf, int len)
 {
-       struct omap_nand_info *info = container_of(mtd,
-                                               struct omap_nand_info, mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        uint32_t r_count = 0;
        int ret = 0;
        u32 *p = (u32 *)buf;
 static void omap_write_buf_pref(struct mtd_info *mtd,
                                        const u_char *buf, int len)
 {
-       struct omap_nand_info *info = container_of(mtd,
-                                               struct omap_nand_info, mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        uint32_t w_count = 0;
        int i = 0, ret = 0;
        u16 *p = (u16 *)buf;
 static inline int omap_nand_dma_transfer(struct mtd_info *mtd, void *addr,
                                        unsigned int len, int is_write)
 {
-       struct omap_nand_info *info = container_of(mtd,
-                                       struct omap_nand_info, mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        struct dma_async_tx_descriptor *tx;
        enum dma_data_direction dir = is_write ? DMA_TO_DEVICE :
                                                        DMA_FROM_DEVICE;
  */
 static void omap_read_buf_irq_pref(struct mtd_info *mtd, u_char *buf, int len)
 {
-       struct omap_nand_info *info = container_of(mtd,
-                                               struct omap_nand_info, mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        int ret = 0;
 
        if (len <= mtd->oobsize) {
 static void omap_write_buf_irq_pref(struct mtd_info *mtd,
                                        const u_char *buf, int len)
 {
-       struct omap_nand_info *info = container_of(mtd,
-                                               struct omap_nand_info, mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        int ret = 0;
        unsigned long tim, limit;
        u32 val;
 static int omap_correct_data(struct mtd_info *mtd, u_char *dat,
                                u_char *read_ecc, u_char *calc_ecc)
 {
-       struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
-                                                       mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        int blockCnt = 0, i = 0, ret = 0;
        int stat = 0;
 
 static int omap_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
                                u_char *ecc_code)
 {
-       struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
-                                                       mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        u32 val;
 
        val = readl(info->reg.gpmc_ecc_config);
  */
 static void omap_enable_hwecc(struct mtd_info *mtd, int mode)
 {
-       struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
-                                                       mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        struct nand_chip *chip = mtd_to_nand(mtd);
        unsigned int dev_width = (chip->options & NAND_BUSWIDTH_16) ? 1 : 0;
        u32 val;
 static int omap_wait(struct mtd_info *mtd, struct nand_chip *chip)
 {
        struct nand_chip *this = mtd_to_nand(mtd);
-       struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
-                                                       mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        unsigned long timeo = jiffies;
        int status, state = this->state;
 
 static int omap_dev_ready(struct mtd_info *mtd)
 {
        unsigned int val = 0;
-       struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
-                                                       mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
 
        val = readl(info->reg.gpmc_status);
 
 {
        unsigned int bch_type;
        unsigned int dev_width, nsectors;
-       struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
-                                                  mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        enum omap_ecc ecc_opt = info->ecc_opt;
        struct nand_chip *chip = mtd_to_nand(mtd);
        u32 val, wr_mode;
 static int __maybe_unused omap_calculate_ecc_bch(struct mtd_info *mtd,
                                        const u_char *dat, u_char *ecc_calc)
 {
-       struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
-                                                  mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        int eccbytes    = info->nand.ecc.bytes;
        struct gpmc_nand_regs   *gpmc_regs = &info->reg;
        u8 *ecc_code;
 static int omap_elm_correct_data(struct mtd_info *mtd, u_char *data,
                                u_char *read_ecc, u_char *calc_ecc)
 {
-       struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
-                       mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        struct nand_ecc_ctrl *ecc = &info->nand.ecc;
        int eccsteps = info->nand.ecc.steps;
        int i , j, stat = 0;
 {
        struct mtd_info *mtd = platform_get_drvdata(pdev);
        struct nand_chip *nand_chip = mtd_to_nand(mtd);
-       struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
-                                                       mtd);
+       struct omap_nand_info *info = mtd_to_omap(mtd);
        if (nand_chip->ecc.priv) {
                nand_bch_free(nand_chip->ecc.priv);
                nand_chip->ecc.priv = NULL;