[PATCH 3/6] MTD: xway: the latched command should be persistent
Boris Brezillon
boris.brezillon at free-electrons.com
Tue Jun 7 02:30:21 PDT 2016
On Sun, 5 Jun 2016 23:20:06 +0200
Hauke Mehrtens <hauke at hauke-m.de> wrote:
> From: John Crispin <john at phrozen.org>
>
> If they are not persistent a different address will be used and the
> controller will deactivate some pins.
>
> Signed-off-by: John Crispin <john at phrozen.org>
> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
> ---
> drivers/mtd/nand/xway_nand.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/mtd/nand/xway_nand.c b/drivers/mtd/nand/xway_nand.c
> index 0ab6e83..79fecc8 100644
> --- a/drivers/mtd/nand/xway_nand.c
> +++ b/drivers/mtd/nand/xway_nand.c
> @@ -64,6 +64,8 @@
> #define NAND_CON_CSMUX (1 << 1)
> #define NAND_CON_NANDM 1
>
> +static u32 xway_latchcmd;
Please avoid using global variables. This field should be part of your
private nand_chip struct.
> +
> static void xway_reset_chip(struct nand_chip *chip)
> {
> unsigned long nandaddr = (unsigned long) chip->IO_ADDR_W;
> @@ -104,17 +106,15 @@ static void xway_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
> unsigned long flags;
>
> if (ctrl & NAND_CTRL_CHANGE) {
> - nandaddr &= ~(NAND_WRITE_CMD | NAND_WRITE_ADDR);
> if (ctrl & NAND_CLE)
> - nandaddr |= NAND_WRITE_CMD;
> - else
> - nandaddr |= NAND_WRITE_ADDR;
> - this->IO_ADDR_W = (void __iomem *) nandaddr;
> + xway_latchcmd = NAND_WRITE_CMD;
> + else if (ctrl & NAND_ALE)
> + xway_latchcmd = NAND_WRITE_ADDR;
> }
>
> if (cmd != NAND_CMD_NONE) {
> spin_lock_irqsave(&ebu_lock, flags);
> - writeb(cmd, this->IO_ADDR_W);
> + writeb(cmd, (void __iomem *) (nandaddr | xway_latchcmd));
> while ((ltq_ebu_r32(EBU_NAND_WAIT) & NAND_WAIT_WR_C) == 0)
> ;
> spin_unlock_irqrestore(&ebu_lock, flags);
--
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
More information about the linux-mtd
mailing list