summaryrefslogtreecommitdiff
path: root/Platform/Intel/PurleyOpenBoardPkg/Acpi/BoardAcpiDxe/Dsdt/PlatformGpe.asi
blob: ec7c3e3315170aeab84bc3ddd79c593edc054032 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/** @file

Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

//  General Purpose Event
#include "MaxSocket.h"

Scope (\_GPE) {

  //
  // ME HECI2 SCI handler
  // Note: This SCI from HECI2 is routed to ICH9 over the DMI and it
  // sets the DMISCI status bit in TCO block. From there it is routed
  // to bit6 GPE0 status register.
  //
  OperationRegion (TCOS, SystemIO, 0x464, 2) // ICH_ACPI_BASE_ADDRESS + TCO_BASE + R_TCO1_STS
  Field (TCOS, ByteAcc, NoLock, WriteAsZeros) {
         Offset (0x1),
         , 1,
         DSCI, 1,
  }

  Method(NTFI, 2){
    If(And(Arg0, 0x01)){
      Notify(\_SB.PC06, Arg1)
      Notify(\_SB.PC07, Arg1)
      Notify(\_SB.PC08, Arg1)
      Notify(\_SB.PC09, Arg1)
      Notify(\_SB.PC10, Arg1)
      Notify(\_SB.PC11, Arg1)   
    }
    If(And(Arg0, 0x02)){
      Notify(\_SB.PC12, Arg1)
      Notify(\_SB.PC13, Arg1)
      Notify(\_SB.PC14, Arg1)
      Notify(\_SB.PC15, Arg1)
      Notify(\_SB.PC16, Arg1)
      Notify(\_SB.PC17, Arg1)  
    }
    If(And(Arg0, 0x04)){
      Notify(\_SB.PC18, Arg1)
      Notify(\_SB.PC19, Arg1)
      Notify(\_SB.PC20, Arg1)
      Notify(\_SB.PC21, Arg1)
      Notify(\_SB.PC22, Arg1)
      Notify(\_SB.PC23, Arg1)   
    }
  } //End Method NTFI

  // Tell OS to run thru the new status of this device (Software SCI generated from SMM for all Hot plug events)
  Method (_L62, 0x0, NotSerialized) {
    if(LEqual(SCI0, 3)) { // Device ejection (Invoked with _EJ0 method called)
      Store (0, SCI0)
    } else {              // Device check (OS can still reject online request based on resources and capability)
      NTFI (IIOP, 0)
      Store (0, MEBC)
      Store (0, CPHP)
      Store (0, IIOP)
    }
    Store (0, SGPC)
    Store (1, SGPS)

  }

  // PME supported for Slots, use GPE 9 for PME
  // Hot plug on all slots for now, change later.
  // Slot numbers on silk screen might be different than the port number, currently use port numbers.
  //
  // IIO PCI_E Slot Hotplug GPE Event
  //
  Method (_L61, 0, NotSerialized) {
    #include "IioPcieHotPlugGpeHandler.asl"
  }// end of _L01 GPE Method

}// end of _GPE scope.