xref: /openbmc/linux/arch/arm/mach-omap1/flash.c (revision 561b036a)
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>
14561b036aSLadislav Michl 
15561b036aSLadislav Michl void omap1_set_vpp(struct map_info *map, int enable)
16561b036aSLadislav Michl {
17561b036aSLadislav Michl 	static int count;
18561b036aSLadislav Michl 	u32 l;
19561b036aSLadislav Michl 
20561b036aSLadislav Michl 	if (enable) {
21561b036aSLadislav Michl 		if (count++ == 0) {
22561b036aSLadislav Michl 			l = omap_readl(EMIFS_CONFIG);
23561b036aSLadislav Michl 			l |= OMAP_EMIFS_CONFIG_WP;
24561b036aSLadislav Michl 			omap_writel(l, EMIFS_CONFIG);
25561b036aSLadislav Michl 		}
26561b036aSLadislav Michl 	} else {
27561b036aSLadislav Michl 		if (count && (--count == 0)) {
28561b036aSLadislav Michl 			l = omap_readl(EMIFS_CONFIG);
29561b036aSLadislav Michl 			l &= ~OMAP_EMIFS_CONFIG_WP;
30561b036aSLadislav Michl 			omap_writel(l, EMIFS_CONFIG);
31561b036aSLadislav Michl 		}
32561b036aSLadislav Michl 	}
33561b036aSLadislav Michl }
34