diff options
Diffstat (limited to 'drivers/mtd/nand/nand_orion.c')
-rw-r--r-- | drivers/mtd/nand/nand_orion.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/drivers/mtd/nand/nand_orion.c b/drivers/mtd/nand/nand_orion.c index c8b89cd03c..3899a67b56 100644 --- a/drivers/mtd/nand/nand_orion.c +++ b/drivers/mtd/nand/nand_orion.c @@ -18,6 +18,7 @@ #include <errno.h> #include <linux/mtd/mtd.h> #include <linux/mtd/nand.h> +#include <linux/mtd/rawnand.h> #include <linux/clk.h> struct orion_nand { @@ -27,9 +28,8 @@ struct orion_nand { u8 cle; /* address line number connected to CLE */ }; -static void orion_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl) +static void orion_nand_cmd_ctrl(struct nand_chip *chip, int cmd, unsigned int ctrl) { - struct nand_chip *chip = mtd_to_nand(mtd); struct orion_nand *priv = chip->priv; u32 offs; @@ -46,13 +46,12 @@ static void orion_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl if (chip->options & NAND_BUSWIDTH_16) offs <<= 1; - writeb(cmd, chip->IO_ADDR_W + offs); + writeb(cmd, chip->legacy.IO_ADDR_W + offs); } -static void orion_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len) +static void orion_nand_read_buf(struct nand_chip *chip, uint8_t *buf, int len) { - struct nand_chip *chip = mtd_to_nand(mtd); - void __iomem *io_base = chip->IO_ADDR_R; + void __iomem *io_base = chip->legacy.IO_ADDR_R; uint64_t *buf64; int i = 0; @@ -90,8 +89,8 @@ static int orion_nand_probe(struct device_d *dev) u32 val = 0; priv = xzalloc(sizeof(struct orion_nand)); - mtd = &priv->chip.mtd; chip = &priv->chip; + mtd = nand_to_mtd(chip); iores = dev_request_mem_resource(dev, 0); if (IS_ERR(iores)) @@ -114,13 +113,13 @@ static int orion_nand_probe(struct device_d *dev) width = 8; if (!of_property_read_u32(dev_node, "chip-delay", &val)) - chip->chip_delay = (u8)val; + chip->legacy.chip_delay = (u8)val; - mtd->parent = dev; + mtd->dev.parent = dev; chip->priv = priv; - chip->IO_ADDR_R = chip->IO_ADDR_W = io_base; - chip->cmd_ctrl = orion_nand_cmd_ctrl; - chip->read_buf = orion_nand_read_buf; + chip->legacy.IO_ADDR_R = chip->legacy.IO_ADDR_W = io_base; + chip->legacy.cmd_ctrl = orion_nand_cmd_ctrl; + chip->legacy.read_buf = orion_nand_read_buf; chip->ecc.mode = NAND_ECC_SOFT; WARN(width > 16, "%d bit bus width out of range", width); @@ -132,7 +131,7 @@ static int orion_nand_probe(struct device_d *dev) if (!IS_ERR(clk)) clk_enable(clk); - if (nand_scan(mtd, 1)) { + if (nand_scan(chip, 1)) { ret = -ENXIO; goto no_dev; } |