+++ /dev/null
-/*++\r
-\r
-Copyright (c) 1999 - 2014, Intel Corporation. All rights reserved\r
-\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-\r
-\r
-Module Name:\r
-\r
- IgdOSBCB.ASL\r
-\r
-Abstract:\r
-\r
- IGD OpRegion/Software SCI Reference Code for the Baytrail Family.\r
- This file contains the system BIOS call back functionality for the\r
- OpRegion/Software SCI mechanism.\r
-\r
---*/\r
-\r
-\r
-Method (SBCB, 0, Serialized)\r
-{\r
-\r
- // Supported Callbacks: Sub-function 0\r
-\r
- If (LEqual(GESF, 0x0))\r
- {\r
-\r
- //<TODO> An OEM may support the driver->SBIOS status callbacks, but\r
- // the supported callbacks value must be modified. The code that is\r
- // executed upon reception of the callbacks must be also be updated\r
- // to perform the desired functionality.\r
-\r
- Store(0x00000000, PARM) // No callbacks supported\r
-\r
- If(LEqual(PFLV,FMBL))\r
- {\r
- Store(0x000F87FD, PARM) // Mobile\r
- }\r
- If(LEqual(PFLV,FDTP))\r
- {\r
- Store(0x000F87BD, PARM) // Desktop\r
- }\r
-\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Return(SUCC) // "Success"\r
- }\r
-\r
- // BIOS POST Completion: Sub-function 1\r
-\r
- If (LEqual(GESF, 1))\r
- {\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Not supported, but no failure\r
- }\r
-\r
- // Pre-Hires Set Mode: Sub-function 3\r
-\r
- If (LEqual(GESF, 3))\r
- {\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Not supported, but no failure\r
- }\r
-\r
- // Post-Hires Set Mode: Sub-function 4\r
-\r
- If (LEqual(GESF, 4))\r
- {\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Not supported, but no failure\r
- }\r
-\r
- // Display Switch: Sub-function 5\r
-\r
- If (LEqual(GESF, 5))\r
- {\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Not supported, but no failure\r
- }\r
-\r
- // Set TV format: Sub-function 6\r
-\r
- If (LEqual(GESF, 6))\r
- {\r
-\r
- //<TODO> If implemented, the input values must be saved into\r
- // non-volatile storage for parsing during the next boot. The\r
- // following Sample code is Intel validated implementation.\r
-\r
- Store(And(PARM, 0x0F), ITVF)\r
- Store(ShiftRight(And(PARM, 0xF0), 4), ITVM)\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC)\r
- }\r
-\r
- // Adapter Power State: Sub-function 7\r
-\r
- If (LEqual(GESF, 7))\r
- {\r
-\r
- // Upon notification from driver that the Adapter Power State = D0,\r
- // check if previous lid event failed. If it did, retry the lid\r
- // event here.\r
- If(LEqual(PARM, 0))\r
- {\r
- Store(CLID, Local0)\r
- If(And(0x80000000,Local0))\r
- {\r
- And(CLID, 0x0000000F, CLID)\r
- GLID(CLID)\r
- }\r
- }\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Not supported, but no failure\r
- }\r
-\r
- // Display Power State: Sub-function 8\r
-\r
- If (LEqual(GESF, 8))\r
- {\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Not supported, but no failure\r
- }\r
-\r
- // Set Boot Display: Sub-function 9\r
-\r
- If (LEqual(GESF, 9))\r
- {\r
-\r
- //<TODO> An OEM may elect to implement this method. In that case,\r
- // the input values must be saved into non-volatile storage for\r
- // parsing during the next boot. The following Sample code is Intel\r
- // validated implementation.\r
-\r
- And(PARM, 0xFF, IBTT) // Save the boot display to NVS\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Reserved, "Critical failure"\r
- }\r
-\r
- // Set Panel Details: Sub-function 10 (0Ah)\r
-\r
- If (LEqual(GESF, 10))\r
- {\r
-\r
- //<TODO> An OEM may elect to implement this method. In that case,\r
- // the input values must be saved into non-volatile storage for\r
- // parsing during the next boot. The following Sample code is Intel\r
- // validated implementation.\r
-\r
- // Set the panel-related NVRAM variables based the input from the driver.\r
-\r
- And(PARM, 0xFF, IPSC)\r
-\r
- // Change panel type if a change is requested by the driver (Change if\r
- // panel type input is non-zero). Zero=No change requested.\r
-\r
- If(And(ShiftRight(PARM, 8), 0xFF))\r
- {\r
- And(ShiftRight(PARM, 8), 0xFF, IPAT)\r
- Decrement(IPAT) // 0 = no change, so fit to CMOS map\r
- }\r
- And(ShiftRight(PARM, 18), 0x3, IBLC)\r
- And(ShiftRight(PARM, 20), 0x7, IBIA)\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Success\r
- }\r
-\r
- // Set Internal Graphics: Sub-function 11 (0Bh)\r
-\r
- If (LEqual(GESF, 11))\r
- {\r
-\r
- //<TODO> An OEM may elect to implement this method. In that case,\r
- // the input values must be saved into non-volatile storage for\r
- // parsing during the next boot. The following Sample code is Intel\r
- // validated implementation.\r
-\r
- And(ShiftRight(PARM, 1), 1, IF1E) // Program the function 1 option\r
-\r
- // Fixed memory/DVMT memory\r
-\r
- And(ShiftRight(PARM, 17), 0xF, IDMS) // Program DVMT/fixed memory size\r
-\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Success\r
- }\r
-\r
- // Post-Hires to DOS FS: Sub-function 16 (10h)\r
-\r
- If (LEqual(GESF, 16))\r
- {\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Not supported, but no failure\r
- }\r
-\r
- // APM Complete: Sub-function 17 (11h)\r
-\r
- If (LEqual(GESF, 17))\r
- {\r
-\r
- Store(ShiftLeft(LIDS, 8), PARM) // Report the lid state\r
- Add(PARM, 0x100, PARM) // Adjust the lid state, 0 = Unknown\r
-\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Return(SUCC) // Not supported, but no failure\r
- }\r
-\r
- // Set Spread Spectrum Clocks: Sub-function 18 (12h)\r
-\r
- If (LEqual(GESF, 18))\r
- {\r
-\r
- //<TODO> An OEM may elect to implement this method. In that case,\r
- // the input values must be saved into non-volatile storage for\r
- // parsing during the next boot. The following Sample code is Intel\r
- // validated implementation.\r
-\r
- If(And(PARM, 1))\r
- {\r
- If(LEqual(ShiftRight(PARM, 1), 1))\r
- {\r
- Store(1, ISSC) // Enable HW SSC, only for clock 1\r
- }\r
- Else\r
- {\r
- Store(Zero, GESF)\r
- Return(CRIT) // Failure, as the SSC clock must be 1\r
- }\r
- }\r
- Else\r
- {\r
- Store(0, ISSC) // Disable SSC\r
- }\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Success\r
- }\r
-\r
- // Post VBE/PM Callback: Sub-function 19 (13h)\r
-\r
- If (LEqual(GESF, 19))\r
- {\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Not supported, but no failure\r
- }\r
-\r
- // Set PAVP Data: Sub-function 20 (14h)\r
-\r
- If (LEqual(GESF, 20))\r
- {\r
- And(PARM, 0xF, PAVP) // Store PAVP info\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Store(Zero, PARM)\r
- Return(SUCC) // Success\r
- }\r
-\r
- // A call to a reserved "System BIOS callbacks" function was received\r
-\r
- Store(Zero, GESF) // Clear the exit parameter\r
- Return(SUCC) // Reserved, "Critical failure"\r
-}\r