diff mbox

v3.5-rc4 doesn't wake from dynamic idle on 3530ES3 Beagle

Message ID CANQgH-aFYnkyeVma6_XRfPZpsAcA55YASpCvpzvWHNymCQ00_A@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Shubhrajyoti Datta July 3, 2012, 11:40 a.m. UTC
On Mon, Jul 2, 2012 at 3:52 PM, Shubhrajyoti <shubhrajyoti@ti.com> wrote:
>
> On Thursday 28 June 2012 11:45 AM, Shilimkar, Santosh wrote:
> > + Shubro, Felipe,
> >
> > On Thu, Jun 28, 2012 at 12:57 AM, Paul Walmsley <paul@pwsan.com> wrote:
> >> On Wed, 27 Jun 2012, Paul Walmsley wrote:
> >>
> >>> Looks like something broke between v3.5-rc3 and v3.5-rc4 with dynamic
> >>> idle on 3530ES3 Beagle.  37xx EVM doesn't seem to be affected.
> >>>
> >>> Taking a closer look now.
> >> Reverting commit 91930652a23de0873a157aa1d9962cb878d64451 ("OMAP2+: UART:
> >> Add mechanism to probe uart pins and configure rx wakeup") makes wakeup
> >> from dynamic retention idle work again.
> >>

Looks like the mux settings are not set in the board file.
So the boot-loader settings could play a role here.
Could you try the below patch. I gave a run on my 3630 beagle-xm



---
 arch/arm/mach-omap2/board-omap3beagle.c |   46 ++++++++++++++++++++++++++++++-
 1 files changed, 45 insertions(+), 1 deletions(-)
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/board-omap3beagle.c
b/arch/arm/mach-omap2/board-omap3beagle.c
index 580fd17..163b23e 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -492,6 +492,50 @@  static void __init beagle_opp_init(void)
 	return;
 }

+#ifdef CONFIG_OMAP_MUX
+
+static struct omap_device_pad serial2_pads[] __initdata = {
+	{
+		.name	= "uart3_rx_irrx.uart3_rx_irrx",
+		.flags	= OMAP_DEVICE_PAD_REMUX,
+		.enable	= OMAP_INPUT_EN | OMAP_MUX_MODE0,
+		.idle	= OMAP_INPUT_EN | OMAP_WAKEUP_EN | OMAP_MUX_MODE0,
+	},
+	{
+		.name	= "uart3_cts_rctx.uart3_cts_rctx",
+		.enable	= OMAP_PIN_INPUT_PULLDOWN | OMAP_MUX_MODE0,
+	},
+	{
+		.name	= "uart3_rts_sd.uart3_rts_sd",
+		.enable	= OMAP_OFF_EN | OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
+	},
+	{
+		.name	= "uart3_tx_irtx.uart3_tx_irtx",
+		.enable	= OMAP_PIN_OUTPUT | OMAP_MUX_MODE0,
+	},
+};
+
+static inline void __init board_serial_init(void)
+{
+	struct omap_board_data bdata;
+
+	bdata.flags = 0;
+	bdata.id = 2;
+	bdata.pads = serial2_pads;
+	bdata.pads_cnt = ARRAY_SIZE(serial2_pads);
+	omap_serial_init_port(&bdata, NULL);
+
+}
+
+#else
+
+static inline void __init board_serial_init(void)
+{
+	omap_serial_init();
+}
+
+#endif
+
 static void __init omap3_beagle_init(void)
 {
 	omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
@@ -511,7 +555,7 @@  static void __init omap3_beagle_init(void)
 	if (gpio_is_valid(beagle_config.dvi_pd_gpio))
 		omap_mux_init_gpio(beagle_config.dvi_pd_gpio, OMAP_PIN_OUTPUT);
 	omap_display_init(&beagle_dss_data);
-	omap_serial_init();
+	board_serial_init();
 	omap_sdrc_init(mt46h32m32lf6_sdrc_params,
 				  mt46h32m32lf6_sdrc_params);