summaryrefslogtreecommitdiff
path: root/ReferenceCode/AcpiTables/Dsdt/PCI_DRC.ASL
blob: a461e59cd49a8410fb3ae62365fcb74523ae4c74 (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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/**************************************************************************;
;*                                                                        *;
;*    Intel Confidential                                                  *;
;*                                                                        *;
;*    Intel Corporation - ACPI Reference Code for the Haswell             *;
;*    Family of Customer Reference Boards.                                *;
;*                                                                        *;
;*                                                                        *;
;*    Copyright (c)  1999 - 2012 Intel Corporation. All rights reserved   *;
;*    This software and associated documentation (if any) is furnished    *;
;*    under a license and may only be used or copied in accordance        *;
;*    with the terms of the license. Except as permitted by such          *;
;*    license, no part of this software or documentation may be           *;
;*    reproduced, stored in a retrieval system, or transmitted in any     *;
;*    form or by any means without the express written consent of         *;
;*    Intel Corporation.                                                  *;
;*                                                                        *;
;*                                                                        *;
;**************************************************************************/
/*++
  This file contains a 'Sample Driver' and is licensed as such  
  under the terms of your license agreement with Intel or your  
  vendor.  This file may be modified by the user, subject to    
  the additional terms of the license agreement                 
--*/


Scope (\_SB.PCI0){

  Device(PDRC)
  {
    //
    // PCI Device Resource Consumption
    //

    Name(_HID,EISAID("PNP0C02"))        

    Name(_UID,1)

    Name(BUF0,ResourceTemplate()
    {
      //
      // RCRB BAR _BAS will be updated in _CRS below according to B0:D31:F0:Reg.F0
      //
      Memory32Fixed(ReadWrite,0,0x04000,RCRB)
      //
      // MCH BAR _BAS will be updated in _CRS below according to B0:D0:F0:Reg.48h
      //
      Memory32Fixed(ReadWrite,0,0x08000,MCHB) 
      //
      // DMI BAR _BAS will be updated in _CRS below according to B0:D0:F0:Reg.68h
      //
      Memory32Fixed(ReadWrite,0,0x01000,DMIB) 
      //
      // EP BAR _BAS will be updated in _CRS below according to B0:D0:F0:Reg.40h
      //
      Memory32Fixed(ReadWrite,0,0x01000,EGPB)
      //
      // PCI Express BAR _BAS and _LEN will be updated in _CRS below according to B0:D0:F0:Reg.60h
      //
      Memory32Fixed(ReadWrite,0,0,PCIX)  

      //
      // MISC ICH TTT base address reserved for the TxT module use. Check if the hard code meets the real configuration.
      // If not, dynamically update it like the _CRS method below.
      //
      Memory32Fixed(ReadWrite,0xFED20000,0x20000)   
      
      //
      // VTD engine memory range. Check if the hard code meets the real configuration.
      // If not, dynamically update it like the _CRS method below.
      //
      Memory32Fixed(ReadOnly, 0xFED90000, 0x00004000)
      
      //
      // MISC ICH. Check if the hard code meets the real configuration.
      // If not, dynamically update it like the _CRS method below.
      //
      Memory32Fixed(ReadWrite,0xFED45000,0x4B000,TPMM)
      
      //
      // FLASH range
      //
      Memory32Fixed (ReadOnly, 0xFF000000, 0x1000000, FIOH) //16MB as per IOH spec
      
      //
      // Local APIC range(0xFEE0_0000 to 0xFEEF_FFFF)
      //
      Memory32Fixed (ReadOnly, 0xFEE00000, 0x100000, LIOH)
      
      //
      // Thermal Base Address. TBAR _BAS and _LEN will be updated in _CRS below according to B0:D31:F6:Reg.40h
      //    
      Memory32Fixed (ReadWrite, 0, 0x01000, TBAR)

      //
      // S3 Save And Restore temporay memory bar
      //
      Memory32Fixed (ReadWrite, 0, 0x10000, SNRB)

    })
 

    Method(_CRS,0,Serialized)
    {
      CreateDwordField(BUF0,^RCRB._BAS,RBR0)
      ShiftLeft(\_SB.PCI0.LPCB.RCBA,14,RBR0)

      CreateDwordField(BUF0,^TBAR._BAS,TBR0)    
      Store(TBAB,TBR0)
      CreateDwordField(BUF0,^TBAR._LEN,TBLN)
      If(LEqual(TBAB,0)){
        Store(0,TBLN)
      }

      CreateDwordField(BUF0,^SNRB._BAS,SNR0)
      Store(\SRMB,SNR0)  // SRMB is defined in PCH.asl
      

      CreateDwordField(BUF0,^MCHB._BAS,MBR0)
      ShiftLeft(\_SB.PCI0.MHBR,15,MBR0)

      CreateDwordField(BUF0,^DMIB._BAS,DBR0)
      ShiftLeft(\_SB.PCI0.DIBR,12,DBR0)

      CreateDwordField(BUF0,^EGPB._BAS,EBR0)
      ShiftLeft(\_SB.PCI0.EPBR,12,EBR0)

      CreateDwordField(BUF0,^PCIX._BAS,XBR0)
      ShiftLeft(\_SB.PCI0.PXBR,26,XBR0)

      CreateDwordField(BUF0,^PCIX._LEN,XSZ0)
      ShiftRight(0x10000000, \_SB.PCI0.PXSZ,XSZ0)

      Return(BUF0)
    }
  } //end of PDRC
} // end of SB