mtd: bcm47xxnflash: support NAND_CMD_STATUS
authorRafał Miłecki <zajec5@gmail.com>
Fri, 23 Nov 2012 08:58:11 +0000 (09:58 +0100)
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Mon, 3 Dec 2012 14:36:52 +0000 (16:36 +0200)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
drivers/mtd/nand/bcm47xxnflash/ops_bcm4706.c

index 672dc90aa5b1b1e4909df0dcebee3302b35ecf29..ece343ccc1b063f0e142935dd801f65c1d4acaa0 100644 (file)
@@ -156,6 +156,7 @@ static void bcm47xxnflash_ops_bcm4706_cmdfunc(struct mtd_info *mtd,
 {
        struct nand_chip *nand_chip = (struct nand_chip *)mtd->priv;
        struct bcm47xxnflash *b47n = (struct bcm47xxnflash *)nand_chip->priv;
+       struct bcma_drv_cc *cc = b47n->cc;
        u32 ctlcode;
        int i;
 
@@ -196,6 +197,11 @@ static void bcm47xxnflash_ops_bcm4706_cmdfunc(struct mtd_info *mtd,
                }
 
                break;
+       case NAND_CMD_STATUS:
+               ctlcode = NCTL_CSA | NCTL_CMD0 | NAND_CMD_STATUS;
+               if (bcm47xxnflash_ops_bcm4706_ctl_cmd(cc, ctlcode))
+                       pr_err("STATUS command error\n");
+               break;
        case NAND_CMD_READ0:
                break;
        case NAND_CMD_READOOB:
@@ -213,6 +219,7 @@ static u8 bcm47xxnflash_ops_bcm4706_read_byte(struct mtd_info *mtd)
 {
        struct nand_chip *nand_chip = (struct nand_chip *)mtd->priv;
        struct bcm47xxnflash *b47n = (struct bcm47xxnflash *)nand_chip->priv;
+       struct bcma_drv_cc *cc = b47n->cc;
        u32 tmp = 0;
 
        switch (b47n->curr_command) {
@@ -223,6 +230,10 @@ static u8 bcm47xxnflash_ops_bcm4706_read_byte(struct mtd_info *mtd)
                        return 0;
                }
                return b47n->id_data[b47n->curr_column++];
+       case NAND_CMD_STATUS:
+               if (bcm47xxnflash_ops_bcm4706_ctl_cmd(cc, NCTL_READ))
+                       return 0;
+               return bcma_cc_read32(cc, BCMA_CC_NFLASH_DATA) & 0xff;
        case NAND_CMD_READOOB:
                bcm47xxnflash_ops_bcm4706_read(mtd, (u8 *)&tmp, 4);
                return tmp & 0xFF;