• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*++
2
3Copyright (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
15Module Name:
16
17  IgdOGBDA.ASL
18
19Abstract:
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
28Method (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