mtd: maps: physmap: Add reference counter to set_vpp()
This patch is part of a set which fixes unnecessary flash erase and write errors resulting from the MTD CFI driver turning off vpp while an erase is in progress. This patch allows physmap_set_vpp() calls to be nested by adding a reference counter. omap1_set_vpp() already used a reference counter. Since it is called from physmap_set_vpp(), omap1_set_vpp() can now be simplified. simtec_nor_vpp() already disabled hard interrupts. Since it is called from physmap_set_vpp(), simtec_nor_vpp() can now be simplified. Signed-off-by: Paul Parsons <lost.distance@yahoo.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:

committed by
David Woodhouse

parent
e7d9377e04
commit
876fe76d79
@@ -15,20 +15,12 @@
|
||||
|
||||
void omap1_set_vpp(struct platform_device *pdev, int enable)
|
||||
{
|
||||
static int count;
|
||||
u32 l;
|
||||
|
||||
if (enable) {
|
||||
if (count++ == 0) {
|
||||
l = omap_readl(EMIFS_CONFIG);
|
||||
l |= OMAP_EMIFS_CONFIG_WP;
|
||||
omap_writel(l, EMIFS_CONFIG);
|
||||
}
|
||||
} else {
|
||||
if (count && (--count == 0)) {
|
||||
l = omap_readl(EMIFS_CONFIG);
|
||||
l &= ~OMAP_EMIFS_CONFIG_WP;
|
||||
omap_writel(l, EMIFS_CONFIG);
|
||||
}
|
||||
}
|
||||
l = omap_readl(EMIFS_CONFIG);
|
||||
if (enable)
|
||||
l |= OMAP_EMIFS_CONFIG_WP;
|
||||
else
|
||||
l &= ~OMAP_EMIFS_CONFIG_WP;
|
||||
omap_writel(l, EMIFS_CONFIG);
|
||||
}
|
||||
|
Reference in New Issue
Block a user