This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM3352: PMIC_POWER_EN issue

Part Number: AM3352
Other Parts Discussed in Thread: TPS65910

Tool/software: Linux

Hi 

We have hardware with AM3352 and TPS65910A3A.

AM3352's PMIC_POWER_EN pin connect to TPS65910 PWRHOLD pin as reference design.

First time power on the hardware with 5V power source, the PMIC_POWER_EN  will keep high. 

And I enable the linux driver code to set up AM3352 RTC ALARM2 to turn off the power(poweroff command). 

So far so good. 

We use TPS65910 PWRON pin as push button to control the power. 

While power key pressed the TPS65910 power on the soc,but the button release the power is gone.

We find the PMIC_POWER_EN of AM3352 drive low. 

After power off sequence , the second time power on will not trigger  PMIC_POWER_EN  output. 

Is any code can reset RTC_SS or keep PMIC_POWER_EN  high ? 

  • Please post the entire PMIC section of your schematic.
  • Following is TPS65910 schematic

  • From where is the AM335x RTC powered? How do you provide the RTC reset signal?
  • Biser Gatchev-XID said:
    From where is the AM335x RTC powered? How do you provide the RTC reset signal?

    VRTC from TPS65910. Following is RTC_PORz schematic

  • Following is my understanding.

    1.First time power on : RTC_PORz schematic will reset RTC_SS of AM335x. The PMIC_POWER_EN will drive high.

    2.After ALARM2 power off AM335x and TPS65910 (except VRTC). The toggle of POWERON(TPS65910) will transit TPS65910 state machine to READY ( POWERON LOW) and power on AM335x. 

      Second time power on will not reset RTC_SS, and PMIC_POWER_EN will not drive high as initial state.

    And We try some experiment in boot loader (uboot). Hope to reset RTC_SS manually or drive PMIC_POWER_EN high.

    1. reset PWR_ENABLE_EN bit (AM335x RTC_PMIC) , clear RTC_INTERRUPTS_REG , clear RTC_STATUS_REG at u-boot.  -> don't work.

  • What you are achieving with this hardware configuration is driving the processor into RTC-only mode. Wakeup from RTC-only mode can only be achieved using the processor EXT_WAKEUP signal. You need to connect the pushbutton to this pin to wakeup the processor.
  • Biser Gatchev-XID said:
    What you are achieving with this hardware configuration is driving the processor into RTC-only mode. Wakeup from RTC-only mode can only be achieved using the processor EXT_WAKEUP signal. You need to connect the pushbutton to this pin to wakeup the processor.

    Thanks for your quick response. We connect EXT_WAKE signal to VRTC power source. And we click power-on button and power on the hardware successful.

    But strange condition occur. After power-on by toggle button and boot linux success , we power off by linux software command (poweroff) again.

    We try to power-on by toggle button again , But we failed to power power on.
    The TPS65910 don't active even POWERON signel is low (button pressed). We check the EXT_WAKE signal keep high.

    Following the whole steps:

    1. Power on by power cable/battery connected (USB 5V/lion battery).
    2. Power off by linux command (success).
    3. Power on by power toggle button (success).
    4. Power off by linux command (success).
    5. Power on by power toggle button (failed. TPS65910 no any power output except VRTC).

  • I don't understand what modifications you have made. Please post the corrected schematic.
  • Following is schematic.

    I connect VRTC with 10K resistance to EXT_WAKE. After power off by ALARM2. The power button still can't power on continually.

    And I add code at u-boot to set RTC_PMIC register and we get strange result in previous post. 

    RTC_PMIC = 0x1; // enable ext_wake0 

  • Try connecting the power button to EXT_WAKEUP too. Be careful with the different voltage levels on PMIC and processor side.
  • We pull down EXT_WAKEUP( connect to GND manually). But still can't power on TPS65910 after second time power off.

    According following state-machine , we check PWRHOLD(1.8v) ,  PWRON ( low active), DEVCTRL = 0x70.  

  • We find the problem. I will explain later. 

  • Our goal:
    #1. Hardware power on by power connected(battery/USB VBUS) or power button.
    #2. power off by software command.

    #1 must support by HW( TPS65910 MB > VMBHI or PWRON low) . And #2 the kernel must support turn off the power output of TPS65910.

    We double check the output of TPS65910. Previous observation have mistake.
    1. Power on by power cable/battery connected (USB VBUS/lion battery).
    2. Power off by linux command (ALARM2 drive PMIC_POWER_EN low).
    3. Power on by power toggle button (EXT_WAKE keep PMIC_POWER_EN high ).
    4. Power off by linux command (failed. the kernel halt but the power output keep supplied. PMIC_POWER_EN keep high ).
    5. Power on by power toggle button (failed. TPS65910 is active mode.).

    EXT_WAKEUP is level-senstive and programable by software. But we don't have precise reference design (HW) to achieve our goal.

    And we try another workaround.
    1. Set DEV_ON bit of TPS65910 at u-boot loader. That will keep the TPS65910 active without PWRHOLD.
    2. Clear DEV_ON bit of TPS65910 at OMAP RTC power off function. That will turn off the output of TPS65910.