265 lines
11 KiB
Plaintext
265 lines
11 KiB
Plaintext
/** @file
|
|
Intel ACPI Reference Code for External _DSM WiFi Feature Enabling Implementation
|
|
|
|
@copyright
|
|
INTEL CONFIDENTIAL
|
|
Copyright 2020 - 2021 Intel Corporation.
|
|
|
|
The source code contained or described herein and all documents related to the
|
|
source code ("Material") are owned by Intel Corporation or its suppliers or
|
|
licensors. Title to the Material remains with Intel Corporation or its suppliers
|
|
and licensors. The Material may contain trade secrets and proprietary and
|
|
confidential information of Intel Corporation and its suppliers and licensors,
|
|
and is protected by worldwide copyright and trade secret laws and treaty
|
|
provisions. No part of the Material may be used, copied, reproduced, modified,
|
|
published, uploaded, posted, transmitted, distributed, or disclosed in any way
|
|
without Intel's prior express written permission.
|
|
|
|
No license under any patent, copyright, trade secret or other intellectual
|
|
property right is granted to or conferred upon you by disclosure or delivery
|
|
of the Materials, either expressly, by implication, inducement, estoppel or
|
|
otherwise. Any license under such intellectual property rights must be
|
|
express and approved by Intel in writing.
|
|
|
|
Unless otherwise agreed by Intel in writing, you may not remove or alter
|
|
this notice or any other notice embedded in Materials by Intel or
|
|
Intel's suppliers or licensors in any way.
|
|
|
|
This file contains a 'Sample Driver' and is licensed as such under the terms
|
|
of your license agreement with Intel or your vendor. This file may be modified
|
|
by the user, subject to the additional terms of the license agreement.
|
|
|
|
@par Specification Reference:
|
|
**/
|
|
|
|
//--------------------------------------------------
|
|
// Intel Proprietary WiFi Feature Enabling Solution
|
|
//--------------------------------------------------
|
|
//
|
|
// _DSM (Device Specific Method) for external configuration
|
|
//
|
|
// This optional object is a control method that enables devices to provide device specific control
|
|
// functions that are consumed by the device driver.
|
|
//
|
|
// Arguments: (4)
|
|
// Arg0 - A Buffer containing a UUID
|
|
// Arg1 - An Integer containing the Revision ID
|
|
// Arg2 - An Integer containing the Function Index
|
|
// Arg3 - A Package that contains function-specific arguments
|
|
// Return Value:
|
|
// If Function Index = 0, a Buffer containing a function index bit-field which has set of supported function indexes.
|
|
// Otherwise, the return feature value based on set of supported function type which depends on the UUID and revision ID.
|
|
//
|
|
Method (EFUN, 4, Serialized) {
|
|
//
|
|
// Function 0 : Query Function/Get supported functions (based on revision)
|
|
// For Revision 0,
|
|
// -- Return value would contain one bit for each function index. Starting with zero.
|
|
// -- Bit 0 indicates whether there is support for any functions other than function 0 for the specified UUID and Revision ID.
|
|
// -- If set to zero, no functions are supported.
|
|
//
|
|
If (LEqual (Arg2, Zero)) {
|
|
// Revision 0
|
|
If (LEqual (Arg1, Zero)) { // The current revision is 0
|
|
//
|
|
// Below are functions defined.
|
|
// Bit0 - Indicates whether its support for any other functions
|
|
// Bit1 - Disable SRD (Short Range Device) Active Channels
|
|
// Bit2 - Supported Indonesia 5.15-5.35 GHz Band
|
|
// Bit3 - Ultra High Band Support
|
|
// Bit4 - DRS (Dynamic Regulatory Sensing) configuration
|
|
// Bit5 - Reserved UART Configurations
|
|
// Bit6 - 11Ax Control
|
|
// Bit7 - Control Enablement UNII-4 on certificated modules
|
|
// Bit8 - Device for Indoor Use Only
|
|
// Bit31:9 - Reserved for future options
|
|
//
|
|
Return (Buffer() {0xFF, 0x01})
|
|
} Else {
|
|
Return (Buffer() {0}) // No supported functions.
|
|
}
|
|
}
|
|
|
|
//
|
|
// Function 1 : Disable SRD (Short Range Device) Active Channels
|
|
//
|
|
// ETSI - European Telecommunications Standards Institute & SRD - Short Range Device
|
|
// 00 - ETSI 5.8GHz SRD Active Scan
|
|
// 01 - ETSI 5.8GHz SRD Passive Scan
|
|
// 02 - ETSI 5.8GHz SRD Disabled
|
|
//
|
|
If (LEqual (Arg2, One)) {
|
|
Store (\ACSD, Local0) // Switched Antenna Diversity Selection
|
|
Return (Local0)
|
|
}
|
|
|
|
//
|
|
// Function 2 : Supported Indonesia 5.15-5.35 GHz Band
|
|
//
|
|
// 00 - Set 5.15-5.35GHz to Disable in Indonesia
|
|
// 01 - Set 5.15-5.35GHz to Enable (Passive) in Indonesia
|
|
// 02 - Reserved
|
|
//
|
|
If (LEqual (Arg2, 2)) {
|
|
Store (\I5BS, Local0) // Supported Indonesia 5.15-5.35 GHz Band
|
|
Return (Local0) // Return Set 5.15-5.35GHz to Disable in Indonesia
|
|
}
|
|
|
|
//
|
|
// Function 3 : 6GHz/UHB Support
|
|
//
|
|
// Bit0
|
|
// '0' [Default] , no override - use device settings
|
|
// '1', Force disable all countries which are not defined in the following bits
|
|
//
|
|
// Bit1 - USA
|
|
// '0' [Default] , USA 6GHz disable
|
|
// '1', 6GHz Allowed in USA (enabled only if Device certified for USA)
|
|
//
|
|
// Bit2 - Rest Of the World, certificate countries that not represent in the Bits.
|
|
// '0' [Default] , rest of the world 6GHz disable
|
|
// '1', 6GHz Allowed in rest of the world (enabled only if Device certified for rest of the world)
|
|
//
|
|
// Bit3 - EU countries
|
|
// Austria, Belgium, Bosnia-Herzegovina, Bulgaria, Croatia, Czech Rep, Cyprus, Denmark, Estonia, Finland, France, Germany,
|
|
// Greece, Hungary, Iceland, Ireland, Italy, Latvia, Liechtenstein, Lithuania, Luxemburg, Macedonia, Malta, Montenegro,
|
|
// Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, Switzerland, United Kingdom
|
|
// '0' [Default] , EU countries 6GHz disable
|
|
// '1', 6GHz Allowed in EU countries (enabled only if Device certified for EU countries)
|
|
//
|
|
// Bit4 - South Korea
|
|
// '0' [Default] , South Korea 6GHz disable
|
|
// '1', 6GHz Allowed in South Korea (enabled only if Device certified for South Korea)
|
|
//
|
|
// Bit5 - Brazil
|
|
// '0' [Default] , Brazil 6GHz disable
|
|
// '1', 6GHz Allowed in Brazil (enabled only if Device certified for Brazil)
|
|
//
|
|
// Bit6 - Chile
|
|
// '0' [Default] , Chile 6GHz disable
|
|
// '1', 6GHz Allowed in Chile (enabled only if Device certified for Chile)
|
|
//
|
|
// Bit7 - Japan
|
|
// '0' [Default] , Japan 6GHz disable
|
|
// '1', 6GHz Allowed in Japan (enabled only if Device certified for Japan)
|
|
//
|
|
// Bit31:8 - Reserved, Must to set with Zeros
|
|
//
|
|
If (LEqual (Arg2, 3)) {
|
|
Store (\UHBS, Local0) // UHB support
|
|
Return (Local0)
|
|
}
|
|
|
|
//
|
|
// Function 6 : 11Ax Control
|
|
//
|
|
// Bit 0 - Apply changes to country Ukraine. 11Ax Setting within module certification
|
|
// 0 - None. Work with Wi-Fi FW/OTP definitions [Default]
|
|
// 1 - Apply changes.
|
|
//
|
|
// Bit 1 - 11Ax Mode. Effective only if Bit 0 set to 1
|
|
// 0 - Disable 11Ax on country Ukraine [Default]
|
|
// 1 - Enable 11Ax on country Ukraine
|
|
//
|
|
// Bit 2 - Apply changes to country Russia. 11Ax Setting within module certification
|
|
// 0 - None. Work with Wi-Fi FW/OTP definitions [Default]
|
|
// 1 - Apply changes.
|
|
//
|
|
// Bit 3 - 11Ax Mode. Effective only if Bit 2 set to 1
|
|
// 0 - Disable 11Ax on country Russia [Default]
|
|
// 1 - Enable 11Ax on country Russia
|
|
//
|
|
// Bit 31:04 - Reserved
|
|
//
|
|
If (LEqual (Arg2, 6)) {
|
|
Store (\AXMU, Local0) // 11Ax Mode for Ukraine // MSB
|
|
ShiftLeft (Local0, 1, Local0) // Left shifting the LSB (11Ax Setting for Ukraine) by 1 bit
|
|
Or (Local0, \AXSU, Local0) // Or the left shifted LSB (11Ax Setting for Ukraine) with MSB (11Ax Mode for Ukraine)
|
|
|
|
Store (\AXMR, Local1) // 11Ax Mode for Russia // MSB
|
|
ShiftLeft (Local1, 1, Local1) // Left shifting the LSB (11Ax Setting for Russia) by 1 bit
|
|
Or (Local1, \AXSR, Local1) // Or the left shifted LSB (11Ax Setting for Russia) with MSB (11Ax Mode for Russia)
|
|
ShiftLeft (Local1, 2, Local1) // Left Shifting the final value by 2 bits
|
|
|
|
Or (local0, local1, local0) // Or the final results of Ukraine and Russia
|
|
Return (Local0) // Apply changes
|
|
}
|
|
|
|
//
|
|
// Function 4 : Regulatory Configurations
|
|
// 00 - DRS by Driver/FW configuration
|
|
//
|
|
// Bit0 - Enabling DRS for China Location, *Will work only in case NON CHINA SKU. In case that OEM defined also CHINA_SKU in BIOS WRDD table, in this case the Bit will ignored by Driver*
|
|
// Bit31:1 - Reserved
|
|
//
|
|
If (LEqual (Arg2, 4)) {
|
|
Return (\WFRC) // DRS by Driver/FW configuration
|
|
}
|
|
|
|
//
|
|
// Function 5 : UART Configurations - TBD
|
|
// 00 - Default as defined in Intel SW Driver/FW
|
|
//
|
|
If (LEqual (Arg2, 5)) {
|
|
Return (\WFUC) // Defualt Behaivour as defined in Intel SW Driver/FW
|
|
}
|
|
|
|
//
|
|
// Function 7 : Control Enablement UNII-4 over certificate modules
|
|
// 00 - Default as defined in Intel Wi-Fi certificated modules
|
|
//
|
|
// Profiles described by two bits
|
|
//
|
|
// BIT A - Apply changes over profile XXX ,UNII-4 setting within module certification
|
|
// '0' - None. Work with Wi-Fi FW/OTP definitions.
|
|
// '1' - Apply changes
|
|
// Note: supported only on Intel UNII-4 certificated NIC.
|
|
// In case that Module not certificated, the Wi-Fi ignore and disabled UNII-4 on country XXX.
|
|
//
|
|
// BIT B - OEM UNII-4 Mode. Note: Effective only if BIT A set to '1'
|
|
// '0' - Disable UNII-4 over profile XXX
|
|
// '1' - Enable UNII-4 over profile XXX
|
|
//
|
|
// FCC
|
|
// Bit 0 - Apply changes over FCC, UNII-4 setting within module certification (Default Intel module definitions)
|
|
// Bit 1 - UNII-4 mode on FCC.
|
|
//
|
|
// ETSI
|
|
// bit 2 - Apply changes over ETSI, UNII-4 setting within module certification (Default Intel module definitions)
|
|
// Bit 3 - UNII-4 mode on ETSI. )
|
|
// Bit31:4 - Reserved shall set to zeros
|
|
//
|
|
If (LEqual (Arg2, 7)) {
|
|
Return (\UNI4) // Default Behavior as defined in Intel SW Driver/FW
|
|
}
|
|
|
|
//
|
|
// Function 8 : Device for Indoor Use Only (From Solar Family TyP/GfP2/GfP4)
|
|
// 00 - Default as defined in Intel Wi-Fi certificated modules 'Not Activated'
|
|
//
|
|
// Enabling the 'Device for Indoor Use Only' is per the definitions Bits:
|
|
// Bit 0 - EU
|
|
// Bit 1 - Japan
|
|
// Bit 2 - China, applied only in case of China BIOS or DRS in China Enabled
|
|
// Bit 3 - USA
|
|
// Bit31:4 - Reserved shall set to zeros
|
|
//
|
|
If (LEqual (Arg2, 8)) {
|
|
Return (\WFIC) // Default Behavior as defined in Intel SW Driver/FW
|
|
}
|
|
// No other supported functions, but normal return.
|
|
Return (0)
|
|
}
|
|
|
|
//
|
|
// Checks if External WiFi specific _DSM is called
|
|
//
|
|
// @retval 1 if true, 0 otherwise
|
|
//
|
|
Method (EDSM, 1, Serialized) {
|
|
If (LEqual (Arg0, ToUUID ("F21202BF-8F78-4DC6-A5B3-1F738E285ADE"))) {
|
|
return (1)
|
|
}
|
|
return (0)
|
|
}
|