• Lv Zheng's avatar
    ACPI / EC: Fix an issue that SCI_EVT cannot be detected after event is enabled · e923e8e7
    Lv Zheng authored
    After enabling the EC event handling, Linux is still in the noirq stage, if
    there is no triggering source (EC transaction, GPE STS status),
    advance_transaction() will not be invoked and SCI_EVT cannot be detected.
    This patch adds one more triggering source after enabling the EC event
    handling to poll the pending SCI_EVT.
    
    Known issues:
    1. Still no SCI_EVT triggering source
       There could still be no SCI_EVT triggering source after handling the
       first SCI_EVT (polled by this patch if any). Because after handling the
       first SCI_EVT, Linux could still be in noirq stage and there could still
       be no further triggering source in this stage. Then the second SCI_EVT
       indicated during this stage still cannot be detected by the EC driver.
       With this improvement applied, it is then possible to move
       acpi_ec_enable_event() out of the noirq stage to fix this issue (if the
       first SCI_EVT is handled out of the noirq stage, the follow-up SCI_EVTs
       should be able to trigger IRQs).
    Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
    Tested-by: default avatarTodd E Brandt <todd.e.brandt@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    e923e8e7
ec.c 48.3 KB