hc
2024-03-25 edb30157bad0c0001c32b854271ace01d3b9a16a
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
/** @file
 
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
 
 
// Comment out includes as ifdefs don't work at trim stage
 
//
//
 
Scope(\_SB) {
  //
  //---------------------------------------------------------------------------
  // List of IRQ resource buffers compatible with _PRS return format.
  //---------------------------------------------------------------------------
  // Naming legend:
  // RSxy, PRSy - name of the IRQ resource buffer to be returned by _PRS, "xy" - last two characters of IRQ Link name.
  // Note. PRSy name is generated if IRQ Link name starts from "LNK".
  // HLxy , LLxy - reference names, can be used to access bit mask of available IRQs. HL and LL stand for active High(Low) Level triggered Irq model.
  //---------------------------------------------------------------------------
    Name(PRSA, ResourceTemplate(){  // Link name: LNKA
      IRQ(Level, ActiveLow, Shared, LLKA) {3,4,5,6,10,11,12,14,15}
    })
    Alias(PRSA,PRSB)  // Link name: LNKB
    Alias(PRSA,PRSC)  // Link name: LNKC
    Alias(PRSA,PRSD)  // Link name: LNKD
    Alias(PRSA,PRSE)  // Link name: LNKE
    Alias(PRSA,PRSF)  // Link name: LNKF
    Alias(PRSA,PRSG)  // Link name: LNKG
    Alias(PRSA,PRSH)  // Link name: LNKH
}
 
//
//
 
  Scope(\_SB.PC00) {
    //
    // PCI-specific method's GUID
    //
    Name(PCIG, ToUUID("E5C937D0-3553-4d7a-9117-EA4D19C3434D"))
    //
    // PCI's _DSM - an attempt at modular _DSM implementation
    // When writing your own _DSM function that needs to include PCI-specific methods, do this:
    //
    // Method(_YOUR_DSM,4){ 
    //   if(Lequal(Arg0,PCIG)) { return(PCID(Arg0,Arg1,Arg2,Arg3)) }
    //   ...continue your _DSM by checking different GUIDs...
    //   else { return(0) }
    // } 
    //
    Method(PCID, 4, Serialized) {
      If(LEqual(Arg0, PCIG)) {         // PCIE capabilities UUID
        If(LGreaterEqual(Arg1,3)) {                                              // revision at least 3
          If(LEqual(Arg2,0)) { Return (Buffer(2){0x01,0x03}) }                   // function 0: list of supported functions
          If(LEqual(Arg2,8)) { Return (1) }                                      // function 8: Avoiding Power-On Reset Delay Duplication on Sx Resume
          If(LEqual(Arg2,9)) { Return (Package(5){50000,Ones,Ones,50000,Ones}) } // function 9: Specifying Device Readiness Durations
        }
      }
      return (Buffer(1){0})
    }
  }//scope
Scope(\_SB.PC00) {
  //PciCheck, Arg0=UUID, returns true if support for 'PCI delays optimization ECR' is enabled and the UUID is correct
  Method(PCIC,1,Serialized) {
    If(LEqual(ECR1,1)) {
      If(LEqual(Arg0, PCIG)) {
        return (1)
      }
    }
    return (0)
  }
}