summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/nand_mxs.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-07-09 17:03:04 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-07-23 16:25:14 +0200
commit12d2062d5cc2b52f7f0c8821860aef80baea284b (patch)
tree8bbe5b770a457b10fa11abc31935a12ae9667970 /drivers/mtd/nand/nand_mxs.c
parent21eb73fb93e5b6bc96d500b97bfc8ab0b48b5380 (diff)
downloadbarebox-12d2062d5cc2b52f7f0c8821860aef80baea284b.tar.gz
barebox-12d2062d5cc2b52f7f0c8821860aef80baea284b.tar.xz
mtd: nand: gpmi: replace MXS_BCH_BASE with driver resources
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mtd/nand/nand_mxs.c')
-rw-r--r--drivers/mtd/nand/nand_mxs.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/mtd/nand/nand_mxs.c b/drivers/mtd/nand/nand_mxs.c
index 77cfda0615..fac087bf81 100644
--- a/drivers/mtd/nand/nand_mxs.c
+++ b/drivers/mtd/nand/nand_mxs.c
@@ -142,6 +142,7 @@
struct mxs_nand_info {
struct nand_chip nand_chip;
void __iomem *io_base;
+ void __iomem *bch_base;
struct clk *clk;
struct mtd_info mtd;
u32 version;
@@ -299,9 +300,9 @@ static uint32_t mxs_nand_mark_bit_offset(struct mtd_info *mtd)
/*
* Wait for BCH complete IRQ and clear the IRQ
*/
-static int mxs_nand_wait_for_bch_complete(void)
+static int mxs_nand_wait_for_bch_complete(struct mxs_nand_info *nand_info)
{
- void __iomem *bch_regs = (void __iomem *)MXS_BCH_BASE;
+ void __iomem *bch_regs = nand_info->bch_base;
int timeout = MXS_NAND_BCH_TIMEOUT;
int ret;
@@ -708,7 +709,7 @@ static int mxs_nand_ecc_read_page(struct mtd_info *mtd, struct nand_chip *nand,
goto rtn;
}
- ret = mxs_nand_wait_for_bch_complete();
+ ret = mxs_nand_wait_for_bch_complete(nand_info);
if (ret) {
printf("MXS NAND: BCH read timeout\n");
goto rtn;
@@ -809,7 +810,7 @@ static int mxs_nand_ecc_write_page(struct mtd_info *mtd,
goto rtn;
}
- ret = mxs_nand_wait_for_bch_complete();
+ ret = mxs_nand_wait_for_bch_complete(nand_info);
if (ret) {
printf("MXS NAND: BCH write timeout\n");
goto rtn;
@@ -1043,7 +1044,7 @@ static int mxs_nand_scan_bbt(struct mtd_info *mtd)
{
struct nand_chip *nand = mtd->priv;
struct mxs_nand_info *nand_info = nand->priv;
- void __iomem *bch_regs = (void __iomem *)MXS_BCH_BASE;
+ void __iomem *bch_regs = nand_info->bch_base;
uint32_t tmp;
int ret;
@@ -1134,7 +1135,7 @@ int mxs_nand_alloc_buffers(struct mxs_nand_info *nand_info)
int mxs_nand_hw_init(struct mxs_nand_info *info)
{
void __iomem *gpmi_regs = info->io_base;
- void __iomem *bch_regs = (void __iomem *)MXS_BCH_BASE;
+ void __iomem *bch_regs = info->bch_base;
int i = 0, ret;
u32 val;
@@ -1199,6 +1200,7 @@ static int mxs_nand_probe(struct device_d *dev)
}
nand_info->io_base = dev_request_mem_region(dev, 0);
+ nand_info->bch_base = dev_request_mem_region(dev, 1);
nand_info->clk = clk_get(dev, NULL);
if (IS_ERR(nand_info->clk))