linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mach-omap2/board-igep0020.c: Fix reboot problem
@ 2012-11-15 16:06 Matthias Brugger
  2012-11-15 16:42 ` Robert Nelson
  0 siblings, 1 reply; 5+ messages in thread
From: Matthias Brugger @ 2012-11-15 16:06 UTC (permalink / raw)
  To: Russell King, Tony Lindgren, linux-omap
  Cc: martinez.javier, eballetbo, Matthias Brugger

When rebooting an OMAP3530 at 125 MHz, the reboot hangs.
This patch adds a generic power save script, which resets the TWL4030 when a
warm reset occures. This way the OMAP3530 does not hang on reboot.

Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
---
 arch/arm/mach-omap2/board-igep0020.c |   36 ++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index 48d5e41..9ba1c4b 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -487,11 +487,47 @@ static struct twl4030_keypad_data igep2_keypad_pdata = {
 	.rep		= 1,
 };
 
+static struct twl4030_ins wrst_seq[] __initdata = {
+	{MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_OFF), 2},
+	{MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_WRST), 15},
+	{MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_WRST), 15},
+	{MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_WRST), 0x60},
+	{MSG_SINGULAR(DEV_GRP_P1, 0x19, RES_STATE_ACTIVE), 2},
+	{MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_ACTIVE), 2},
+};
+
+static struct twl4030_script wrst_script __initdata = {
+	.script = wrst_seq,
+	.size   = ARRAY_SIZE(wrst_seq),
+	.flags  = TWL4030_WRST_SCRIPT,
+};
+
+static struct twl4030_script *twl4030_scripts[] __initdata = {
+	&wrst_script,
+};
+
+static struct twl4030_resconfig twl4030_rconfig[] = {
+	{ .resource = RES_HFCLKOUT, .devgroup = DEV_GRP_P3, .type = -1,
+		.type2 = -1 },
+	{ .resource = RES_VDD1, .devgroup = DEV_GRP_P1, .type = -1,
+		.type2 = -1 },
+	{ .resource = RES_VDD2, .devgroup = DEV_GRP_P1, .type = -1,
+		.type2 = -1 },
+	{ 0, 0},
+};
+
+static struct twl4030_power_data igep_twl4030_power_data = {
+	.scripts	= twl4030_scripts,
+	.num		= ARRAY_SIZE(twl4030_scripts),
+	.resource_config = twl4030_rconfig,
+};
+
 static struct twl4030_platform_data igep_twldata = {
 	/* platform_data for children goes here */
 	.gpio		= &igep_twl4030_gpio_pdata,
 	.vmmc1          = &igep_vmmc1,
 	.vio		= &igep_vio,
+	.power		= &igep_twl4030_power_data,
 };
 
 static struct i2c_board_info __initdata igep2_i2c3_boardinfo[] = {
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] mach-omap2/board-igep0020.c: Fix reboot problem
  2012-11-15 16:06 [PATCH] mach-omap2/board-igep0020.c: Fix reboot problem Matthias Brugger
@ 2012-11-15 16:42 ` Robert Nelson
  2012-12-14 17:19   ` Tony Lindgren
  0 siblings, 1 reply; 5+ messages in thread
From: Robert Nelson @ 2012-11-15 16:42 UTC (permalink / raw)
  To: Matthias Brugger
  Cc: Russell King, Tony Lindgren, linux-omap, martinez.javier,
	eballetbo, Matthias Brugger

On Thu, Nov 15, 2012 at 10:06 AM, Matthias Brugger
<matthias.bgg@googlemail.com> wrote:
> When rebooting an OMAP3530 at 125 MHz, the reboot hangs.
> This patch adds a generic power save script, which resets the TWL4030 when a
> warm reset occures. This way the OMAP3530 does not hang on reboot.
>
> Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
> ---
>  arch/arm/mach-omap2/board-igep0020.c |   36 ++++++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
>
> diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
> index 48d5e41..9ba1c4b 100644
> --- a/arch/arm/mach-omap2/board-igep0020.c
> +++ b/arch/arm/mach-omap2/board-igep0020.c
> @@ -487,11 +487,47 @@ static struct twl4030_keypad_data igep2_keypad_pdata = {
>         .rep            = 1,
>  };
>
> +static struct twl4030_ins wrst_seq[] __initdata = {
> +       {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_OFF), 2},
> +       {MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_WRST), 15},
> +       {MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_WRST), 15},
> +       {MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_WRST), 0x60},
> +       {MSG_SINGULAR(DEV_GRP_P1, 0x19, RES_STATE_ACTIVE), 2},
> +       {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_ACTIVE), 2},
> +};
> +
> +static struct twl4030_script wrst_script __initdata = {
> +       .script = wrst_seq,
> +       .size   = ARRAY_SIZE(wrst_seq),
> +       .flags  = TWL4030_WRST_SCRIPT,
> +};
> +
> +static struct twl4030_script *twl4030_scripts[] __initdata = {
> +       &wrst_script,
> +};
> +
> +static struct twl4030_resconfig twl4030_rconfig[] = {
> +       { .resource = RES_HFCLKOUT, .devgroup = DEV_GRP_P3, .type = -1,
> +               .type2 = -1 },
> +       { .resource = RES_VDD1, .devgroup = DEV_GRP_P1, .type = -1,
> +               .type2 = -1 },
> +       { .resource = RES_VDD2, .devgroup = DEV_GRP_P1, .type = -1,
> +               .type2 = -1 },
> +       { 0, 0},
> +};
> +
> +static struct twl4030_power_data igep_twl4030_power_data = {
> +       .scripts        = twl4030_scripts,
> +       .num            = ARRAY_SIZE(twl4030_scripts),
> +       .resource_config = twl4030_rconfig,
> +};
> +
>  static struct twl4030_platform_data igep_twldata = {
>         /* platform_data for children goes here */
>         .gpio           = &igep_twl4030_gpio_pdata,
>         .vmmc1          = &igep_vmmc1,
>         .vio            = &igep_vio,
> +       .power          = &igep_twl4030_power_data,
>  };
>
>  static struct i2c_board_info __initdata igep2_i2c3_boardinfo[] = {
> --
> 1.7.9.5
>
> --

Sweet, this also fixes the software reboot lockup I've been bisecting
on the Beagle C4 (omap3530), when the ONDEMAND governor is enabled..
(applied the same changes to the beagle's board file:
board-omap3beagle.c)

Can we make this script generic for all omap35xx/twl4030 boards that need it?

So far, no regressions in a quick boot/reboot test of DM3730 Beagle xM
C that shares the board file...

Regards,

-- 
Robert Nelson
http://www.rcn-ee.com/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mach-omap2/board-igep0020.c: Fix reboot problem
  2012-11-15 16:42 ` Robert Nelson
@ 2012-12-14 17:19   ` Tony Lindgren
  2012-12-18 21:32     ` Matthias Brugger
  0 siblings, 1 reply; 5+ messages in thread
From: Tony Lindgren @ 2012-12-14 17:19 UTC (permalink / raw)
  To: Robert Nelson
  Cc: Matthias Brugger, Russell King, linux-omap, martinez.javier,
	eballetbo, Matthias Brugger

* Robert Nelson <robertcnelson@gmail.com> [121115 08:44]:
> On Thu, Nov 15, 2012 at 10:06 AM, Matthias Brugger
> <matthias.bgg@googlemail.com> wrote:
> > When rebooting an OMAP3530 at 125 MHz, the reboot hangs.
> > This patch adds a generic power save script, which resets the TWL4030 when a
> > warm reset occures. This way the OMAP3530 does not hang on reboot.
> >
> > Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
> > ---
> >  arch/arm/mach-omap2/board-igep0020.c |   36 ++++++++++++++++++++++++++++++++++
> >  1 file changed, 36 insertions(+)
> >
> > diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
> > index 48d5e41..9ba1c4b 100644
> > --- a/arch/arm/mach-omap2/board-igep0020.c
> > +++ b/arch/arm/mach-omap2/board-igep0020.c
> > @@ -487,11 +487,47 @@ static struct twl4030_keypad_data igep2_keypad_pdata = {
> >         .rep            = 1,
> >  };
> >
> > +static struct twl4030_ins wrst_seq[] __initdata = {
> > +       {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_OFF), 2},
> > +       {MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_WRST), 15},
> > +       {MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_WRST), 15},
> > +       {MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_WRST), 0x60},
> > +       {MSG_SINGULAR(DEV_GRP_P1, 0x19, RES_STATE_ACTIVE), 2},
> > +       {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_ACTIVE), 2},
> > +};
> > +
> > +static struct twl4030_script wrst_script __initdata = {
> > +       .script = wrst_seq,
> > +       .size   = ARRAY_SIZE(wrst_seq),
> > +       .flags  = TWL4030_WRST_SCRIPT,
> > +};
> > +
> > +static struct twl4030_script *twl4030_scripts[] __initdata = {
> > +       &wrst_script,
> > +};
> > +
> > +static struct twl4030_resconfig twl4030_rconfig[] = {
> > +       { .resource = RES_HFCLKOUT, .devgroup = DEV_GRP_P3, .type = -1,
> > +               .type2 = -1 },
> > +       { .resource = RES_VDD1, .devgroup = DEV_GRP_P1, .type = -1,
> > +               .type2 = -1 },
> > +       { .resource = RES_VDD2, .devgroup = DEV_GRP_P1, .type = -1,
> > +               .type2 = -1 },
> > +       { 0, 0},
> > +};
> > +
> > +static struct twl4030_power_data igep_twl4030_power_data = {
> > +       .scripts        = twl4030_scripts,
> > +       .num            = ARRAY_SIZE(twl4030_scripts),
> > +       .resource_config = twl4030_rconfig,
> > +};
> > +
> >  static struct twl4030_platform_data igep_twldata = {
> >         /* platform_data for children goes here */
> >         .gpio           = &igep_twl4030_gpio_pdata,
> >         .vmmc1          = &igep_vmmc1,
> >         .vio            = &igep_vio,
> > +       .power          = &igep_twl4030_power_data,
> >  };
> >
> >  static struct i2c_board_info __initdata igep2_i2c3_boardinfo[] = {
> > --
> > 1.7.9.5
> >
> > --
> 
> Sweet, this also fixes the software reboot lockup I've been bisecting
> on the Beagle C4 (omap3530), when the ONDEMAND governor is enabled..
> (applied the same changes to the beagle's board file:
> board-omap3beagle.c)
> 
> Can we make this script generic for all omap35xx/twl4030 boards that need it?
> 
> So far, no regressions in a quick boot/reboot test of DM3730 Beagle xM
> C that shares the board file...

Any news on making this fix generic?

Regards,

Tony

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mach-omap2/board-igep0020.c: Fix reboot problem
  2012-12-14 17:19   ` Tony Lindgren
@ 2012-12-18 21:32     ` Matthias Brugger
  2013-01-23 18:21       ` [PATCH] omap2: twl-common: Add default power configuration Matthias Brugger
  0 siblings, 1 reply; 5+ messages in thread
From: Matthias Brugger @ 2012-12-18 21:32 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: Robert Nelson, Matthias Brugger, Russell King, linux-omap,
	martinez.javier, eballetbo

2012/12/14 Tony Lindgren <tony@atomide.com>:
> * Robert Nelson <robertcnelson@gmail.com> [121115 08:44]:
>> On Thu, Nov 15, 2012 at 10:06 AM, Matthias Brugger
>> <matthias.bgg@googlemail.com> wrote:
>> > When rebooting an OMAP3530 at 125 MHz, the reboot hangs.
>> > This patch adds a generic power save script, which resets the TWL4030 when a
>> > warm reset occures. This way the OMAP3530 does not hang on reboot.
>> >
>> > Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
>> > ---
>> >  arch/arm/mach-omap2/board-igep0020.c |   36 ++++++++++++++++++++++++++++++++++
>> >  1 file changed, 36 insertions(+)
>> >
>> > diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
>> > index 48d5e41..9ba1c4b 100644
>> > --- a/arch/arm/mach-omap2/board-igep0020.c
>> > +++ b/arch/arm/mach-omap2/board-igep0020.c
>> > @@ -487,11 +487,47 @@ static struct twl4030_keypad_data igep2_keypad_pdata = {
>> >         .rep            = 1,
>> >  };
>> >
>> > +static struct twl4030_ins wrst_seq[] __initdata = {
>> > +       {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_OFF), 2},
>> > +       {MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_WRST), 15},
>> > +       {MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_WRST), 15},
>> > +       {MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_WRST), 0x60},
>> > +       {MSG_SINGULAR(DEV_GRP_P1, 0x19, RES_STATE_ACTIVE), 2},
>> > +       {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_ACTIVE), 2},
>> > +};
>> > +
>> > +static struct twl4030_script wrst_script __initdata = {
>> > +       .script = wrst_seq,
>> > +       .size   = ARRAY_SIZE(wrst_seq),
>> > +       .flags  = TWL4030_WRST_SCRIPT,
>> > +};
>> > +
>> > +static struct twl4030_script *twl4030_scripts[] __initdata = {
>> > +       &wrst_script,
>> > +};
>> > +
>> > +static struct twl4030_resconfig twl4030_rconfig[] = {
>> > +       { .resource = RES_HFCLKOUT, .devgroup = DEV_GRP_P3, .type = -1,
>> > +               .type2 = -1 },
>> > +       { .resource = RES_VDD1, .devgroup = DEV_GRP_P1, .type = -1,
>> > +               .type2 = -1 },
>> > +       { .resource = RES_VDD2, .devgroup = DEV_GRP_P1, .type = -1,
>> > +               .type2 = -1 },
>> > +       { 0, 0},
>> > +};
>> > +
>> > +static struct twl4030_power_data igep_twl4030_power_data = {
>> > +       .scripts        = twl4030_scripts,
>> > +       .num            = ARRAY_SIZE(twl4030_scripts),
>> > +       .resource_config = twl4030_rconfig,
>> > +};
>> > +
>> >  static struct twl4030_platform_data igep_twldata = {
>> >         /* platform_data for children goes here */
>> >         .gpio           = &igep_twl4030_gpio_pdata,
>> >         .vmmc1          = &igep_vmmc1,
>> >         .vio            = &igep_vio,
>> > +       .power          = &igep_twl4030_power_data,
>> >  };
>> >
>> >  static struct i2c_board_info __initdata igep2_i2c3_boardinfo[] = {
>> > --
>> > 1.7.9.5
>> >
>> > --
>>
>> Sweet, this also fixes the software reboot lockup I've been bisecting
>> on the Beagle C4 (omap3530), when the ONDEMAND governor is enabled..
>> (applied the same changes to the beagle's board file:
>> board-omap3beagle.c)
>>
>> Can we make this script generic for all omap35xx/twl4030 boards that need it?
>>
>> So far, no regressions in a quick boot/reboot test of DM3730 Beagle xM
>> C that shares the board file...
>
> Any news on making this fix generic?
>
> Regards,
>
> Tony

I will try to have a look on it the next days.

Cheers,
Matthias


-- 
---
motzblog.wordpress.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] omap2: twl-common: Add default power configuration
  2012-12-18 21:32     ` Matthias Brugger
@ 2013-01-23 18:21       ` Matthias Brugger
  0 siblings, 0 replies; 5+ messages in thread
From: Matthias Brugger @ 2013-01-23 18:21 UTC (permalink / raw)
  To: Tony Lindgren, Russell King, martinez.javier, eballetbo,
	ezequiel.garcia, robertcnelson, linux-omap, linux-arm-kernel
  Cc: Matthias Brugger

This patch adds a generic power script configuration.
When rebooting an OMAP3530 at 125 MHz, the reboot hangs.
With the generic power script, TWL4030 will be reset
when a warm reset occures. This way the OMAP3530 does not
hang on reboot.

Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
---
 arch/arm/mach-omap2/twl-common.c | 41 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 21 deletions(-)

diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c
index d78180c..f096beb 100644
--- a/arch/arm/mach-omap2/twl-common.c
+++ b/arch/arm/mach-omap2/twl-common.c
@@ -121,41 +121,40 @@ static struct twl4030_audio_data omap3_audio_pdata = {
 };
 
 static struct twl4030_ins wrst_seq[] __initdata = {
-       {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_OFF), 2},
-       {MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_WRST), 15},
-       {MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_WRST), 15},
-       {MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_WRST), 0x60},
-       {MSG_SINGULAR(DEV_GRP_P1, 0x19, RES_STATE_ACTIVE), 2},
-       {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_ACTIVE), 2},
+	{MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_OFF), 2},
+	{MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_WRST), 15},
+	{MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_WRST), 15},
+	{MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_WRST), 0x60},
+	{MSG_SINGULAR(DEV_GRP_P1, 0x19, RES_STATE_ACTIVE), 2},
+	{MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_ACTIVE), 2},
 };
 
 static struct twl4030_script wrst_script __initdata = {
-       .script = wrst_seq,
-       .size   = ARRAY_SIZE(wrst_seq),
-       .flags  = TWL4030_WRST_SCRIPT,
+	.script = wrst_seq,
+	.size	= ARRAY_SIZE(wrst_seq),
+	.flags	= TWL4030_WRST_SCRIPT,
 };
 
 static struct twl4030_script *omap3_power_scripts[] __initdata = {
-       &wrst_script,
+	&wrst_script,
 };
 
 static struct twl4030_resconfig omap3_rconfig[] = {
-       { .resource = RES_HFCLKOUT, .devgroup = DEV_GRP_P3, .type = -1,
-               .type2 = -1 },
-       { .resource = RES_VDD1, .devgroup = DEV_GRP_P1, .type = -1,
-               .type2 = -1 },
-       { .resource = RES_VDD2, .devgroup = DEV_GRP_P1, .type = -1,
-               .type2 = -1 },
-       { 0, 0},
+	{ .resource = RES_HFCLKOUT, .devgroup = DEV_GRP_P3, .type = -1,
+		.type2 = -1 },
+	{ .resource = RES_VDD1, .devgroup = DEV_GRP_P1, .type = -1,
+		.type2 = -1 },
+	{ .resource = RES_VDD2, .devgroup = DEV_GRP_P1, .type = -1,
+		.type2 = -1 },
+	{ 0, 0},
 };
 
 static struct twl4030_power_data omap3_power_pdata = {
-       .scripts        = omap3_power_scripts,
-       .num            = ARRAY_SIZE(omap3_power_scripts),
-       .resource_config = omap3_rconfig,
+	.scripts	= omap3_power_scripts,
+	.num		= ARRAY_SIZE(omap3_power_scripts),
+	.resource_config = omap3_rconfig,
 };
 
-
 static struct regulator_consumer_supply omap3_vdda_dac_supplies[] = {
 	REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"),
 };
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-01-23 18:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-15 16:06 [PATCH] mach-omap2/board-igep0020.c: Fix reboot problem Matthias Brugger
2012-11-15 16:42 ` Robert Nelson
2012-12-14 17:19   ` Tony Lindgren
2012-12-18 21:32     ` Matthias Brugger
2013-01-23 18:21       ` [PATCH] omap2: twl-common: Add default power configuration Matthias Brugger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).