;=============================================================================
;
; Copyright (c) Intel Corporation (2006).
;
; INTEL MAKES NO WARRANTY OF ANY KIND REGARDING THE CODE.  THIS CODE IS
; LICENSED ON AN "AS IS" BASIS AND INTEL WILL NOT PROVIDE ANY SUPPORT,
; ASSISTANCE, INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL DOES NOT
; PROVIDE ANY UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY
; DISCLAIMS ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY
; PARTICULAR PURPOSE, OR ANY OTHER WARRANTY.  Intel disclaims all liability,
; including liability for infringement of any proprietary rights, relating to
; use of the code. No license, express or implied, by estoppel or otherwise,
; to any intellectual property rights is granted herein.
;
;=============================================================================

;Silent Stream enabled

[Version]
Signature="$Windows NT$"
Class=MEDIA
ClassGuid={4d36e96c-e325-11ce-bfc1-08002be10318}
Provider=Intel(R) Corporation
CatalogFile=INTCHDMI.CAT
DriverVer=12/05/2008,6.10.01.2068

[DestinationDirs]
DefaultDestDir      =10; dirid = \system32\drivers
IntcHdmiModel.CopyList =10,system32\drivers
IntcHdmiModel.Coin.CopyList = 11 ; (system32)

[SourceDisksNames]
222=%DiskId1%,"",222

[SourceDisksFiles]
IntcHdmi.sys=222
hdmicoin.dll=222

[Manufacturer]
Intel(R) Corporation=Intel,NT.5.1, NTx86.6.0

;============================================================================

[ControlFlags]
ExcludeFromSelect = *

[Intel]
; Leave this blank since we don't support anything other than Vista 32-bit

[Intel.NT.5.1]
; Leave this blank since we don't support anything other than Vista 32-bit

[Intel.NTx86.6.0]
; ++ Silicon Image
%IntcHdmiFunctionDriver.SiliconImageWaldo.DeviceDesc% = IntcHdmiModel, HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_1095&DEV_1390
%IntcHdmiFunctionDriver.SiliconImageWaldo.DeviceDesc% = IntcHdmiModel, HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_1095&DEV_1392
; -- Silicon Image
; ++ Intel
%IntcHdmiFunctionDriver.IntelHDMI.DeviceDesc% =      IntcHdmiModel, HDAUDIO\FUNC_01&VEN_8086&DEV_2802&SUBSYS_80860101
%IntcHdmiFunctionDriver.IntelHDMI.DeviceDesc% =      IntcHdmiModel, HDAUDIO\FUNC_01&VEN_8086&DEV_2803&SUBSYS_80860101
%IntcHdmiFunctionDriver.IntelHDMI.DeviceDesc% =      IntcHdmiModel, HDAUDIO\FUNC_01&VEN_8086&DEV_2803
; -- Intel

[IntcHdmiModel]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration,WDMAUDIO.Registration,mssysfx.CopyFilesAndRegister
CopyFiles = IntcHdmiModel.CopyList
AddReg    = IntcHdmiModel.AddReg, IntcHdmiInit.AddReg
AddProperty = IntcHdmiBranding.AddProperty

;/++Coinstall
[IntcHdmiModel.CoInstallers]
AddReg = IntcHdmiModel.Coin.AddReg
CopyFiles = IntcHdmiModel.Coin.CopyList

[IntcHdmiModel.Coin.CopyList]
HdmiCoin.dll

[IntcHdmiModel.Coin.AddReg]
HKR,,CoInstallers32,0x00010000,"HdmiCoin.dll,HdmiCoInstaller"

;/--Coinstall

[IntcHdmiModel.HW]
AddReg = IntcHdmiSecurity.AddReg

[IntcHdmiModel.Services]
AddService=IntcHdmiAddService, 0x00000002, IntcHdmi_Service_Install

[IntcHdmi_Service_Install]
DisplayName   = %IntelHDMIDriverForHDAudio.SvcDesc%
ServiceType   = 1
StartType     = 3
ErrorControl  = 1
ServiceBinary = %10%\system32\drivers\IntcHdmi.sys

[IntcHdmiModel.CopyList]
IntcHdmi.sys

[IntcHdmiInit.AddReg]
;; Sample Section to Illustrate the format for Initialization verbs.
;; Uncomment and add appropriate verbs as needed.
;; Note that the top nibble of the verb (Codec Address) must be '0'.
;HKR,InitVerbs,NumVerbs,0x00010001, 0x00000004 ; Example: Number of verbs in the init section
;HKR,InitVerbs,0000,    0x00010001, 0x01E71C01 ; Sets first byte of pin config info
;HKR,InitVerbs,0001,    0x00010001, 0x01E71D44 ; Sets second byte of pin config info
;HKR,InitVerbs,0002,    0x00010001, 0x01E71E21 ; Sets third byte of pin config info
;HKR,InitVerbs,0003,    0x00010001, 0x01E71F00 ; Sets fourth byte of pin config info

[IntcHdmiModel.AddReg]
HKR,,Driver,,IntcHdmi.sys

HKR,Drivers,SubClasses,,"wave,midi,mixer,aux"

HKR,Drivers\wave\wdmaud.drv,Driver,,wdmaud.drv
HKR,Drivers\midi\wdmaud.drv,Driver,,wdmaud.drv
HKR,Drivers\mixer\wdmaud.drv,Driver,,wdmaud.drv
HKR,Drivers\aux\wdmaud.drv,Driver,,wdmaud.drv

HKR,Drivers\wave\wdmaud.drv,Description,,%IntcHdmiDeviceDescription%
HKR,Drivers\midi\wdmaud.drv,Description,,%IntcHdmiDeviceDescription%
HKR,Drivers\mixer\wdmaud.drv,Description,,%IntcHdmiDeviceDescription%
HKR,Drivers\aux\wdmaud.drv,Description,,%IntcHdmiDeviceDescription%

HKR,,SetupPreferredAudioDevices,3,01,00,00,00
HKR,,DisableSetupDiChangeState,1,00,00,00,00 ; Set to 01,00,00,00 to disable proppage restarting of driver on policy change
; Driver global settings
HKR,GlobalSettings,ResetAudioFgOnStart,1,01,00,00,00 ; Enables resetting of audio FG on driver start
HKR,GlobalSettings,SysAudioTopoMiniportWorkaround,1,01,00,00,00 ; Enables holding ref on topo port & miniport when device is uninstantiated

HKR,GlobalSettings,ValidateCodecWrites,1,00,00,00,00 ; Enables readback of writes to codec registers
HKR,GlobalSettings,SendFakePcxCfgDefVerbs,1,00,00,00,00 ; Enables sending fake pin config default table
HKR,GlobalSettings,SpdifOutputEchosRearRenderWhenNoAc3,1,00,00,00,00 ; Slaves rear panel front channels to SPDIF
HKR,GlobalSettings,EnableDynamicDevices,1,01,00,00,00 ; Headphone will come and go dynamically.
HKR,GlobalSettings,SetSpdifVCfg,1,01,00,00,00 ;  VCfg bit will be set on SPDIF out
HKR,GlobalSettings\SilentStream,SSUseSilentStream,1,00,00,00,01 ; Silent Stream enabled
HKR,GlobalSettings,Config,0x00010001,0x0080

HKR,PowerSettings,ConservationIdleTime,1,ff,ff,ff,ff
HKR,PowerSettings,PerformanceIdleTime,1,ff,ff,ff,ff
HKR,PowerSettings,IdlePowerState,1,00,00,00,00


[IntcHdmiBranding.AddProperty]
DeviceVendorWebsite,,,,"http://www.intel.com"

[IntcHdmiModel.Interfaces]
; HDMI Interfaces
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutWave%, IntcHdmiModel.HDMIOutputWave
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_HDMIOutWave%, IntcHdmiModel.HDMIOutputWave
AddInterface=%KSCATEGORY_REALTIME%,%KSNAME_HDMIOutWave%, IntcHdmiModel.HDMIOutputWave

AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo%, IntcHdmiModel.HDMIOutputTopo

AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo2_48%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo2_48%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo2_96%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo2_96%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo2_192%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo2_192%, IntcHdmiModel.HDMIOutputTopo

AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo4_48%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo4_48%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo4_96%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo4_96%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo4_192%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo4_192%, IntcHdmiModel.HDMIOutputTopo

AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo6_48%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo6_48%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo6_96%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo6_96%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo6_192%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo6_192%, IntcHdmiModel.HDMIOutputTopo

AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo8_48%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo8_48%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo8_96%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo8_96%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_HDMIOutTopo8_192%, IntcHdmiModel.HDMIOutputTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,%KSNAME_HDMIOutTopo8_192%, IntcHdmiModel.HDMIOutputTopo

; Settings for system effect begins
;
; System Effects settings
[IntcHdmiModel.SysFx.Render]
HKR,"FX\\0",%PKEY_ItemNameDisplay%,,%FX_FriendlyName%
HKR,"FX\\0",%PKEY_FX_PreMixClsid%,,%FX_PREMIX_CLSID%
HKR,"FX\\0",%PKEY_FX_PostMixClsid%,,%FX_POSTMIX_CLSID%
HKR,"FX\\0",%PKEY_FX_UiClsid%,,%FX_UI_CLSID%
HKR,"FX\\0",%PKEY_FX_Association%,,%KSNODETYPE_ANY%
; Settings for system effect ends

;EndPoint Settings
[IntcHdmiModel.EP.Render]
HKR,"EP\\0", %PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
;16bit 48000hz
HKR,"EP\\0", %PKEY_AudioEngine_OEMFormat%, 0x00000001, 41,00,8C,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,EE,02,00,04,00,10,00,16,00,10,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71
HKR,"EP\\0", %PKEY_AudioEndpoint_Ext_UiClsid%,,%AUDIOENDPOINT_EXT_UI_CLSID%


; HDMI Render
[IntcHdmiModel.HDMIOutputWave]
AddReg = IntcHdmiModel.HDMIOutputWave.AddReg

[IntcHdmiModel.HDMIOutputWave.AddReg]
HKR,,FriendlyName,,%HDMIOutWaveDeviceName%
HKR,,CLSID,,%Proxy.CLSID%

HKLM,SYSTEM\CurrentControlSet\Control\MediaCategories\%GUID.HDMI_OUT_PIN%,Name,,%HDMI_OUT.PinName%
HKLM,SYSTEM\CurrentControlSet\Control\MediaCategories\%GUID.HDMI_OUT_PIN%,Display,1,00,00,00,00
HKLM,SYSTEM\CurrentControlSet\Control\MediaCategories\%IntcHdmiGuidDisableDigitalOutput%,Name,,%DisableDigitalOutputName%
HKLM,SYSTEM\CurrentControlSet\Control\MediaCategories\%IntcHdmiGuidDisableDigitalOutput%,Display,1,00,00,00,00

[IntcHdmiModel.HDMIOutputTopo]
AddReg = IntcHdmiModel.HDMIOutputTopo.AddReg, IntcHdmiModel.SysFx.Render, IntcHdmiModel.EP.Render

[IntcHdmiModel.HDMIOutputTopo.AddReg]
HKR,,FriendlyName,,%HDMIOutTopoDeviceName%
HKR,,CLSID,,%Proxy.CLSID%

[IntcHdmiSecurity.AddReg]
; FILE_DEVICE_SOUND
HKR,,DeviceType,0x10001,0x0000001D
; SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RWX_RES_RWX
HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GRGWGX;;;BA)(A;;GRGWGX;;;WD)(A;;GRGWGX;;;RC)"

[Strings]
DiskId1 = "Intel(R) High Definition Audio HDMI Driver. Installation Disk" ; {PlaceHolder="HDMI","HD Audio HDMI"}
; ++ Silicon Image
IntcHdmiFunctionDriver.SiliconImageWaldo.DeviceDesc = "Intel(R) High Definition Audio HDMI" ; {PlaceHolder="HDMI","HD Audio HDMI"}
; -- Silicon Image
IntelHDMIDriverForHDAudio.SvcDesc = "Intel(R) High Definition Audio HDMI" ; {PlaceHolder="HDMI","HD Audio HDMI"}
; ++ Intel
IntcHdmiFunctionDriver.IntelHDMI.DeviceDesc = "Intel(R) High Definition Audio HDMI"
;--Intel

; These are the name strings for the wave miniports displayed in mmsys.cpl
HDMIOutWaveDeviceName =               "HDMI Device" ; {PlaceHolder="HD Audio HDMI"}

; These are the dac names, probably only displayed by ksstudio
PrimaryLineOutDacName =               "HD Audio line out" ; {PlaceHolder="HD Audio HDMI"}
 
; These are the name strings for the topo miniports displayed in mmsys.cpl
HDMIOutTopoDeviceName =               "HDMI Device Mixer" ; {PlaceHolder="HD Audio HDMI"}

DisableDigitalOutputName = "Disable Digital Output"
IntcHdmiDeviceDescription = "Intel(R) High Definition Audio HDMI" ; {PlaceHolder="HDMI","HD Audio HDMI"}
HDMI_OUT.PinName = "HDMI Device" ; localizeable

; These are the strings passed to PcRegisterSubdevice for wave ports
KSNAME_HDMIOutWave = "HDMIOutputWave" ; non-localizable

; These are the strings passed to PcRegisterSubdevice for topo ports
KSNAME_HDMIOutTopo  = "HDMIOutputTopo" ; non-localizable


KSNAME_HDMIOutTopo2_48 = "HDMIOutputTopo2_48" ; non-localizable
KSNAME_HDMIOutTopo2_96 = "HDMIOutputTopo2_96" ; non-localizable
KSNAME_HDMIOutTopo2_192 = "HDMIOutputTopo2_192" ; non-localizable


KSNAME_HDMIOutTopo4_48 = "HDMIOutputTopo4_48" ; non-localizable
KSNAME_HDMIOutTopo4_96 = "HDMIOutputTopo4_96" ; non-localizable
KSNAME_HDMIOutTopo4_192 = "HDMIOutputTopo4_192" ; non-localizable


KSNAME_HDMIOutTopo6_48 = "HDMIOutputTopo6_48" ; non-localizable
KSNAME_HDMIOutTopo6_96 = "HDMIOutputTopo6_96" ; non-localizable
KSNAME_HDMIOutTopo6_192 = "HDMIOutputTopo6_192" ; non-localizable


KSNAME_HDMIOutTopo8_48 = "HDMIOutputTopo8_48" ; non-localizable
KSNAME_HDMIOutTopo8_96 = "HDMIOutputTopo8_96" ; non-localizable
KSNAME_HDMIOutTopo8_192 = "HDMIOutputTopo8_192" ; non-localizable


KSCATEGORY_AUDIO = "{6994AD04-93EF-11D0-A3CC-00A0C9223196}" ; non-localizable
KSCATEGORY_RENDER = "{65E8773E-8F56-11D0-A3B9-00A0C9223196}" ; non-localizable
KSCATEGORY_CAPTURE = "{65E8773D-8F56-11D0-A3B9-00A0C9223196}" ; non-localizable
KSCATEGORY_TOPOLOGY = "{DDA54A40-1E4C-11D1-A050-405705C10000}" ; non-localizable
KSCATEGORY_REALTIME = "{EB115FFC-10C8-4964-831D-6DCB02E6F23F}" ; non-localizable
Proxy.CLSID = "{17CCA71B-ECD7-11D0-B908-00A0C9223196}" ; non-localizable
IntcHdmiGuidDisableDigitalOutput = "{BEAD490D-AD9F-47f4-AAAF-78222AF487BE}" ; non-localizable
GUID.HDMI_OUT_PIN = "{ADF3C2D5-3173-423e-BBE5-82BCDD9E3963}" ; Nodes (non-localizeable)

;Information for FX
; PropertyKeys
PKEY_FX_Association  = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},0"
PKEY_FX_PreMixClsid  = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},1"
PKEY_FX_PostMixClsid = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},2"
PKEY_FX_UiClsid      = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},3"
PKEY_ItemNameDisplay = "{B725F130-47EF-101A-A5F1-02608C9EEBAC},10"

FX_UI_CLSID      = "{5860E1C5-F95C-4a7a-8EC8-8AEF24F379A1}"
KSNODETYPE_ANY   = "{00000000-0000-0000-0000-000000000000}"
FX_PREMIX_CLSID  = "{62dc1a93-ae24-464c-a43e-452f824c4250}"
FX_POSTMIX_CLSID = "{637c490d-eee3-4c0a-973f-371958802da2}"
FX_FriendlyName  = "Microsoft Audio Home Theater Effects"

;Endpoint

;property keys
PKEY_AudioEndpoint_Ext_UiClsid  = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},1"
PKEY_AudioEndpoint_Association  = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},2"
PKEY_AudioEngine_OEMFormat = "{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3"

AUDIOENDPOINT_EXT_UI_CLSID = "{6C57B2A2-91F5-4b90-93D5-FAB82485ECA6}"