diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2020-11-10 15:07:38 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2020-11-10 15:07:38 +0100 |
commit | 7b1d8b4b3561c043a79d5933a7c1eb9266dc328d (patch) | |
tree | 9c398aa20e22763a239d11eecf6fb4c1d06d4c97 /drivers/mtd/nand/nomadik_nand.c | |
parent | 0b0eada569b198aa3882cfec5874bc35a8a0fa14 (diff) | |
parent | 4db0f1c3dbe6173fdf91cbeb83e250719332c6a3 (diff) | |
download | barebox-7b1d8b4b3561c043a79d5933a7c1eb9266dc328d.tar.gz barebox-7b1d8b4b3561c043a79d5933a7c1eb9266dc328d.tar.xz |
Merge branch 'for-next/mtd-nand'
Diffstat (limited to 'drivers/mtd/nand/nomadik_nand.c')
-rw-r--r-- | drivers/mtd/nand/nomadik_nand.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/mtd/nand/nomadik_nand.c b/drivers/mtd/nand/nomadik_nand.c index 31bc2efc40..b5ef39223e 100644 --- a/drivers/mtd/nand/nomadik_nand.c +++ b/drivers/mtd/nand/nomadik_nand.c @@ -30,6 +30,7 @@ #include <linux/types.h> #include <linux/mtd/mtd.h> #include <linux/mtd/nand.h> +#include <linux/mtd/rawnand.h> #include <io.h> #include <mach/nand.h> @@ -58,7 +59,7 @@ static inline int parity(int b) /* uses low 8 bits: returns 0 or all-1 */ * I haven't managed to get the desired data out of it; so do it in sw. * There is problably some errata involved, but currently miss the info. */ -static int nomadik_ecc512_calc(struct mtd_info *mtd, const u_char *data, +static int nomadik_ecc512_calc(struct nand_chip *nand, const u_char *data, u_char *ecc) { int gpar = 0; @@ -101,10 +102,9 @@ static int nomadik_ecc512_calc(struct mtd_info *mtd, const u_char *data, return 0; } -static int nomadik_ecc512_correct(struct mtd_info *mtd, uint8_t *dat, +static int nomadik_ecc512_correct(struct nand_chip *chip, uint8_t *dat, uint8_t *r_ecc, uint8_t *c_ecc) { - struct nand_chip *chip = mtd_to_nand(mtd); uint32_t r, c, d, diff; /*read, calculated, xor of them */ if (!memcmp(r_ecc, c_ecc, chip->ecc.bytes)) @@ -149,14 +149,13 @@ static struct nand_ecclayout nomadik_ecc_layout = { .oobfree = { {0x08, 0x08}, {0x18, 0x08}, {0x28, 0x08}, {0x38, 0x08} }, }; -static void nomadik_ecc_control(struct mtd_info *mtd, int mode) +static void nomadik_ecc_control(struct nand_chip *nand, int mode) { /* No need to enable hw ecc, it's on by default */ } -static void nomadik_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl) +static void nomadik_cmd_ctrl(struct nand_chip *nand, int cmd, unsigned int ctrl) { - struct nand_chip *nand = mtd_to_nand(mtd); struct nomadik_nand_host *host = nand->priv; if (cmd == NAND_CMD_NONE) @@ -198,17 +197,18 @@ static int nomadik_nand_probe(struct device_d *dev) /* Link all private pointers */ nand = &host->nand; - mtd = &nand->mtd; + mtd = nand_to_mtd(nand); nand->priv = host; - mtd->parent = dev; + mtd->dev.parent = dev; - nand->IO_ADDR_W = nand->IO_ADDR_R = dev_request_mem_region_by_name(dev, "nand_data"); - if (IS_ERR(nand->IO_ADDR_W)) - return PTR_ERR(nand->IO_ADDR_W); - nand->cmd_ctrl = nomadik_cmd_ctrl; + nand->legacy.IO_ADDR_W = nand->legacy.IO_ADDR_R = + dev_request_mem_region_by_name(dev, "nand_data"); + if (IS_ERR(nand->legacy.IO_ADDR_W)) + return PTR_ERR(nand->legacy.IO_ADDR_W); + nand->legacy.cmd_ctrl = nomadik_cmd_ctrl; nand->ecc.mode = NAND_ECC_HW; - nand->ecc.layout = &nomadik_ecc_layout; + mtd_set_ecclayout(mtd, &nomadik_ecc_layout); nand->ecc.calculate = nomadik_ecc512_calc; nand->ecc.correct = nomadik_ecc512_correct; nand->ecc.hwctl = nomadik_ecc_control; @@ -221,7 +221,7 @@ static int nomadik_nand_probe(struct device_d *dev) /* * Scan to find existance of the device */ - if (nand_scan(mtd, 1)) { + if (nand_scan(nand, 1)) { ret = -ENXIO; goto err; } |