Skip to content

Commit

Permalink
mtd: nand: xway: extract read and write function
Browse files Browse the repository at this point in the history
Extract the functions to read and write to the register of the NAND
flash controller.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
  • Loading branch information
Hauke Mehrtens authored and Boris Brezillon committed Jul 11, 2016
1 parent e7e1f7b commit ddbed9c
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions drivers/mtd/nand/xway_nand.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,22 @@ struct xway_nand_data {
unsigned long csflags;
};

static u8 xway_readb(struct mtd_info *mtd, int op)
{
struct nand_chip *chip = mtd_to_nand(mtd);
void __iomem *nandaddr = chip->IO_ADDR_R;

return readb(nandaddr + op);
}

static void xway_writeb(struct mtd_info *mtd, int op, u8 value)
{
struct nand_chip *chip = mtd_to_nand(mtd);
void __iomem *nandaddr = chip->IO_ADDR_W;

writeb(value, nandaddr + op);
}

static void xway_select_chip(struct mtd_info *mtd, int select)
{
struct nand_chip *chip = mtd_to_nand(mtd);
Expand All @@ -91,16 +107,13 @@ static void xway_select_chip(struct mtd_info *mtd, int select)

static void xway_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
{
struct nand_chip *this = mtd_to_nand(mtd);
unsigned long nandaddr = (unsigned long) this->IO_ADDR_W;

if (cmd == NAND_CMD_NONE)
return;

if (ctrl & NAND_CLE)
writeb(cmd, (void __iomem *) (nandaddr | NAND_WRITE_CMD));
xway_writeb(mtd, NAND_WRITE_CMD, cmd);
else if (ctrl & NAND_ALE)
writeb(cmd, (void __iomem *) (nandaddr | NAND_WRITE_ADDR));
xway_writeb(mtd, NAND_WRITE_ADDR, cmd);

while ((ltq_ebu_r32(EBU_NAND_WAIT) & NAND_WAIT_WR_C) == 0)
;
Expand All @@ -113,10 +126,7 @@ static int xway_dev_ready(struct mtd_info *mtd)

static unsigned char xway_read_byte(struct mtd_info *mtd)
{
struct nand_chip *this = mtd_to_nand(mtd);
unsigned long nandaddr = (unsigned long) this->IO_ADDR_R;

return ltq_r8((void __iomem *)(nandaddr + NAND_READ_DATA));
return xway_readb(mtd, NAND_READ_DATA);
}

/*
Expand Down

0 comments on commit ddbed9c

Please sign in to comment.