;
; Copyright (c) Microsoft Corporation, All Rights Reserved
;
; TPM.INF  -- This file contains descriptions of the general purpose
;             TPM driver
;

[Version]
Signature   = "$WINDOWS NT$"
Class       = SecurityDevices
ClassGuid   = {d94ee5d8-d189-4994-83d2-f68d7d41b0e6}
Provider    = %MSFT%
PnpLockdown = 1
DriverVer=06/21/2006,10.0.10240.16384

[ControlFlags]
ExcludeFromSelect=*PNP0C31,ACPI\PNP0C31,ACPI\BCM0101,ACPI\BCM0102,*MSFT0101,ACPI\MSFT0101,*FTPM0101,ACPI\FTPM0101

[SourceDisksNames]
3426=windows cd

[SourceDisksFiles]
tpm.sys 		= 3426

[DestinationDirs]
DefaultDestDir = 12        ; DIRID_DRIVERS
Tpm_CoInstaller_CopyFiles = 11

;=========================================================================
; Class section

[ClassInstall32]
AddReg = ClassInstall_AddReg

[ClassInstall_AddReg]
HKR,,,,"@%SystemRoot%\System32\SysClass.Dll,-3020"
HKR,,IconPath,%REG_MULTI_SZ%,"%systemroot%\system32\setupapi.dll,-37"
HKR,,BootCritical,,1
;=========================================================================

[Manufacturer]
%STD%=Standard,NTx86
%BROADCOM%=Broadcom,NTx86
%XCG%=ftpmSimBase,NTx86
%STD%=Tpm2Base,NTx86

[Standard.NTx86]
%STD_DESC%=TpmInstall,ACPI\PNP0C31
%STD_DESC%=TpmInstall,*PNP0C31

[Broadcom.NTx86]
%BROADCOM_DESC1%=BroadcomA1Install,ACPI\BCM0101
%STD_DESC%=BroadcomA2Install,ACPI\BCM0102

[ftpmSimBase.NTx86]
%XCG_DESC%=ftpmSimBaseInstall,ACPI\FTPM0101
%XCG_DESC%=ftpmSimBaseInstall,*FTPM0101

[Tpm2Base.NTx86]
%TPM2_DESC%=Tpm2BaseInstall,ACPI\MSFT0101
%TPM2_DESC%=Tpm2BaseInstall,*MSFT0101
%TPM2_DESC%=Tpm2BaseInstall,{36DEAA79-C5DD-447C-95E6-B3859589291A}\TrEETPM

;=========================================================================
; Standard TPM section

[TpmInstall]
CopyFiles=TpmInstall.CopyFiles

[TpmInstall.CopyFiles]
tpm.sys,,,0x100

[TpmInstall.HW]
AddReg=TpmInstall.AddReg
AddReg=Tpm12.AddReg

[TpmInstall.AddReg]
;
; TPM device should only be accessible by the authenticated user, and all appcontainers
;
HKR,,Security,,"D:P(A;;GA;;;AU)(A;;GA;;;S-1-15-2-1)"

[Tpm12.AddReg]
; This device is a 1.2 device
HKR,,"HardwareType",0x00010001,12


[TpmInstall.Services]
; SPSVCINST_ASSOCSERVICE=0x0002
AddService=TPM,0x0002,TpmInstall.AddService,TpmInstall.AddService.EventLog

[TpmInstall.AddService]
ServiceType=1  ; SERVICE_KERNEL_DRIVER
StartType=3    ; DEMAND START
LoadOrderGroup=Boot Bus Extender; Earliest possible group
ErrorControl=1 ; SERVICE_ERROR_NORMAL
ServiceBinary=%10%\system32\drivers\tpm.sys
DisplayName=%TPM%
Description=%TPMDesc%
AddReg=TpmInstall.AddService.AddReg

[TpmInstall.AddService.AddReg]
;
; Early boot
;
HKR,,BootFlags,0x00010003,0x20 ; CM_SERVICE_MEASURED_BOOT_LOAD

[TpmInstall.AddService.EventLog]
AddReg = TpmInstall.AddReg.EventLog

[TpmInstall.AddReg.EventLog]
;
; Do not attempt to install the legacy event registration here. It will get stomped by ETW manifest registration anyway.
;

;=========================================================================
; Broadcom A1 section

; Same files are copied as for other TPM's
[BroadcomA1Install]
CopyFiles=TpmInstall.CopyFiles

[BroadcomA1Install.HW]
AddReg=BroadcomA1.AddReg
AddReg=TpmInstall.AddReg
AddReg=Tpm12.AddReg

[BroadcomA1.AddReg]
;
; Additional entries are DWORD (0x00010001) flags to the driver
HKR,,"SkipInitCommands",0x00010001,1
HKR,,"SkipOverflowCheck",0x00010001,1
HKR,,"SkipUnderflowCheck",0x00010001,1
HKR,,"UsePortBasedIO",0x00010001,1
HKR,,"DelayExpectBitCheck",0x00010001,1

[BroadcomA1Install.Services]
;
; Same as for other TPM's
; SPSVCINST_ASSOCSERVICE=0x0002
AddService=TPM,0x0002,TpmInstall.AddService,TpmInstall.AddService.EventLog

;=========================================================================
; Broadcom A2 section

; Same files are copied as for other TPM's
[BroadcomA2Install]
CopyFiles=TpmInstall.CopyFiles

[BroadcomA2Install.HW]
AddReg=BroadcomA2.AddReg
AddReg=TpmInstall.AddReg
AddReg=Tpm12.AddReg

[BroadcomA2.AddReg]
;
; Additional entries are DWORD (0x00010001) flags to the driver
HKR,,"DelayExpectBitCheck",0x00010001,1

[BroadcomA2Install.Services]
;
; Same as for other TPM's
; SPSVCINST_ASSOCSERVICE=0x0002
AddService=TPM,0x0002,TpmInstall.AddService,TpmInstall.AddService.EventLog

;=========================================================================
; ftpmSimBase section

; Same files are copied as for other TPM's
[ftpmSimBaseInstall]
CopyFiles=TpmInstall.CopyFiles

[ftpmSimBaseInstall.HW]
AddReg=ftpmSimBaseInstall.AddReg
AddReg=TpmInstall.AddReg

[ftpmSimBaseInstall.AddReg]
; This device is for the simulator
HKR,,"HardwareType",0x00010001,19

[ftpmSimBaseInstall.Services]
;
; Same as for other TPM's
; SPSVCINST_ASSOCSERVICE=0x0002
AddService=TPM,0x0002,TpmInstall.AddService,TpmInstall.AddService.EventLog

;=========================================================================
; TPM2 installation

; Same files are copied as for other TPM's
[Tpm2BaseInstall]
CopyFiles=TpmInstall.CopyFiles

[Tpm2BaseInstall.HW]
AddReg=Tpm2BaseInstall.AddReg
AddReg=TpmInstall.AddReg

[Tpm2BaseInstall.AddReg]
; this device is a 2.0 mem-based interface
HKR,,"HardwareType",0x00010001,20


[Tpm2BaseInstall.Services]
;
; Same as for other TPM's
; SPSVCINST_ASSOCSERVICE=0x0002
AddService=TPM,0x0002,TpmInstall.AddService,TpmInstall.AddService.EventLog

;=========================================================================
; Tpm Coinstaller installation ------
;
[Tpm.NT.CoInstallers]
AddReg=Tpm_CoInstaller_AddReg
CopyFiles=Tpm_CoInstaller_CopyFiles

[Tpm_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01000.dll,WdfCoInstaller"

[Tpm_CoInstaller_CopyFiles]
WdfCoInstaller01000.dll

[Tpm_Device.NT.Wdf]
KmdfService = Tpm, Tpm_wdfsect
[Tpm_wdfsect]
KmdfLibraryVersion = 1.0

[Strings]
; localizable strings
MSFT         = "Microsoft"
STD          = "(Standard)"
STD_DESC     = "Trusted Platform Module 1.2"
BROADCOM     = "Broadcom"
BROADCOM_DESC1= "Trusted Platform Module 1.2 (with Port IO)"
ClassName    = "Security Devices"
XCG          = "XCG/MSR"
XCG_DESC     = "Trusted Platform Module 2.0 (Simulator-backed)"
TPM2_DESC    = "Trusted Platform Module 2.0"
TPM          = "TPM"
TPMDesc      = "TPM Driver"

; non-localizable strings
REG_MULTI_SZ = 0x00010000
