• Arik Nemtsov's avatar
    iwlwifi: add very first D0i3 support · 98ee7783
    Arik Nemtsov authored
    When the bus is in D0i3, we can't send regular commands to
    the firmware. This means that we need to add a state to
    remember what is our d0i3 state and make sure that only
    d0i3 exit commands can be sent.
    Add flags to CMD_ flags and transport status for this
    purpose.
    
    Commands with CMD_HIGH_PRIO set are queued at the head of
    the command queue, behind other high priority commands.
    
    Commands with CMD_SEND_IN_IDLE set can be sent while the
    transport is idle (without taking rpm reference).
    
    Commands with CMD_MAKE_TRANS_IDLE set indicate that command
    completion should mark the transport as idle (and release
    the bus).
    
    Commands with CMD_WAKE_UP_TRANS set instruct the transport
    to exit from idle when this command is completed.
    
    The transport is marked as idle (STATUS_TRANS_IDLE) when
    the FW enters D0i3 state. This bit is cleared when it
    enters D0 state again.
    
    Process only commands with CMD_SEND_IN_IDLE flag while the
    transport is idle. Other enqueued commands will be
    processed only later, right after exiting D0i3.
    Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
    Signed-off-by: default avatarEliad Peller <eliadx.peller@intel.com>
    Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
    98ee7783
iwl-trans.h 27.9 KB