]> git.proxmox.com Git - mirror_edk2.git/blob - QuarkPlatformPkg/Acpi/AcpiTables/Cpu0Tst/Cpu0Tst.asl
QuarkPlatformPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / QuarkPlatformPkg / Acpi / AcpiTables / Cpu0Tst / Cpu0Tst.asl
1 /** @file
2 CPU T-state control methods
3
4 Copyright (c) 2013-2015 Intel Corporation.
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 **/
9
10 DefinitionBlock (
11 "CPU0TST.aml",
12 "SSDT",
13 0x01,
14 "SsgPmm",
15 "Cpu0Tst",
16 0x0013
17 )
18 {
19 External (PDC0, IntObj)
20 External (CFGD, FieldUnitObj)
21 External(\_PR.CPU0, DeviceObj)
22 External(_PSS)
23
24 Scope(\_PR.CPU0)
25 {
26 Method(_TPC,0)
27 {
28 Return(ZERO) // Return All States Available.
29 }
30
31 Name(TPTC, ResourceTemplate()
32 {
33 Memory32Fixed(ReadOnly, 0, 0, FIX1) // IO APIC
34 })
35
36 //
37 // If OSPM is capable of direct access to on demand throttling MSR,
38 // we use MSR method;otherwise we use IO method.
39 //
40 //
41 // PDCx[2] = Indicates whether OSPM is capable of direct access to
42 // on demand throttling MSR.
43 //
44 Method(_PTC, 0)
45 {
46 If(And(PDC0, 0x0004))
47 {
48 Return(Package() // MSR Method
49 {
50 ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
51 ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
52 }
53 )
54 }
55 Return(Package() // IO Method
56 {
57 //
58 // PM IO base ("PMBALVL0" will be updated at runtime)
59 //
60 ResourceTemplate(){Register(SystemIO, 4, 1, 0x304C564C41424D50)},
61 ResourceTemplate(){Register(SystemIO, 4, 1, 0x304C564C41424D50)}
62 }
63 )
64 }
65
66 //
67 // _TSS returned package for IO Method
68 //
69 Name(TSSI, Package()
70 {
71 Package(){100, 1000, 0, 0x00, 0}
72 }
73 )
74 //
75 // _TSS returned package for MSR Method
76 //
77 Name(TSSM, Package()
78 {
79 Package(){100, 1000, 0, 0x00, 0}
80 }
81 )
82
83 Method(_TSS, 0)
84 {
85 //
86 // If OSPM is capable of direct access to on demand throttling MSR,
87 // we report TSSM;otherwise report TSSI.
88 //
89 If(And(PDC0, 0x0004))
90 {
91 Return(TSSM)
92 }
93 Return(TSSI)
94 }
95
96 Method(_TSD, 0)
97 {
98 //
99 // If CMP is suppored, we report the dependency with two processors
100 //
101 If(LAnd(And(CFGD, 0x1000000), LNot(And(PDC0, 4))))
102 {
103 Return(Package()
104 {
105 Package()
106 {
107 5, // # entries.
108 0, // Revision.
109 0, // Domain #.
110 0xFD, // Coord Type- SW_ANY
111 2 // # processors.
112 }
113 }
114 )
115 }
116 //
117 // Otherwise, we report the dependency with one processor
118 //
119 Return(Package()
120 {
121 Package()
122 {
123 5, // # entries.
124 0, // Revision.
125 0, // Domain #.
126 0xFC, // Coord Type- SW_ALL
127 1 // # processors.
128 }
129 }
130 )
131 }
132 }
133 }