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.

TPS65216: TPS65216 - How to initiate a power cycle?

Part Number: TPS65216
Other Parts Discussed in Thread: AM3356,

Hello,

we have a board with an AM3356 CPU that is powered by a TPS65216 PMIC.

We're use net console for U-Boot and want to detect an active ethernet link as fast as possible, ideally disabling auto-negotiation. After booting into Linux the ethernet PHY get's configured as needed, likely enabling auto-negotiation. When resetting the CPU the external ethernet PHY doesn't get reset and it takes time to either configure it or to perform a software reset.

To facilitate things it would be nice to simply perform a power cycle of the CPU sub-system.

What would be the easiest way to do so?

I haven't found anything in the register maps that indicates this could be done via I2C, and I don't see how it could be (easily) achieved through the control signals.
I've considered pulling the pwr_en signal high via a resistor and then apply a low-pulse through a GPIO, but this way I'd loose the supervision aspect of this signal (the CPU pulls the signal high via a dedicated pin to indicate it's running).

I'd appreciate any ideas :-)

Thanks!

Regards
Ferdinand

  • Ferdinand,

    Do you have a push-button connected to the PB pin of the TPS65216 PMIC?

    Holding the push-button for more than 8 seconds would result in a system reset. It is also common to have a "SYS_RST" push-button that is connected to the PWR_EN pin of the PMIC, which would override the CPU PMIC_PWR_EN signal and force the system to reset. 

    Either way will work, but the PB pin has some advantages because there is software written specifically for the processor to recognize a long-button press before the 8 second timer expires and ensure there are no issues when the PMIC begins the power-down sequence on the supply rails.

    A SYS_RST push-button would reset the system without warning.

  • Hello Brian,

    thanks for you suggestions. We don't have a push-button, and due to the application wont be able to add one.

    I tried triggering a reset by manually connecting the pwr_en signal to ground. The system shut down as expected, but didn't power back up. I'm actually not sure that this could work because there is nothing that could pull the signal back up to enable the PMIC. The 3.3V used for this have been disabled... Or am I missing something?

    Pulling the PB low through a GPIO, and a transistor if necessary) might be the way to go. I'll have to ask my colleagues if they can live with having to wait for 8s though.

    Regards
    Ferdinand

  • Ferdinand,

    PWR_EN is pulled low by PMIC_POWER_EN from the processor, which is referenced to the VDDS_RTC domain at 1.8V (power provided by LDO1 of TPS65216 PMIC).

    PMIC_POWER_EN is a push-pull output, and is listed in the AM3356 datasheet as:

    • BALL RESET STATE: State of the terminal while the active low PWRONRSTn terminal is low
      • H : High-impedance with an active pullup resistor
    • BALL RESET REL. STATE: State of the terminal after the active low PWRONRSTn terminal transitions from low to high
      • 1: The buffer drives VOH (pulldown or pullup resistor not activated)

    To me, it appears the PWR_EN signal into the PMIC could be high in the Reset State, but it will not be because LDO1 is off. There are three (3) wake-up events for the PMIC: PB toggles low || AC_DET (low) || PWR_EN = high. We know that you do not have a push-button and we assume that PWR_EN is low, so I will also assume that in your schematic AC_DET is pulled up to VIN (5V).

    My recommendation would be to ensure AC_DET = GND. When AC_DET = GND, the PMIC will turn on anytime VIN_BIAS > VUVLO. This is an always-on system, and anytime the PWR_EN pin is set low the system will immediately transition back to the WAIT_PWR_EN state whenever the PMIC enters the OFF state. 

    Please refer to Figure 5-24. Modes of Operation Diagram on page 38 of the TPS65216 datasheet, which states that the requirement for transitioning from OFF to WAIT_PWR_EN is "VIN_BIAS > (VUVLO + hysteresis) & (PB (low) || AC_DET (low) || PWR_EN = high)"