* [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).