aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Tereshonkov <roman.tereshonkov@nokia.com>2011-02-17 06:44:42 -0500
committerDavid Woodhouse <David.Woodhouse@intel.com>2011-03-11 09:22:47 -0500
commitc93ff6bf16523d33e991a1fadde1b8d63eb7cd2c (patch)
tree79274e999ebb76ba73ece6d5fde44fb6594c2505
parentb3dcfd35244e1cb8dc8dfa5c05013b133dbb437a (diff)
mtd: omap: add new variable to platform data to control onenand unlocking
New variable skip_initial_unlocking is added to the omap_onenand_platform_data. This is used to inform the onenand driver to skip onenand unlocking when it is initialized. Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r--arch/arm/plat-omap/include/plat/onenand.h1
-rw-r--r--drivers/mtd/onenand/omap2.c7
2 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/plat-omap/include/plat/onenand.h b/arch/arm/plat-omap/include/plat/onenand.h
index affe87e9ece7..1b430d5fdd54 100644
--- a/arch/arm/plat-omap/include/plat/onenand.h
+++ b/arch/arm/plat-omap/include/plat/onenand.h
@@ -24,6 +24,7 @@ struct omap_onenand_platform_data {
24 int dma_channel; 24 int dma_channel;
25 u8 flags; 25 u8 flags;
26 u8 regulator_can_sleep; 26 u8 regulator_can_sleep;
27 u8 skip_initial_unlocking;
27}; 28};
28 29
29#define ONENAND_MAX_PARTITIONS 8 30#define ONENAND_MAX_PARTITIONS 8
diff --git a/drivers/mtd/onenand/omap2.c b/drivers/mtd/onenand/omap2.c
index c849cacf4b2f..ea32c2fc4622 100644
--- a/drivers/mtd/onenand/omap2.c
+++ b/drivers/mtd/onenand/omap2.c
@@ -631,6 +631,7 @@ static int __devinit omap2_onenand_probe(struct platform_device *pdev)
631{ 631{
632 struct omap_onenand_platform_data *pdata; 632 struct omap_onenand_platform_data *pdata;
633 struct omap2_onenand *c; 633 struct omap2_onenand *c;
634 struct onenand_chip *this;
634 int r; 635 int r;
635 636
636 pdata = pdev->dev.platform_data; 637 pdata = pdev->dev.platform_data;
@@ -728,9 +729,8 @@ static int __devinit omap2_onenand_probe(struct platform_device *pdev)
728 729
729 c->mtd.dev.parent = &pdev->dev; 730 c->mtd.dev.parent = &pdev->dev;
730 731
732 this = &c->onenand;
731 if (c->dma_channel >= 0) { 733 if (c->dma_channel >= 0) {
732 struct onenand_chip *this = &c->onenand;
733
734 this->wait = omap2_onenand_wait; 734 this->wait = omap2_onenand_wait;
735 if (cpu_is_omap34xx()) { 735 if (cpu_is_omap34xx()) {
736 this->read_bufferram = omap3_onenand_read_bufferram; 736 this->read_bufferram = omap3_onenand_read_bufferram;
@@ -751,6 +751,9 @@ static int __devinit omap2_onenand_probe(struct platform_device *pdev)
751 c->onenand.disable = omap2_onenand_disable; 751 c->onenand.disable = omap2_onenand_disable;
752 } 752 }
753 753
754 if (pdata->skip_initial_unlocking)
755 this->options |= ONENAND_SKIP_INITIAL_UNLOCKING;
756
754 if ((r = onenand_scan(&c->mtd, 1)) < 0) 757 if ((r = onenand_scan(&c->mtd, 1)) < 0)
755 goto err_release_regulator; 758 goto err_release_regulator;
756 759