mtd: nand: Add+use mtd_to/from_nand and nand_get/set_controller_data
authorScott Wood <oss@buserror.net>
Mon, 30 May 2016 18:57:56 +0000 (13:57 -0500)
committerScott Wood <oss@buserror.net>
Sat, 4 Jun 2016 01:27:48 +0000 (20:27 -0500)
These functions are part of the Linux 4.6 sync.  They are being added
before the main sync patch in order to make it easier to address the
issue across all NAND drivers (many/most of which do not closely track
their Linux counterparts) separately from other merge issues.

Signed-off-by: Scott Wood <oss@buserror.net>
38 files changed:
board/esd/common/esd405ep_nand.c
board/freescale/m5329evb/nand.c
board/freescale/m5373evb/nand.c
board/socrates/nand.c
board/xes/common/actl_nand.c
cmd/nand.c
drivers/mtd/nand/am335x_spl_bch.c
drivers/mtd/nand/arasan_nfc.c
drivers/mtd/nand/atmel_nand.c
drivers/mtd/nand/davinci_nand.c
drivers/mtd/nand/denali.c
drivers/mtd/nand/fsl_elbc_nand.c
drivers/mtd/nand/fsl_ifc_nand.c
drivers/mtd/nand/fsl_upm.c
drivers/mtd/nand/fsmc_nand.c
drivers/mtd/nand/kb9202_nand.c
drivers/mtd/nand/kirkwood_nand.c
drivers/mtd/nand/lpc32xx_nand_mlc.c
drivers/mtd/nand/lpc32xx_nand_slc.c
drivers/mtd/nand/mpc5121_nfc.c
drivers/mtd/nand/mxc_nand.c
drivers/mtd/nand/mxs_nand.c
drivers/mtd/nand/mxs_nand_spl.c
drivers/mtd/nand/nand.c
drivers/mtd/nand/nand_base.c
drivers/mtd/nand/nand_bbt.c
drivers/mtd/nand/nand_bch.c
drivers/mtd/nand/nand_plat.c
drivers/mtd/nand/nand_spl_simple.c
drivers/mtd/nand/nand_util.c
drivers/mtd/nand/ndfc.c
drivers/mtd/nand/omap_gpmc.c
drivers/mtd/nand/pxa3xx_nand.c
drivers/mtd/nand/s3c2410_nand.c
drivers/mtd/nand/tegra_nand.c
drivers/mtd/nand/vf610_nfc.c
fs/yaffs2/yaffs_uboot_glue.c
include/linux/mtd/nand.h

index f46936ca3667223dc53d9e214ec62da6bc3bdcec..51ac10c8c0a30e7e356c6f024320854490e9e87c 100644 (file)
@@ -16,7 +16,7 @@
  */
 static void esd405ep_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        if (ctrl & NAND_CTRL_CHANGE) {
                if ( ctrl & NAND_CLE )
                        out_be32((void *)GPIO0_OR, in_be32((void *)GPIO0_OR) | CONFIG_SYS_NAND_CLE);
index 8d88bc03c014f3141b2df2b167fb39207ae55d9d..88496812bf8a65ab0c34e4603b07e9aae9624474 100644 (file)
@@ -24,7 +24,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static void nand_hwcontrol(struct mtd_info *mtdinfo, int cmd, unsigned int ctrl)
 {
-       struct nand_chip *this = mtdinfo->priv;
+       struct nand_chip *this = mtd_to_nand(mtdinfo);
        volatile u16 *nCE = (u16 *) CONFIG_SYS_LATCH_ADDR;
 
        if (ctrl & NAND_CTRL_CHANGE) {
index 92cef2a97dbcaca29517f1d2a3e5c0b7f64e8c76..a96a59991f52f9bc9edafb984ba4e78c183cdef7 100644 (file)
@@ -24,7 +24,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static void nand_hwcontrol(struct mtd_info *mtdinfo, int cmd, unsigned int ctrl)
 {
-       struct nand_chip *this = mtdinfo->priv;
+       struct nand_chip *this = mtd_to_nand(mtdinfo);
        volatile u16 *nCE = (u16 *) CONFIG_SYS_LATCH_ADDR;
 
        if (ctrl & NAND_CTRL_CHANGE) {
index 15e6ea69446e30030bed03052fc0445c989e8339..a67d812c813b547fdfc61f65e9b9ee5ca4086e22 100644 (file)
@@ -48,7 +48,7 @@ static void sc_nand_write_byte(struct mtd_info *mtd, u_char byte)
 static void sc_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
 {
        int i;
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        for (i = 0; i < len; i++) {
                out_be32(this->IO_ADDR_W,
@@ -88,7 +88,7 @@ static u16 sc_nand_read_word(struct mtd_info *mtd)
 static void sc_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
 {
        int i;
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int val;
 
        val = (state & FPGA_NAND_ENABLE) | FPGA_NAND_CMD_READ;
@@ -105,7 +105,7 @@ static void sc_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
  */
 static int sc_nand_device_ready(struct mtd_info *mtdinfo)
 {
-       struct nand_chip *this = mtdinfo->priv;
+       struct nand_chip *this = mtd_to_nand(mtdinfo);
 
        if (in_be32(this->IO_ADDR_W) & FPGA_NAND_BUSY)
                return 0; /* busy */
index bf896fe0ceabaa7d26105893dd4ce8fc29b6c82d..d1f3668bcbba69da17f4be1c5f5ea06b67ecd7be 100644 (file)
@@ -16,7 +16,7 @@
  */
 static void nand_addr_hwcontrol(struct mtd_info *mtd, int cmd, uint ctrl)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        ulong IO_ADDR_W;
 
        if (ctrl & NAND_CTRL_CHANGE) {
index f1d5a1161d11a5de46240d9347bc872997c9cd02..583a18f341a9c42b768afd33e37871865152c0a9 100644 (file)
@@ -159,7 +159,7 @@ static void do_nand_status(struct mtd_info *mtd)
        ulong off;
        int last_status = -1;
 
-       struct nand_chip *nand_chip = mtd->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
        /* check the WP bit */
        nand_chip->cmdfunc(mtd, NAND_CMD_STATUS, -1, -1);
        printf("device is %swrite protected\n",
@@ -285,7 +285,7 @@ usage:
 static void nand_print_and_set_info(int idx)
 {
        struct mtd_info *mtd = nand_info[idx];
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        printf("Device %d: ", idx);
        if (chip->numchips > 1)
index b280f87ccbc8c0e7619f61ff4c63b5c3d4986a02..f8770e0ad8e767bbd7e31cb84311f9310bbd7371 100644 (file)
@@ -30,7 +30,7 @@ static struct nand_chip nand_chip;
 static int nand_command(int block, int page, uint32_t offs,
        u8 cmd)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int page_addr = page + block * CONFIG_SYS_NAND_PAGE_COUNT;
        void (*hwctrl)(struct mtd_info *mtd, int cmd,
                        unsigned int ctrl) = this->cmd_ctrl;
@@ -100,7 +100,7 @@ static int nand_command(int block, int page, uint32_t offs,
 
 static int nand_is_bad_block(int block)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        nand_command(block, 0, CONFIG_SYS_NAND_BAD_BLOCK_POS,
                NAND_CMD_READOOB);
@@ -121,7 +121,7 @@ static int nand_is_bad_block(int block)
 
 static int nand_read_page(int block, int page, void *dst)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        u_char ecc_calc[ECCTOTAL];
        u_char ecc_code[ECCTOTAL];
        u_char oob_data[CONFIG_SYS_NAND_OOBSIZE];
index 8f0ae4cb419ad3dadaf7894bb0c981c027d86b0b..6f3b71e0563d0c6abaa8fd7840c9353c11945803 100644 (file)
@@ -230,7 +230,7 @@ static void arasan_nand_enable_ecc(void)
 static u8 arasan_nand_get_addrcycle(struct mtd_info *mtd)
 {
        u8 addrcycles;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        switch (curr_cmd->addr_cycles) {
        case NAND_ADDR_CYCL_NONE:
@@ -264,7 +264,7 @@ static u8 arasan_nand_get_addrcycle(struct mtd_info *mtd)
 
 static int arasan_nand_read_page(struct mtd_info *mtd, u8 *buf, u32 size)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        u32 reg_val, i, pktsize, pktnum;
        u32 *bufptr = (u32 *)buf;
        u32 timeout;
@@ -441,7 +441,7 @@ static int arasan_nand_write_page_hwecc(struct mtd_info *mtd,
        u32 size = mtd->writesize;
        u32 rdcount = 0;
        u8 column_addr_cycles;
-       struct arasan_nand_info *nand = chip->priv;
+       struct arasan_nand_info *nand = nand_get_controller_data(chip);
 
        if (chip->ecc_step_ds >= ARASAN_NAND_PKTSIZE_1K)
                pktsize = ARASAN_NAND_PKTSIZE_1K;
@@ -944,7 +944,7 @@ static void arasan_nand_read_buf(struct mtd_info *mtd, u8 *buf, int size)
 
 static u8 arasan_nand_read_byte(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        u32 size;
        u8 val;
        struct nand_onfi_params *p;
@@ -976,8 +976,8 @@ static void arasan_nand_cmd_function(struct mtd_info *mtd, unsigned int command,
                                     int column, int page_addr)
 {
        u32 i, ret = 0;
-       struct nand_chip *chip = mtd->priv;
-       struct arasan_nand_info *nand = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct arasan_nand_info *nand = nand_get_controller_data(chip);
 
        curr_cmd = NULL;
        writel(ARASAN_NAND_INT_STS_XFR_CMPLT_MASK,
@@ -1033,7 +1033,7 @@ static int arasan_nand_ecc_init(struct mtd_info *mtd)
 {
        int found = -1;
        u32 regval, eccpos_start, i;
-       struct nand_chip *nand_chip = mtd->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
 
        nand_chip->ecc.mode = NAND_ECC_HW;
        nand_chip->ecc.hwctl = NULL;
@@ -1101,9 +1101,8 @@ static int arasan_nand_init(struct nand_chip *nand_chip, int devnum)
        }
 
        nand->nand_base = arasan_nand_base;
-       mtd = &nand_chip->mtd;
-       nand_chip->priv = nand;
-       mtd->priv = nand_chip;
+       mtd = nand_to_mtd(nand_chip);
+       nand_set_controller_data(nand_chip, nand);
 
        /* Set the driver entry points for MTD */
        nand_chip->cmdfunc = arasan_nand_cmd_function;
index 9c2cb4434403824dad1293c365e7812d26345def..b1adff0e8069ec36fcd850c569d17450d1f43cc1 100644 (file)
@@ -160,8 +160,8 @@ static int pmecc_data_alloc(struct atmel_nand_host *host)
 
 static void pmecc_gen_syndrome(struct mtd_info *mtd, int sector)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct atmel_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct atmel_nand_host *host = nand_get_controller_data(nand_chip);
        int i;
        uint32_t value;
 
@@ -177,8 +177,8 @@ static void pmecc_gen_syndrome(struct mtd_info *mtd, int sector)
 
 static void pmecc_substitute(struct mtd_info *mtd)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct atmel_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct atmel_nand_host *host = nand_get_controller_data(nand_chip);
        int16_t __iomem *alpha_to = host->pmecc_alpha_to;
        int16_t __iomem *index_of = host->pmecc_index_of;
        int16_t *partial_syn = host->pmecc_partial_syn;
@@ -227,8 +227,8 @@ static void pmecc_substitute(struct mtd_info *mtd)
  */
 static void pmecc_get_sigma(struct mtd_info *mtd)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct atmel_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct atmel_nand_host *host = nand_get_controller_data(nand_chip);
 
        int16_t *lmu = host->pmecc_lmu;
        int16_t *si = host->pmecc_si;
@@ -383,8 +383,8 @@ static void pmecc_get_sigma(struct mtd_info *mtd)
 
 static int pmecc_err_location(struct mtd_info *mtd)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct atmel_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct atmel_nand_host *host = nand_get_controller_data(nand_chip);
        const int cap = host->pmecc_corr_cap;
        const int num = 2 * cap + 1;
        int sector_size = host->pmecc_sector_size;
@@ -437,8 +437,8 @@ static int pmecc_err_location(struct mtd_info *mtd)
 static void pmecc_correct_data(struct mtd_info *mtd, uint8_t *buf, uint8_t *ecc,
                int sector_num, int extra_bytes, int err_nbr)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct atmel_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct atmel_nand_host *host = nand_get_controller_data(nand_chip);
        int i = 0;
        int byte_pos, bit_pos, sector_size, pos;
        uint32_t tmp;
@@ -483,8 +483,8 @@ static void pmecc_correct_data(struct mtd_info *mtd, uint8_t *buf, uint8_t *ecc,
 static int pmecc_correction(struct mtd_info *mtd, u32 pmecc_stat, uint8_t *buf,
        u8 *ecc)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct atmel_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct atmel_nand_host *host = nand_get_controller_data(nand_chip);
        int i, err_nbr, eccbytes;
        uint8_t *buf_pos;
 
@@ -529,7 +529,7 @@ normal_check:
 static int atmel_nand_pmecc_read_page(struct mtd_info *mtd,
        struct nand_chip *chip, uint8_t *buf, int oob_required, int page)
 {
-       struct atmel_nand_host *host = chip->priv;
+       struct atmel_nand_host *host = nand_get_controller_data(chip);
        int eccsize = chip->ecc.size;
        uint8_t *oob = chip->oob_poi;
        uint32_t *eccpos = chip->ecc.layout->eccpos;
@@ -571,7 +571,7 @@ static int atmel_nand_pmecc_write_page(struct mtd_info *mtd,
                struct nand_chip *chip, const uint8_t *buf,
                int oob_required)
 {
-       struct atmel_nand_host *host = chip->priv;
+       struct atmel_nand_host *host = nand_get_controller_data(chip);
        uint32_t *eccpos = chip->ecc.layout->eccpos;
        int i, j;
        int timeout = PMECC_MAX_TIMEOUT_US;
@@ -615,8 +615,8 @@ out:
 
 static void atmel_pmecc_core_init(struct mtd_info *mtd)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct atmel_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct atmel_nand_host *host = nand_get_controller_data(nand_chip);
        uint32_t val = 0;
        struct nand_ecclayout *ecc_layout;
 
@@ -808,7 +808,8 @@ static int atmel_pmecc_nand_init_params(struct nand_chip *nand,
        struct atmel_nand_host *host;
        int cap, sector_size;
 
-       host = nand->priv = &pmecc_host;
+       host = &pmecc_host;
+       nand_set_controller_data(nand, host);
 
        nand->ecc.mode = NAND_ECC_HW;
        nand->ecc.calculate = NULL;
@@ -1080,7 +1081,7 @@ static int atmel_nand_read_page(struct mtd_info *mtd, struct nand_chip *chip,
 static int atmel_nand_correct(struct mtd_info *mtd, u_char *dat,
                u_char *read_ecc, u_char *isnull)
 {
-       struct nand_chip *nand_chip = mtd->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
        unsigned int ecc_status;
        unsigned int ecc_word, ecc_bit;
 
@@ -1207,7 +1208,7 @@ int atmel_hwecc_nand_init_param(struct nand_chip *nand, struct mtd_info *mtd)
 static void at91_nand_hwcontrol(struct mtd_info *mtd,
                                         int cmd, unsigned int ctrl)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        if (ctrl & NAND_CTRL_CHANGE) {
                ulong IO_ADDR_W = (ulong) this->IO_ADDR_W;
@@ -1243,7 +1244,7 @@ static struct nand_chip nand_chip;
 
 static int nand_command(int block, int page, uint32_t offs, u8 cmd)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int page_addr = page + block * CONFIG_SYS_NAND_PAGE_COUNT;
        void (*hwctrl)(struct mtd_info *mtd, int cmd,
                        unsigned int ctrl) = this->cmd_ctrl;
@@ -1281,7 +1282,7 @@ static int nand_command(int block, int page, uint32_t offs, u8 cmd)
 
 static int nand_is_bad_block(int block)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        nand_command(block, 0, CONFIG_SYS_NAND_BAD_BLOCK_POS, NAND_CMD_READOOB);
 
@@ -1304,7 +1305,7 @@ static int nand_ecc_pos[] = CONFIG_SYS_NAND_ECCPOS;
 
 static int nand_read_page(int block, int page, void *dst)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        u_char ecc_calc[ECCTOTAL];
        u_char ecc_code[ECCTOTAL];
        u_char oob_data[CONFIG_SYS_NAND_OOBSIZE];
@@ -1337,7 +1338,7 @@ static int nand_read_page(int block, int page, void *dst)
 
 int spl_nand_erase_one(int block, int page)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        void (*hwctrl)(struct mtd_info *mtd, int cmd,
                        unsigned int ctrl) = this->cmd_ctrl;
        int page_addr;
@@ -1368,7 +1369,7 @@ int spl_nand_erase_one(int block, int page)
 #else
 static int nand_read_page(int block, int page, void *dst)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        nand_command(block, page, 0, NAND_CMD_READ0);
        atmel_nand_pmecc_read_page(mtd, this, dst, 0, page);
@@ -1407,7 +1408,7 @@ int nand_spl_load_image(uint32_t offs, unsigned int size, void *dst)
 
 int at91_nand_wait_ready(struct mtd_info *mtd)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        udelay(this->chip_delay);
 
@@ -1450,7 +1451,6 @@ void nand_init(void)
        mtd = &nand_chip.mtd;
        mtd->writesize = CONFIG_SYS_NAND_PAGE_SIZE;
        mtd->oobsize = CONFIG_SYS_NAND_OOBSIZE;
-       mtd->priv = &nand_chip;
        nand_chip.IO_ADDR_R = (void __iomem *)CONFIG_SYS_NAND_BASE;
        nand_chip.IO_ADDR_W = (void __iomem *)CONFIG_SYS_NAND_BASE;
        board_nand_init(&nand_chip);
@@ -1484,9 +1484,8 @@ int atmel_nand_chip_init(int devnum, ulong base_addr)
 {
        int ret;
        struct nand_chip *nand = &nand_chip[devnum];
-       struct mtd_info *mtd = &nand->mtd;
+       struct mtd_info *mtd = nand_to_mtd(nand);
 
-       mtd->priv = nand;
        nand->IO_ADDR_R = nand->IO_ADDR_W = (void  __iomem *)base_addr;
 
 #ifdef CONFIG_NAND_ECC_BCH
index a3970745c95717429dfaaa0061a544db1f4500ba..5e0c7bf503fb185e6afafb573c95f60088936655 100644 (file)
@@ -54,7 +54,7 @@
  */
 static void nand_davinci_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        const u32 *nand = chip->IO_ADDR_R;
 
        /* Make sure that buf is 32 bit aligned */
@@ -99,7 +99,7 @@ static void nand_davinci_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 static void nand_davinci_write_buf(struct mtd_info *mtd, const uint8_t *buf,
                                   int len)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        const u32 *nand = chip->IO_ADDR_W;
 
        /* Make sure that buf is 32 bit aligned */
@@ -144,7 +144,7 @@ static void nand_davinci_write_buf(struct mtd_info *mtd, const uint8_t *buf,
 static void nand_davinci_hwcontrol(struct mtd_info *mtd, int cmd,
                unsigned int ctrl)
 {
-       struct          nand_chip *this = mtd->priv;
+       struct          nand_chip *this = mtd_to_nand(mtd);
        u_int32_t       IO_ADDR_W = (u_int32_t)this->IO_ADDR_W;
 
        if (ctrl & NAND_CTRL_CHANGE) {
@@ -223,7 +223,7 @@ static int nand_davinci_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
 static int nand_davinci_correct_data(struct mtd_info *mtd, u_char *dat,
                u_char *read_ecc, u_char *calc_ecc)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        u_int32_t ecc_nand = read_ecc[0] | (read_ecc[1] << 8) |
                                          (read_ecc[2] << 16);
        u_int32_t ecc_calc = calc_ecc[0] | (calc_ecc[1] << 8) |
index 13d10aeaa83a0e9d0147f4ccc093f8c14bb6edc8..d9bcd721f09e30f42ecea7cdea936015b6001838 100644 (file)
@@ -48,7 +48,8 @@ static int onfi_timing_mode = NAND_DEFAULT_TIMINGS;
  * this macro allows us to convert from an MTD structure to our own
  * device context (denali) structure.
  */
-#define mtd_to_denali(m) container_of(m->priv, struct denali_nand_info, nand)
+#define mtd_to_denali(m) \
+       container_of(mtd_to_nand(m), struct denali_nand_info, nand)
 
 /*
  * These constants are defined by the driver to enable common driver
@@ -1179,7 +1180,6 @@ static int denali_init(struct denali_nand_info *denali)
 
        denali->mtd->name = "denali-nand";
        denali->mtd->owner = THIS_MODULE;
-       denali->mtd->priv = &denali->nand;
 
        /* register the driver with the NAND core subsystem */
        denali->nand.select_chip = denali_select_chip;
index 523aee32a864292ac347cee6bd7a185ef0e4160f..aafff67a5fbcc2dece5a2d59c9d1071e17028da0 100644 (file)
@@ -154,8 +154,8 @@ static struct nand_bbt_descr bbt_mirror_descr = {
  */
 static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_elbc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_elbc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_elbc_ctrl *ctrl = priv->ctrl;
        fsl_lbc_t *lbc = ctrl->regs;
        int buf_num;
@@ -194,8 +194,8 @@ static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob)
  */
 static int fsl_elbc_run_command(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_elbc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_elbc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_elbc_ctrl *ctrl = priv->ctrl;
        fsl_lbc_t *lbc = ctrl->regs;
        u32 timeo = (CONFIG_SYS_HZ * 10) / 1000;
@@ -246,7 +246,7 @@ static int fsl_elbc_run_command(struct mtd_info *mtd)
 
 static void fsl_elbc_do_read(struct nand_chip *chip, int oob)
 {
-       struct fsl_elbc_mtd *priv = chip->priv;
+       struct fsl_elbc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_elbc_ctrl *ctrl = priv->ctrl;
        fsl_lbc_t *lbc = ctrl->regs;
 
@@ -279,8 +279,8 @@ static void fsl_elbc_do_read(struct nand_chip *chip, int oob)
 static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command,
                             int column, int page_addr)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_elbc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_elbc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_elbc_ctrl *ctrl = priv->ctrl;
        fsl_lbc_t *lbc = ctrl->regs;
 
@@ -489,8 +489,8 @@ static void fsl_elbc_select_chip(struct mtd_info *mtd, int chip)
  */
 static void fsl_elbc_write_buf(struct mtd_info *mtd, const u8 *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_elbc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_elbc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_elbc_ctrl *ctrl = priv->ctrl;
        unsigned int bufsize = mtd->writesize + mtd->oobsize;
 
@@ -526,8 +526,8 @@ static void fsl_elbc_write_buf(struct mtd_info *mtd, const u8 *buf, int len)
  */
 static u8 fsl_elbc_read_byte(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_elbc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_elbc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_elbc_ctrl *ctrl = priv->ctrl;
 
        /* If there are still bytes in the FCM, then use the next byte. */
@@ -543,8 +543,8 @@ static u8 fsl_elbc_read_byte(struct mtd_info *mtd)
  */
 static void fsl_elbc_read_buf(struct mtd_info *mtd, u8 *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_elbc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_elbc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_elbc_ctrl *ctrl = priv->ctrl;
        int avail;
 
@@ -566,7 +566,7 @@ static void fsl_elbc_read_buf(struct mtd_info *mtd, u8 *buf, int len)
  */
 static int fsl_elbc_wait(struct mtd_info *mtd, struct nand_chip *chip)
 {
-       struct fsl_elbc_mtd *priv = chip->priv;
+       struct fsl_elbc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_elbc_ctrl *ctrl = priv->ctrl;
        fsl_lbc_t *lbc = ctrl->regs;
 
@@ -697,8 +697,7 @@ static int fsl_elbc_chip_init(int devnum, u8 *addr)
        }
 
        nand = &priv->chip;
-       mtd = &nand->mtd;
-       mtd->priv = nand;
+       mtd = nand_to_mtd(nand);
 
        elbc_ctrl->chips[priv->bank] = priv;
 
@@ -720,7 +719,7 @@ static int fsl_elbc_chip_init(int devnum, u8 *addr)
        nand->bbt_options = NAND_BBT_USE_FLASH;
 
        nand->controller = &elbc_ctrl->controller;
-       nand->priv = priv;
+       nand_set_controller_data(nand, priv);
 
        nand->ecc.read_page = fsl_elbc_read_page;
        nand->ecc.write_page = fsl_elbc_write_page;
index d5fd3ee957c16e7ee3a5dddf7a2a855beb74fda4..f28602e14fbc26ca8c58fb5088c3ad01f4894ab2 100644 (file)
@@ -222,8 +222,8 @@ static struct nand_bbt_descr bbt_mirror_descr = {
  */
 static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
        struct fsl_ifc_runtime *ifc = ctrl->regs.rregs;
        int buf_num;
@@ -247,8 +247,8 @@ static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob)
 static int is_blank(struct mtd_info *mtd, struct fsl_ifc_ctrl *ctrl,
                    unsigned int bufnum)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        u8 __iomem *addr = priv->vbase + bufnum * (mtd->writesize * 2);
        u32 __iomem *main = (u32 *)addr;
        u8 __iomem *oob = addr + mtd->writesize;
@@ -286,8 +286,8 @@ static int check_read_ecc(struct mtd_info *mtd, struct fsl_ifc_ctrl *ctrl,
  */
 static int fsl_ifc_run_command(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
        struct fsl_ifc_runtime *ifc = ctrl->regs.rregs;
        u32 timeo = (CONFIG_SYS_HZ * 10) / 1000;
@@ -367,7 +367,7 @@ static void fsl_ifc_do_read(struct nand_chip *chip,
                            int oob,
                            struct mtd_info *mtd)
 {
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
        struct fsl_ifc_runtime *ifc = ctrl->regs.rregs;
 
@@ -404,8 +404,8 @@ static void fsl_ifc_do_read(struct nand_chip *chip,
 static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command,
                             int column, int page_addr)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
        struct fsl_ifc_runtime *ifc = ctrl->regs.rregs;
 
@@ -607,8 +607,8 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command,
  */
 static void fsl_ifc_write_buf(struct mtd_info *mtd, const u8 *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
        unsigned int bufsize = mtd->writesize + mtd->oobsize;
 
@@ -635,8 +635,8 @@ static void fsl_ifc_write_buf(struct mtd_info *mtd, const u8 *buf, int len)
  */
 static u8 fsl_ifc_read_byte(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
        unsigned int offset;
 
@@ -659,8 +659,8 @@ static u8 fsl_ifc_read_byte(struct mtd_info *mtd)
  */
 static uint8_t fsl_ifc_read_byte16(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
        uint16_t data;
 
@@ -683,8 +683,8 @@ static uint8_t fsl_ifc_read_byte16(struct mtd_info *mtd)
  */
 static void fsl_ifc_read_buf(struct mtd_info *mtd, u8 *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
        int avail;
 
@@ -706,7 +706,7 @@ static void fsl_ifc_read_buf(struct mtd_info *mtd, u8 *buf, int len)
  */
 static int fsl_ifc_wait(struct mtd_info *mtd, struct nand_chip *chip)
 {
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
        struct fsl_ifc_runtime *ifc = ctrl->regs.rregs;
        u32 nand_fsr;
@@ -739,7 +739,7 @@ static int fsl_ifc_wait(struct mtd_info *mtd, struct nand_chip *chip)
 static int fsl_ifc_read_page(struct mtd_info *mtd, struct nand_chip *chip,
                             uint8_t *buf, int oob_required, int page)
 {
-       struct fsl_ifc_mtd *priv = chip->priv;
+       struct fsl_ifc_mtd *priv = nand_get_controller_data(chip);
        struct fsl_ifc_ctrl *ctrl = priv->ctrl;
 
        fsl_ifc_read_buf(mtd, buf, mtd->writesize);
@@ -925,8 +925,7 @@ static int fsl_ifc_chip_init(int devnum, u8 *addr)
        }
 
        nand = &priv->chip;
-       mtd = &nand->mtd;
-       mtd->priv = nand;
+       mtd = nand_to_mtd(nand);
 
        ifc_ctrl->chips[priv->bank] = priv;
 
@@ -955,7 +954,7 @@ static int fsl_ifc_chip_init(int devnum, u8 *addr)
        }
 
        nand->controller = &ifc_ctrl->controller;
-       nand->priv = priv;
+       nand_set_controller_data(nand, priv);
 
        nand->ecc.read_page = fsl_ifc_read_page;
        nand->ecc.write_page = fsl_ifc_write_page;
index 5426c32114162446fa4c07abc2d5e8a2796d6ef9..d2b388197bdf7ea6d3b5b1ff15bfbc66815ce301 100644 (file)
@@ -64,8 +64,8 @@ static void fun_wait(struct fsl_upm_nand *fun)
 #if CONFIG_SYS_NAND_MAX_CHIPS > 1
 static void fun_select_chip(struct mtd_info *mtd, int chip_nr)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_upm_nand *fun = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_upm_nand *fun = nand_get_controller_data(chip);
 
        if (chip_nr >= 0) {
                fun->chip_nr = chip_nr;
@@ -79,8 +79,8 @@ static void fun_select_chip(struct mtd_info *mtd, int chip_nr)
 
 static void fun_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_upm_nand *fun = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_upm_nand *fun = nand_get_controller_data(chip);
        void __iomem *io_addr;
        u32 mar;
 
@@ -123,7 +123,7 @@ static void fun_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 
 static u8 upm_nand_read_byte(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        return in_8(chip->IO_ADDR_R);
 }
@@ -131,8 +131,8 @@ static u8 upm_nand_read_byte(struct mtd_info *mtd)
 static void upm_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
 {
        int i;
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_upm_nand *fun = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_upm_nand *fun = nand_get_controller_data(chip);
 
        for (i = 0; i < len; i++) {
                out_8(chip->IO_ADDR_W, buf[i]);
@@ -147,7 +147,7 @@ static void upm_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
 static void upm_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
 {
        int i;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        for (i = 0; i < len; i++)
                buf[i] = in_8(chip->IO_ADDR_R);
@@ -155,8 +155,8 @@ static void upm_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
 
 static int nand_dev_ready(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct fsl_upm_nand *fun = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct fsl_upm_nand *fun = nand_get_controller_data(chip);
 
        return fun->dev_ready(fun->chip_nr);
 }
@@ -168,7 +168,7 @@ int fsl_upm_nand_init(struct nand_chip *chip, struct fsl_upm_nand *fun)
 
        fun->last_ctrl = NAND_CLE;
 
-       chip->priv = fun;
+       nand_set_controller_data(chip, fun);
        chip->chip_delay = fun->chip_delay;
        chip->ecc.mode = NAND_ECC_SOFT;
        chip->cmd_ctrl = fun_cmd_ctrl;
index 0b8b56ffa14f0707f464b07bcf241be8d482182a..a1f2cbae3318bd5f25735c9b27f2f41194292a93 100644 (file)
@@ -165,7 +165,7 @@ static int count_written_bits(uint8_t *buff, int size, int max_bits)
 
 static void fsmc_nand_hwcontrol(struct mtd_info *mtd, int cmd, uint ctrl)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        ulong IO_ADDR_W;
 
        if (ctrl & NAND_CTRL_CHANGE) {
@@ -410,7 +410,7 @@ int fsmc_nand_switch_ecc(uint32_t eccstrength)
         * function, as it doesn't need to switch to a different ECC layout.
         */
        mtd = nand_info[nand_curr_device];
-       nand = mtd->priv;
+       nand = mtd_to_nand(mtd);
 
        /* Setup the ecc configurations again */
        if (eccstrength == 1) {
@@ -479,8 +479,7 @@ int fsmc_nand_init(struct nand_chip *nand)
                (void  __iomem *)CONFIG_SYS_NAND_BASE;
        nand->badblockbits = 7;
 
-       mtd = &nand->mtd;
-       mtd->priv = nand;
+       mtd = nand_to_mtd(nand);
 
        switch (fsmc_version) {
        case FSMC_VER8:
index 22c562540796cf7bf0f389d814a71e804ae86ef7..e978cf8c824ff3b7b012a3dca011835bcb62451a 100644 (file)
@@ -35,7 +35,7 @@
  */
 static void kb9202_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        if (ctrl & NAND_CTRL_CHANGE) {
                ulong IO_ADDR_W = (ulong) this->IO_ADDR_W;
index d734113f640ca365055c91524384dd62bd57e9ae..d0a68bdcb9c84eb404efc751f76ff017d6d21646 100644 (file)
@@ -33,7 +33,7 @@ static u32 nand_mpp_backup[9] = { 0 };
 static void kw_nand_hwcontrol(struct mtd_info *mtd, int cmd,
                              unsigned int ctrl)
 {
-       struct nand_chip *nc = mtd->priv;
+       struct nand_chip *nc = mtd_to_nand(mtd);
        u32 offs;
 
        if (cmd == NAND_CMD_NONE)
index 236b0becd7903f13a93126605171b421276f8fa1..9475208918939e54b2342e8ac97aa3957d5bccc1 100644 (file)
@@ -542,8 +542,6 @@ void board_nand_init(void)
        struct mtd_info *mtd = &lpc32xx_chip.mtd;
        int ret;
 
-       mtd->priv = &lpc32xx_chip;
-
        /* Set all BOARDSPECIFIC (actually core-specific) fields  */
 
        lpc32xx_chip.IO_ADDR_R = &lpc32xx_nand_mlc_registers->buff;
index 4e1be36654c08aa172b0639f49b2164f1fc8d643..89b48cbed01636edcb3c5ed869ec28252709eb36 100644 (file)
@@ -291,7 +291,7 @@ static void lpc32xx_nand_dma_configure(struct nand_chip *chip,
 static void lpc32xx_nand_xfer(struct mtd_info *mtd, const u8 *buf,
                              int len, int read)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        u32 config;
        int ret;
 
index d83613045263b04ff504c8100c5a85a731b163bb..362d393285630935a1166a65dea7ffeb05e214e5 100644 (file)
@@ -117,8 +117,8 @@ static void mpc5121_nfc_done(struct mtd_info *mtd);
 /* Read NFC register */
 static inline u16 nfc_read(struct mtd_info *mtd, uint reg)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct mpc5121_nfc_prv *prv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct mpc5121_nfc_prv *prv = nand_get_controller_data(chip);
 
        return in_be16(prv->regs + reg);
 }
@@ -126,8 +126,8 @@ static inline u16 nfc_read(struct mtd_info *mtd, uint reg)
 /* Write NFC register */
 static inline void nfc_write(struct mtd_info *mtd, uint reg, u16 val)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct mpc5121_nfc_prv *prv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct mpc5121_nfc_prv *prv = nand_get_controller_data(chip);
 
        out_be16(prv->regs + reg, val);
 }
@@ -211,7 +211,7 @@ static void mpc5121_nfc_done(struct mtd_info *mtd)
 /* Do address cycle(s) */
 static void mpc5121_nfc_addr_cycle(struct mtd_info *mtd, int column, int page)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        u32 pagemask = chip->pagemask;
 
        if (column != -1) {
@@ -283,8 +283,8 @@ static int mpc5121_nfc_dev_ready(struct mtd_info *mtd)
 static void mpc5121_nfc_command(struct mtd_info *mtd, unsigned command,
                                int column, int page)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct mpc5121_nfc_prv *prv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct mpc5121_nfc_prv *prv = nand_get_controller_data(chip);
 
        prv->column = (column >= 0) ? column : 0;
        prv->spareonly = 0;
@@ -357,8 +357,8 @@ static void mpc5121_nfc_command(struct mtd_info *mtd, unsigned command,
 static void mpc5121_nfc_copy_spare(struct mtd_info *mtd, uint offset,
                                   u8 * buffer, uint size, int wr)
 {
-       struct nand_chip *nand = mtd->priv;
-       struct mpc5121_nfc_prv *prv = nand->priv;
+       struct nand_chip *nand = mtd_to_nand(mtd);
+       struct mpc5121_nfc_prv *prv = nand_get_controller_data(nand);
        uint o, s, sbsize, blksize;
 
        /*
@@ -410,8 +410,8 @@ static void mpc5121_nfc_copy_spare(struct mtd_info *mtd, uint offset,
 static void mpc5121_nfc_buf_copy(struct mtd_info *mtd, u_char * buf, int len,
                                 int wr)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct mpc5121_nfc_prv *prv = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct mpc5121_nfc_prv *prv = nand_get_controller_data(chip);
        uint c = prv->column;
        uint l;
 
@@ -489,7 +489,7 @@ static u16 mpc5121_nfc_read_word(struct mtd_info *mtd)
 static int mpc5121_nfc_read_hw_config(struct mtd_info *mtd)
 {
        immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        uint rcw_pagesize = 0;
        uint rcw_sparesize = 0;
        uint rcw_width;
@@ -568,8 +568,7 @@ int board_nand_init(struct nand_chip *chip)
        }
 
        mtd = &chip->mtd;
-       mtd->priv = chip;
-       chip->priv = prv;
+       nand_set_controller_data(chip, prv);
 
        /* Read NFC configuration from Reset Config Word */
        retval = mpc5121_nfc_read_hw_config(mtd);
index 5e7b9cf9de9836ceb6a0778b1ea1020c6c862965..f935055afd6038cb598f3a600a065fe8d4693d0c 100644 (file)
@@ -351,8 +351,8 @@ static int mxc_nand_dev_ready(struct mtd_info *mtd)
 
 static void _mxc_nand_enable_hwecc(struct mtd_info *mtd, int on)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct mxc_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
 #if defined(MXC_NFC_V1) || defined(MXC_NFC_V2_1)
        uint16_t tmp = readnfc(&host->regs->config1);
 
@@ -386,7 +386,7 @@ static int mxc_nand_read_oob_syndrome(struct mtd_info *mtd,
                                      struct nand_chip *chip,
                                      int page)
 {
-       struct mxc_nand_host *host = chip->priv;
+       struct mxc_nand_host *host = nand_get_controller_data(chip);
        uint8_t *buf = chip->oob_poi;
        int length = mtd->oobsize;
        int eccpitch = chip->ecc.bytes + chip->ecc.prepad + chip->ecc.postpad;
@@ -441,7 +441,7 @@ static int mxc_nand_read_page_raw_syndrome(struct mtd_info *mtd,
                                           int oob_required,
                                           int page)
 {
-       struct mxc_nand_host *host = chip->priv;
+       struct mxc_nand_host *host = nand_get_controller_data(chip);
        int eccsize = chip->ecc.size;
        int eccbytes = chip->ecc.bytes;
        int eccpitch = eccbytes + chip->ecc.prepad + chip->ecc.postpad;
@@ -486,7 +486,7 @@ static int mxc_nand_read_page_syndrome(struct mtd_info *mtd,
                                       int oob_required,
                                       int page)
 {
-       struct mxc_nand_host *host = chip->priv;
+       struct mxc_nand_host *host = nand_get_controller_data(chip);
        int n, eccsize = chip->ecc.size;
        int eccbytes = chip->ecc.bytes;
        int eccpitch = eccbytes + chip->ecc.prepad + chip->ecc.postpad;
@@ -550,7 +550,7 @@ static int mxc_nand_read_page_syndrome(struct mtd_info *mtd,
 static int mxc_nand_write_oob_syndrome(struct mtd_info *mtd,
                                       struct nand_chip *chip, int page)
 {
-       struct mxc_nand_host *host = chip->priv;
+       struct mxc_nand_host *host = nand_get_controller_data(chip);
        int eccpitch = chip->ecc.bytes + chip->ecc.prepad + chip->ecc.postpad;
        int length = mtd->oobsize;
        int i, len, status, steps = chip->ecc.steps;
@@ -578,7 +578,7 @@ static int mxc_nand_write_page_raw_syndrome(struct mtd_info *mtd,
                                             const uint8_t *buf,
                                             int oob_required)
 {
-       struct mxc_nand_host *host = chip->priv;
+       struct mxc_nand_host *host = nand_get_controller_data(chip);
        int eccsize = chip->ecc.size;
        int eccbytes = chip->ecc.bytes;
        int eccpitch = eccbytes + chip->ecc.prepad + chip->ecc.postpad;
@@ -618,7 +618,7 @@ static int mxc_nand_write_page_syndrome(struct mtd_info *mtd,
                                         const uint8_t *buf,
                                         int oob_required)
 {
-       struct mxc_nand_host *host = chip->priv;
+       struct mxc_nand_host *host = nand_get_controller_data(chip);
        int i, n, eccsize = chip->ecc.size;
        int eccbytes = chip->ecc.bytes;
        int eccpitch = eccbytes + chip->ecc.prepad + chip->ecc.postpad;
@@ -661,8 +661,8 @@ static int mxc_nand_write_page_syndrome(struct mtd_info *mtd,
 static int mxc_nand_correct_data(struct mtd_info *mtd, u_char *dat,
                                 u_char *read_ecc, u_char *calc_ecc)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct mxc_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
        uint32_t ecc_status = readl(&host->regs->ecc_status_result);
        int subpages = mtd->writesize / nand_chip->subpagesize;
        int pg2blk_shift = nand_chip->phys_erase_shift -
@@ -700,8 +700,8 @@ static int mxc_nand_correct_data(struct mtd_info *mtd, u_char *dat,
 static int mxc_nand_correct_data(struct mtd_info *mtd, u_char *dat,
                                 u_char *read_ecc, u_char *calc_ecc)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct mxc_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
 
        /*
         * 1-Bit errors are automatically corrected in HW.  No need for
@@ -729,8 +729,8 @@ static int mxc_nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
 
 static u_char mxc_nand_read_byte(struct mtd_info *mtd)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct mxc_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
        uint8_t ret = 0;
        uint16_t col;
        uint16_t __iomem *main_buf =
@@ -769,8 +769,8 @@ static u_char mxc_nand_read_byte(struct mtd_info *mtd)
 
 static uint16_t mxc_nand_read_word(struct mtd_info *mtd)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct mxc_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
        uint16_t col, ret;
        uint16_t __iomem *p;
 
@@ -821,8 +821,8 @@ static uint16_t mxc_nand_read_word(struct mtd_info *mtd)
 static void mxc_nand_write_buf(struct mtd_info *mtd,
                                const u_char *buf, int len)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct mxc_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
        int n, col, i = 0;
 
        MTDDEBUG(MTD_DEBUG_LEVEL3,
@@ -895,8 +895,8 @@ static void mxc_nand_write_buf(struct mtd_info *mtd,
  */
 static void mxc_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct mxc_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
        int n, col, i = 0;
 
        MTDDEBUG(MTD_DEBUG_LEVEL3,
@@ -955,8 +955,8 @@ static void mxc_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
  */
 static void mxc_nand_select_chip(struct mtd_info *mtd, int chip)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct mxc_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
 
        switch (chip) {
        case -1:
@@ -982,8 +982,8 @@ static void mxc_nand_select_chip(struct mtd_info *mtd, int chip)
 void mxc_nand_command(struct mtd_info *mtd, unsigned command,
                                int column, int page_addr)
 {
-       struct nand_chip *nand_chip = mtd->priv;
-       struct mxc_nand_host *host = nand_chip->priv;
+       struct nand_chip *nand_chip = mtd_to_nand(mtd);
+       struct mxc_nand_host *host = nand_get_controller_data(nand_chip);
 
        MTDDEBUG(MTD_DEBUG_LEVEL3,
              "mxc_nand_command (cmd = 0x%x, col = 0x%x, page = 0x%x)\n",
@@ -1165,13 +1165,12 @@ int board_nand_init(struct nand_chip *this)
 
        /* structures must be linked */
        mtd = &this->mtd;
-       mtd->priv = this;
        host->nand = this;
 
        /* 5 us command delay time */
        this->chip_delay = 5;
 
-       this->priv = host;
+       nand_set_controller_data(this, host);
        this->dev_ready = mxc_nand_dev_ready;
        this->cmdfunc = mxc_nand_command;
        this->select_chip = mxc_nand_select_chip;
index b5bbd889ffc711df89ec453b3a5bac2324595da2..7053ff263042d643bb564672dfbf930df521feea 100644 (file)
@@ -264,8 +264,8 @@ static int mxs_nand_wait_for_bch_complete(void)
  */
 static void mxs_nand_cmd_ctrl(struct mtd_info *mtd, int data, unsigned int ctrl)
 {
-       struct nand_chip *nand = mtd->priv;
-       struct mxs_nand_info *nand_info = nand->priv;
+       struct nand_chip *nand = mtd_to_nand(mtd);
+       struct mxs_nand_info *nand_info = nand_get_controller_data(nand);
        struct mxs_dma_desc *d;
        uint32_t channel = MXS_DMA_CHANNEL_AHB_APBH_GPMI0 + nand_info->cur_chip;
        int ret;
@@ -343,8 +343,8 @@ static void mxs_nand_cmd_ctrl(struct mtd_info *mtd, int data, unsigned int ctrl)
  */
 static int mxs_nand_device_ready(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct mxs_nand_info *nand_info = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct mxs_nand_info *nand_info = nand_get_controller_data(chip);
        struct mxs_gpmi_regs *gpmi_regs =
                (struct mxs_gpmi_regs *)MXS_GPMI_BASE;
        uint32_t tmp;
@@ -360,8 +360,8 @@ static int mxs_nand_device_ready(struct mtd_info *mtd)
  */
 static void mxs_nand_select_chip(struct mtd_info *mtd, int chip)
 {
-       struct nand_chip *nand = mtd->priv;
-       struct mxs_nand_info *nand_info = nand->priv;
+       struct nand_chip *nand = mtd_to_nand(mtd);
+       struct mxs_nand_info *nand_info = nand_get_controller_data(nand);
 
        nand_info->cur_chip = chip;
 }
@@ -410,8 +410,8 @@ static void mxs_nand_swap_block_mark(struct mtd_info *mtd,
  */
 static void mxs_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int length)
 {
-       struct nand_chip *nand = mtd->priv;
-       struct mxs_nand_info *nand_info = nand->priv;
+       struct nand_chip *nand = mtd_to_nand(mtd);
+       struct mxs_nand_info *nand_info = nand_get_controller_data(nand);
        struct mxs_dma_desc *d;
        uint32_t channel = MXS_DMA_CHANNEL_AHB_APBH_GPMI0 + nand_info->cur_chip;
        int ret;
@@ -494,8 +494,8 @@ rtn:
 static void mxs_nand_write_buf(struct mtd_info *mtd, const uint8_t *buf,
                                int length)
 {
-       struct nand_chip *nand = mtd->priv;
-       struct mxs_nand_info *nand_info = nand->priv;
+       struct nand_chip *nand = mtd_to_nand(mtd);
+       struct mxs_nand_info *nand_info = nand_get_controller_data(nand);
        struct mxs_dma_desc *d;
        uint32_t channel = MXS_DMA_CHANNEL_AHB_APBH_GPMI0 + nand_info->cur_chip;
        int ret;
@@ -559,7 +559,7 @@ static int mxs_nand_ecc_read_page(struct mtd_info *mtd, struct nand_chip *nand,
                                        uint8_t *buf, int oob_required,
                                        int page)
 {
-       struct mxs_nand_info *nand_info = nand->priv;
+       struct mxs_nand_info *nand_info = nand_get_controller_data(nand);
        struct mxs_dma_desc *d;
        uint32_t channel = MXS_DMA_CHANNEL_AHB_APBH_GPMI0 + nand_info->cur_chip;
        uint32_t corrected = 0, failed = 0;
@@ -709,7 +709,7 @@ static int mxs_nand_ecc_write_page(struct mtd_info *mtd,
                                struct nand_chip *nand, const uint8_t *buf,
                                int oob_required)
 {
-       struct mxs_nand_info *nand_info = nand->priv;
+       struct mxs_nand_info *nand_info = nand_get_controller_data(nand);
        struct mxs_dma_desc *d;
        uint32_t channel = MXS_DMA_CHANNEL_AHB_APBH_GPMI0 + nand_info->cur_chip;
        int ret;
@@ -775,8 +775,8 @@ rtn:
 static int mxs_nand_hook_read_oob(struct mtd_info *mtd, loff_t from,
                                        struct mtd_oob_ops *ops)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct mxs_nand_info *nand_info = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct mxs_nand_info *nand_info = nand_get_controller_data(chip);
        int ret;
 
        if (ops->mode == MTD_OPS_RAW)
@@ -800,8 +800,8 @@ static int mxs_nand_hook_read_oob(struct mtd_info *mtd, loff_t from,
 static int mxs_nand_hook_write_oob(struct mtd_info *mtd, loff_t to,
                                        struct mtd_oob_ops *ops)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct mxs_nand_info *nand_info = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct mxs_nand_info *nand_info = nand_get_controller_data(chip);
        int ret;
 
        if (ops->mode == MTD_OPS_RAW)
@@ -824,8 +824,8 @@ static int mxs_nand_hook_write_oob(struct mtd_info *mtd, loff_t to,
  */
 static int mxs_nand_hook_block_markbad(struct mtd_info *mtd, loff_t ofs)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct mxs_nand_info *nand_info = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct mxs_nand_info *nand_info = nand_get_controller_data(chip);
        int ret;
 
        nand_info->marking_block_bad = 1;
@@ -884,7 +884,7 @@ static int mxs_nand_hook_block_markbad(struct mtd_info *mtd, loff_t ofs)
 static int mxs_nand_ecc_read_oob(struct mtd_info *mtd, struct nand_chip *nand,
                                int page)
 {
-       struct mxs_nand_info *nand_info = nand->priv;
+       struct mxs_nand_info *nand_info = nand_get_controller_data(nand);
 
        /*
         * First, fill in the OOB buffer. If we're doing a raw read, we need to
@@ -919,7 +919,7 @@ static int mxs_nand_ecc_read_oob(struct mtd_info *mtd, struct nand_chip *nand,
 static int mxs_nand_ecc_write_oob(struct mtd_info *mtd, struct nand_chip *nand,
                                        int page)
 {
-       struct mxs_nand_info *nand_info = nand->priv;
+       struct mxs_nand_info *nand_info = nand_get_controller_data(nand);
        uint8_t block_mark = 0;
 
        /*
@@ -982,8 +982,8 @@ static int mxs_nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)
  */
 static int mxs_nand_scan_bbt(struct mtd_info *mtd)
 {
-       struct nand_chip *nand = mtd->priv;
-       struct mxs_nand_info *nand_info = nand->priv;
+       struct nand_chip *nand = mtd_to_nand(mtd);
+       struct mxs_nand_info *nand_info = nand_get_controller_data(nand);
        struct mxs_bch_regs *bch_regs = (struct mxs_bch_regs *)MXS_BCH_BASE;
        uint32_t tmp;
 
@@ -1175,7 +1175,7 @@ int board_nand_init(struct nand_chip *nand)
 
        memset(&fake_ecc_layout, 0, sizeof(fake_ecc_layout));
 
-       nand->priv = nand_info;
+       nand_set_controller_data(nand, nand_info);
        nand->options |= NAND_NO_SUBPAGE_WRITE;
 
        nand->cmd_ctrl          = mxs_nand_cmd_ctrl;
index 0b3a604cf98c7dbea6da4ee64628678d9ed24f98..a8a3084d033fff4f995b54154c7fa46d85c3763c 100644 (file)
@@ -14,7 +14,7 @@ static struct nand_chip nand_chip;
 static void mxs_nand_command(struct mtd_info *mtd, unsigned int command,
                             int column, int page_addr)
 {
-       register struct nand_chip *chip = mtd->priv;
+       register struct nand_chip *chip = mtd_to_nand(mtd);
        u32 timeo, time_start;
 
        /* write out the command to the device */
@@ -51,7 +51,7 @@ static void mxs_nand_command(struct mtd_info *mtd, unsigned int command,
 
 static int mxs_flash_ident(struct mtd_info *mtd)
 {
-       register struct nand_chip *chip = mtd->priv;
+       register struct nand_chip *chip = mtd_to_nand(mtd);
        int i;
        u8 mfg_id, dev_id;
        u8 id_data[8];
@@ -111,7 +111,7 @@ static int mxs_flash_ident(struct mtd_info *mtd)
 
 static int mxs_read_page_ecc(struct mtd_info *mtd, void *buf, unsigned int page)
 {
-       register struct nand_chip *chip = mtd->priv;
+       register struct nand_chip *chip = mtd_to_nand(mtd);
        int ret;
 
        chip->cmdfunc(mtd, NAND_CMD_READ0, 0x0, page);
@@ -125,7 +125,7 @@ static int mxs_read_page_ecc(struct mtd_info *mtd, void *buf, unsigned int page)
 
 static int is_badblock(struct mtd_info *mtd, loff_t offs, int allowbbt)
 {
-       register struct nand_chip *chip = mtd->priv;
+       register struct nand_chip *chip = mtd_to_nand(mtd);
        unsigned int block = offs >> chip->phys_erase_shift;
        unsigned int page = offs >> chip->page_shift;
 
@@ -148,7 +148,6 @@ static int mxs_nand_init(void)
        /* init mxs nand driver */
        board_nand_init(&nand_chip);
        mtd = &nand_chip.mtd;
-       mtd->priv = &nand_chip;
        /* set mtd functions */
        nand_chip.cmdfunc = mxs_nand_command;
        nand_chip.numchips = 1;
@@ -181,7 +180,7 @@ int nand_spl_load_image(uint32_t offs, unsigned int size, void *buf)
 
        if (mxs_nand_init())
                return -ENODEV;
-       chip = mtd->priv;
+       chip = mtd_to_nand(mtd);
        page = offs >> chip->page_shift;
        nand_page_per_block = mtd->erasesize / mtd->writesize;
 
index ddd8249d59a481a0e373f592c9b5ff1837731c56..f449316853924b9f91eb0dd6bfbc1e7577b55e95 100644 (file)
@@ -73,14 +73,13 @@ int nand_register(int devnum, struct mtd_info *mtd)
 static void nand_init_chip(int i)
 {
        struct nand_chip *nand = &nand_chip[i];
-       struct mtd_info *mtd = &nand->mtd;
+       struct mtd_info *mtd = nand_to_mtd(nand);
        ulong base_addr = base_address[i];
        int maxchips = CONFIG_SYS_NAND_MAX_CHIPS;
 
        if (maxchips < 1)
                maxchips = 1;
 
-       mtd->priv = nand;
        nand->IO_ADDR_R = nand->IO_ADDR_W = (void  __iomem *)base_addr;
 
        if (board_nand_init(nand))
@@ -110,7 +109,7 @@ void nand_init(void)
        /*
         * Select the chip in the board/cpu specific driver
         */
-       board_nand_select_device(nand_info[nand_curr_device]->priv,
+       board_nand_select_device(mtd_to_nand(nand_info[nand_curr_device]),
                                 nand_curr_device);
 #endif
 }
index 9e8fc1ffe24f8fc0ec5e6e5e651e78f060d2b041..92f581edd949dcb7c49a301712d73d95f8918116 100644 (file)
@@ -105,7 +105,7 @@ DEFINE_LED_TRIGGER(nand_led_trigger);
 static int check_offs_len(struct mtd_info *mtd,
                                        loff_t ofs, uint64_t len)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        int ret = 0;
 
        /* Start address must align on block boundary */
@@ -131,7 +131,7 @@ static int check_offs_len(struct mtd_info *mtd,
  */
 static void nand_release_device(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        /* De-select the NAND device */
        chip->select_chip(mtd, -1);
@@ -145,7 +145,7 @@ static void nand_release_device(struct mtd_info *mtd)
  */
 uint8_t nand_read_byte(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        return readb(chip->IO_ADDR_R);
 }
 
@@ -158,7 +158,7 @@ uint8_t nand_read_byte(struct mtd_info *mtd)
  */
 static uint8_t nand_read_byte16(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        return (uint8_t) cpu_to_le16(readw(chip->IO_ADDR_R));
 }
 
@@ -170,7 +170,7 @@ static uint8_t nand_read_byte16(struct mtd_info *mtd)
  */
 static u16 nand_read_word(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        return readw(chip->IO_ADDR_R);
 }
 
@@ -183,7 +183,7 @@ static u16 nand_read_word(struct mtd_info *mtd)
  */
 static void nand_select_chip(struct mtd_info *mtd, int chipnr)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        switch (chipnr) {
        case -1:
@@ -206,7 +206,7 @@ static void nand_select_chip(struct mtd_info *mtd, int chipnr)
  */
 static void nand_write_byte(struct mtd_info *mtd, uint8_t byte)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        chip->write_buf(mtd, &byte, 1);
 }
@@ -220,7 +220,7 @@ static void nand_write_byte(struct mtd_info *mtd, uint8_t byte)
  */
 static void nand_write_byte16(struct mtd_info *mtd, uint8_t byte)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        uint16_t word = byte;
 
        /*
@@ -287,7 +287,7 @@ static void iowrite16_rep(void *addr, void *buf, int len)
  */
 void nand_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        iowrite8_rep(chip->IO_ADDR_W, buf, len);
 }
@@ -302,7 +302,7 @@ void nand_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
  */
 void nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        ioread8_rep(chip->IO_ADDR_R, buf, len);
 }
@@ -317,7 +317,7 @@ void nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
  */
 void nand_write_buf16(struct mtd_info *mtd, const uint8_t *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        u16 *p = (u16 *) buf;
 
        iowrite16_rep(chip->IO_ADDR_W, p, len >> 1);
@@ -333,7 +333,7 @@ void nand_write_buf16(struct mtd_info *mtd, const uint8_t *buf, int len)
  */
 void nand_read_buf16(struct mtd_info *mtd, uint8_t *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        u16 *p = (u16 *) buf;
 
        ioread16_rep(chip->IO_ADDR_R, p, len >> 1);
@@ -350,7 +350,7 @@ void nand_read_buf16(struct mtd_info *mtd, uint8_t *buf, int len)
 static int nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)
 {
        int page, chipnr, res = 0, i = 0;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        u16 bad;
 
        if (chip->bbt_options & NAND_BBT_SCANLASTPAGE)
@@ -410,7 +410,7 @@ static int nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip)
  */
 static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        struct mtd_oob_ops ops;
        uint8_t buf[2] = { 0, 0 };
        int ret = 0, res, i = 0;
@@ -460,7 +460,7 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs)
 */
 static int nand_block_markbad_lowlevel(struct mtd_info *mtd, loff_t ofs)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        int res, ret = 0;
 
        if (!(chip->bbt_options & NAND_BBT_NO_OOB_BBM)) {
@@ -501,7 +501,7 @@ static int nand_block_markbad_lowlevel(struct mtd_info *mtd, loff_t ofs)
  */
 static int nand_check_wp(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        /* Broken xD cards report WP despite being writable */
        if (chip->options & NAND_BROKEN_XD)
@@ -521,7 +521,7 @@ static int nand_check_wp(struct mtd_info *mtd)
  */
 static int nand_block_isreserved(struct mtd_info *mtd, loff_t ofs)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        if (!chip->bbt)
                return 0;
@@ -542,7 +542,7 @@ static int nand_block_isreserved(struct mtd_info *mtd, loff_t ofs)
 static int nand_block_checkbad(struct mtd_info *mtd, loff_t ofs, int getchip,
                               int allowbbt)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        if (!(chip->options & NAND_SKIP_BBTSCAN) &&
            !(chip->options & NAND_BBT_SCANNED)) {
@@ -560,7 +560,7 @@ static int nand_block_checkbad(struct mtd_info *mtd, loff_t ofs, int getchip,
 /* Wait for the ready pin, after a command. The timeout is caught later. */
 void nand_wait_ready(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        u32 timeo = (CONFIG_SYS_HZ * 20) / 1000;
        u32 time_start;
 
@@ -583,7 +583,7 @@ EXPORT_SYMBOL_GPL(nand_wait_ready);
  */
 static void nand_wait_status_ready(struct mtd_info *mtd, unsigned long timeo)
 {
-       register struct nand_chip *chip = mtd->priv;
+       register struct nand_chip *chip = mtd_to_nand(mtd);
        u32 time_start;
 
        timeo = (CONFIG_SYS_HZ * timeo) / 1000;
@@ -608,7 +608,7 @@ static void nand_wait_status_ready(struct mtd_info *mtd, unsigned long timeo)
 static void nand_command(struct mtd_info *mtd, unsigned int command,
                         int column, int page_addr)
 {
-       register struct nand_chip *chip = mtd->priv;
+       register struct nand_chip *chip = mtd_to_nand(mtd);
        int ctrl = NAND_CTRL_CLE | NAND_CTRL_CHANGE;
 
        /* Write out the command to the device */
@@ -711,7 +711,7 @@ static void nand_command(struct mtd_info *mtd, unsigned int command,
 static void nand_command_lp(struct mtd_info *mtd, unsigned int command,
                            int column, int page_addr)
 {
-       register struct nand_chip *chip = mtd->priv;
+       register struct nand_chip *chip = mtd_to_nand(mtd);
 
        /* Emulate NAND_CMD_READOOB */
        if (command == NAND_CMD_READOOB) {
@@ -835,7 +835,7 @@ static void panic_nand_get_device(struct nand_chip *chip,
 static int
 nand_get_device(struct mtd_info *mtd, int new_state)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        chip->state = new_state;
        return 0;
 }
@@ -1332,7 +1332,7 @@ static uint8_t *nand_transfer_oob(struct nand_chip *chip, uint8_t *oob,
  */
 static int nand_setup_read_retry(struct mtd_info *mtd, int retry_mode)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        pr_debug("setting READ RETRY mode %d\n", retry_mode);
 
@@ -1357,7 +1357,7 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
                            struct mtd_oob_ops *ops)
 {
        int chipnr, page, realpage, col, bytes, aligned, oob_required;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        int ret = 0;
        uint32_t readlen = ops->len;
        uint32_t oobreadlen = ops->ooblen;
@@ -1700,7 +1700,7 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
                            struct mtd_oob_ops *ops)
 {
        int page, realpage, chipnr;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        struct mtd_ecc_stats stats;
        int readlen = ops->ooblen;
        int len;
@@ -2139,7 +2139,7 @@ static int nand_write_page(struct mtd_info *mtd, struct nand_chip *chip,
 static uint8_t *nand_fill_oob(struct mtd_info *mtd, uint8_t *oob, size_t len,
                              struct mtd_oob_ops *ops)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        /*
         * Initialise to all 0xFF, to avoid the possibility of left over OOB
@@ -2199,7 +2199,7 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
                             struct mtd_oob_ops *ops)
 {
        int chipnr, realpage, page, blockmask, column;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        uint32_t writelen = ops->len;
 
        uint32_t oobwritelen = ops->ooblen;
@@ -2328,7 +2328,7 @@ err_out:
 static int panic_nand_write(struct mtd_info *mtd, loff_t to, size_t len,
                            size_t *retlen, const uint8_t *buf)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        struct mtd_oob_ops ops;
        int ret;
 
@@ -2388,7 +2388,7 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
                             struct mtd_oob_ops *ops)
 {
        int chipnr, page, status, len;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        pr_debug("%s: to = 0x%08x, len = %i\n",
                         __func__, (unsigned int)to, (int)ops->ooblen);
@@ -2513,7 +2513,7 @@ out:
  */
 static int single_erase(struct mtd_info *mtd, int page)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        /* Send commands to erase a block */
        chip->cmdfunc(mtd, NAND_CMD_ERASE1, -1, page);
        chip->cmdfunc(mtd, NAND_CMD_ERASE2, -1, -1);
@@ -2545,7 +2545,7 @@ int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
                    int allowbbt)
 {
        int page, status, pages_per_block, ret, chipnr;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        loff_t len;
 
        pr_debug("%s: start = 0x%012llx, len = %llu\n",
@@ -2908,7 +2908,7 @@ ext_out:
 
 static int nand_setup_read_retry_micron(struct mtd_info *mtd, int retry_mode)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        uint8_t feature[ONFI_SUBFEATURE_PARAM_LEN] = {retry_mode};
 
        return chip->onfi_set_features(mtd, chip, ONFI_FEATURE_ADDR_READ_RETRY,
@@ -3616,7 +3616,7 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips,
                    struct nand_flash_dev *table)
 {
        int i, nand_maf_id, nand_dev_id;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        struct nand_flash_dev *type;
 
        /* Set the default functions */
@@ -3680,7 +3680,7 @@ EXPORT_SYMBOL(nand_scan_ident);
  */
 static bool nand_ecc_strength_good(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        struct nand_ecc_ctrl *ecc = &chip->ecc;
        int corr, ds_corr;
 
@@ -3709,7 +3709,7 @@ static bool nand_ecc_strength_good(struct mtd_info *mtd)
 int nand_scan_tail(struct mtd_info *mtd)
 {
        int i;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        struct nand_ecc_ctrl *ecc = &chip->ecc;
        struct nand_buffers *nbuf;
 
index 00f28a41571a6b0a0bc1454ecd832bf31032722a..152f3bc78eff3afa836f7d78eaa5007120768bc4 100644 (file)
@@ -173,7 +173,7 @@ static int read_bbt(struct mtd_info *mtd, uint8_t *buf, int page, int num,
                struct nand_bbt_descr *td, int offs)
 {
        int res, ret = 0, i, j, act = 0;
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        size_t retlen, len, totlen;
        loff_t from;
        int bits = td->options & NAND_BBT_NRBITS_MSK;
@@ -264,7 +264,7 @@ static int read_bbt(struct mtd_info *mtd, uint8_t *buf, int page, int num,
  */
 static int read_abs_bbt(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr *td, int chip)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int res = 0, i;
 
        if (td->options & NAND_BBT_PERCHIP) {
@@ -389,7 +389,7 @@ static u32 bbt_get_ver_offs(struct mtd_info *mtd, struct nand_bbt_descr *td)
 static void read_abs_bbts(struct mtd_info *mtd, uint8_t *buf,
                          struct nand_bbt_descr *td, struct nand_bbt_descr *md)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        /* Read the primary version, if available */
        if (td->options & NAND_BBT_VERSION) {
@@ -455,7 +455,7 @@ static int scan_block_fast(struct mtd_info *mtd, struct nand_bbt_descr *bd,
 static int create_bbt(struct mtd_info *mtd, uint8_t *buf,
        struct nand_bbt_descr *bd, int chip)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int i, numblocks, numpages;
        int startblock;
        loff_t from;
@@ -524,7 +524,7 @@ static int create_bbt(struct mtd_info *mtd, uint8_t *buf,
  */
 static int search_bbt(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr *td)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int i, chips;
        int startblock, block, dir;
        int scanlen = mtd->writesize + mtd->oobsize;
@@ -619,7 +619,7 @@ static int write_bbt(struct mtd_info *mtd, uint8_t *buf,
                     struct nand_bbt_descr *td, struct nand_bbt_descr *md,
                     int chipsel)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        struct erase_info einfo;
        int i, res, chip = 0;
        int bits, startblock, dir, page, offs, numblocks, sft, sftmsk;
@@ -820,7 +820,7 @@ static int write_bbt(struct mtd_info *mtd, uint8_t *buf,
  */
 static inline int nand_memory_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        return create_bbt(mtd, this->buffers->databuf, bd, -1);
 }
@@ -839,7 +839,7 @@ static inline int nand_memory_bbt(struct mtd_info *mtd, struct nand_bbt_descr *b
 static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr *bd)
 {
        int i, chips, writeops, create, chipsel, res, res2;
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        struct nand_bbt_descr *td = this->bbt_td;
        struct nand_bbt_descr *md = this->bbt_md;
        struct nand_bbt_descr *rd, *rd2;
@@ -963,7 +963,7 @@ static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc
  */
 static void mark_bbt_region(struct mtd_info *mtd, struct nand_bbt_descr *td)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int i, j, chips, block, nrblocks, update;
        uint8_t oldval;
 
@@ -1023,7 +1023,7 @@ static void mark_bbt_region(struct mtd_info *mtd, struct nand_bbt_descr *td)
  */
 static void verify_bbt_descr(struct mtd_info *mtd, struct nand_bbt_descr *bd)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        u32 pattern_len;
        u32 bits;
        u32 table_size;
@@ -1075,7 +1075,7 @@ static void verify_bbt_descr(struct mtd_info *mtd, struct nand_bbt_descr *bd)
  */
 int nand_scan_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int len, res = 0;
        uint8_t *buf;
        struct nand_bbt_descr *td = this->bbt_td;
@@ -1143,7 +1143,7 @@ int nand_scan_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd)
  */
 static int nand_update_bbt(struct mtd_info *mtd, loff_t offs)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int len, res = 0;
        int chip, chipsel;
        uint8_t *buf;
@@ -1277,7 +1277,7 @@ static int nand_create_badblock_pattern(struct nand_chip *this)
  */
 int nand_default_bbt(struct mtd_info *mtd)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int ret;
 
        /* Is a flash based bad block table requested? */
@@ -1313,7 +1313,7 @@ int nand_default_bbt(struct mtd_info *mtd)
  */
 int nand_isreserved_bbt(struct mtd_info *mtd, loff_t offs)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int block;
 
        block = (int)(offs >> this->bbt_erase_shift);
@@ -1328,7 +1328,7 @@ int nand_isreserved_bbt(struct mtd_info *mtd, loff_t offs)
  */
 int nand_isbad_bbt(struct mtd_info *mtd, loff_t offs, int allowbbt)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int block, res;
 
        block = (int)(offs >> this->bbt_erase_shift);
@@ -1355,7 +1355,7 @@ int nand_isbad_bbt(struct mtd_info *mtd, loff_t offs, int allowbbt)
  */
 int nand_markbad_bbt(struct mtd_info *mtd, loff_t offs)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int block, ret = 0;
 
        block = (int)(offs >> this->bbt_erase_shift);
index 35d2140dabc1db28169baca7e96b33989e452798..d7f6ce0acfd8d3479fe82d88afd08af821981fd1 100644 (file)
@@ -41,7 +41,7 @@ struct nand_bch_control {
 int nand_bch_calculate_ecc(struct mtd_info *mtd, const unsigned char *buf,
                           unsigned char *code)
 {
-       const struct nand_chip *chip = mtd->priv;
+       const struct nand_chip *chip = mtd_to_nand(mtd);
        struct nand_bch_control *nbc = chip->ecc.priv;
        unsigned int i;
 
@@ -67,7 +67,7 @@ int nand_bch_calculate_ecc(struct mtd_info *mtd, const unsigned char *buf,
 int nand_bch_correct_data(struct mtd_info *mtd, unsigned char *buf,
                          unsigned char *read_ecc, unsigned char *calc_ecc)
 {
-       const struct nand_chip *chip = mtd->priv;
+       const struct nand_chip *chip = mtd_to_nand(mtd);
        struct nand_bch_control *nbc = chip->ecc.priv;
        unsigned int *errloc = nbc->errloc;
        int i, count;
index 37a0206ad6531d1169668d93b1195183e1bfed58..335c3e34714cf4bf1d7655dd828846786a3f3db6 100644 (file)
@@ -25,7 +25,7 @@
 
 static void plat_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        if (cmd == NAND_CMD_NONE)
                return;
@@ -39,7 +39,7 @@ static void plat_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 #ifdef NAND_PLAT_DEV_READY
 static int plat_dev_ready(struct mtd_info *mtd)
 {
-       return NAND_PLAT_DEV_READY((struct nand_chip *)mtd->priv);
+       return NAND_PLAT_DEV_READY((struct nand_chip *)mtd_to_nand(mtd));
 }
 #else
 # define plat_dev_ready NULL
index bc6a09a1b5b6951dc2c52a17ac8be9583038ac41..b023e00313b634e73dcb7bde67f6212102446484 100644 (file)
@@ -26,7 +26,7 @@ static struct nand_chip nand_chip;
 static int nand_command(int block, int page, uint32_t offs,
        u8 cmd)
 {
-       struct nand_chip *this = mtd->priv();
+       struct nand_chip *this = mtd_to_nand(mtd);
        int page_addr = page + block * CONFIG_SYS_NAND_PAGE_COUNT;
 
        while (!this->dev_ready(mtd))
@@ -63,7 +63,7 @@ static int nand_command(int block, int page, uint32_t offs,
 static int nand_command(int block, int page, uint32_t offs,
        u8 cmd)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        int page_addr = page + block * CONFIG_SYS_NAND_PAGE_COUNT;
        void (*hwctrl)(struct mtd_info *mtd, int cmd,
                        unsigned int ctrl) = this->cmd_ctrl;
@@ -114,7 +114,7 @@ static int nand_command(int block, int page, uint32_t offs,
 
 static int nand_is_bad_block(int block)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        u_char bb_data[2];
 
        nand_command(block, 0, CONFIG_SYS_NAND_BAD_BLOCK_POS,
@@ -139,7 +139,7 @@ static int nand_is_bad_block(int block)
 #if defined(CONFIG_SYS_NAND_HW_ECC_OOBFIRST)
 static int nand_read_page(int block, int page, uchar *dst)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        u_char ecc_calc[ECCTOTAL];
        u_char ecc_code[ECCTOTAL];
        u_char oob_data[CONFIG_SYS_NAND_OOBSIZE];
@@ -170,7 +170,7 @@ static int nand_read_page(int block, int page, uchar *dst)
 #else
 static int nand_read_page(int block, int page, void *dst)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        u_char ecc_calc[ECCTOTAL];
        u_char ecc_code[ECCTOTAL];
        u_char oob_data[CONFIG_SYS_NAND_OOBSIZE];
@@ -250,7 +250,6 @@ void nand_init(void)
         * Init board specific nand support
         */
        mtd = &nand_chip.mtd;
-       mtd->priv = &nand_chip;
        nand_chip.IO_ADDR_R = nand_chip.IO_ADDR_W =
                (void  __iomem *)CONFIG_SYS_NAND_BASE;
        board_nand_init(&nand_chip);
index 90bf798ac00b14a769ff0aae1b30eab523ad32c4..9b61087e862c7a8e60559109a4ea1ee840177f6f 100644 (file)
@@ -59,7 +59,7 @@ int nand_erase_opts(struct mtd_info *mtd,
        int percent_complete = -1;
        const char *mtd_device = mtd->name;
        struct mtd_oob_ops oob_opts;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        if ((opts->offset & (mtd->erasesize - 1)) != 0) {
                printf("Attempt to erase non block-aligned data\n");
@@ -217,7 +217,7 @@ int nand_lock(struct mtd_info *mtd, int tight)
 {
        int ret = 0;
        int status;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        /* select the NAND device */
        chip->select_chip(mtd, 0);
@@ -267,7 +267,7 @@ int nand_get_lock_status(struct mtd_info *mtd, loff_t offset)
        int ret = 0;
        int chipnr;
        int page;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        /* select the NAND device */
        chipnr = (int)(offset >> chip->chip_shift);
@@ -314,7 +314,7 @@ int nand_unlock(struct mtd_info *mtd, loff_t start, size_t length,
        int chipnr;
        int status;
        int page;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        debug("nand_unlock%s: start: %08llx, length: %zd!\n",
                allexcept ? " (allexcept)" : "", start, length);
index 8a68cb0a67a7fc226e1f805097561667b196d2c4..ee353c768b82eba5e286e7c910b0715fed353352 100644 (file)
@@ -37,7 +37,7 @@ static int ndfc_cs[NDFC_MAX_BANKS];
 
 static void ndfc_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
        ulong base = (ulong) this->IO_ADDR_W & 0xffffff00;
 
        if (cmd == NAND_CMD_NONE)
@@ -51,7 +51,7 @@ static void ndfc_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 
 static int ndfc_dev_ready(struct mtd_info *mtdinfo)
 {
-       struct nand_chip *this = mtdinfo->priv;
+       struct nand_chip *this = mtd_to_nand(mtdinfo);
        ulong base = (ulong) this->IO_ADDR_W & 0xffffff00;
 
        return (in_be32((u32 *)(base + NDFC_STAT)) & NDFC_STAT_IS_READY);
@@ -59,7 +59,7 @@ static int ndfc_dev_ready(struct mtd_info *mtdinfo)
 
 static void ndfc_enable_hwecc(struct mtd_info *mtdinfo, int mode)
 {
-       struct nand_chip *this = mtdinfo->priv;
+       struct nand_chip *this = mtd_to_nand(mtdinfo);
        ulong base = (ulong) this->IO_ADDR_W & 0xffffff00;
        u32 ccr;
 
@@ -71,7 +71,7 @@ static void ndfc_enable_hwecc(struct mtd_info *mtdinfo, int mode)
 static int ndfc_calculate_ecc(struct mtd_info *mtdinfo,
                              const u_char *dat, u_char *ecc_code)
 {
-       struct nand_chip *this = mtdinfo->priv;
+       struct nand_chip *this = mtd_to_nand(mtdinfo);
        ulong base = (ulong) this->IO_ADDR_W & 0xffffff00;
        u32 ecc;
        u8 *p = (u8 *)&ecc;
@@ -96,7 +96,7 @@ static int ndfc_calculate_ecc(struct mtd_info *mtdinfo,
  */
 static void ndfc_read_buf(struct mtd_info *mtdinfo, uint8_t *buf, int len)
 {
-       struct nand_chip *this = mtdinfo->priv;
+       struct nand_chip *this = mtd_to_nand(mtdinfo);
        ulong base = (ulong) this->IO_ADDR_W & 0xffffff00;
        uint32_t *p = (uint32_t *) buf;
 
@@ -110,7 +110,7 @@ static void ndfc_read_buf(struct mtd_info *mtdinfo, uint8_t *buf, int len)
  */
 static void ndfc_write_buf(struct mtd_info *mtdinfo, const uint8_t *buf, int len)
 {
-       struct nand_chip *this = mtdinfo->priv;
+       struct nand_chip *this = mtd_to_nand(mtdinfo);
        ulong base = (ulong) this->IO_ADDR_W & 0xffffff00;
        uint32_t *p = (uint32_t *) buf;
 
@@ -124,7 +124,7 @@ static void ndfc_write_buf(struct mtd_info *mtdinfo, const uint8_t *buf, int len
 static uint8_t ndfc_read_byte(struct mtd_info *mtd)
 {
 
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
 #ifdef CONFIG_SYS_NAND_BUSWIDTH_16BIT
        return (uint8_t) readw(chip->IO_ADDR_R);
index f2ee90ee61175dc80349ec13c78e9db8f698a900..cac9eea2c1e1c6c3d5dd1c79d87e8db0685e2b99 100644 (file)
@@ -58,8 +58,8 @@ static struct omap_nand_info omap_nand_info[GPMC_MAX_CS];
 static void omap_nand_hwcontrol(struct mtd_info *mtd, int32_t cmd,
                                uint32_t ctrl)
 {
-       register struct nand_chip *this = mtd->priv;
-       struct omap_nand_info *info = this->priv;
+       register struct nand_chip *this = mtd_to_nand(mtd);
+       struct omap_nand_info *info = nand_get_controller_data(this);
        int cs = info->cs;
 
        /*
@@ -85,8 +85,8 @@ static void omap_nand_hwcontrol(struct mtd_info *mtd, int32_t cmd,
 /* Check wait pin as dev ready indicator */
 static int omap_dev_ready(struct mtd_info *mtd)
 {
-       register struct nand_chip *this = mtd->priv;
-       struct omap_nand_info *info = this->priv;
+       register struct nand_chip *this = mtd_to_nand(mtd);
+       struct omap_nand_info *info = nand_get_controller_data(this);
        return gpmc_cfg->status & (1 << (8 + info->ws));
 }
 
@@ -177,8 +177,8 @@ static int __maybe_unused omap_correct_data(struct mtd_info *mtd, uint8_t *dat,
 __maybe_unused
 static void omap_enable_hwecc(struct mtd_info *mtd, int32_t mode)
 {
-       struct nand_chip        *nand   = mtd->priv;
-       struct omap_nand_info   *info   = nand->priv;
+       struct nand_chip        *nand   = mtd_to_nand(mtd);
+       struct omap_nand_info   *info   = nand_get_controller_data(nand);
        unsigned int dev_width = (nand->options & NAND_BUSWIDTH_16) ? 1 : 0;
        unsigned int ecc_algo = 0;
        unsigned int bch_type = 0;
@@ -262,8 +262,8 @@ static void omap_enable_hwecc(struct mtd_info *mtd, int32_t mode)
 static int omap_calculate_ecc(struct mtd_info *mtd, const uint8_t *dat,
                                uint8_t *ecc_code)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct omap_nand_info *info = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct omap_nand_info *info = nand_get_controller_data(chip);
        uint32_t *ptr, val = 0;
        int8_t i = 0, j;
 
@@ -392,7 +392,7 @@ static int __read_prefetch_aligned(struct nand_chip *chip, uint32_t *buf, int le
 {
        int ret;
        uint32_t cnt;
-       struct omap_nand_info *info = chip->priv;
+       struct omap_nand_info *info = nand_get_controller_data(chip);
 
        ret = omap_prefetch_enable(PREFETCH_FIFOTHRESHOLD_MAX, len, 0, info->cs);
        if (ret < 0)
@@ -417,7 +417,7 @@ static int __read_prefetch_aligned(struct nand_chip *chip, uint32_t *buf, int le
 
 static inline void omap_nand_read(struct mtd_info *mtd, uint8_t *buf, int len)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        if (chip->options & NAND_BUSWIDTH_16)
                nand_read_buf16(mtd, buf, len);
@@ -429,7 +429,7 @@ static void omap_nand_read_prefetch(struct mtd_info *mtd, uint8_t *buf, int len)
 {
        int ret;
        uint32_t head, tail;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        /*
         * If the destination buffer is unaligned, start with reading
@@ -491,8 +491,8 @@ static void omap_reverse_list(u8 *list, unsigned int length)
 static int omap_correct_data_bch(struct mtd_info *mtd, uint8_t *dat,
                                uint8_t *read_ecc, uint8_t *calc_ecc)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct omap_nand_info *info = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct omap_nand_info *info = nand_get_controller_data(chip);
        struct nand_ecc_ctrl *ecc = &chip->ecc;
        uint32_t error_count = 0, error_max;
        uint32_t error_loc[ELM_MAX_ERROR_COUNT];
@@ -652,8 +652,8 @@ static int omap_correct_data_bch_sw(struct mtd_info *mtd, u_char *data,
        int i, count;
        /* cannot correct more than 8 errors */
        unsigned int errloc[8];
-       struct nand_chip *chip = mtd->priv;
-       struct omap_nand_info *info = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct omap_nand_info *info = nand_get_controller_data(chip);
 
        count = decode_bch(info->control, NULL, 512, read_ecc, calc_ecc,
                                                        NULL, errloc);
@@ -691,8 +691,8 @@ static int omap_correct_data_bch_sw(struct mtd_info *mtd, u_char *data,
  */
 static void __maybe_unused omap_free_bch(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
-       struct omap_nand_info *info = chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct omap_nand_info *info = nand_get_controller_data(chip);
 
        if (info->control) {
                free_bch(info->control);
@@ -710,7 +710,7 @@ static void __maybe_unused omap_free_bch(struct mtd_info *mtd)
  */
 static int omap_select_ecc_scheme(struct nand_chip *nand,
        enum omap_ecc ecc_scheme, unsigned int pagesize, unsigned int oobsize) {
-       struct omap_nand_info   *info           = nand->priv;
+       struct omap_nand_info   *info           = nand_get_controller_data(nand);
        struct nand_ecclayout   *ecclayout      = &omap_ecclayout;
        int eccsteps = pagesize / SECTOR_BYTES;
        int i;
@@ -904,7 +904,7 @@ int __maybe_unused omap_nand_switch_ecc(uint32_t hardware, uint32_t eccstrength)
        }
 
        mtd = nand_info[nand_curr_device];
-       nand = mtd->priv;
+       nand = mtd_to_nand(mtd);
        nand->options |= NAND_OWN_BUFFERS;
        nand->options &= ~NAND_SUBPAGE_READ;
        /* Setup the ecc configurations again */
@@ -994,7 +994,7 @@ int board_nand_init(struct nand_chip *nand)
        omap_nand_info[cs].control = NULL;
        omap_nand_info[cs].cs = cs;
        omap_nand_info[cs].ws = wscfg[cs];
-       nand->priv      = &omap_nand_info[cs];
+       nand_set_controller_data(nand, &omap_nand_info[cs]);
        nand->cmd_ctrl  = omap_nand_hwcontrol;
        nand->options   |= NAND_NO_PADDING | NAND_CACHEPRG;
        nand->chip_delay = 100;
index 125dbe7fd30656a2c936e19bf656371f69ef7e57..03bf0468f1426874a2efb453994c2975f34c704e 100644 (file)
@@ -900,7 +900,8 @@ static int prepare_set_command(struct pxa3xx_nand_info *info, int command,
 static void nand_cmdfunc(struct mtd_info *mtd, unsigned command,
                         int column, int page_addr)
 {
-       struct pxa3xx_nand_host *host = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct pxa3xx_nand_host *host = nand_get_controller_data(chip);
        struct pxa3xx_nand_info *info = host->info_data;
        int exec_cmd;
 
@@ -960,7 +961,8 @@ static void nand_cmdfunc_extended(struct mtd_info *mtd,
                                  const unsigned command,
                                  int column, int page_addr)
 {
-       struct pxa3xx_nand_host *host = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct pxa3xx_nand_host *host = nand_get_controller_data(chip);
        struct pxa3xx_nand_info *info = host->info_data;
        int exec_cmd, ext_cmd_type;
 
@@ -1091,7 +1093,7 @@ static int pxa3xx_nand_read_page_hwecc(struct mtd_info *mtd,
                struct nand_chip *chip, uint8_t *buf, int oob_required,
                int page)
 {
-       struct pxa3xx_nand_host *host = mtd->priv;
+       struct pxa3xx_nand_host *host = nand_get_controller_data(chip);
        struct pxa3xx_nand_info *info = host->info_data;
 
        chip->read_buf(mtd, buf, mtd->writesize);
@@ -1117,7 +1119,8 @@ static int pxa3xx_nand_read_page_hwecc(struct mtd_info *mtd,
 
 static uint8_t pxa3xx_nand_read_byte(struct mtd_info *mtd)
 {
-       struct pxa3xx_nand_host *host = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct pxa3xx_nand_host *host = nand_get_controller_data(chip);
        struct pxa3xx_nand_info *info = host->info_data;
        char retval = 0xFF;
 
@@ -1130,7 +1133,8 @@ static uint8_t pxa3xx_nand_read_byte(struct mtd_info *mtd)
 
 static u16 pxa3xx_nand_read_word(struct mtd_info *mtd)
 {
-       struct pxa3xx_nand_host *host = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct pxa3xx_nand_host *host = nand_get_controller_data(chip);
        struct pxa3xx_nand_info *info = host->info_data;
        u16 retval = 0xFFFF;
 
@@ -1143,7 +1147,8 @@ static u16 pxa3xx_nand_read_word(struct mtd_info *mtd)
 
 static void pxa3xx_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 {
-       struct pxa3xx_nand_host *host = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct pxa3xx_nand_host *host = nand_get_controller_data(chip);
        struct pxa3xx_nand_info *info = host->info_data;
        int real_len = min_t(size_t, len, info->buf_count - info->buf_start);
 
@@ -1154,7 +1159,8 @@ static void pxa3xx_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 static void pxa3xx_nand_write_buf(struct mtd_info *mtd,
                const uint8_t *buf, int len)
 {
-       struct pxa3xx_nand_host *host = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct pxa3xx_nand_host *host = nand_get_controller_data(chip);
        struct pxa3xx_nand_info *info = host->info_data;
        int real_len = min_t(size_t, len, info->buf_count - info->buf_start);
 
@@ -1169,7 +1175,8 @@ static void pxa3xx_nand_select_chip(struct mtd_info *mtd, int chip)
 
 static int pxa3xx_nand_waitfunc(struct mtd_info *mtd, struct nand_chip *this)
 {
-       struct pxa3xx_nand_host *host = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct pxa3xx_nand_host *host = nand_get_controller_data(chip);
        struct pxa3xx_nand_info *info = host->info_data;
 
        if (info->need_wait) {
@@ -1210,7 +1217,7 @@ static int pxa3xx_nand_config_flash(struct pxa3xx_nand_info *info)
 {
        struct pxa3xx_nand_host *host = info->host[info->cs];
        struct mtd_info *mtd = host->mtd;
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
 
        info->reg_ndcr |= (host->col_addr_cycles == 2) ? NDCR_RA_START : 0;
        info->reg_ndcr |= (chip->page_shift == 6) ? NDCR_PG_PER_BLK : 0;
@@ -1262,7 +1269,7 @@ static int pxa3xx_nand_sensing(struct pxa3xx_nand_host *host)
        int ret;
 
        mtd = info->host[info->cs]->mtd;
-       chip = mtd->priv;
+       chip = mtd_to_nand(mtd);
 
        /* configure default flash values */
        info->reg_ndcr = 0x0; /* enable all interrupts */
@@ -1354,10 +1361,10 @@ static int pxa_ecc_init(struct pxa3xx_nand_info *info,
 
 static int pxa3xx_nand_scan(struct mtd_info *mtd)
 {
-       struct pxa3xx_nand_host *host = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct pxa3xx_nand_host *host = nand_get_controller_data(chip);
        struct pxa3xx_nand_info *info = host->info_data;
        struct pxa3xx_nand_platform_data *pdata = info->pdata;
-       struct nand_chip *chip = mtd->priv;
        int ret;
        uint16_t ecc_strength, ecc_step;
 
@@ -1479,14 +1486,13 @@ static int alloc_nand_resource(struct pxa3xx_nand_info *info)
        for (cs = 0; cs < pdata->num_cs; cs++) {
                chip = (struct nand_chip *)
                        ((u8 *)&info[1] + sizeof(*host) * cs);
-               mtd = &chip->mtd;
+               mtd = nand_to_mtd(chip);
                host = (struct pxa3xx_nand_host *)chip;
                info->host[cs] = host;
                host->mtd = mtd;
                host->cs = cs;
                host->info_data = info;
                host->read_id_bytes = 4;
-               mtd->priv = host;
                mtd->owner = THIS_MODULE;
 
                chip->ecc.read_page     = pxa3xx_nand_read_page_hwecc;
index b3a2a60bb268f26740b60fc968af6870405e2ceb..2a0da6e398746cede5af6af96ac3fb18cb6fe00c 100644 (file)
@@ -31,7 +31,7 @@
 static void nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
 {
        int i;
-       struct nand_chip *this = mtd->priv;
+       struct nand_chip *this = mtd_to_nand(mtd);
 
        for (i = 0; i < len; i++)
                buf[i] = readb(this->IO_ADDR_R);
@@ -40,7 +40,7 @@ static void nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
 
 static void s3c24x0_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        struct s3c24x0_nand *nand = s3c24x0_get_base_nand();
 
        debug("hwcontrol(): 0x%02x 0x%02x\n", cmd, ctrl);
index b20fb1e10d9b1563a9cdfd3bece57a95c403f160..3eae4cbee20cc9a79fbcc6e369d6bbe7877911d4 100644 (file)
@@ -143,10 +143,10 @@ static int nand_waitfor_cmd_completion(struct nand_ctlr *reg)
  */
 static uint8_t read_byte(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        struct nand_drv *info;
 
-       info = (struct nand_drv *)chip->priv;
+       info = (struct nand_drv *)nand_get_controller_data(chip);
 
        writel(CMD_GO | CMD_PIO | CMD_RX | CMD_CE0 | CMD_A_VALID,
               &info->reg->command);
@@ -169,8 +169,8 @@ static void read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 {
        int i, s;
        unsigned int reg;
-       struct nand_chip *chip = mtd->priv;
-       struct nand_drv *info = (struct nand_drv *)chip->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct nand_drv *info = (struct nand_drv *)nand_get_controller_data(chip);
 
        for (i = 0; i < len; i += 4) {
                s = (len - i) > 4 ? 4 : len - i;
@@ -194,11 +194,11 @@ static void read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
  */
 static int nand_dev_ready(struct mtd_info *mtd)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        int reg_val;
        struct nand_drv *info;
 
-       info = (struct nand_drv *)chip->priv;
+       info = (struct nand_drv *)nand_get_controller_data(chip);
 
        reg_val = readl(&info->reg->status);
        if (reg_val & STATUS_RBSY0)
@@ -245,10 +245,10 @@ static void nand_clear_interrupt_status(struct nand_ctlr *reg)
 static void nand_command(struct mtd_info *mtd, unsigned int command,
        int column, int page_addr)
 {
-       struct nand_chip *chip = mtd->priv;
+       struct nand_chip *chip = mtd_to_nand(mtd);
        struct nand_drv *info;
 
-       info = (struct nand_drv *)chip->priv;
+       info = (struct nand_drv *)nand_get_controller_data(chip);
 
        /*
         * Write out the command to the device.
@@ -512,7 +512,7 @@ static int nand_rw_page(struct mtd_info *mtd, struct nand_chip *chip,
                return -EINVAL;
        }
 
-       info = (struct nand_drv *)chip->priv;
+       info = (struct nand_drv *)nand_get_controller_data(chip);
        config = &info->config;
        if (set_bus_width_page_size(config, &reg_val))
                return -EINVAL;
@@ -662,7 +662,7 @@ static int nand_write_page_hwecc(struct mtd_info *mtd,
        int page;
        struct nand_drv *info;
 
-       info = (struct nand_drv *)chip->priv;
+       info = (struct nand_drv *)nand_get_controller_data(chip);
 
        page = (readl(&info->reg->addr_reg1) >> 16) |
                (readl(&info->reg->addr_reg2) << 16);
@@ -702,7 +702,7 @@ static int nand_write_page_raw(struct mtd_info *mtd,
        int page;
        struct nand_drv *info;
 
-       info = (struct nand_drv *)chip->priv;
+       info = (struct nand_drv *)nand_get_controller_data(chip);
        page = (readl(&info->reg->addr_reg1) >> 16) |
                (readl(&info->reg->addr_reg2) << 16);
 
@@ -734,7 +734,7 @@ static int nand_rw_oob(struct mtd_info *mtd, struct nand_chip *chip,
 
        if (((int)chip->oob_poi) & 0x03)
                return -EINVAL;
-       info = (struct nand_drv *)chip->priv;
+       info = (struct nand_drv *)nand_get_controller_data(chip);
        if (set_bus_width_page_size(&info->config, &reg_val))
                return -EINVAL;
 
@@ -963,7 +963,7 @@ int tegra_nand_init(struct nand_chip *nand, int devnum)
        nand->ecc.strength = 1;
        nand->select_chip = nand_select_chip;
        nand->dev_ready  = nand_dev_ready;
-       nand->priv = &nand_ctrl;
+       nand_set_controller_data(nand, &nand_ctrl);
 
        /* Disable subpage writes as we do not provide ecc->hwctl */
        nand->options |= NAND_NO_SUBPAGE_WRITE;
@@ -976,8 +976,7 @@ int tegra_nand_init(struct nand_chip *nand, int devnum)
 
        dm_gpio_set_value(&config->wp_gpio, 1);
 
-       our_mtd = &nand->mtd;
-       our_mtd->priv = nand;
+       our_mtd = nand_to_mtd(nand);
        ret = nand_scan_ident(our_mtd, CONFIG_SYS_NAND_MAX_CHIPS, NULL);
        if (ret)
                return ret;
index 3be8b02ccb70b41d27bb390841245609e20b4ebd..a4d5a6205f38566f3647a6b05ca237229104a877 100644 (file)
@@ -155,8 +155,7 @@ struct vf610_nfc {
        enum vf610_nfc_alt_buf alt_buf;
 };
 
-#define mtd_to_nfc(_mtd) \
-       (struct vf610_nfc *)((struct nand_chip *)_mtd->priv)->priv
+#define mtd_to_nfc(_mtd) nand_get_controller_data(mtd_to_nand(_mtd))
 
 #if defined(CONFIG_SYS_NAND_VF610_NFC_45_ECC_BYTES)
 #define ECC_HW_MODE ECC_45_BYTE
@@ -653,9 +652,8 @@ static int vf610_nfc_nand_init(int devnum, void __iomem *addr)
        chip = &nfc->chip;
        nfc->regs = addr;
 
-       mtd = &chip->mtd;
-       mtd->priv = chip;
-       chip->priv = nfc;
+       mtd = nand_to_mtd(chip);
+       nand_set_controller_data(chip, nfc);
 
        if (cfg.width == 16)
                chip->options |= NAND_BUSWIDTH_16;
index 6d8687148da586a1a758de288c3c3c0be298974f..25aa6d15647f5fa579c23769d7b9bf6f4941ce38 100644 (file)
@@ -190,7 +190,7 @@ void cmd_yaffs_devconfig(char *_mp, int flash_dev,
                goto err;
        }
 
-       chip =  mtd->priv;
+       chip =  mtd_to_nand(mtd);
 
        /* Check for any conflicts */
        yaffs_dev_rewind();
index fe8ac9da29d81fc05312bdf0335d865278b61577..e1df66b62570fab86d6ccd96ab06fadcf414e431 100644 (file)
@@ -740,6 +740,26 @@ struct nand_chip {
        void *priv;
 };
 
+static inline struct nand_chip *mtd_to_nand(struct mtd_info *mtd)
+{
+       return container_of(mtd, struct nand_chip, mtd);
+}
+
+static inline struct mtd_info *nand_to_mtd(struct nand_chip *chip)
+{
+       return &chip->mtd;
+}
+
+static inline void *nand_get_controller_data(struct nand_chip *chip)
+{
+       return chip->priv;
+}
+
+static inline void nand_set_controller_data(struct nand_chip *chip, void *priv)
+{
+       chip->priv = priv;
+}
+
 /*
  * NAND Flash Manufacturer ID Codes
  */