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