summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/raw/au1550nd.c
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@collabora.com>2020-04-19 21:30:34 +0200
committerMiquel Raynal <miquel.raynal@bootlin.com>2020-05-10 21:18:48 +0200
commit15770370df4d51bd5ca408f0b8c46c90098d3300 (patch)
tree6fcac21dcd00b6e0d12ed13e1954b39d5e0d077b /drivers/mtd/nand/raw/au1550nd.c
parent5756f2e8dad46eba6e2d3e530243b8eff4dd5a42 (diff)
downloadlinux-15770370df4d51bd5ca408f0b8c46c90098d3300.tar.bz2
mtd: rawnand: au1550nd: Stop using IO_ADDR_{R, W} in au_{read, write}_buf[16]()
We are about to re-use those for the exec_op() implementation which will not rely on au1550_hwcontrol(). Let's patch those helpers to simply use the iomem address stored in the context. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20200419193037.1544035-2-boris.brezillon@collabora.com
Diffstat (limited to 'drivers/mtd/nand/raw/au1550nd.c')
-rw-r--r--drivers/mtd/nand/raw/au1550nd.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/mtd/nand/raw/au1550nd.c b/drivers/mtd/nand/raw/au1550nd.c
index 75eb3e97fae3..2f8004f20349 100644
--- a/drivers/mtd/nand/raw/au1550nd.c
+++ b/drivers/mtd/nand/raw/au1550nd.c
@@ -23,6 +23,11 @@ struct au1550nd_ctx {
void (*write_byte)(struct nand_chip *, u_char);
};
+static struct au1550nd_ctx *chip_to_au_ctx(struct nand_chip *this)
+{
+ return container_of(this, struct au1550nd_ctx, chip);
+}
+
/**
* au_read_byte - read one byte from the chip
* @this: NAND chip object
@@ -85,10 +90,11 @@ static void au_write_byte16(struct nand_chip *this, u_char byte)
*/
static void au_write_buf(struct nand_chip *this, const u_char *buf, int len)
{
+ struct au1550nd_ctx *ctx = chip_to_au_ctx(this);
int i;
for (i = 0; i < len; i++) {
- writeb(buf[i], this->legacy.IO_ADDR_W);
+ writeb(buf[i], ctx->base + MEM_STNAND_DATA);
wmb(); /* drain writebuffer */
}
}
@@ -103,10 +109,11 @@ static void au_write_buf(struct nand_chip *this, const u_char *buf, int len)
*/
static void au_read_buf(struct nand_chip *this, u_char *buf, int len)
{
+ struct au1550nd_ctx *ctx = chip_to_au_ctx(this);
int i;
for (i = 0; i < len; i++) {
- buf[i] = readb(this->legacy.IO_ADDR_R);
+ buf[i] = readb(ctx->base + MEM_STNAND_DATA);
wmb(); /* drain writebuffer */
}
}
@@ -121,12 +128,13 @@ static void au_read_buf(struct nand_chip *this, u_char *buf, int len)
*/
static void au_write_buf16(struct nand_chip *this, const u_char *buf, int len)
{
+ struct au1550nd_ctx *ctx = chip_to_au_ctx(this);
int i;
u16 *p = (u16 *) buf;
len >>= 1;
for (i = 0; i < len; i++) {
- writew(p[i], this->legacy.IO_ADDR_W);
+ writew(p[i], ctx->base + MEM_STNAND_DATA);
wmb(); /* drain writebuffer */
}
@@ -142,12 +150,13 @@ static void au_write_buf16(struct nand_chip *this, const u_char *buf, int len)
*/
static void au_read_buf16(struct nand_chip *this, u_char *buf, int len)
{
+ struct au1550nd_ctx *ctx = chip_to_au_ctx(this);
int i;
u16 *p = (u16 *) buf;
len >>= 1;
for (i = 0; i < len; i++) {
- p[i] = readw(this->legacy.IO_ADDR_R);
+ p[i] = readw(ctx->base + MEM_STNAND_DATA);
wmb(); /* drain writebuffer */
}
}