/**************************************************************************;
;*                                                                        *;
;*                                                                        *;
;*    Intel Corporation - ACPI Reference Code for the Baytrail            *;
;*    Family of Customer Reference Boards.                                *;
;*                                                                        *;
;*                                                                        *;
;*    Copyright (c) 2012  - 2014, Intel Corporation. All rights reserved    *;
;
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
;*                                                                        *;
;*                                                                        *;
;**************************************************************************/


// General Purpose Events.  This Scope handles the Run-time and
// Wake-time SCIs.  The specific method called will be determined by
// the _Lxx value, where xx equals the bit location in the General
// Purpose Event register(s).

Scope(\_GPE)
{
  //
  // Software GPE caused the event.
  //
  Method(_L02)
  {
    // Clear GPE status bit.
    Store(0,GPEC)
    //
    // Handle DTS Thermal Events.
    //
    External(DTSE, IntObj)
    If(CondRefOf(DTSE))
    {
      If(LGreaterEqual(DTSE, 0x01))
      {
        Notify(\_TZ.TZ01,0x80)
      }
    }
  }

  //
  // PUNIT SCI event.
  //
  Method(_L04)
  {
    // Clear the PUNIT Status Bit.
    Store(1, PSCI)
  }


  //
  // IGD OpRegion SCI event (see IGD OpRegion/Software SCI BIOS SPEC).
  //
  Method(_L05)
  {
    If(LAnd(\_SB.PCI0.GFX0.GSSE, LNot(GSMI)))   // Graphics software SCI event?
    {
      \_SB.PCI0.GFX0.GSCI()     // Handle the SWSCI
    }
  }

  //
  // This PME event (PCH's GPE #13) is received when any PCH internal device with PCI Power Management capabilities
  // on bus 0 asserts the equivalent of the PME# signal.
  //
  Method(_L0D, 0)
  {
    If(LAnd(\_SB.PCI0.EHC1.PMEE, \_SB.PCI0.EHC1.PMES))
    {
      If(LNotEqual(OSEL, 1))
      {
        Store(1, \_SB.PCI0.EHC1.PMES) //Clear PME status
        Store(0, \_SB.PCI0.EHC1.PMEE) //Disable PME
      }
      Notify(\_SB.PCI0.EHC1, 0x02)
    }
    If(LAnd(\_SB.PCI0.XHC1.PMEE, \_SB.PCI0.XHC1.PMES))
    {
      If(LNotEqual(OSEL, 1))
      {
        Store(1, \_SB.PCI0.XHC1.PMES) //Clear PME status
        Store(0, \_SB.PCI0.XHC1.PMEE) //Disable PME
      }
      Notify(\_SB.PCI0.XHC1, 0x02)
    }
    If(LAnd(\_SB.PCI0.HDEF.PMEE, \_SB.PCI0.HDEF.PMES))
    {
      If(LNotEqual(OSEL, 1))
      {
        Store(1, \_SB.PCI0.HDEF.PMES) //Clear PME status
        Store(0, \_SB.PCI0.HDEF.PMEE) //Disable PME
      }
      Notify(\_SB.PCI0.HDEF, 0x02)
    }
  }
}
