static inline struct spinand_state *mtd_to_state(struct mtd_info *mtd)
 {
        struct nand_chip *chip = mtd_to_nand(mtd);
-       struct spinand_info *info = (struct spinand_info *)chip->priv;
+       struct spinand_info *info = nand_get_controller_data(chip);
        struct spinand_state *state = (struct spinand_state *)info->priv;
 
        return state;
        u8 *p = buf;
        int eccsize = chip->ecc.size;
        int eccsteps = chip->ecc.steps;
-       struct spinand_info *info = (struct spinand_info *)chip->priv;
+       struct spinand_info *info = nand_get_controller_data(chip);
 
        enable_read_hw_ecc = 1;
 
 
 static int spinand_wait(struct mtd_info *mtd, struct nand_chip *chip)
 {
-       struct spinand_info *info = (struct spinand_info *)chip->priv;
+       struct spinand_info *info = nand_get_controller_data(chip);
 
        unsigned long timeo = jiffies;
        int retval, state = chip->state;
                            int column, int page)
 {
        struct nand_chip *chip = mtd_to_nand(mtd);
-       struct spinand_info *info = (struct spinand_info *)chip->priv;
+       struct spinand_info *info = nand_get_controller_data(chip);
        struct spinand_state *state = (struct spinand_state *)info->priv;
 
        switch (command) {
 #endif
 
        nand_set_flash_node(chip, spi_nand->dev.of_node);
-       chip->priv      = info;
+       nand_set_controller_data(chip, info);
        chip->read_buf  = spinand_read_buf;
        chip->write_buf = spinand_write_buf;
        chip->read_byte = spinand_read_byte;