aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/arm/omap/mpu.txt3
-rw-r--r--arch/arm/boot/dts/am33xx.dtsi5
-rw-r--r--arch/arm/boot/dts/am4372.dtsi5
-rw-r--r--arch/arm/boot/dts/omap4.dtsi6
-rw-r--r--arch/arm/boot/dts/omap5.dtsi8
-rw-r--r--arch/arm/configs/omap2plus_defconfig79
-rw-r--r--arch/arm/mach-omap2/io.c17
-rw-r--r--arch/arm/mach-omap2/omap4-common.c22
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c4
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.h4
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_3xxx_data.c12
-rw-r--r--arch/arm/mach-omap2/sram.c39
-rw-r--r--arch/arm/mach-omap2/sram.h7
13 files changed, 119 insertions, 92 deletions
diff --git a/Documentation/devicetree/bindings/arm/omap/mpu.txt b/Documentation/devicetree/bindings/arm/omap/mpu.txt
index 83f405bde138..763695db2bd9 100644
--- a/Documentation/devicetree/bindings/arm/omap/mpu.txt
+++ b/Documentation/devicetree/bindings/arm/omap/mpu.txt
@@ -10,6 +10,9 @@ Required properties:
10 Should be "ti,omap5-mpu" for OMAP5 10 Should be "ti,omap5-mpu" for OMAP5
11- ti,hwmods: "mpu" 11- ti,hwmods: "mpu"
12 12
13Optional properties:
14- sram: Phandle to the ocmcram node
15
13Examples: 16Examples:
14 17
15- For an OMAP5 SMP system: 18- For an OMAP5 SMP system:
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 3a0a161342ba..c8238c467acf 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -726,9 +726,8 @@
726 }; 726 };
727 727
728 ocmcram: ocmcram@40300000 { 728 ocmcram: ocmcram@40300000 {
729 compatible = "ti,am3352-ocmcram"; 729 compatible = "mmio-sram";
730 reg = <0x40300000 0x10000>; 730 reg = <0x40300000 0x10000>; /* 64k */
731 ti,hwmods = "ocmcram";
732 }; 731 };
733 732
734 wkup_m3: wkup_m3@44d00000 { 733 wkup_m3: wkup_m3@44d00000 {
diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
index 9b3d2ba82f13..7b8e6521235b 100644
--- a/arch/arm/boot/dts/am4372.dtsi
+++ b/arch/arm/boot/dts/am4372.dtsi
@@ -885,6 +885,11 @@
885 clock-names = "fck"; 885 clock-names = "fck";
886 }; 886 };
887 }; 887 };
888
889 ocmcram: ocmcram@40300000 {
890 compatible = "mmio-sram";
891 reg = <0x40300000 0x40000>; /* 256k */
892 };
888 }; 893 };
889}; 894};
890 895
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
index 7375d4482bff..8a944974d72e 100644
--- a/arch/arm/boot/dts/omap4.dtsi
+++ b/arch/arm/boot/dts/omap4.dtsi
@@ -81,6 +81,7 @@
81 mpu { 81 mpu {
82 compatible = "ti,omap4-mpu"; 82 compatible = "ti,omap4-mpu";
83 ti,hwmods = "mpu"; 83 ti,hwmods = "mpu";
84 sram = <&ocmcram>;
84 }; 85 };
85 86
86 dsp { 87 dsp {
@@ -209,6 +210,11 @@
209 }; 210 };
210 }; 211 };
211 212
213 ocmcram: ocmcram@40304000 {
214 compatible = "mmio-sram";
215 reg = <0x40304000 0xa000>; /* 40k */
216 };
217
212 sdma: dma-controller@4a056000 { 218 sdma: dma-controller@4a056000 {
213 compatible = "ti,omap4430-sdma"; 219 compatible = "ti,omap4430-sdma";
214 reg = <0x4a056000 0x1000>; 220 reg = <0x4a056000 0x1000>;
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi
index df0a09b81ba2..4a6091d717b5 100644
--- a/arch/arm/boot/dts/omap5.dtsi
+++ b/arch/arm/boot/dts/omap5.dtsi
@@ -104,8 +104,9 @@
104 soc { 104 soc {
105 compatible = "ti,omap-infra"; 105 compatible = "ti,omap-infra";
106 mpu { 106 mpu {
107 compatible = "ti,omap5-mpu"; 107 compatible = "ti,omap4-mpu";
108 ti,hwmods = "mpu"; 108 ti,hwmods = "mpu";
109 sram = <&ocmcram>;
109 }; 110 };
110 }; 111 };
111 112
@@ -220,6 +221,11 @@
220 }; 221 };
221 }; 222 };
222 223
224 ocmcram: ocmcram@40300000 {
225 compatible = "mmio-sram";
226 reg = <0x40300000 0x20000>; /* 128k */
227 };
228
223 sdma: dma-controller@4a056000 { 229 sdma: dma-controller@4a056000 {
224 compatible = "ti,omap4430-sdma"; 230 compatible = "ti,omap4430-sdma";
225 reg = <0x4a056000 0x1000>; 231 reg = <0x4a056000 0x1000>;
diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig
index f650f00e8cee..69c7bed3c634 100644
--- a/arch/arm/configs/omap2plus_defconfig
+++ b/arch/arm/configs/omap2plus_defconfig
@@ -1,11 +1,28 @@
1CONFIG_SYSVIPC=y 1CONFIG_SYSVIPC=y
2CONFIG_POSIX_MQUEUE=y 2CONFIG_POSIX_MQUEUE=y
3CONFIG_FHANDLE=y
4CONFIG_AUDIT=y
3CONFIG_NO_HZ=y 5CONFIG_NO_HZ=y
4CONFIG_HIGH_RES_TIMERS=y 6CONFIG_HIGH_RES_TIMERS=y
5CONFIG_BSD_PROCESS_ACCT=y 7CONFIG_BSD_PROCESS_ACCT=y
6CONFIG_IKCONFIG=y 8CONFIG_IKCONFIG=y
7CONFIG_IKCONFIG_PROC=y 9CONFIG_IKCONFIG_PROC=y
8CONFIG_LOG_BUF_SHIFT=16 10CONFIG_LOG_BUF_SHIFT=16
11CONFIG_CGROUPS=y
12CONFIG_CGROUP_FREEZER=y
13CONFIG_CGROUP_DEVICE=y
14CONFIG_CPUSETS=y
15CONFIG_CGROUP_CPUACCT=y
16CONFIG_RESOURCE_COUNTERS=y
17CONFIG_MEMCG=y
18CONFIG_MEMCG_SWAP=y
19CONFIG_MEMCG_KMEM=y
20CONFIG_CGROUP_PERF=y
21CONFIG_CGROUP_SCHED=y
22CONFIG_CFS_BANDWIDTH=y
23CONFIG_RT_GROUP_SCHED=y
24CONFIG_BLK_CGROUP=y
25CONFIG_NAMESPACES=y
9CONFIG_BLK_DEV_INITRD=y 26CONFIG_BLK_DEV_INITRD=y
10CONFIG_EXPERT=y 27CONFIG_EXPERT=y
11CONFIG_SLAB=y 28CONFIG_SLAB=y
@@ -32,19 +49,26 @@ CONFIG_SOC_OMAP5=y
32CONFIG_SOC_AM33XX=y 49CONFIG_SOC_AM33XX=y
33CONFIG_SOC_AM43XX=y 50CONFIG_SOC_AM43XX=y
34CONFIG_SOC_DRA7XX=y 51CONFIG_SOC_DRA7XX=y
35CONFIG_CACHE_L2X0=y
36CONFIG_ARM_THUMBEE=y 52CONFIG_ARM_THUMBEE=y
37CONFIG_ARM_ERRATA_411920=y 53CONFIG_ARM_ERRATA_411920=y
38CONFIG_SMP=y 54CONFIG_SMP=y
39CONFIG_NR_CPUS=2 55CONFIG_NR_CPUS=2
40CONFIG_CMA=y 56CONFIG_CMA=y
57CONFIG_SECCOMP=y
41CONFIG_ZBOOT_ROM_TEXT=0x0 58CONFIG_ZBOOT_ROM_TEXT=0x0
42CONFIG_ZBOOT_ROM_BSS=0x0 59CONFIG_ZBOOT_ROM_BSS=0x0
43CONFIG_ARM_APPENDED_DTB=y 60CONFIG_ARM_APPENDED_DTB=y
44CONFIG_ARM_ATAG_DTB_COMPAT=y 61CONFIG_ARM_ATAG_DTB_COMPAT=y
45CONFIG_CMDLINE="root=/dev/mmcblk0p2 rootwait console=ttyO2,115200" 62CONFIG_CMDLINE="root=/dev/mmcblk0p2 rootwait console=ttyO2,115200"
46CONFIG_KEXEC=y 63CONFIG_KEXEC=y
47CONFIG_FPE_NWFPE=y 64CONFIG_CPU_FREQ=y
65CONFIG_CPU_FREQ_STAT_DETAILS=y
66CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
67CONFIG_CPU_FREQ_GOV_POWERSAVE=y
68CONFIG_CPU_FREQ_GOV_USERSPACE=y
69CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
70CONFIG_GENERIC_CPUFREQ_CPU0=y
71# CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set
48CONFIG_CPU_IDLE=y 72CONFIG_CPU_IDLE=y
49CONFIG_BINFMT_MISC=y 73CONFIG_BINFMT_MISC=y
50CONFIG_PM_DEBUG=y 74CONFIG_PM_DEBUG=y
@@ -61,7 +85,7 @@ CONFIG_IP_PNP_DHCP=y
61CONFIG_IP_PNP_BOOTP=y 85CONFIG_IP_PNP_BOOTP=y
62CONFIG_IP_PNP_RARP=y 86CONFIG_IP_PNP_RARP=y
63# CONFIG_INET_LRO is not set 87# CONFIG_INET_LRO is not set
64# CONFIG_IPV6 is not set 88CONFIG_IPV6=y
65CONFIG_NETFILTER=y 89CONFIG_NETFILTER=y
66CONFIG_CAN=m 90CONFIG_CAN=m
67CONFIG_CAN_C_CAN=m 91CONFIG_CAN_C_CAN=m
@@ -75,9 +99,6 @@ CONFIG_BT_HCIBCM203X=m
75CONFIG_BT_HCIBPA10X=m 99CONFIG_BT_HCIBPA10X=m
76CONFIG_CFG80211=m 100CONFIG_CFG80211=m
77CONFIG_MAC80211=m 101CONFIG_MAC80211=m
78CONFIG_MAC80211_RC_PID=y
79CONFIG_MAC80211_RC_DEFAULT_PID=y
80CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
81CONFIG_DEVTMPFS=y 102CONFIG_DEVTMPFS=y
82CONFIG_DEVTMPFS_MOUNT=y 103CONFIG_DEVTMPFS_MOUNT=y
83CONFIG_DMA_CMA=y 104CONFIG_DMA_CMA=y
@@ -101,9 +122,9 @@ CONFIG_BLK_DEV_RAM_SIZE=16384
101CONFIG_SENSORS_TSL2550=m 122CONFIG_SENSORS_TSL2550=m
102CONFIG_BMP085_I2C=m 123CONFIG_BMP085_I2C=m
103CONFIG_SENSORS_LIS3_I2C=m 124CONFIG_SENSORS_LIS3_I2C=m
125CONFIG_SRAM=y
104CONFIG_SCSI=y 126CONFIG_SCSI=y
105CONFIG_BLK_DEV_SD=y 127CONFIG_BLK_DEV_SD=y
106CONFIG_SCSI_MULTI_LUN=y
107CONFIG_SCSI_SCAN_ASYNC=y 128CONFIG_SCSI_SCAN_ASYNC=y
108CONFIG_MD=y 129CONFIG_MD=y
109CONFIG_NETDEVICES=y 130CONFIG_NETDEVICES=y
@@ -138,7 +159,9 @@ CONFIG_KEYBOARD_GPIO=y
138CONFIG_KEYBOARD_MATRIX=m 159CONFIG_KEYBOARD_MATRIX=m
139CONFIG_KEYBOARD_TWL4030=y 160CONFIG_KEYBOARD_TWL4030=y
140CONFIG_INPUT_TOUCHSCREEN=y 161CONFIG_INPUT_TOUCHSCREEN=y
141CONFIG_TOUCHSCREEN_ADS7846=y 162CONFIG_TOUCHSCREEN_ADS7846=m
163CONFIG_TOUCHSCREEN_TSC2005=m
164CONFIG_TOUCHSCREEN_TSC2007=m
142CONFIG_INPUT_MISC=y 165CONFIG_INPUT_MISC=y
143CONFIG_INPUT_TWL4030_PWRBUTTON=y 166CONFIG_INPUT_TWL4030_PWRBUTTON=y
144# CONFIG_LEGACY_PTYS is not set 167# CONFIG_LEGACY_PTYS is not set
@@ -162,7 +185,13 @@ CONFIG_DEBUG_GPIO=y
162CONFIG_GPIO_SYSFS=y 185CONFIG_GPIO_SYSFS=y
163CONFIG_GPIO_TWL4030=y 186CONFIG_GPIO_TWL4030=y
164CONFIG_W1=y 187CONFIG_W1=y
165CONFIG_POWER_SUPPLY=y 188CONFIG_BATTERY_BQ27x00=m
189CONFIG_CHARGER_ISP1704=m
190CONFIG_CHARGER_TWL4030=m
191CONFIG_CHARGER_BQ2415X=m
192CONFIG_CHARGER_BQ24190=m
193CONFIG_CHARGER_BQ24735=m
194CONFIG_POWER_RESET=y
166CONFIG_POWER_AVS=y 195CONFIG_POWER_AVS=y
167CONFIG_SENSORS_LM75=m 196CONFIG_SENSORS_LM75=m
168CONFIG_THERMAL=y 197CONFIG_THERMAL=y
@@ -183,8 +212,8 @@ CONFIG_MFD_TPS65217=y
183CONFIG_MFD_TPS65218=y 212CONFIG_MFD_TPS65218=y
184CONFIG_MFD_TPS65910=y 213CONFIG_MFD_TPS65910=y
185CONFIG_TWL6040_CORE=y 214CONFIG_TWL6040_CORE=y
186CONFIG_REGULATOR_FIXED_VOLTAGE=y
187CONFIG_REGULATOR_PALMAS=y 215CONFIG_REGULATOR_PALMAS=y
216CONFIG_REGULATOR_PBIAS=y
188CONFIG_REGULATOR_TI_ABB=y 217CONFIG_REGULATOR_TI_ABB=y
189CONFIG_REGULATOR_TPS65023=y 218CONFIG_REGULATOR_TPS65023=y
190CONFIG_REGULATOR_TPS6507X=y 219CONFIG_REGULATOR_TPS6507X=y
@@ -192,12 +221,12 @@ CONFIG_REGULATOR_TPS65217=y
192CONFIG_REGULATOR_TPS65218=y 221CONFIG_REGULATOR_TPS65218=y
193CONFIG_REGULATOR_TPS65910=y 222CONFIG_REGULATOR_TPS65910=y
194CONFIG_REGULATOR_TWL4030=y 223CONFIG_REGULATOR_TWL4030=y
195CONFIG_REGULATOR_PBIAS=y
196CONFIG_FB=y 224CONFIG_FB=y
197CONFIG_FIRMWARE_EDID=y 225CONFIG_FIRMWARE_EDID=y
198CONFIG_FB_MODE_HELPERS=y 226CONFIG_FB_MODE_HELPERS=y
199CONFIG_FB_TILEBLITTING=y 227CONFIG_FB_TILEBLITTING=y
200CONFIG_OMAP2_DSS=m 228CONFIG_OMAP2_DSS=m
229CONFIG_OMAP5_DSS_HDMI=y
201CONFIG_OMAP2_DSS_SDI=y 230CONFIG_OMAP2_DSS_SDI=y
202CONFIG_OMAP2_DSS_DSI=y 231CONFIG_OMAP2_DSS_DSI=y
203CONFIG_FB_OMAP2=m 232CONFIG_FB_OMAP2=m
@@ -205,11 +234,25 @@ CONFIG_DISPLAY_ENCODER_TFP410=m
205CONFIG_DISPLAY_ENCODER_TPD12S015=m 234CONFIG_DISPLAY_ENCODER_TPD12S015=m
206CONFIG_DISPLAY_CONNECTOR_DVI=m 235CONFIG_DISPLAY_CONNECTOR_DVI=m
207CONFIG_DISPLAY_CONNECTOR_HDMI=m 236CONFIG_DISPLAY_CONNECTOR_HDMI=m
237CONFIG_DISPLAY_CONNECTOR_ANALOG_TV=m
208CONFIG_DISPLAY_PANEL_DPI=m 238CONFIG_DISPLAY_PANEL_DPI=m
239CONFIG_DISPLAY_PANEL_DSI_CM=m
240CONFIG_DISPLAY_PANEL_SONY_ACX565AKM=m
241CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02=m
242CONFIG_DISPLAY_PANEL_SHARP_LS037V7DW01=m
243CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1=m
244CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1=m
245CONFIG_DISPLAY_PANEL_NEC_NL8048HL11=m
209CONFIG_BACKLIGHT_LCD_SUPPORT=y 246CONFIG_BACKLIGHT_LCD_SUPPORT=y
210CONFIG_LCD_CLASS_DEVICE=y 247CONFIG_LCD_CLASS_DEVICE=y
211CONFIG_LCD_PLATFORM=y 248CONFIG_LCD_PLATFORM=y
249CONFIG_BACKLIGHT_CLASS_DEVICE=y
250CONFIG_BACKLIGHT_GENERIC=m
251CONFIG_BACKLIGHT_PWM=m
252CONFIG_BACKLIGHT_PANDORA=m
253CONFIG_BACKLIGHT_GPIO=m
212CONFIG_FRAMEBUFFER_CONSOLE=y 254CONFIG_FRAMEBUFFER_CONSOLE=y
255CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
213CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y 256CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
214CONFIG_LOGO=y 257CONFIG_LOGO=y
215CONFIG_SOUND=m 258CONFIG_SOUND=m
@@ -221,8 +264,6 @@ CONFIG_SND_DEBUG=y
221CONFIG_SND_USB_AUDIO=m 264CONFIG_SND_USB_AUDIO=m
222CONFIG_SND_SOC=m 265CONFIG_SND_SOC=m
223CONFIG_SND_OMAP_SOC=m 266CONFIG_SND_OMAP_SOC=m
224CONFIG_SND_AM33XX_SOC_EVM=m
225CONFIG_SND_DAVINCI_SOC=m
226CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m 267CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
227CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m 268CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m
228CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m 269CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
@@ -233,9 +274,6 @@ CONFIG_USB_WDM=y
233CONFIG_USB_STORAGE=y 274CONFIG_USB_STORAGE=y
234CONFIG_USB_DWC3=m 275CONFIG_USB_DWC3=m
235CONFIG_USB_TEST=y 276CONFIG_USB_TEST=y
236CONFIG_NOP_USB_XCEIV=y
237CONFIG_OMAP_USB2=y
238CONFIG_TI_PIPE3=y
239CONFIG_AM335X_PHY_USB=y 277CONFIG_AM335X_PHY_USB=y
240CONFIG_USB_GADGET=y 278CONFIG_USB_GADGET=y
241CONFIG_USB_GADGET_DEBUG=y 279CONFIG_USB_GADGET_DEBUG=y
@@ -243,7 +281,6 @@ CONFIG_USB_GADGET_DEBUG_FILES=y
243CONFIG_USB_GADGET_DEBUG_FS=y 281CONFIG_USB_GADGET_DEBUG_FS=y
244CONFIG_USB_ZERO=m 282CONFIG_USB_ZERO=m
245CONFIG_MMC=y 283CONFIG_MMC=y
246CONFIG_MMC_UNSAFE_RESUME=y
247CONFIG_SDIO_UART=y 284CONFIG_SDIO_UART=y
248CONFIG_MMC_OMAP=y 285CONFIG_MMC_OMAP=y
249CONFIG_MMC_OMAP_HS=y 286CONFIG_MMC_OMAP_HS=y
@@ -267,15 +304,23 @@ CONFIG_TI_EDMA=y
267CONFIG_DMA_OMAP=y 304CONFIG_DMA_OMAP=y
268CONFIG_EXTCON=y 305CONFIG_EXTCON=y
269CONFIG_EXTCON_PALMAS=y 306CONFIG_EXTCON_PALMAS=y
307CONFIG_PWM=y
308CONFIG_PWM_TWL=y
309CONFIG_PWM_TWL_LED=y
310CONFIG_OMAP_USB2=y
311CONFIG_TI_PIPE3=y
270CONFIG_EXT2_FS=y 312CONFIG_EXT2_FS=y
271CONFIG_EXT3_FS=y 313CONFIG_EXT3_FS=y
272# CONFIG_EXT3_FS_XATTR is not set 314# CONFIG_EXT3_FS_XATTR is not set
273CONFIG_EXT4_FS=y 315CONFIG_EXT4_FS=y
316CONFIG_FANOTIFY=y
274CONFIG_QUOTA=y 317CONFIG_QUOTA=y
275CONFIG_QFMT_V2=y 318CONFIG_QFMT_V2=y
319CONFIG_AUTOFS4_FS=y
276CONFIG_MSDOS_FS=y 320CONFIG_MSDOS_FS=y
277CONFIG_VFAT_FS=y 321CONFIG_VFAT_FS=y
278CONFIG_TMPFS=y 322CONFIG_TMPFS=y
323CONFIG_TMPFS_POSIX_ACL=y
279CONFIG_JFFS2_FS=y 324CONFIG_JFFS2_FS=y
280CONFIG_JFFS2_SUMMARY=y 325CONFIG_JFFS2_SUMMARY=y
281CONFIG_JFFS2_FS_XATTR=y 326CONFIG_JFFS2_FS_XATTR=y
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 831805e40529..b8ad045bcb8d 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -231,15 +231,6 @@ static struct map_desc omap44xx_io_desc[] __initdata = {
231 .length = L4_PER_44XX_SIZE, 231 .length = L4_PER_44XX_SIZE,
232 .type = MT_DEVICE, 232 .type = MT_DEVICE,
233 }, 233 },
234#ifdef CONFIG_OMAP4_ERRATA_I688
235 {
236 .virtual = OMAP4_SRAM_VA,
237 .pfn = __phys_to_pfn(OMAP4_SRAM_PA),
238 .length = PAGE_SIZE,
239 .type = MT_MEMORY_RW_SO,
240 },
241#endif
242
243}; 234};
244#endif 235#endif
245 236
@@ -269,14 +260,6 @@ static struct map_desc omap54xx_io_desc[] __initdata = {
269 .length = L4_PER_54XX_SIZE, 260 .length = L4_PER_54XX_SIZE,
270 .type = MT_DEVICE, 261 .type = MT_DEVICE,
271 }, 262 },
272#ifdef CONFIG_OMAP4_ERRATA_I688
273 {
274 .virtual = OMAP4_SRAM_VA,
275 .pfn = __phys_to_pfn(OMAP4_SRAM_PA),
276 .length = PAGE_SIZE,
277 .type = MT_MEMORY_RW_SO,
278 },
279#endif
280}; 263};
281#endif 264#endif
282 265
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c
index a0fe747634c1..16b20cedc38d 100644
--- a/arch/arm/mach-omap2/omap4-common.c
+++ b/arch/arm/mach-omap2/omap4-common.c
@@ -25,6 +25,7 @@
25#include <linux/irqchip/irq-crossbar.h> 25#include <linux/irqchip/irq-crossbar.h>
26#include <linux/of_address.h> 26#include <linux/of_address.h>
27#include <linux/reboot.h> 27#include <linux/reboot.h>
28#include <linux/genalloc.h>
28 29
29#include <asm/hardware/cache-l2x0.h> 30#include <asm/hardware/cache-l2x0.h>
30#include <asm/mach/map.h> 31#include <asm/mach/map.h>
@@ -71,6 +72,26 @@ void omap_bus_sync(void)
71} 72}
72EXPORT_SYMBOL(omap_bus_sync); 73EXPORT_SYMBOL(omap_bus_sync);
73 74
75static int __init omap4_sram_init(void)
76{
77 struct device_node *np;
78 struct gen_pool *sram_pool;
79
80 np = of_find_compatible_node(NULL, NULL, "ti,omap4-mpu");
81 if (!np)
82 pr_warn("%s:Unable to allocate sram needed to handle errata I688\n",
83 __func__);
84 sram_pool = of_get_named_gen_pool(np, "sram", 0);
85 if (!sram_pool)
86 pr_warn("%s:Unable to get sram pool needed to handle errata I688\n",
87 __func__);
88 else
89 sram_sync = (void *)gen_pool_alloc(sram_pool, PAGE_SIZE);
90
91 return 0;
92}
93omap_arch_initcall(omap4_sram_init);
94
74/* Steal one page physical memory for barrier implementation */ 95/* Steal one page physical memory for barrier implementation */
75int __init omap_barrier_reserve_memblock(void) 96int __init omap_barrier_reserve_memblock(void)
76{ 97{
@@ -91,7 +112,6 @@ void __init omap_barriers_init(void)
91 dram_io_desc[0].type = MT_MEMORY_RW_SO; 112 dram_io_desc[0].type = MT_MEMORY_RW_SO;
92 iotable_init(dram_io_desc, ARRAY_SIZE(dram_io_desc)); 113 iotable_init(dram_io_desc, ARRAY_SIZE(dram_io_desc));
93 dram_sync = (void __iomem *) dram_io_desc[0].virtual; 114 dram_sync = (void __iomem *) dram_io_desc[0].virtual;
94 sram_sync = (void __iomem *) OMAP4_SRAM_VA;
95 115
96 pr_info("OMAP4: Map 0x%08llx to 0x%08lx for dram barrier\n", 116 pr_info("OMAP4: Map 0x%08llx to 0x%08lx for dram barrier\n",
97 (long long) paddr, dram_io_desc[0].virtual); 117 (long long) paddr, dram_io_desc[0].virtual);
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 8fd87a3055bf..e96808ef1adb 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -2185,7 +2185,7 @@ static int _enable(struct omap_hwmod *oh)
2185 oh->mux->pads_dynamic))) { 2185 oh->mux->pads_dynamic))) {
2186 omap_hwmod_mux(oh->mux, _HWMOD_STATE_ENABLED); 2186 omap_hwmod_mux(oh->mux, _HWMOD_STATE_ENABLED);
2187 _reconfigure_io_chain(); 2187 _reconfigure_io_chain();
2188 } else if (oh->flags & HWMOD_FORCE_MSTANDBY) { 2188 } else if (oh->flags & HWMOD_RECONFIG_IO_CHAIN) {
2189 _reconfigure_io_chain(); 2189 _reconfigure_io_chain();
2190 } 2190 }
2191 2191
@@ -2293,7 +2293,7 @@ static int _idle(struct omap_hwmod *oh)
2293 if (oh->mux && oh->mux->pads_dynamic) { 2293 if (oh->mux && oh->mux->pads_dynamic) {
2294 omap_hwmod_mux(oh->mux, _HWMOD_STATE_IDLE); 2294 omap_hwmod_mux(oh->mux, _HWMOD_STATE_IDLE);
2295 _reconfigure_io_chain(); 2295 _reconfigure_io_chain();
2296 } else if (oh->flags & HWMOD_FORCE_MSTANDBY) { 2296 } else if (oh->flags & HWMOD_RECONFIG_IO_CHAIN) {
2297 _reconfigure_io_chain(); 2297 _reconfigure_io_chain();
2298 } 2298 }
2299 2299
diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h
index 0f97d635ff90..512f809a3f4d 100644
--- a/arch/arm/mach-omap2/omap_hwmod.h
+++ b/arch/arm/mach-omap2/omap_hwmod.h
@@ -514,6 +514,9 @@ struct omap_hwmod_omap4_prcm {
514 * HWMOD_SWSUP_SIDLE_ACT: omap_hwmod code should manually bring the module 514 * HWMOD_SWSUP_SIDLE_ACT: omap_hwmod code should manually bring the module
515 * out of idle, but rely on smart-idle to the put it back in idle, 515 * out of idle, but rely on smart-idle to the put it back in idle,
516 * so the wakeups are still functional (Only known case for now is UART) 516 * so the wakeups are still functional (Only known case for now is UART)
517 * HWMOD_RECONFIG_IO_CHAIN: omap_hwmod code needs to reconfigure wake-up
518 * events by calling _reconfigure_io_chain() when a device is enabled
519 * or idled.
517 */ 520 */
518#define HWMOD_SWSUP_SIDLE (1 << 0) 521#define HWMOD_SWSUP_SIDLE (1 << 0)
519#define HWMOD_SWSUP_MSTANDBY (1 << 1) 522#define HWMOD_SWSUP_MSTANDBY (1 << 1)
@@ -528,6 +531,7 @@ struct omap_hwmod_omap4_prcm {
528#define HWMOD_BLOCK_WFI (1 << 10) 531#define HWMOD_BLOCK_WFI (1 << 10)
529#define HWMOD_FORCE_MSTANDBY (1 << 11) 532#define HWMOD_FORCE_MSTANDBY (1 << 11)
530#define HWMOD_SWSUP_SIDLE_ACT (1 << 12) 533#define HWMOD_SWSUP_SIDLE_ACT (1 << 12)
534#define HWMOD_RECONFIG_IO_CHAIN (1 << 13)
531 535
532/* 536/*
533 * omap_hwmod._int_flags definitions 537 * omap_hwmod._int_flags definitions
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index e9516b454e76..2a78b093c0ce 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -490,7 +490,7 @@ static struct omap_hwmod omap3xxx_uart1_hwmod = {
490 .mpu_irqs = omap2_uart1_mpu_irqs, 490 .mpu_irqs = omap2_uart1_mpu_irqs,
491 .sdma_reqs = omap2_uart1_sdma_reqs, 491 .sdma_reqs = omap2_uart1_sdma_reqs,
492 .main_clk = "uart1_fck", 492 .main_clk = "uart1_fck",
493 .flags = DEBUG_TI81XXUART1_FLAGS | HWMOD_SWSUP_SIDLE_ACT, 493 .flags = DEBUG_TI81XXUART1_FLAGS | HWMOD_SWSUP_SIDLE,
494 .prcm = { 494 .prcm = {
495 .omap2 = { 495 .omap2 = {
496 .module_offs = CORE_MOD, 496 .module_offs = CORE_MOD,
@@ -509,7 +509,7 @@ static struct omap_hwmod omap3xxx_uart2_hwmod = {
509 .mpu_irqs = omap2_uart2_mpu_irqs, 509 .mpu_irqs = omap2_uart2_mpu_irqs,
510 .sdma_reqs = omap2_uart2_sdma_reqs, 510 .sdma_reqs = omap2_uart2_sdma_reqs,
511 .main_clk = "uart2_fck", 511 .main_clk = "uart2_fck",
512 .flags = DEBUG_TI81XXUART2_FLAGS | HWMOD_SWSUP_SIDLE_ACT, 512 .flags = DEBUG_TI81XXUART2_FLAGS | HWMOD_SWSUP_SIDLE,
513 .prcm = { 513 .prcm = {
514 .omap2 = { 514 .omap2 = {
515 .module_offs = CORE_MOD, 515 .module_offs = CORE_MOD,
@@ -529,7 +529,7 @@ static struct omap_hwmod omap3xxx_uart3_hwmod = {
529 .sdma_reqs = omap2_uart3_sdma_reqs, 529 .sdma_reqs = omap2_uart3_sdma_reqs,
530 .main_clk = "uart3_fck", 530 .main_clk = "uart3_fck",
531 .flags = DEBUG_OMAP3UART3_FLAGS | DEBUG_TI81XXUART3_FLAGS | 531 .flags = DEBUG_OMAP3UART3_FLAGS | DEBUG_TI81XXUART3_FLAGS |
532 HWMOD_SWSUP_SIDLE_ACT, 532 HWMOD_SWSUP_SIDLE,
533 .prcm = { 533 .prcm = {
534 .omap2 = { 534 .omap2 = {
535 .module_offs = OMAP3430_PER_MOD, 535 .module_offs = OMAP3430_PER_MOD,
@@ -559,7 +559,7 @@ static struct omap_hwmod omap36xx_uart4_hwmod = {
559 .mpu_irqs = uart4_mpu_irqs, 559 .mpu_irqs = uart4_mpu_irqs,
560 .sdma_reqs = uart4_sdma_reqs, 560 .sdma_reqs = uart4_sdma_reqs,
561 .main_clk = "uart4_fck", 561 .main_clk = "uart4_fck",
562 .flags = DEBUG_OMAP3UART4_FLAGS | HWMOD_SWSUP_SIDLE_ACT, 562 .flags = DEBUG_OMAP3UART4_FLAGS | HWMOD_SWSUP_SIDLE,
563 .prcm = { 563 .prcm = {
564 .omap2 = { 564 .omap2 = {
565 .module_offs = OMAP3430_PER_MOD, 565 .module_offs = OMAP3430_PER_MOD,
@@ -1730,8 +1730,8 @@ static struct omap_hwmod omap3xxx_usbhsotg_hwmod = {
1730 * Note that musb has OTG_FORCESTDBY register that controls MSTANDBY 1730 * Note that musb has OTG_FORCESTDBY register that controls MSTANDBY
1731 * signal when MIDLEMODE is set to force-idle. 1731 * signal when MIDLEMODE is set to force-idle.
1732 */ 1732 */
1733 .flags = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE 1733 .flags = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE |
1734 | HWMOD_FORCE_MSTANDBY, 1734 HWMOD_FORCE_MSTANDBY | HWMOD_RECONFIG_IO_CHAIN,
1735}; 1735};
1736 1736
1737/* usb_otg_hs */ 1737/* usb_otg_hs */
diff --git a/arch/arm/mach-omap2/sram.c b/arch/arm/mach-omap2/sram.c
index ddf1818af228..cd488b80ba36 100644
--- a/arch/arm/mach-omap2/sram.c
+++ b/arch/arm/mach-omap2/sram.c
@@ -32,12 +32,6 @@
32 32
33#define OMAP2_SRAM_PUB_PA (OMAP2_SRAM_PA + 0xf800) 33#define OMAP2_SRAM_PUB_PA (OMAP2_SRAM_PA + 0xf800)
34#define OMAP3_SRAM_PUB_PA (OMAP3_SRAM_PA + 0x8000) 34#define OMAP3_SRAM_PUB_PA (OMAP3_SRAM_PA + 0x8000)
35#ifdef CONFIG_OMAP4_ERRATA_I688
36#define OMAP4_SRAM_PUB_PA OMAP4_SRAM_PA
37#else
38#define OMAP4_SRAM_PUB_PA (OMAP4_SRAM_PA + 0x4000)
39#endif
40#define OMAP5_SRAM_PA 0x40300000
41 35
42#define SRAM_BOOTLOADER_SZ 0x00 36#define SRAM_BOOTLOADER_SZ 0x00
43 37
@@ -105,32 +99,14 @@ static void __init omap_detect_sram(void)
105 } else { 99 } else {
106 omap_sram_size = 0x8000; /* 32K */ 100 omap_sram_size = 0x8000; /* 32K */
107 } 101 }
108 } else if (cpu_is_omap44xx()) {
109 omap_sram_start = OMAP4_SRAM_PUB_PA;
110 omap_sram_size = 0xa000; /* 40K */
111 } else if (soc_is_omap54xx()) {
112 omap_sram_start = OMAP5_SRAM_PA;
113 omap_sram_size = SZ_128K; /* 128KB */
114 } else { 102 } else {
115 omap_sram_start = OMAP2_SRAM_PUB_PA; 103 omap_sram_start = OMAP2_SRAM_PUB_PA;
116 omap_sram_size = 0x800; /* 2K */ 104 omap_sram_size = 0x800; /* 2K */
117 } 105 }
118 } else { 106 } else {
119 if (soc_is_am33xx()) { 107 if (cpu_is_omap34xx()) {
120 omap_sram_start = AM33XX_SRAM_PA;
121 omap_sram_size = 0x10000; /* 64K */
122 } else if (soc_is_am43xx()) {
123 omap_sram_start = AM33XX_SRAM_PA;
124 omap_sram_size = SZ_256K;
125 } else if (cpu_is_omap34xx()) {
126 omap_sram_start = OMAP3_SRAM_PA; 108 omap_sram_start = OMAP3_SRAM_PA;
127 omap_sram_size = 0x10000; /* 64K */ 109 omap_sram_size = 0x10000; /* 64K */
128 } else if (cpu_is_omap44xx()) {
129 omap_sram_start = OMAP4_SRAM_PA;
130 omap_sram_size = 0xe000; /* 56K */
131 } else if (soc_is_omap54xx()) {
132 omap_sram_start = OMAP5_SRAM_PA;
133 omap_sram_size = SZ_128K; /* 128KB */
134 } else { 110 } else {
135 omap_sram_start = OMAP2_SRAM_PA; 111 omap_sram_start = OMAP2_SRAM_PA;
136 if (cpu_is_omap242x()) 112 if (cpu_is_omap242x())
@@ -148,12 +124,6 @@ static void __init omap2_map_sram(void)
148{ 124{
149 int cached = 1; 125 int cached = 1;
150 126
151#ifdef CONFIG_OMAP4_ERRATA_I688
152 if (cpu_is_omap44xx()) {
153 omap_sram_start += PAGE_SIZE;
154 omap_sram_size -= SZ_16K;
155 }
156#endif
157 if (cpu_is_omap34xx()) { 127 if (cpu_is_omap34xx()) {
158 /* 128 /*
159 * SRAM must be marked as non-cached on OMAP3 since the 129 * SRAM must be marked as non-cached on OMAP3 since the
@@ -285,11 +255,6 @@ static inline int omap34xx_sram_init(void)
285} 255}
286#endif /* CONFIG_ARCH_OMAP3 */ 256#endif /* CONFIG_ARCH_OMAP3 */
287 257
288static inline int am33xx_sram_init(void)
289{
290 return 0;
291}
292
293int __init omap_sram_init(void) 258int __init omap_sram_init(void)
294{ 259{
295 omap_detect_sram(); 260 omap_detect_sram();
@@ -299,8 +264,6 @@ int __init omap_sram_init(void)
299 omap242x_sram_init(); 264 omap242x_sram_init();
300 else if (cpu_is_omap2430()) 265 else if (cpu_is_omap2430())
301 omap243x_sram_init(); 266 omap243x_sram_init();
302 else if (soc_is_am33xx())
303 am33xx_sram_init();
304 else if (cpu_is_omap34xx()) 267 else if (cpu_is_omap34xx())
305 omap34xx_sram_init(); 268 omap34xx_sram_init();
306 269
diff --git a/arch/arm/mach-omap2/sram.h b/arch/arm/mach-omap2/sram.h
index ca7277c2a9ee..948d3edefc38 100644
--- a/arch/arm/mach-omap2/sram.h
+++ b/arch/arm/mach-omap2/sram.h
@@ -74,10 +74,3 @@ static inline void omap_push_sram_idle(void) {}
74 */ 74 */
75#define OMAP2_SRAM_PA 0x40200000 75#define OMAP2_SRAM_PA 0x40200000
76#define OMAP3_SRAM_PA 0x40200000 76#define OMAP3_SRAM_PA 0x40200000
77#ifdef CONFIG_OMAP4_ERRATA_I688
78#define OMAP4_SRAM_PA 0x40304000
79#define OMAP4_SRAM_VA 0xfe404000
80#else
81#define OMAP4_SRAM_PA 0x40300000
82#endif
83#define AM33XX_SRAM_PA 0x40300000