xref: /openbmc/linux/arch/arm/mach-omap1/flash.c (revision 667f390b)
1561b036aSLadislav Michl /*
2561b036aSLadislav Michl  * Flash support for OMAP1
3561b036aSLadislav Michl  *
4561b036aSLadislav Michl  * This program is free software; you can redistribute it and/or modify
5561b036aSLadislav Michl  * it under the terms of the GNU General Public License version 2 as
6561b036aSLadislav Michl  * published by the Free Software Foundation.
7561b036aSLadislav Michl  */
8561b036aSLadislav Michl 
9561b036aSLadislav Michl #include <linux/mtd/mtd.h>
10561b036aSLadislav Michl #include <linux/mtd/map.h>
11561b036aSLadislav Michl 
12561b036aSLadislav Michl #include <plat/io.h>
13561b036aSLadislav Michl #include <plat/tc.h>
14706afddaSAaro Koskinen #include <plat/flash.h>
15561b036aSLadislav Michl 
16667f390bSMarc Zyngier void omap1_set_vpp(struct platform_device *pdev, int enable)
17561b036aSLadislav Michl {
18561b036aSLadislav Michl 	static int count;
19561b036aSLadislav Michl 	u32 l;
20561b036aSLadislav Michl 
21561b036aSLadislav Michl 	if (enable) {
22561b036aSLadislav Michl 		if (count++ == 0) {
23561b036aSLadislav Michl 			l = omap_readl(EMIFS_CONFIG);
24561b036aSLadislav Michl 			l |= OMAP_EMIFS_CONFIG_WP;
25561b036aSLadislav Michl 			omap_writel(l, EMIFS_CONFIG);
26561b036aSLadislav Michl 		}
27561b036aSLadislav Michl 	} else {
28561b036aSLadislav Michl 		if (count && (--count == 0)) {
29561b036aSLadislav Michl 			l = omap_readl(EMIFS_CONFIG);
30561b036aSLadislav Michl 			l &= ~OMAP_EMIFS_CONFIG_WP;
31561b036aSLadislav Michl 			omap_writel(l, EMIFS_CONFIG);
32561b036aSLadislav Michl 		}
33561b036aSLadislav Michl 	}
34561b036aSLadislav Michl }
35