Home | History | Annotate | Download | only in Cpu0Ist
      1 /** @file
      2 CPU EIST control methods
      3 
      4 Copyright (c) 2013-2015 Intel Corporation.
      5 
      6 This program and the accompanying materials
      7 are licensed and made available under the terms and conditions of the BSD License
      8 which accompanies this distribution.  The full text of the license may be found at
      9 http://opensource.org/licenses/bsd-license.php
     10 
     11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 DefinitionBlock (
     17     "CPU0IST.aml",
     18     "SSDT",
     19     0x01,
     20     "SsgPmm",
     21     "Cpu0Ist",
     22     0x0012
     23     )
     24 {
     25     External (PDC0, IntObj)
     26     External (CFGD, FieldUnitObj)
     27     External(\_PR.CPU0, DeviceObj)
     28 
     29     Scope(\_PR.CPU0)
     30     {
     31         Method(_PPC,0)
     32         {
     33             Return(ZERO)   // Return All States Available.
     34         }
     35 
     36         Method(_PCT,0)
     37         {
     38             //
     39             // If GV3 is supported and OSPM is capable of direct access to
     40             // performance state MSR, we use MSR method
     41             //
     42             //
     43             // PDCx[0] = Indicates whether OSPM is capable of direct access to
     44             // performance state MSR.
     45             //
     46             If(LAnd(And(CFGD,0x0001), And(PDC0,0x0001)))
     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 
     56             //
     57             // Otherwise, we use smi method
     58             //
     59             Return(Package()    // SMI Method
     60                 {
     61                   ResourceTemplate(){Register(SystemIO,16,0,0xB2)},
     62                   ResourceTemplate(){Register(SystemIO, 8,0,0xB3)}
     63                 })
     64         }
     65 
     66         Method(_PSS,0)
     67         {
     68             //
     69             // If OSPM is capable of direct access to performance state MSR,
     70             // we report NPSS, otherwise, we report SPSS.
     71             If (And(PDC0,0x0001))
     72             {
     73                 Return(NPSS)
     74             }
     75 
     76             Return(SPSS)
     77         }
     78 
     79         Name(SPSS,Package()
     80         {
     81             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     82             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     83             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     84             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     85             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     86             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     87             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     88             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     89             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     90             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     91             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     92             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
     93         })
     94 
     95         Name(NPSS,Package()
     96         {
     97             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     98             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
     99             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
    100             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
    101             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
    102             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
    103             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
    104             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
    105             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
    106             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
    107             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000},
    108             Package(){0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000}
    109         })
    110 
    111         Method(_PSD,0)
    112         {
    113           //
    114           // If CMP is suppored, we report the dependency with two processors
    115           //
    116           If(And(CFGD,0x1000000))
    117           {
    118             //
    119             // If OSPM is capable of hardware coordination of P-states, we report
    120             // the dependency with hardware coordination.
    121             //
    122             // PDCx[11] = Indicates whether OSPM is capable of hardware coordination of P-states
    123             //
    124             If(And(PDC0,0x0800))
    125             {
    126               Return(Package(){
    127                 Package(){
    128                   5,  // # entries.
    129                   0,  // Revision.
    130                   0,  // Domain #.
    131                   0xFE,  // Coord Type- HW_ALL.
    132                   2  // # processors.
    133                 }
    134               })
    135             }
    136 
    137             //
    138             // Otherwise, the dependency with OSPM coordination
    139             //
    140             Return(Package(){
    141               Package(){
    142                 5,    // # entries.
    143                 0,    // Revision.
    144                 0,    // Domain #.
    145                 0xFC, // Coord Type- SW_ALL.
    146                 2     // # processors.
    147               }
    148             })
    149           }
    150 
    151           //
    152           //  Otherwise, we report the dependency with one processor
    153           //
    154           Return(Package(){
    155             Package(){
    156               5,      // # entries.
    157               0,      // Revision.
    158               0,      // Domain #.
    159               0xFC,   // Coord Type- SW_ALL.
    160               1       // # processors.
    161             }
    162           })
    163         }
    164     }
    165 }
    166