summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorHuang Shijie <b32955@freescale.com>2010-11-01 13:57:06 +0800
committerJustin Waters <justin.waters@timesys.com>2010-12-13 16:10:41 -0500
commita8f7c001b45c3f53834551b485da243a080a6e55 (patch)
tree0835dcbfda97da8061bda744ea77e92efa1422e9 /drivers
parent8f0671d306f55ad872ba11e6467a716f87f9c429 (diff)
ENGR00133178-6 NAND : add extra_init() hook for ONFI nand
ONFI nand works in asynchronous mode in normal case, You have to do extra initialization to let it work in DDR mode(synchronous mode). so add extra initialization hook for ONFI nand. Signed-off-by: Huang Shijie <b32955@freescale.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mtd/nand/gpmi-nfc/gpmi-nfc-mil.c3
-rw-r--r--drivers/mtd/nand/gpmi-nfc/gpmi-nfc.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/mtd/nand/gpmi-nfc/gpmi-nfc-mil.c b/drivers/mtd/nand/gpmi-nfc/gpmi-nfc-mil.c
index 83f5086f37f3..765390638135 100644
--- a/drivers/mtd/nand/gpmi-nfc/gpmi-nfc-mil.c
+++ b/drivers/mtd/nand/gpmi-nfc/gpmi-nfc-mil.c
@@ -1726,6 +1726,9 @@ static int mil_scan_bbt(struct mtd_info *mtd)
/* We use the reference implementation for bad block management. */
+ if (nfc->extra_init)
+ nfc->extra_init(this);
+
error = nand_default_bbt(mtd);
if (error)
diff --git a/drivers/mtd/nand/gpmi-nfc/gpmi-nfc.h b/drivers/mtd/nand/gpmi-nfc/gpmi-nfc.h
index 9b0074532917..561dfb22d4c2 100644
--- a/drivers/mtd/nand/gpmi-nfc/gpmi-nfc.h
+++ b/drivers/mtd/nand/gpmi-nfc/gpmi-nfc.h
@@ -535,6 +535,7 @@ struct nfc_hal {
/* Configuration functions. */
int (*init) (struct gpmi_nfc_data *);
+ int (*extra_init) (struct gpmi_nfc_data *);
int (*set_geometry)(struct gpmi_nfc_data *);
int (*set_timing) (struct gpmi_nfc_data *,
const struct gpmi_nfc_timing *);