summaryrefslogtreecommitdiff
path: root/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM
diff options
context:
space:
mode:
Diffstat (limited to 'Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM')
-rw-r--r--Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.asl79
-rw-r--r--Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.c223
-rw-r--r--Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.cif13
-rw-r--r--Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.dxs65
-rw-r--r--Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.mak109
-rw-r--r--Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.sdl67
-rw-r--r--Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.ssp59
7 files changed, 615 insertions, 0 deletions
diff --git a/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.asl b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.asl
new file mode 100644
index 0000000..93eabab
--- /dev/null
+++ b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.asl
@@ -0,0 +1,79 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.asl 2 9/09/12 11:07p Joshchou $
+//
+// $Revision: 2 $
+//
+// $Date: 9/09/12 11:07p $
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.asl $
+//
+// 2 9/09/12 11:07p Joshchou
+// [TAG] EIPNone
+// [Category] Improvement
+// [Description] Tpv module support for sharkbay.
+// [Files] NvOptimusSMM.mak
+// NvOptimusSMM.c
+// NvOptimusSMM.dxs
+// NvOptimusSMM.ssp
+// NvOptimusSMM.asl
+// NvOptimusSMM.cif
+//
+//**********************************************************************
+External(DGPU_SCOPE.OPTF)
+
+Scope(\_SB.PCI0.LPCB.EC0) {
+ Method(_Q4F) {
+
+ If(LEqual(HMIS, one))
+ {
+ Store(0, DGPU_SCOPE.OPTF)
+ }
+ else
+ {
+ Store(1, DGPU_SCOPE.OPTF)
+ }
+ Notify(PEG_SCOPE,0x81)
+
+ }
+
+ OperationRegion(ECIS, EmbeddedControl, 0, 0xFF) // dummy
+
+ Field(ECIS, ByteAcc, Lock, Preserve) {
+
+ offset(0x78), //
+ , 6,
+ HMIS, 1, // 1 : hdmi plug in, 0 : out
+ }
+
+}
+
+//**********************************************************************
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
diff --git a/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.c b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.c
new file mode 100644
index 0000000..85a894c
--- /dev/null
+++ b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.c
@@ -0,0 +1,223 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.c 3 10/16/12 4:25a Joshchou $
+//
+// $Revision: 3 $
+//
+// $Date: 10/16/12 4:25a $
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.c $
+//
+// 3 10/16/12 4:25a Joshchou
+// [TAG] None
+// [Category] Improvement
+// [Description] Update for SA and ACPI RC 0.7.1
+// [Files] NvOptimusSmm.c
+//
+// 2 9/09/12 11:07p Joshchou
+// [TAG] EIPNone
+// [Category] Improvement
+// [Description] Tpv module support for sharkbay.
+// [Files] NvOptimusSMM.mak
+// NvOptimusSMM.c
+// NvOptimusSMM.dxs
+// NvOptimusSMM.ssp
+// NvOptimusSMM.asl
+// NvOptimusSMM.cif
+//
+//**********************************************************************
+#include "Efi.h"
+#include "token.h"
+#include <AmiLib.h>
+#include <AmiDxeLib.h>
+#include <AmiCspLib.h>
+#include <Protocol\SmmSwDispatch.h>
+#include <Protocol\SmmBase.h>
+#include <CmosAccess.h>
+#include <Core\EM\CmosManager\CmosManager.h>
+
+#include <SaGlobalNvsArea\SaGlobalNvsArea.h>
+
+
+SYSTEM_AGENT_GLOBAL_NVS_AREA *mSaGlobalNvsAreaPtr = NULL;
+extern EFI_BOOT_SERVICES *pBS;
+//
+// GUID Definitions
+//
+EFI_GUID mSwDispatchProtocolGuid = EFI_SMM_SW_DISPATCH_PROTOCOL_GUID;
+EFI_GUID gSmmCmosServiceProtocolGuid = EFI_SMM_CMOS_ACCESS_GUID;
+EFI_GUID gSaGlobalNvsAreaProtocolGuid = SYSTEM_AGENT_GLOBAL_NVS_AREA_PROTOCOL_GUID;
+
+EFI_CMOS_MANAGER_INTERFACE *CmosManager=NULL ;
+VOID NvCmosFunction (EFI_HANDLE DispatchHandle,EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext );
+VOID NvCmosFunction1 (EFI_HANDLE DispatchHandle,EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext );
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: NvCmosFunction
+//
+// Description: Write AcpiNvs->AudioCodec to CMOS:AudioCodec.
+//
+// Input:EFI_HANDLE DispatchHandle,
+// EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext
+//
+// Output:
+//
+// Modified:
+//
+// Referrals:
+//
+// Notes:
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+VOID NvCmosFunction (
+ IN EFI_HANDLE DispatchHandle,
+ IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext )
+{
+ UINT8 CheckPoint;
+
+ CheckPoint = (mSaGlobalNvsAreaPtr->SgFeatureList & 0x2) >> 1; // dGPUAudioCodec flag bit2
+ CmosManager->Access.Write(&CmosManager->Access, CMOS_OEM_NVSWSMI_CODE, CheckPoint);
+}
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: NvCmosFunction1
+//
+// Description: Read CMOS:AudioCodec to AcpiNvs->AudioCodec.
+//
+// Input: EFI_HANDLE DispatchHandle,
+// EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext
+//
+// Output:
+//
+// Modified:
+//
+// Referrals:
+//
+// Notes:
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+VOID NvCmosFunction1 (
+ IN EFI_HANDLE DispatchHandle,
+ IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext )
+{
+ UINT8 CheckPoint;
+
+ CmosManager->Access.Read(&CmosManager->Access, CMOS_OEM_NVSWSMI_CODE,&CheckPoint);
+ mSaGlobalNvsAreaPtr->SgFeatureList |= (CheckPoint & 1) << 1; // dGPUAudioCodec flag bit2
+}
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: InSmmFunction
+//
+// Description: InSmmFunction
+//
+// Input:
+//
+// Output:
+//
+// Modified:
+//
+// Referrals:
+//
+// Notes:
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS InSmmFunction (EFI_HANDLE ImageHandle,EFI_SYSTEM_TABLE *SystemTable )
+{
+ EFI_STATUS Status;
+ SYSTEM_AGENT_GLOBAL_NVS_AREA_PROTOCOL *SaGlobalNvsAreaProtocol;
+ EFI_SMM_SW_DISPATCH_PROTOCOL *SwDispatch;
+ EFI_SMM_SW_DISPATCH_CONTEXT NvSwSmiContext = {SWSMI_NVOEM_CMOS_W};
+ EFI_SMM_SW_DISPATCH_CONTEXT NvSwSmiContext1 = {SWSMI_NVOEM_CMOS_R};
+ EFI_HANDLE SwHandle;
+
+ UINT8 CheckPoint;
+
+
+ Status = pBS->LocateProtocol ( &mSwDispatchProtocolGuid, NULL, &SwDispatch );
+ ASSERT_EFI_ERROR(Status);
+ //
+ // Locate the Global NVS Protocol.
+ //
+ Status = pBS->LocateProtocol (&gSaGlobalNvsAreaProtocolGuid, NULL, &SaGlobalNvsAreaProtocol);
+ ASSERT_EFI_ERROR (Status);
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+ mSaGlobalNvsAreaPtr = SaGlobalNvsAreaProtocol->Area;
+ TRACE((-1,"AcpiNvs Addr->SgFeatureList = %X\n", &mSaGlobalNvsAreaPtr->SgFeatureList));
+
+ LOCATE_CMOS_ACCESS_SMM_PROTOCOL(Status, CmosManager);
+
+ if (CmosManager != NULL)
+ {
+ Status = SwDispatch->Register( SwDispatch, NvCmosFunction, &NvSwSmiContext, &SwHandle);
+ Status = SwDispatch->Register( SwDispatch, NvCmosFunction1, &NvSwSmiContext1, &SwHandle);
+// Init dGPUAudioCodec flag
+ CmosManager->Access.Read(&CmosManager->Access,CMOS_OEM_NVSWSMI_CODE,&CheckPoint);
+ mSaGlobalNvsAreaPtr->SgFeatureList |= (CheckPoint & 1) << 1; // dGPUAudioCodec flag bit2
+ }
+
+ return Status;
+}
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: NvSwSmiEntry
+//
+// Description: NvSwSmiEntry
+//
+// Input: EFI_HANDLE ImageHandle,
+// EFI_SYSTEM_TABLE *SystemTable
+//
+// Output:
+//
+// Modified:
+//
+// Referrals:
+//
+// Notes:
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+EFI_STATUS NvSwSmiEntry (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable )
+{
+ InitAmiLib(ImageHandle,SystemTable);
+
+ return InitSmmHandler( ImageHandle, SystemTable, InSmmFunction, NULL );
+}
+
+//**********************************************************************
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//********************************************************************** \ No newline at end of file
diff --git a/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.cif b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.cif
new file mode 100644
index 0000000..db24ffb
--- /dev/null
+++ b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.cif
@@ -0,0 +1,13 @@
+<component>
+ name = "Sg nVidia Optimus SMM"
+ category = ModulePart
+ LocalRoot = "Board\EM\SwitchableGraphics\SgTpv\NvOptimusSMM\"
+ RefName = "NvOptimusSMM"
+[files]
+"NvOptimusSMM.sdl"
+"NvOptimusSMM.mak"
+"NvOptimusSMM.c"
+"NvOptimusSMM.dxs"
+"NvOptimusSMM.ssp"
+"NvOptimusSMM.asl"
+<endComponent>
diff --git a/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.dxs b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.dxs
new file mode 100644
index 0000000..1b47f48
--- /dev/null
+++ b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.dxs
@@ -0,0 +1,65 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.dxs 2 9/09/12 11:07p Joshchou $
+//
+// $Revision: 2 $
+//
+// $Date: 9/09/12 11:07p $
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.dxs $
+//
+// 2 9/09/12 11:07p Joshchou
+// [TAG] EIPNone
+// [Category] Improvement
+// [Description] Tpv module support for sharkbay.
+// [Files] NvOptimusSMM.mak
+// NvOptimusSMM.c
+// NvOptimusSMM.dxs
+// NvOptimusSMM.ssp
+// NvOptimusSMM.asl
+// NvOptimusSMM.cif
+//
+//**********************************************************************
+
+//#include "EfiDepex.h"
+#include <Protocol\SmmBase.h>
+#include "protocol\SmmSwDispatch.h"
+#include <CmosAccess.h>
+#include <Protocol\GlobalNvsArea\GlobalNvsArea.h>
+
+DEPENDENCY_START
+ EFI_SMM_CMOS_ACCESS_GUID AND
+ EFI_GLOBAL_NVS_AREA_PROTOCOL_GUID AND
+ EFI_SMM_BASE_PROTOCOL_GUID AND
+ EFI_SMM_SW_DISPATCH_PROTOCOL_GUID
+DEPENDENCY_END
+
+//**********************************************************************
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//********************************************************************** \ No newline at end of file
diff --git a/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.mak b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.mak
new file mode 100644
index 0000000..2ab5deb
--- /dev/null
+++ b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.mak
@@ -0,0 +1,109 @@
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
+
+#**********************************************************************
+# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.mak 3 10/16/12 4:26a Joshchou $
+#
+# $Revision: 3 $
+#
+# $Date: 10/16/12 4:26a $
+#**********************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.mak $
+#
+# 3 10/16/12 4:26a Joshchou
+# [TAG] None
+# [Category] Improvement
+# [Description] Update for SA and ACPI RC 0.7.1
+# [Files] NvOptimusSMM.mak
+#
+# 2 9/09/12 11:07p Joshchou
+# [TAG] EIPNone
+# [Category] Improvement
+# [Description] Tpv module support for sharkbay.
+# [Files] NvOptimusSMM.mak
+# NvOptimusSMM.c
+# NvOptimusSMM.dxs
+# NvOptimusSMM.ssp
+# NvOptimusSMM.asl
+# NvOptimusSMM.cif
+#
+# 1 6/27/11 5:26a Alanlin
+# [TAG] EIP61848
+# [Category] New Feature
+# [Description] Initial check-in.Integrated SwitchableGraphics Intel
+# Reference code 0.6.0
+# [Files] NvOptimusSMM.cif
+# NvOptimusSMM.sdl
+# NvOptimusSMM.mak
+# NvOptimusSMM.c
+# NvOptimusSMM.dxs
+# NvOptimusSMM.ssp
+# NvOptimusSMM.asl
+#
+#
+# 1 3/17/11 6:14p Alexp
+#
+#**********************************************************************
+#<AMI_FHDR_START>
+#
+# Name: NvOptimusSMM.mak
+#
+# Description:
+#
+#<AMI_FHDR_END>
+#**********************************************************************
+SgTpv : NvOptimusSMM
+
+NvOptimusSMM : $(BUILD_DIR)\NvOptimusSMM.mak NvOptimusSMMBin
+
+$(BUILD_DIR)\NvOptimusSMM.mak : $(NvOptimusSMM_DIR)\$(@B).cif $(NvOptimusSMM_DIR)\$(@B).mak $(BUILD_RULES)
+ $(CIF2MAK) $(NvOptimusSMM_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS)
+
+NvOptimusSMM_INCLUDES=\
+ $(INTEL_MPG_INCLUDES)\
+ $(ACPI_PLATFORM_INCLUDES)\
+ /DTIANO_RELEASE_VERSION=$(TIANO_RELEASE_VERSION)\
+ /I $(INTEL_SA_PROTOCOL_LIB_DIR)\
+
+# /I$(NvOptimusSMM_DIR) \
+# $(PROJECT_INCLUDES)\
+# $(Foundation_INCLUDES)\
+# /FIinclude\CompilerDirective.h\
+
+NvOptimusSMMBin :$(AMIDXELIB) $(INTEL_SA_PROTOCOL_LIB)
+ $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\
+ /f $(BUILD_DIR)\NvOptimusSMM.mak all\
+ GUID=8A4E8240-74F8-4024-AE2B-B39221C9FA59\
+ "MY_INCLUDES= $(NvOptimusSMM_INCLUDES)"\
+ DEPEX1=$(NvOptimusSMM_DIR)\NvOptimusSMM.dxs\
+ ENTRY_POINT=NvSwSmiEntry \
+ TYPE=BS_DRIVER \
+ COMPRESS=1\
+
+# OBJECTS="$(BUILD_DIR)\$(NvOptimusSMM_DIR)\NvOptimusSMM.obj" \
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
diff --git a/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.sdl b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.sdl
new file mode 100644
index 0000000..c77f960
--- /dev/null
+++ b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.sdl
@@ -0,0 +1,67 @@
+TOKEN
+ Name = "NvOptimusSMM_SUPPORT"
+ Value = "1"
+ Help = "Main switch to enable NvOptimusSMM support in Project"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+End
+
+TOKEN
+ Name = "SWSMI_NVOEM_CMOS_W"
+ Value = "0xB6"
+ Help = "Value to be written into SMI command register \to write AcpiNvs->AudioCodec to CMOS"
+ TokenType = Integer
+ TargetH = Yes
+ Range = "0-0xff"
+End
+
+TOKEN
+ Name = "SWSMI_NVOEM_CMOS_R"
+ Value = "0xB7"
+ Help = "Value to be written into SMI command register \to write CMOS:AudioCodec to AcpiNvs->AudioCodec"
+ TokenType = Integer
+ TargetH = Yes
+ Range = "0-0xff"
+End
+
+TOKEN
+ Name = "CMOS_NVOEM_OFFSET"
+ Value = "0x74"
+ Help = "select fixed Offset in CMOS. By default the offset is assigned by CmosManager, see NvOptimus.ssp"
+ TokenType = Integer
+ TargetEQU = Yes
+ TargetH = Yes
+End
+
+PATH
+ Name = "NvOptimusSMM_DIR"
+End
+
+MODULE
+ Help = "Includes NvOptimusSMM.mak to Project"
+ File = "NvOptimusSMM.mak"
+End
+
+#ELINK
+# Name = "$(NvOptimusSMM_DIR)\NvOptimusSMM.asl"
+# Parent = "GENERIC_ACPI_ASL"
+# InvokeOrder = AfterParent
+# Disable = Yes
+#End
+
+ELINK
+ Name = "$(BUILD_DIR)\NvOptimusSMM.ffs"
+ Parent = "$(BUILD_DIR)\SaInitDxe.ffs"
+ InvokeOrder = BeforeParent
+# Parent = "FV_MAIN"
+# InvokeOrder = AfterParent
+End
+
+ELINK
+ Name = "$(NvOptimusSMM_DIR)\NvOptimusSMM.SSP"
+ Parent = "ADDON_SSP_FILES"
+ InvokeOrder = AfterParent
+End
+
diff --git a/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.ssp b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.ssp
new file mode 100644
index 0000000..09c17e9
--- /dev/null
+++ b/Board/EM/SwitchableGraphics/SgTpv/NvOptimusSMM/NvOptimusSMM.ssp
@@ -0,0 +1,59 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.ssp 2 9/09/12 11:07p Joshchou $
+//
+// $Revision: 2 $
+//
+// $Date: 9/09/12 11:07p $
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/SwitchableGraphics/Sg TPV/Sg nVidia Optimus SMM/NvOptimusSMM.ssp $
+//
+// 2 9/09/12 11:07p Joshchou
+// [TAG] EIPNone
+// [Category] Improvement
+// [Description] Tpv module support for sharkbay.
+// [Files] NvOptimusSMM.mak
+// NvOptimusSMM.c
+// NvOptimusSMM.dxs
+// NvOptimusSMM.ssp
+// NvOptimusSMM.asl
+// NvOptimusSMM.cif
+//
+//**********************************************************************
+
+NvramField (CMOS_OEM_NVSWSMI_CODE)
+ OptionBits = 1
+ Default = 1
+ Checksum = NO
+// Location = MKF_CMOS_NVOEM_OFFSET, 0FFh
+EndNvramField
+
+//**********************************************************************
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************