• Georgi Vlaev's avatar
    firmware: ti_sci: Fix polled mode during system suspend · b13b2c3e
    Georgi Vlaev authored
    Commit b9e8a7d9 ("firmware: ti_sci: Switch transport to polled
    mode during system suspend") uses read_poll_timeout_atomic() macro
    in ti_sci_do_xfer() to wait for completion when the system is
    suspending. The break condition of the macro is set to "true" which
    will cause it break immediately when evaluated, likely before the
    TISCI xfer is completed, and always return 0. We want to poll here
    until "done_state == true".
    
    1) Change the break condition of read_poll_timeout_atomic() to
    the bool variable "done_state".
    
    2) The read_poll_timeout_atomic() returns 0 if the break condition
    is met or -ETIMEDOUT if not. Since our break condition has changed
    to "done_state", we also don't have to check for "!done_state" when
    evaluating the return value.
    
    Fixes: b9e8a7d9 ("firmware: ti_sci: Switch transport to polled mode during system suspend")
    Signed-off-by: default avatarGeorgi Vlaev <g-vlaev@ti.com>
    Signed-off-by: default avatarNishanth Menon <nm@ti.com>
    Link: https://lore.kernel.org/r/20221021185704.181316-1-g-vlaev@ti.com
    b13b2c3e
ti_sci.c 99.5 KB