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.

TPS659037: Power off failure

Part Number: TPS659037
Other Parts Discussed in Thread: TMDSEVM572X, , TMP102, AM5728

In our custom board based on the TMDSEVM572X evaluation board, an error that the power could not be turned off, happend to our customer enviroment.
In the debugging of this matter, repeated turning power on and off in our custom board. they met 1-time occur in about 80-times power on/off test.
(In this on/off test, power on is performed by push botton (PWRON pin to low). And power off is performed by Linux shutdown command (DEV_ON bit to 0).)

When this error occur, the following two lines that do not occur during normal operation, occur at the end,

 [ 69.922953] palmas 0-0058: Unable to write PRIMARY_SECONDARY_PAD2 -11
 [ 69.929423] palmas_power_off: Unable to write to DEV_CTRL_DEV_ON: -11

After that, the power of the device will not be shutdown due to the infinite loop of the following two lines.

 [ 70.959836] omap_i2c 48070000.i2c: controller timed out
 [ 70.989835] thermal thermal_zone5: failed to read out thermal zone (-110)

Could you tell me the cause of this loop and the workaround?

Linux and U-boot versions
Linux version 4.9.69
U-Boot 2017.01
Build in Yocto environment


Regards,

  • Hi,

    Welcome to E2E! I am not too familiar with the Linux drivers, so I will loop in the processor team as well.

    For the TPS659037, it seems like there is not I2C communication - is that correct? Have you scoped the VCC1, VRTC, and VIO rails of the device to see if power is still supplied correctly before these OFF commands?

    Thanks,

    Nastasha

  • Hi,

    I have measured the I2C waveform at the normal power down ending.

    [I2C waveform immediately before normal power down]

    [zoom in waveform]

    From above waveform

    I2C command immediately before power down, has writen TPS6590378's 2 registers.

    (1) First, address 0x1FB, read 0x29.
    (2) Next, address 0x1FB, write 0x09.
    (3) Next, address 0x1A0, read 0x05.
    (4) Next, address 0x1A0, write 0x04.
    In summary
    GPIO_7 1 -> 0 (POWERHOLD->GPIO_7)
    DEV_ON 1 -> 0 (ACTIVE->OFF)



    Since the waveform at the time of power-off-failure has not been taken,
    it is still unclear whether it is an analog problem such as signal quality or a software problem.
    I don't know if I can do it, but I will try to get the I2C waveform at the time of power-off-failure.

    Also, maybe I try measure a noise of VIO_IN, VRTC, and VCC1 voltage when the power off.

  • Hi,

    Are you using POWERHOLD to turn on the device of the push button (PWRON)?

    Writing to GPIO_7 registers will not set POWERHOLD low. This is an input to the PMIC that requires the external signal to drive this pin low to turn off the device.

    Please let me know how you are turning on the device.

    Thanks,

    Nastasha

  • Hi,

    Yes, I am using push button (PWRON pin) to the device power-up, GPIO7/POWERHOLD pin is pull-down with 10k ohm resistor.

    GPIO7/POWERHOLD pin is only pull-down.

    Best Regards,

  • Hi,

    Okay, thanks I understand. So you use the push button, then you write DEV_ON high to keep the device on. To turn the device off, you only need to write DEV_ON low.

    Can you try a few things:

    1. Remove the write to GPIO_7, it is not needed

    2. Scope VIO and VCCA to see if anything odd is happening on the input power supplies

    3. Scope RESET_OUT - this pin must be high to have I2C communication

    Thanks,

    Nastasha

  • Hi,

    Thank you for your reply.


    > 1. Remove the write to GPIO_7, it is not needed
    I will ask our software engieer to if it can be modified.

    > 2. Scope VIO and VCCA to see if anything odd is happening on the input power supplies
    Power supply is almost stable.
    VIO_IN 3.3V 80mVpp (3.260 to 3.340V)
    VRTC 1.8V 20mVpp (1.795 to 1.815V)
    VCC1 3.3V 85mVpp (3.260 to 3.345V)

    > 3. Scope RESET_OUT - this pin must be high to have I2C communication
    I tried to measure waveform. As the result, RESET_OUT was still High when power-off failure.


    Additional question
    1. When TPS6590378 PMIC is unresponsive during I2C communication (reply NACK), is there any other way to shutdown PMIC other than I2C communication ?

    2. Similar to the evaluation board TMDSEVM572X, the temperature sensor TMP102 is mounted on the custom board. TMP102 has an I2C address of 0x48 and is the same as the PMIC. Does it affect the operation in software?
    Linux is based on the Linux SDK for AM5728 provided by TI.

    when power-off failure log, below. Repeat last 2-line.
    [   67.637525] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [   69.919857] reboot: Power down
    [   69.922953] palmas 0-0058: Unable to write PRIMARY_SECONDARY_PAD2 -11
    [   69.929423] palmas_power_off: Unable to write to DEV_CTRL_DEV_ON: -11
    [   70.959836] omap_i2c 48070000.i2c: controller timed out
    [   70.989835] thermal thermal_zone5: failed to read out thermal zone (-110)
    [   74.079831] omap_i2c 48070000.i2c: controller timed out
    [   74.109833] thermal thermal_zone5: failed to read out thermal zone (-110)
    [   77.199836] omap_i2c 48070000.i2c: controller timed out
    [   77.229832] thermal thermal_zone5: failed to read out thermal zone (-110)
    [   80.319834] omap_i2c 48070000.i2c: controller timed out
    [   80.349833] thermal thermal_zone5: failed to read out thermal zone (-110)

    Best regards,

  • Hi,

    When using the PWRON push button, you can also hold the button low for 8 seconds to turn off the device.

    This device uses I2C address 0x58, not 0x48. Could that be the issue in the software?

    Thanks,

    Nastasha

  • Hi,
    Thank you for your response.

    > When using the PWRON push button, you can also hold the button low for 8 seconds to turn off the device.

    When the power is turned off, the following circuit was considered in order to carry out PWRON long push with the CPU.
    It is a circuit to output High at shutdown with GPIO2_19 of AM5728 processor to power off.

    Is it possible to shutdown by this circuit?
    Also, is there a problem with this circuit?

    And, is there anything method other than holding down PWRON, for turning off the power ?

    > This device uses I2C address 0x58, not 0x48. Could that be the issue in the software?

    SLIU015B (TPS659037 Register Map Technical Reference Manual)
    There is the following description in, but is 0x48 a different revision IC?

    Best regards,

  • Hello,

    Nastasha is currently out of office and will be returning tomorrow. She will provide a response by the end of the day Thursday at the latest.

    Best regards,

    Layne J

  • Hi,

    The I2C address is fixed by OTP settings. The default OTP settings can be found in this user guide: https://www.ti.com/lit/pdf/sliu011

    I think the circuit could be okay if the 8 seconds is met. Maybe the software is not consistently reaching 8 seconds? This could be something to scope and verify in the case that the 8 seconds is not always met with the software?

    Thanks,

    Nastasha

  • Hi,

    GPIO operation is performed by sysfs of linux.
    When GPIO direction is set to "out" and value is set to "1",
    it is "High" on the oscilloscope, but it becomes "Low" just before the power is turned off by executing the poweroff command.
    (As shown in the waveform below.)
    What is the reason for this?
    Is there a way to keep "High" until the power is turned off ?
    About this question, should I ask a separate question on AM5728 ?

    Best regards,

  • Hi,

    Yes, it may be helpful to ask on the AM57x forum. I think from the PMIC, it is behaving as expected, but the GPIO input for PWRON is not expected. One other item to know it that PWRON is internally connected to VCC1, so there may be some leakage since the GPIO voltage is lower than VCC1.

    Thanks,

    Nastasha