aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2016-03-30 13:36:06 -0400
committerTony Lindgren <tony@atomide.com>2016-03-30 13:36:06 -0400
commit1809de7e7d37c585e01a1bcc583ea92b78fc759d (patch)
tree76c5b35c2b04eafce86a1a729c02ab705eba44bc /arch/arm/mach-omap2/omap_hwmod_81xx_data.c
parentebf24414809200915b9ddf7f109bba7c278c8210 (diff)
parent3ca4a238106dedc285193ee47f494a6584b6fd2f (diff)
Merge tag 'for-v4.6-rc/omap-fixes-a' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending into omap-for-v4.6/fixes
ARM: OMAP2+: first hwmod fix for v4.6-rc Fix a longstanding bug in the hwmod code that could cause hardware SYSCONFIG register values to not match the kernel's idea of what they should be, and that could result in lower performance during IP block idle entry. Basic build, boot, and PM test logs are available here: http://www.pwsan.com/omap/testlogs/omap-hwmod-fixes-a-for-v4.6-rc/20160326231727/
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_81xx_data.c')
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_81xx_data.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
index 743a2a2183a0..df8327713d06 100644
--- a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
@@ -228,6 +228,42 @@ static struct omap_hwmod_ocp_if dm816x_mpu__alwon_l3_med = {
228 .user = OCP_USER_MPU, 228 .user = OCP_USER_MPU,
229}; 229};
230 230
231/* RTC */
232static struct omap_hwmod_class_sysconfig ti81xx_rtc_sysc = {
233 .rev_offs = 0x74,
234 .sysc_offs = 0x78,
235 .sysc_flags = SYSC_HAS_SIDLEMODE,
236 .idlemodes = SIDLE_FORCE | SIDLE_NO |
237 SIDLE_SMART | SIDLE_SMART_WKUP,
238 .sysc_fields = &omap_hwmod_sysc_type3,
239};
240
241static struct omap_hwmod_class ti81xx_rtc_hwmod_class = {
242 .name = "rtc",
243 .sysc = &ti81xx_rtc_sysc,
244};
245
246struct omap_hwmod ti81xx_rtc_hwmod = {
247 .name = "rtc",
248 .class = &ti81xx_rtc_hwmod_class,
249 .clkdm_name = "alwon_l3s_clkdm",
250 .flags = HWMOD_NO_IDLEST,
251 .main_clk = "sysclk18_ck",
252 .prcm = {
253 .omap4 = {
254 .clkctrl_offs = DM81XX_CM_ALWON_RTC_CLKCTRL,
255 .modulemode = MODULEMODE_SWCTRL,
256 },
257 },
258};
259
260static struct omap_hwmod_ocp_if ti81xx_l4_ls__rtc = {
261 .master = &dm81xx_l4_ls_hwmod,
262 .slave = &ti81xx_rtc_hwmod,
263 .clk = "sysclk6_ck",
264 .user = OCP_USER_MPU,
265};
266
231/* UART common */ 267/* UART common */
232static struct omap_hwmod_class_sysconfig uart_sysc = { 268static struct omap_hwmod_class_sysconfig uart_sysc = {
233 .rev_offs = 0x50, 269 .rev_offs = 0x50,
@@ -1383,6 +1419,7 @@ static struct omap_hwmod_ocp_if *dm814x_hwmod_ocp_ifs[] __initdata = {
1383 &dm81xx_l4_ls__mcspi1, 1419 &dm81xx_l4_ls__mcspi1,
1384 &dm814x_l4_ls__mmc1, 1420 &dm814x_l4_ls__mmc1,
1385 &dm814x_l4_ls__mmc2, 1421 &dm814x_l4_ls__mmc2,
1422 &ti81xx_l4_ls__rtc,
1386 &dm81xx_alwon_l3_fast__tpcc, 1423 &dm81xx_alwon_l3_fast__tpcc,
1387 &dm81xx_alwon_l3_fast__tptc0, 1424 &dm81xx_alwon_l3_fast__tptc0,
1388 &dm81xx_alwon_l3_fast__tptc1, 1425 &dm81xx_alwon_l3_fast__tptc1,
@@ -1422,6 +1459,7 @@ static struct omap_hwmod_ocp_if *dm816x_hwmod_ocp_ifs[] __initdata = {
1422 &dm81xx_l4_ls__gpio1, 1459 &dm81xx_l4_ls__gpio1,
1423 &dm81xx_l4_ls__gpio2, 1460 &dm81xx_l4_ls__gpio2,
1424 &dm81xx_l4_ls__elm, 1461 &dm81xx_l4_ls__elm,
1462 &ti81xx_l4_ls__rtc,
1425 &dm816x_l4_ls__mmc1, 1463 &dm816x_l4_ls__mmc1,
1426 &dm816x_l4_ls__timer1, 1464 &dm816x_l4_ls__timer1,
1427 &dm816x_l4_ls__timer2, 1465 &dm816x_l4_ls__timer2,