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.

UART idle state stuck in TRANSITION state while devie suspending


As title UART idle state stuck in TRANSITION state while devie suspending.

UART has been disabled but idle state still in TRANSITION as below:

How can I debug this issue?

<4>[ 2646.602661] Disabling non-boot CPUs ...
<5>[ 2646.603881] CPU1: shutdown
<6>[ 2646.605194] Resume caused by IRQ 39, TWL6030-PIH
<6>[ 2646.605194]    PD_CORE curr=ON prev=ON logic=ON
<6>[ 2646.605194]          EMIF_1 mode=AUTO idlest=TRANSITION
<6>[ 2646.605194]    PD_L4_PER curr=ON prev=ON logic=ON
<6>[ 2646.605194]          UART4 mode=DISABLED idlest=TRANSITION
<6>[ 2646.605194] Powerdomain (core_pwrdm) didn't enter target state 1 Vs achieved state 3. current state 3
<6>[ 2646.605194] Powerdomain (l4per_pwrdm) didn't enter target state 1 Vs achieved state 3. current state 3
<3>[ 2646.605194] Could not enter target state in pm_suspend

  • Which version of ICS release you are you using? Are you using custom board?

    Well your log shows your device is just resumed so it may not be able to enter in suspend properly. Please refer the log:

    Resume caused by IRQ 39, TWL6030-PIH

    Is it intentional? If not you may want to attach complete kernel log.

    Regards,

    Chintan

  • Hi Chitan,

    Thanks for your reply.



    This symptom occurred on customer board with 4AI.1.4-P1

    It's suspend/resume test repeatedly with RTC alarm, so resume by IRQ 39(RTC) is intentional.

    Sometimes we can see the "UART4 mode=DISABLED idlest=TRANSITION" message that means UART4 didn't enter idle properly while suspending.

    That made suspend current high due to core & l4per power domains didn't enter their low power mode.

    Customer board used UART4 to control GPS module. GPS has been shutdown before suspending.

    BR

    Kim

  • Just a comment in the middle of discussion;

    Try reading errata file Advisory 3.1.1.204

    for OMAP4 4470

    http://www.ti.com/litv/pdf/swpz025a

  • After adding the HWMOD_SWSUP_SIDLE flag  in UART4 hwmod, this problem can be resolved.

    static struct omap_hwmod omap44xx_uart4_hwmod = {

                .name              = "uart4",

                .class               = &omap44xx_uart_hwmod_class,

             + .flags               = HWMOD_SWSUP_SIDLE,

                .mpu_irqs        = omap44xx_uart4_irqs,