Merge tag 'usb-4.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
[deliverable/linux.git] / drivers / mtd / nand / orion_nand.c
index ee83749fb1d355e67dbcb07c98b187f1e52e2a1a..d4614bfbfed6c1c63b95fec88c2af2c96dedd182 100644 (file)
@@ -25,8 +25,8 @@
 
 static void orion_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
 {
-       struct nand_chip *nc = mtd->priv;
-       struct orion_nand_data *board = nc->priv;
+       struct nand_chip *nc = mtd_to_nand(mtd);
+       struct orion_nand_data *board = nand_get_controller_data(nc);
        u32 offs;
 
        if (cmd == NAND_CMD_NONE)
@@ -47,7 +47,7 @@ static void orion_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl
 
 static void orion_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);
        void __iomem *io_base = chip->IO_ADDR_R;
        uint64_t *buf64;
        int i = 0;
@@ -76,7 +76,6 @@ static void orion_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 static int __init orion_nand_probe(struct platform_device *pdev)
 {
        struct mtd_info *mtd;
-       struct mtd_part_parser_data ppdata = {};
        struct nand_chip *nc;
        struct orion_nand_data *board;
        struct resource *res;
@@ -86,11 +85,11 @@ static int __init orion_nand_probe(struct platform_device *pdev)
        u32 val = 0;
 
        nc = devm_kzalloc(&pdev->dev,
-                       sizeof(struct nand_chip) + sizeof(struct mtd_info),
+                       sizeof(struct nand_chip),
                        GFP_KERNEL);
        if (!nc)
                return -ENOMEM;
-       mtd = (struct mtd_info *)(nc + 1);
+       mtd = nand_to_mtd(nc);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        io_base = devm_ioremap_resource(&pdev->dev, res);
@@ -123,10 +122,10 @@ static int __init orion_nand_probe(struct platform_device *pdev)
                board = dev_get_platdata(&pdev->dev);
        }
 
-       mtd->priv = nc;
        mtd->dev.parent = &pdev->dev;
 
-       nc->priv = board;
+       nand_set_controller_data(nc, board);
+       nand_set_flash_node(nc, pdev->dev.of_node);
        nc->IO_ADDR_R = nc->IO_ADDR_W = io_base;
        nc->cmd_ctrl = orion_nand_cmd_ctrl;
        nc->read_buf = orion_nand_read_buf;
@@ -161,9 +160,7 @@ static int __init orion_nand_probe(struct platform_device *pdev)
        }
 
        mtd->name = "orion_nand";
-       ppdata.of_node = pdev->dev.of_node;
-       ret = mtd_device_parse_register(mtd, NULL, &ppdata,
-                       board->parts, board->nr_parts);
+       ret = mtd_device_register(mtd, board->parts, board->nr_parts);
        if (ret) {
                nand_release(mtd);
                goto no_dev;
This page took 0.041493 seconds and 5 git commands to generate.