RE: [PATCH 2/6] ARM: OMAP4 PM: Add IO Daisychain support

2012-02-23 Thread Elaidi, Djamil
Hi Kristo,

I think you must also add a omap_test_timeout() check after the Trigger WUCLKIN 
disable, to verify WUCLK_STATUS has come back to 0.
This is needed because the IO daisy chain will not be ready until the WUCLKIN 
falling edge has propagated.

+   /* Trigger WUCLKIN disable */
+   omap4_prm_rmw_inst_reg_bits(OMAP4430_WUCLK_CTRL_MASK, 0x0,
+   OMAP4430_PRM_DEVICE_INST, OMAP4_PRM_IO_PMCTRL_OFFSET);
+   return;
+   omap_test_timeout(
+   (((omap4_prm_read_inst_reg(OMAP4430_PRM_DEVICE_INST,
+   OMAP4_PRM_IO_PMCTRL_OFFSET) 
+   OMAP4430_WUCLK_STATUS_MASK) 
+   OMAP4430_WUCLK_STATUS_SHIFT) == 0),
+   MAX_IOPAD_LATCH_TIME, i);


Best regards
Djamil ELAÏDI
+33 4 97 27 50 97
Software Systems Engineer
OMAP Platform Business Unit - PSI Modem Integration
Texas Instruments


Texas Instruments France SA, 821 Avenue Jack Kilby, 06270 Villeneuve Loubet. 
036 420 040 R.C.S Antibes. Capital de EUR 753.920

-Original Message-
From: linux-omap-ow...@vger.kernel.org 
[mailto:linux-omap-ow...@vger.kernel.org] On Behalf Of Kristo, Tero
Sent: jeudi 23 février 2012 14:22
To: linux-omap@vger.kernel.org; Hilman, Kevin
Cc: linux-arm-ker...@lists.infradead.org; Nayak, Rajendra; Sripathy, Vishwanath
Subject: [PATCH 2/6] ARM: OMAP4 PM: Add IO Daisychain support

From: Rajendra Nayak rna...@ti.com

patch adds IO Daisychain support for OMAP4 as per section 3.9.4 in OMAP4430
Public TRM.

Signed-off-by: Rajendra Nayak rna...@ti.com
Signed-off-by: Vishwanath BS vishwanath...@ti.com
Signed-off-by: Tero Kristo t-kri...@ti.com
---
 arch/arm/mach-omap2/prm44xx.c |   32 
 arch/arm/mach-omap2/prm44xx.h |1 +
 2 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c
index 33dd655..1557647 100644
--- a/arch/arm/mach-omap2/prm44xx.c
+++ b/arch/arm/mach-omap2/prm44xx.c
@@ -230,6 +230,41 @@ void omap44xx_prm_restore_irqen(u32 *saved_mask)
 OMAP4_PRM_IRQENABLE_MPU_2_OFFSET);
 }

+/**
+ * Maximum time(us) it takes to output the signal WUCLKOUT of the last pad of
+ * the I/O ring after asserting WUCLKIN high
+ */
+#define MAX_IOPAD_LATCH_TIME 1000
+
+/* OMAP4 IO Daisychain trigger sequence */
+void omap4_trigger_wuclk_ctrl(void)
+{
+   int i = 0;
+
+   /* Enable GLOBAL_WUEN */
+   if (!(omap4_prm_read_inst_reg(OMAP4430_PRM_DEVICE_INST,
+   OMAP4_PRM_IO_PMCTRL_OFFSET)  OMAP4430_GLOBAL_WUEN_MASK))
+   omap4_prm_rmw_inst_reg_bits(OMAP4430_GLOBAL_WUEN_MASK,
+   OMAP4430_GLOBAL_WUEN_MASK, OMAP4430_PRM_DEVICE_INST,
+   OMAP4_PRM_IO_PMCTRL_OFFSET);
+
+   /* Trigger WUCLKIN enable */
+   omap4_prm_rmw_inst_reg_bits(OMAP4430_WUCLK_CTRL_MASK,
+   OMAP4430_WUCLK_CTRL_MASK, OMAP4430_PRM_DEVICE_INST,
+   OMAP4_PRM_IO_PMCTRL_OFFSET);
+   omap_test_timeout(
+   (((omap4_prm_read_inst_reg(OMAP4430_PRM_DEVICE_INST,
+   OMAP4_PRM_IO_PMCTRL_OFFSET) 
+   OMAP4430_WUCLK_STATUS_MASK) 
+   OMAP4430_WUCLK_STATUS_SHIFT) == 1),
+   MAX_IOPAD_LATCH_TIME, i);
+
+   /* Trigger WUCLKIN disable */
+   omap4_prm_rmw_inst_reg_bits(OMAP4430_WUCLK_CTRL_MASK, 0x0,
+   OMAP4430_PRM_DEVICE_INST, OMAP4_PRM_IO_PMCTRL_OFFSET);
+   return;
+}
+
 static int __init omap4xxx_prcm_init(void)
 {
if (cpu_is_omap44xx())
diff --git a/arch/arm/mach-omap2/prm44xx.h b/arch/arm/mach-omap2/prm44xx.h
index 7978092..a840f0f 100644
--- a/arch/arm/mach-omap2/prm44xx.h
+++ b/arch/arm/mach-omap2/prm44xx.h
@@ -762,6 +762,7 @@ void omap4_prm_vp_clear_txdone(u8 vp_id);
 extern u32 omap4_prm_vcvp_read(u8 offset);
 extern void omap4_prm_vcvp_write(u32 val, u8 offset);
 extern u32 omap4_prm_vcvp_rmw(u32 mask, u32 bits, u8 offset);
+extern void omap4_trigger_wuclk_ctrl(void);

 /* PRM interrupt-related functions */
 extern void omap44xx_prm_read_pending_irqs(unsigned long *events);
--
1.7.4.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 2/6] OMAP4: hwmod data: Add MSTANDBY_SMART_WKUP flag

2011-07-01 Thread Elaidi, Djamil
Benoit,

HSI has no RESET_STATUS bit in SYSCONFIG register.

The SYSC should be :

static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = {
.rev_offs   = 0x,
.sysc_offs  = 0x0010,
.syss_offs  = 0x0014,
.sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE |
   SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
---SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
+++SYSC_HAS_SOFTRESET),
.idlemodes  = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
   MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
.sysc_fields= omap_hwmod_sysc_type1,

Best regards
Djamil ELAÏDI
+33 (0)4 97 27 50 97
Software Systems Engineer
OMAP Platform Business Unit - PSI Modem Integration
Texas Instruments


Texas Instruments France SA, 821 Avenue Jack Kilby, 06270 Villeneuve Loubet. 
036 420 040 R.C.S Antibes. Capital de EUR 753.920

-Original Message-

From: linux-omap-ow...@vger.kernel.org 
[mailto:linux-omap-ow...@vger.kernel.org] On Behalf Of Cousson, Benoit
Sent: jeudi 23 juin 2011 23:01
To: p...@pwsan.com
Cc: Nayak, Rajendra; linux-omap@vger.kernel.org; Cousson, Benoit
Subject: [PATCH 2/6] OMAP4: hwmod data: Add MSTANDBY_SMART_WKUP flag

Add the flag to every IPs that support it to allow the
framework to enable it instead of the SMART_STANDBY default
mode.
Without that, an IP with busmaster capability will not
be able to wakeup the interconnect at all.

Signed-off-by: Benoit Cousson b-cous...@ti.com
Cc: Paul Walmsley p...@pwsan.com
---
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |9 +
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c 
b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index f7f4840..c531611 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -661,7 +661,8 @@ static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc 
= {
.sysc_offs  = 0x0010,
.sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
.idlemodes  = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-  MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
+  MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART |
+  MSTANDBY_SMART_WKUP),
.sysc_fields= omap_hwmod_sysc_type2,
 };

@@ -2045,7 +2046,7 @@ static struct omap_hwmod_class_sysconfig 
omap44xx_hsi_sysc = {
   SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
.idlemodes  = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
-  MSTANDBY_SMART),
+  MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
.sysc_fields= omap_hwmod_sysc_type1,
 };

@@ -2447,7 +2448,7 @@ static struct omap_hwmod_class_sysconfig 
omap44xx_iss_sysc = {
   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
.idlemodes  = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
-  MSTANDBY_SMART),
+  MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
.sysc_fields= omap_hwmod_sysc_type2,
 };

@@ -3421,7 +3422,7 @@ static struct omap_hwmod_class_sysconfig 
omap44xx_mmc_sysc = {
   SYSC_HAS_SOFTRESET),
.idlemodes  = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
-  MSTANDBY_SMART),
+  MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
.sysc_fields= omap_hwmod_sysc_type2,
 };

--
1.7.0.4

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html