Home | History | Annotate | Download | only in Ssdt
      1 /*-----------------------------------------------------------------------------
      2 -------------------------------------------------------------------------------
      3 
      4 
      5  Intel Platform Processor Power Management BIOS Reference Code
      6 
      7  Copyright (c) 2007  - 2014, Intel Corporation
      8 
      9   This program and the accompanying materials are licensed and made available under
     10   the terms and conditions of the BSD License that accompanies this distribution.
     11   The full text of the license may be found at
     12   http://opensource.org/licenses/bsd-license.php.
     13 
     14   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     15   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     16 
     17 
     18  Filename:      APTST.ASL
     19 
     20  Revision:      Refer to Readme
     21 
     22  Date:          Refer to Readme
     23 
     24 --------------------------------------------------------------------------------
     25 -------------------------------------------------------------------------------
     26 
     27  This Processor Power Management BIOS Source Code is furnished under license
     28  and may only be used or copied in accordance with the terms of the license.
     29  The information in this document is furnished for informational use only, is
     30  subject to change without notice, and should not be construed as a commitment
     31  by Intel Corporation. Intel Corporation assumes no responsibility or liability
     32  for any errors or inaccuracies that may appear in this document or any
     33  software that may be provided in association with this document.
     34 
     35  Except as permitted by such license, no part of this document may be
     36  reproduced, stored in a retrieval system, or transmitted in any form or by
     37  any means without the express written consent of Intel Corporation.
     38 
     39  WARNING: You are authorized and licensed to install and use this BIOS code
     40  ONLY on an IST PC. This utility may damage any system that does not
     41  meet these requirements.
     42 
     43         An IST PC is a computer which
     44         (1) Is capable of seamlessly and automatically transitioning among
     45         multiple performance states (potentially operating at different
     46         efficiency ratings) based upon power source changes, END user
     47         preference, processor performance demand, and thermal conditions; and
     48         (2) Includes an Intel Pentium II processors, Intel Pentium III
     49         processor, Mobile Intel Pentium III Processor-M, Mobile Intel Pentium 4
     50         Processor-M, Intel Pentium M Processor, or any other future Intel
     51         processors that incorporates the capability to transition between
     52         different performance states by altering some, or any combination of,
     53         the following processor attributes: core voltage, core frequency, bus
     54         frequency, number of processor cores available, or any other attribute
     55         that changes the efficiency (instructions/unit time-power) at which the
     56         processor operates.
     57 
     58 -------------------------------------------------------------------------------
     59 -------------------------------------------------------------------------------
     60 
     61 NOTES:
     62         (1) <TODO> - IF the trap range and port definitions do not match those
     63         specified by this reference code, this file must be modified IAW the
     64         individual implmentation.
     65 
     66 --------------------------------------------------------------------------------
     67 ------------------------------------------------------------------------------*/
     68 
     69 
     70 DefinitionBlock(
     71         "APTST.aml",
     72         "SSDT",
     73         0x01,
     74         "PmRef",
     75         "ApTst",
     76         0x3000
     77         )
     78 {
     79         External(\_PR.CPU1, DeviceObj)
     80         External(\_PR.CPU2, DeviceObj)
     81         External(\_PR.CPU3, DeviceObj)
     82         External(\_PR.CPU0._PTC)
     83         External(\_PR.CPU0._TSS)
     84         External(PDC0)
     85         External(CFGD)
     86         External(MPEN)
     87 
     88         Scope(\_PR.CPU1)
     89         {
     90                 Name(_TPC, 0)   // All T-States are available
     91 
     92                 //
     93                 // T-State Control/Status interface
     94                 //
     95                 Method(_PTC, 0)
     96                 {
     97                         Return(\_PR.CPU0._PTC)
     98                 }
     99 
    100                 Method(_TSS, 0)
    101                 {
    102                         Return(\_PR.CPU0._TSS)
    103                 }
    104 
    105                 //
    106                 // T-State Dependency
    107                 //
    108                 Method(_TSD, 0)
    109                 {
    110                         //
    111                         // IF four cores are supported/enabled && !(direct access to MSR)
    112                         //    Report 4 processors and SW_ANY as the coordination
    113                         // IF two cores are supported/enabled && !(direct access to MSR)
    114                         //    Report 2 processors and SW_ANY as the coordination type
    115                         //  ELSE
    116                         //    Report 1 processor and SW_ALL as the coordination type (domain 1)
    117                         //
    118                         //  CFGD[23] = Four cores enabled
    119                         //  CFGD[24] = Two or more cores enabled
    120                         //  PDCx[2] = OSPM is capable of direct access to On
    121                         //              Demand throttling MSR
    122                         //
    123 
    124                 If(LNot(And(PDC0,4)))
    125                 {
    126                                 Return(Package(){       // SW_ANY
    127                                         Package(){
    128                                                 5,                // # entries.
    129                                                 0,                // Revision.
    130                                                 0,                // Domain #.
    131                                                 0xFD,           // Coord Type- SW_ANY
    132                                                 MPEN          // # processors.
    133                                         }
    134                                 })
    135                 }
    136                 Return(Package(){               // SW_ALL
    137                         Package(){
    138                                 5,                        // # entries.
    139                                 0,                        // Revision.
    140                                 1,                        // Domain #.
    141                                 0xFC,                   // Coord Type- SW_ALL
    142                                 1               // # processors.
    143                         }
    144                 })
    145                 }
    146         }  // End of CPU1
    147 
    148         Scope(\_PR.CPU2)
    149         {
    150                 Name(_TPC, 0)   // All T-States are available
    151 
    152                 //
    153                 // T-State Control/Status interface
    154                 //
    155                 Method(_PTC, 0)
    156                 {
    157                         Return(\_PR.CPU0._PTC)
    158                 }
    159 
    160                 Method(_TSS, 0)
    161                 {
    162                         Return(\_PR.CPU0._TSS)
    163                 }
    164 
    165                 //
    166                 // T-State Dependency
    167                 //
    168                 Method(_TSD, 0)
    169                 {
    170                         //
    171                         // IF four cores are supported/enabled && !(direct access to MSR)
    172                         //    Report 4 processors and SW_ANY as the coordination
    173                         // IF two cores are supported/enabled && !(direct access to MSR)
    174                         //    Report 2 processors and SW_ANY as the coordination type
    175                         //  ELSE
    176                         //    Report 1 processor and SW_ALL as the coordination type (domain 1)
    177                         //
    178                         //  CFGD[23] = Four cores enabled
    179                         //  CFGD[24] = Two or more cores enabled
    180                         //  PDCx[2] = OSPM is capable of direct access to On
    181                         //              Demand throttling MSR
    182                         //
    183 
    184                 If(LNot(And(PDC0,4)))
    185                 {
    186                                 Return(Package(){       // SW_ANY
    187                                         Package(){
    188                                                 5,                // # entries.
    189                                                 0,                // Revision.
    190                                                 0,                // Domain #.
    191                                                 0xFD,           // Coord Type- SW_ANY
    192                                                 MPEN          // # processors.
    193                                         }
    194                                 })
    195                 }
    196                 Return(Package(){               // SW_ALL
    197                         Package(){
    198                                 5,                        // # entries.
    199                                 0,                        // Revision.
    200                                 1,                        // Domain #.
    201                                 0xFC,                   // Coord Type- SW_ALL
    202                                 1                // # processors.
    203                         }
    204                 })
    205                 }
    206         }  // End of CPU2
    207 
    208         Scope(\_PR.CPU3)
    209         {
    210                 Name(_TPC, 0)   // All T-States are available
    211 
    212                 //
    213                 // T-State Control/Status interface
    214                 //
    215                 Method(_PTC, 0)
    216                 {
    217                         Return(\_PR.CPU0._PTC)
    218                 }
    219 
    220                 Method(_TSS, 0)
    221                 {
    222                         Return(\_PR.CPU0._TSS)
    223                 }
    224 
    225                 //
    226                 // T-State Dependency
    227                 //
    228                 Method(_TSD, 0)
    229                 {
    230                         //
    231                         // IF four cores are supported/enabled && !(direct access to MSR)
    232                         //    Report 4 processors and SW_ANY as the coordination
    233                         // IF two cores are supported/enabled && !(direct access to MSR)
    234                         //    Report 2 processors and SW_ANY as the coordination type
    235                         //  ELSE
    236                         //    Report 1 processor and SW_ALL as the coordination type (domain 1)
    237                         //
    238                         //  CFGD[23] = Four cores enabled
    239                         //  CFGD[24] = Two or more cores enabled
    240                         //  PDCx[2] = OSPM is capable of direct access to On
    241                         //              Demand throttling MSR
    242                         //
    243 
    244                 If(LNot(And(PDC0,4)))
    245                 {
    246                                 Return(Package(){       // SW_ANY
    247                                         Package(){
    248                                                 5,                // # entries.
    249                                                 0,                // Revision.
    250                                                 0,                // Domain #.
    251                                                 0xFD,           // Coord Type- SW_ANY
    252                                                 MPEN          // # processors.
    253                                         }
    254                                 })
    255                 }
    256                 Return(Package(){               // SW_ALL
    257                         Package(){
    258                                 5,                        // # entries.
    259                                 0,                        // Revision.
    260                                 1,                        // Domain #.
    261                                 0xFC,                   // Coord Type- SW_ALL
    262                                 1                // # processors.
    263                         }
    264                 })
    265                 }
    266         }  // End of CPU3
    267 } // End of Definition Block
    268 
    269