• Lv Zheng's avatar
    ACPI / EC: Introduce STARTED/STOPPED flags to replace BLOCKED flag · ad479e7f
    Lv Zheng authored
    By using the 2 flags, we can indicate an inter-mediate state where the
    current transactions should be completed while the new transactions should
    be dropped.
    
    The comparison of the old flag and the new flags:
      Old			New
      about to set BLOCKED	STOPPED set / STARTED set
      BLOCKED set		STOPPED clear / STARTED clear
      BLOCKED clear		STOPPED clear / STARTED set
    A new period can be indicated by the 2 flags. The new period is between the
    point where we are about to set BLOCKED and the point when the BLOCKED is
    set. The new flags facilitate us with acpi_ec_started() check to allow the
    EC transaction to be submitted during the new period. This period thus can
    be used as a grace period for the EC transaction flushing.
    
    The only functional change after applying this patch is:
    1. The GPE enabling/disabling is protected by the EC specific lock. We can
       do this because of recent ACPICA GPE API enhancement. This is reasonable
       as the GPE disabling/enabling state should only be determined by the EC
       driver's state machine which is protected by the EC spinlock.
    Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
    Tested-by: default avatarOrtwin Glück <odi@odi.ch>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    ad479e7f
ec.c 35.1 KB