Home | History | Annotate | Download | only in AcpiTablesPCAT
      1 /*++
      2 
      3 Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
      4 
      5   This program and the accompanying materials are licensed and made available under
      6   the terms and conditions of the BSD License that accompanies this distribution.
      7   The full text of the license may be found at
      8   http://opensource.org/licenses/bsd-license.php.
      9 
     10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 
     14 
     15 Module Name:
     16 
     17   IgdOGBDA.ASL
     18 
     19 Abstract:
     20 
     21   IGD OpRegion/Software SCI Reference Code for the Baytrail Family.
     22   This file contains Get BIOS Data Area funciton support for
     23   the Integrated Graphics Device (IGD) OpRegion/Software SCI mechanism.
     24 
     25 --*/
     26 
     27 
     28 Method (GBDA, 0, Serialized)
     29 {
     30 
     31   // Supported calls: Sub-function 0
     32 
     33   If (LEqual(GESF, 0))
     34   {
     35     //<TODO> Update implementation specific supported calls.  Reference
     36     // code is set to Intel's validated implementation.
     37 
     38     Store(0x0000279, PARM)
     39 
     40     Store(Zero, GESF)               // Clear the exit parameter
     41     Return(SUCC)                    // Success
     42   }
     43 
     44   // Requested callbacks: Sub-function 1
     45 
     46   If (LEqual(GESF, 1))
     47   {
     48 
     49     //<TODO> Update implementation specific system BIOS requested call
     50     // back functions.  Call back functions are where the driver calls the
     51     // system BIOS at function indicated event.
     52 
     53     Store(0x00000240, PARM)
     54 
     55     Store(Zero, GESF)               // Clear the exit parameter
     56     Return(SUCC)                    // Success
     57   }
     58 
     59   // Get Boot display Preferences: Sub-function 4
     60 
     61   If (LEqual(GESF, 4))
     62   {
     63 
     64     //<TODO> Update the implementation specific Get Boot Display
     65     // Preferences function.
     66 
     67     And(PARM, 0xEFFF0000, PARM)     // PARM[30:16] = Boot device ports
     68     And(PARM, ShiftLeft(DeRefOf(Index(DBTB, IBTT)), 16), PARM)
     69     Or(IBTT, PARM, PARM)            // PARM[7:0] = Boot device type
     70 
     71     Store(Zero, GESF)               // Clear the exit parameter
     72     Return(SUCC)                    // Success
     73   }
     74 
     75   // Panel details: Sub-function 5
     76 
     77   If (LEqual(GESF, 5))
     78   {
     79 
     80     //<TODO> Update the implementation specific Get Panel Details
     81     // function.
     82 
     83     Store(IPSC, PARM)               // Report the scaling setting
     84     Or(PARM, ShiftLeft(IPAT, 8), PARM)
     85     Add(PARM, 0x100, PARM)          // Adjust panel type, 0 = VBT default
     86     Or(PARM, ShiftLeft(LIDS, 16), PARM) // Report the lid state
     87     Add(PARM, 0x10000, PARM)        // Adjust the lid state, 0 = Unknown
     88     Or(PARM, ShiftLeft(IBLC, 18), PARM) // Report the BLC setting
     89     Or(PARM, ShiftLeft(IBIA, 20), PARM) // Report the BIA setting
     90     Store(Zero, GESF)
     91     Return(SUCC)
     92   }
     93 
     94   // TV-standard/Video-connector: Sub-function 6
     95 
     96   If (LEqual(GESF, 6))
     97   {
     98 
     99     //<TODO> Update the implementation specific Get
    100     // TV-standard/Video-connectorPanel function.
    101 
    102     Store(ITVF, PARM)
    103     Or(PARM, ShiftLeft(ITVM, 4), PARM)
    104     Store(Zero, GESF)
    105     Return(SUCC)
    106   }
    107 
    108   // Internal graphics: Sub-function 7
    109 
    110   If (LEqual(GESF, 7))
    111   {
    112     Store(GIVD, PARM)               // PARM[0]      - VGA mode(1=VGA)
    113     Xor(PARM, 1, PARM)              // Invert the VGA mode polarity
    114     Or(PARM, ShiftLeft(GMFN, 1), PARM) // PARM[1]   - # IGD PCI functions-1
    115     // PARM[3:2]    - Reserved
    116     // PARM[4]      - IGD D3 support(0=cold)
    117     // PARM[10:5]   - Reserved
    118     Or(PARM, ShiftLeft(3, 11), PARM) // PARM[12:11] - DVMT mode(11b = 5.0)
    119 
    120     //
    121     // Report DVMT 5.0 Total Graphics memory size.
    122     //
    123     Or(PARM, ShiftLeft(IDMS, 17), PARM)   // Bits 20:17 are for Gfx total memory size
    124 
    125     // If the "Set Internal Graphics" call is supported, the modified
    126     // settings flag must be programmed per the specification.  This means
    127     // that the flag must be set to indicate that system BIOS requests
    128     // these settings.  Once "Set Internal Graphics" is called, the
    129     //  modified settings flag must be cleared on all subsequent calls to
    130     // this function.
    131 
    132     // Report the graphics frequency based on DISPLAY_CLOCK_FREQUENCY_ENCODING [MMADR+0x20C8]
    133 
    134     Or(ShiftLeft(Derefof(Index(CDCT, \_SB.PCI0.GFX0.MCHK.DCFE)), 21),PARM, PARM)
    135 
    136     Store(1, GESF)                  // Set the modified settings flag
    137     Return(SUCC)
    138   }
    139 
    140   // Spread spectrum clocks: Sub-function 10
    141 
    142   If (LEqual(GESF, 10))
    143   {
    144 
    145     Store(0, PARM)                  // Assume SSC is disabled
    146 
    147     If(ISSC)
    148     {
    149       Or(PARM, 3, PARM)       // If SSC enabled, return SSC1+Enabled
    150     }
    151 
    152     Store(0, GESF)                  // Set the modified settings flag
    153     Return(SUCC)                    // Success
    154   }
    155 
    156 
    157   // A call to a reserved "Get BIOS data" function was received.
    158 
    159   Store(Zero, GESF)                     // Clear the exit parameter
    160   Return(CRIT)                          // Reserved, "Critical failure"
    161 }
    162