[U-Boot] [PATCH 4/4] ZOOM1 Add power reset button

Tom
2009-06-13T14:16:00Z

Tom wrote:
> Menon, Nishanth wrote:
>>> -----Original Message-----
>>> From: Tom [mailto:Tom.Rix at windriver.com]
>>> Sent: Friday, June 12, 2009 4:57 PM
>>> To: Jean-Christophe PLAGNIOL-VILLARD
>>> Cc: u-boot at lists.denx.de; Menon, Nishanth
>>> Subject: Re: [U-Boot] [PATCH 4/4] ZOOM1 Add power reset button
>>>
>>>>> */
>>>>> void twl4030_power_reset_init(void)
>>>>> {
>>>>> -#ifdef CONFIG_OMAP3_ZOOM2
>>>>> +#if defined(CONFIG_OMAP3_ZOOM2) || defined(CONFIG_OMAP3_ZOOM1)
>>>>>
>>>> I think it will be better to avoid board specifc code in the driver
>>>> unless it's the only solution
>>>>
>>>>
>>> I think this is zoom1 and zoom2 specific.
>>> I could add this function to each of their board files.
>>> I was trying to avoid that.
>>>>> + if (twl4030_i2c_read_u8(TWL4030_CHIP_PM_MASTER, &val,
>>>>> + TWL4030_PM_MASTER_P1_SW_EVENTS)) {
>>>>> + printf("Error:TWL4030: failed to read the power register\n");
>>>>> + printf("Could not initialize hardware reset\n");
>>>>> + } else {
>>>>> + val |= TWL4030_PM_MASTER_SW_EVENTS_STOPON_PWRON;
>>>>> + if (twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, val,
>>>>> + TWL4030_PM_MASTER_P1_SW_EVENTS)) {
>>
>> Why is this zoom1 and zoom2 specific? You are playing with PM Master
>> registers causing a board reset right? It should in theory work for
>> beagleboard also.. am I wrong?
> Half right I think.
> The beagle, from the schematics, has a 'Reset' - 'S2' switch. This is
> tied to them omap's sys_nRespwon and to the t2_nRespwon. I think when
> the switch is pressed only the omap gets reset. I could try verifing
> this but it would take a while. Looking at
> theTWL4030_PM_MASTER_P1_SW_EVENTS using 'i2c md 4b 46' it is clear in
> both the factory and the current versions of u-boot.
>
> I think that setting this bit in beagle will reset just the twl4030.
> Which I think is the right thing to do.
>
> I will try removing the #if-defs and see what happens :|

I have taken a closer look.
I think the 'Cold Reset' label for switch 2 should be relabeled 'Warm
Reset'
twl4030 registers are persistent on beagle and zoom1 when both the sw
reset cmd is given and when the beagle reset or the zoom1 reset (pin
hole in back + handy paperclip) is used. The easiest way to test this is
to set the sw_events manually using
inm 4b 46
then set to
40
Verify with imd 4b 46.

When the hw reset button is used on the zoom1, front face red button,
the board resets and this is clear. On beagle you need to cycle power by
unplugging / replugging power. Otherwise it does not get reset.

Looking at beagle schematics, the ic SN74LVC2G07 has nRESPWRON as an
input. So the resetting of the omap is an or-ing of nRESPWRON and the
switch. The switch has no effect on nRESPWRON. If the input & output of
ic were reversed, you _may_ get the behaviour of resetting omap with a
touch and resetting omap+twl4030 when held for 8+ seconds.

The moral of the story is do not depend on twl4030 to be reset.

For this patch for resetting, the reset logic is generic and should be
in the driver layer and not in the board layer.

Tom