• Tony Lindgren's avatar
    ARM: dts: omap3-overo: Fix UART wake-up events · 28ce556b
    Tony Lindgren authored
    Compared to legacy booting, we don't have wake-up events enabled
    for device tree based booting. This means that if deeper idle
    states are enabled, the device won't wake up to UART events and
    seems like it has hung.
    
    Let's fix that by adding the wake-up interrupt. Note that we
    don't need to set the PIN_OFF_WAKEUPENABLE any longer, that's
    handled by the wake-up interrupt when the serial driver does
    request_irq on it.
    
    Tested with the following on omap3-overo-summit that has the
    ES2.1 omap:
    
    #!/bin/bash
    
    uarts=$(find /sys/class/tty/ttyO*/device/power/ -type d)
    for uart in $uarts; do
            echo 3000 > $uart/autosuspend_delay_ms
    done
    
    uarts=$(find /sys/class/tty/ttyO*/power/ -type d)
    for uart in $uarts; do
            echo enabled > $uart/wakeup
            echo auto > $uart/control
    done
    
    echo 1 > /sys/kernel/debug/pm_debug/enable_off_mode
    
    # grep -i uart /proc/interrupts
     90:       1085      INTC  74  OMAP UART2
    338:          5   pinctrl 366  OMAP UART2
    
    # grep ^core_pwrdm /sys/kernel/debug/pm_debug/count
    core_pwrdm (ON),OFF:1654,RET:131,INA:39,ON:1825...
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    28ce556b
omap3-overo-common-peripherals.dtsi 2.14 KB