;Copyright (c) 2002 Microsoft Corporation

[Version]
Signature="$Windows NT$"
Class=SDHost
ClassGUID={a0a588a4-c46f-4b37-b7ea-c82fe89870c6}
Provider=%Msft%
BootCritical=1
DriverVer=06/21/2006,10.0.10240.16384

[SourceDisksNames]
3426=windows cd

[SourceDisksFiles]
sdbus.sys 		= 3426
dumpsd.sys 		= 3426

; ///////////////////////////////////////////////////////////
;
;   List of manufacturers and devices
;
; ///////////////////////////////////////////////////////////

[Manufacturer]
%Generic%=Generic,NTx86
%TED%=TED,NTx86
%TI%=TI,NTx86
%Ricoh%=Ricoh,NTx86
%VIA%=VIA,NTx86
%MSI%=MSI,NTx86
%JMicron%=JMicron,NTx86
%Intel%=Intel,NTx86
%NVidia%=NVidia,NTx86
%Qualcomm%=Qualcomm,NTx86
%ARMH%=ARMH,NTx86

[ControlFlags]
BasicDriverOk=*
ExcludeFromSelect=PCI\cc_080500
ExcludeFromSelect=PCI\cc_080501
ExcludeFromSelect=PCI\VEN_1679&DEV_3000
ExcludeFromSelect=PCI\VEN_104C&DEV_AC9F
ExcludeFromSelect=PCI\VEN_1180&DEV_0822&SUBSYS_C01A144D&REV_17
ExcludeFromSelect=PCI\VEN_1106&DEV_365B
ExcludeFromSelect=PCI\VEN_1106&DEV_401B
ExcludeFromSelect=PCI\VEN_1106&DEV_95D0
ExcludeFromSelect=PCI\VEN_8086&DEV_811C&SUBSYS_10101462
ExcludeFromSelect=PCI\VEN_8086&DEV_811E&SUBSYS_10101462
ExcludeFromSelect=PCI\VEN_8086&DEV_9D2B
ExcludeFromSelect=PCI\VEN_8086&DEV_9D2C
ExcludeFromSelect=PCI\VEN_8086&DEV_9D2D
ExcludeFromSelect=PCI\VEN_197B&DEV_2381&REV_00
ExcludeFromSelect=ACPI\VEN_INT&DEV_33BA&REV_0001
ExcludeFromSelect=ACPI\VEN_INT&DEV_33BB&REV_0001
ExcludeFromSelect=ACPI\VEN_INT&DEV_33BB&REV_0002
ExcludeFromSelect=ACPI\PNP0D40
ExcludeFromSelect=ACPI\PNP0FFF
ExcludeFromSelect=ACPI\TXNW0073
ExcludeFromSelect=ACPI\QCOM7002
ExcludeFromSelect=ACPI\QCOM2465
ExcludeFromSelect=ACPI\QCOM2466
ExcludeFromSelect=ACPI\QCOM24BF
ExcludeFromSelect=ACPI\NVDA0112
ExcludeFromSelect=ACPI\NVDA0212
ExcludeFromSelect=ACPI\VEN_8086&DEV_0F14
ExcludeFromSelect=ACPI\VEN_8086&DEV_0F14&REV_0001

; ///////////////////////////////////////////////////////////
;
; Generic Device
;

[Generic.NTx86]
%PCI\CC_080500.DeviceDesc%=SDHost, PCI\CC_080500
%PCI\CC_080501.DeviceDesc%=SDHost, PCI\CC_080501
%ACPI\PNP0D40.DeviceDesc%=SDHost, ACPI\PNP0D40

; ///////////////////////////////////////////////////////////
;
; Non-Generic Devices
;
; Use Generic Device Description (%PCI\CC_080501.DeviceDesc%)to
; minimize localization.
;
; Otherwise, instances of %PCI\CC_080501.DeviceDesc% should be replaced by 
; %<SpecificID...>%
;

[Intel.NTx86]
%ACPI\PNP0FFF.DeviceDesc%=SDHostMedfield, ACPI\PNP0FFF
%ACPI\INT33BA.DeviceDesc%=SDHostIntelEMMC, ACPI\VEN_INT&DEV_33BA&REV_0001
%ACPI\INT33BA.DeviceDesc%=SDHostIntelSDIO1, ACPI\VEN_INT&DEV_33BB&REV_0001
%ACPI\INT33BA.DeviceDesc%=SDHostIntelSDIO2, ACPI\VEN_INT&DEV_33BB&REV_0002
%ACPI\INT33BA.DeviceDesc%=SDHostIntelSDIO3, ACPI\VEN_INT&DEV_33BB&REV_0003
%ACPI\VEN_8086&DEV_0F14%=SDHostIntelBayTrail, ACPI\VEN_8086&DEV_0F14
%ACPI\VEN_8086&DEV_0F14%=SDHostIntelCherryTrail, ACPI\VEN_8086&DEV_0F14&REV_0001
%PCI\VEN_8086&DEV_9D2B.DeviceDesc%=SDHostIntelCherryTrail, PCI\VEN_8086&DEV_9D2B
%PCI\VEN_8086&DEV_9D2C.DeviceDesc%=SDHostIntelCherryTrail, PCI\VEN_8086&DEV_9D2C
%PCI\VEN_8086&DEV_9D2D.DeviceDesc%=SDHostIntelCherryTrail, PCI\VEN_8086&DEV_9D2D

[TED.NTx86]
%PCI\VEN_1679&DEV_3000.DeviceDesc%=SDHost, PCI\VEN_1679&DEV_3000

[TI.NTx86]
%PCI\VEN_104C&DEV_AC9F.DeviceDesc%=SDHost, PCI\VEN_104C&DEV_AC9F

[NVidia.NTx86]

[Qualcomm.NTx86]
%ACPI\QCOM7002.DeviceDesc%=SDHostQualcomm, ACPI\QCOM7002
%ACPI\QCOM2465.DeviceDesc%=SDHostQualcomm8974, ACPI\QCOM2465
%ACPI\QCOM2466.DeviceDesc%=SDHostQualcomm8974Std, ACPI\QCOM2466
%ACPI\QCOM24BF.DeviceDesc%=SDHostQualcomm8994Std, ACPI\QCOM24BF

[ARMH.NTx86]
%ACPI\ARMH_PL180.DeviceDesc%=SDHostARMHPL180, ACPI\ARMH0180

[Ricoh.NTx86]
%PCI\CC_080501.DeviceDesc%=SDHostRicoh_1, PCI\VEN_1180&DEV_0822&SUBSYS_833810F7
%PCI\VEN_1180&DEV_0822&SUBSYS_C01A144D&REV_17%=SDHostRicoh, PCI\VEN_1180&DEV_0822&SUBSYS_C01A144D&REV_17

[VIA.NTx86]
%PCI\VEN_1106&DEV_365B.DeviceDesc%=SDHost, PCI\VEN_1106&DEV_365B
%PCI\VEN_1106&DEV_401B.DeviceDesc%=SDHost, PCI\VEN_1106&DEV_401B
%PCI\VEN_1106&DEV_95D0.DeviceDesc%=SDHost, PCI\VEN_1106&DEV_95D0

[MSI.NTx86]
%PCI\CC_080501.DeviceDesc%=SDHostMSI, PCI\VEN_8086&DEV_811C&SUBSYS_10101462
%PCI\CC_080501.DeviceDesc%=SDHostMSI, PCI\VEN_8086&DEV_811E&SUBSYS_10101462

[JMicron.NTx86]
%PCI\CC_080501.DeviceDesc%=SDHostJMicron, PCI\VEN_197B&DEV_2381&REV_00

; ///////////////////////////////////////////////////////////
;
; Service install
;

[sdbus_Service_Inst]
ServiceType    = %SERVICE_KERNEL_DRIVER%
StartType      = %SERVICE_DEMAND_START%
ErrorControl   = %SERVICE_ERROR_NORMAL%
ServiceBinary  = %12%\sdbus.sys
LoadOrderGroup = System Bus Extender
AddReg         = SDBUSServiceReg

; ///////////////////////////////////////////////////////////
;
; Registry keys
;

[SDBUSLocationReg]
HKR,,UINumberDescFormat,,%SDBUSSlot%

[SDBUSReg]
HKR,,Driver,,"sdbus.sys"

[SDBUSServiceReg]
HKR,,BootFlags,0x00010003,0x00000008
HKR,Parameters,SdCmdFlags,1,    05,01, 06,01, 08,11, 09,19, 0A,19, 0D,11, \
                                10,01, 11,01, 12,01, 17,01, 18,05, 19,05, \
                                1A,01, 1B,01, 1C,01, \
                                20,05, 21,05, 26,05, \
                                2A,01, \
                                34,02, 35,02, \
                                37,01, 38,01, \
                                22,01, 23,05, 24,01, 25,01

HKR,Parameters,SdAppCmdFlags,1, 06,01, 0D,01, 16,01, 17,01, 33,01, \
                                12,01, 19,01, 1A,01, 26,01, 2B,01, \
                                2C,01, 2D,01, 2E,01, 2F,01, 30,01, 31,01

; ///////////////////////////////////////////////////////////
;
; Copy Files
;

[CSCopyFiles]
sdbus.sys,,,0x100
dumpsd.sys,,,0x100

[DestinationDirs]
CSCopyFiles=12

; //////////////////////////////////////////////////////////
;
; Controller Specific Sections
;

;
; Standard host controller
;

[SDHost]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHost.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHost.HW]
AddReg=SDBUSLocationReg

;
; Intel SoC host controller
;

[SDHostMedfield.HW.addreg]
HKR,,CompatType,0x00010001,7
HKR,,FunctionBlockIndex,0x00010001,0

[SDHostMedfield]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostMedfield.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostMedfield.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostMedfield.HW.addreg

[SDHostIntelEMMC.HW.addreg]
HKR,,CompatType,0x00010001,7
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,OverrideFlags,0x00010001,0x600000

[SDHostIntelEMMC]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostIntelEMMC.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostIntelEMMC.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostIntelEMMC.HW.addreg

[SDHostIntelSDIO1.HW.addreg]
HKR,,CompatType,0x00010001,7
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,OverrideFlags,0x00010001,0x200000

[SDHostIntelSDIO1]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostIntelSDIO1.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostIntelSDIO1.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostIntelSDIO1.HW.addreg

[SDHostIntelSDIO2.HW.addreg]
HKR,,CompatType,0x00010001,7
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,OverrideFlags,0x00010001,0x204000

[SDHostIntelSDIO2]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostIntelSDIO2.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostIntelSDIO2.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostIntelSDIO2.HW.addreg

[SDHostIntelSDIO3.HW.addreg]
HKR,,CompatType,0x00010001,7
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,OverrideFlags,0x00010001,0x204800

[SDHostIntelSDIO3]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostIntelSDIO3.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostIntelSDIO3.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostIntelSDIO3.HW.addreg

[SDHostIntelBayTrail.HW.addreg]
HKR,,CompatType,0x00010001,0xB
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,OverrideFlags,0x00010001,0x60200000

[SDHostIntelBayTrail]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostIntelBayTrail.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostIntelBayTrail.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostIntelBayTrail.HW.addreg

[SDHostIntelCherryTrail.HW.addreg]
HKR,,CompatType,0x00010001,0xB
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,OverrideFlags,0x00010001,0x60200000

[SDHostIntelCherryTrail]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostIntelCherryTrail.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostIntelCherryTrail.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostIntelCherryTrail.HW.addreg

;
; TI host controller OMAP4
;

[SDHostTIOMAP4.HW.addreg]
HKR,,CompatType,0x00010001,5
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,OverrideFlags,0x00010001,0x10400000

[SDHostTIOMAP4]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostTIOMAP4.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostTIOMAP4.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostTIOMAP4.HW.addreg

;
; NVidia host controller (T30)
;

[SDHostNVidia.HW.addreg]
HKR,,CompatType,0x00010001,6
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,OverrideFlags,0x00010001,0x10000000
HKR,,HostRevision,0x00010001,0

[SDHostNVidia]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostNVidia.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostNVidia.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostNVidia.HW.addreg

;
; NVidia host controller (T40)
;

[SDHostNVidiaT40.HW.addreg]
HKR,,CompatType,0x00010001,6
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,HostRevision,0x00010001,1

[SDHostNVidiaT40]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostNVidiaT40.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostNVidiaT40.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostNVidiaT40.HW.addreg

;
; Qualcomm host controller (8960)
;

[SDHostQualcomm.HW.addreg]
HKR,,CompatType,0x00010001,9
HKR,,FunctionBlockIndex,0x00010001,1
HKR,,OverrideFlags,0x00010001,0x10000000

[SDHostQualcomm]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostQualcomm.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostQualcomm.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostQualcomm.HW.addreg

;
; Qualcomm host controller (8974 Legacy)
;

[SDHostQualcomm8974.HW.addreg]
HKR,,CompatType,0x00010001,9
HKR,,FunctionBlockIndex,0x00010001,1
HKR,,OverrideFlags,0x00010001,0x10000000

[SDHostQualcomm8974]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostQualcomm8974.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostQualcomm8974.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostQualcomm8974.HW.addreg

;
; Qualcomm host controller (8974 Standard)
;

[SDHostQualcomm8974Std.HW.addreg]
HKR,,CompatType,0x00010001,10
HKR,,FunctionBlockIndex,0x00010001,0

[SDHostQualcomm8974Std]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostQualcomm8974Std.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostQualcomm8974Std.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostQualcomm8974Std.HW.addreg

;
; Qualcomm host controller (8994 Standard)
;

[SDHostQualcomm8994Std.HW.addreg]
HKR,,CompatType,0x00010001,10
HKR,,FunctionBlockIndex,0x00010001,0
HKR,,HostRevision,0x00010001,1

[SDHostQualcomm8994Std]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostQualcomm8994Std.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostQualcomm8994Std.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostQualcomm8994Std.HW.addreg

;
; ARMH PL180 host controller
;

[SDHostARMHPL180.HW.addreg]
HKR,,CompatType,0x00010001,0
HKR,,FunctionBlockIndex,0x00010001,2
HKR,,OverrideFlags,0x00010001,0x8800000
HKR,,ErrorRecoveryDelay,0x00010001,10000
HKR,,Pl180MaxSpeedClockRegister,0x00010001,0

[SDHostARMHPL180]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostARMHPL180.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostARMHPL180.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostARMHPL180.HW.addreg

;
; Ricoh host controller R5C841
;

[SDHostRicoh.HW.addreg]
HKR,,CardPresenceCheckDelay,0x00010001,500000

[SDHostRicoh]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostRicoh.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostRicoh.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostRicoh.HW.addreg

;
; Ricoh host contoller used on Panasonic CF-52
;

[SDHostRicoh_1.HW.addreg]
HKR,,ResetDelay,0x00010001,0

[SDHostRicoh_1]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostRicoh_1.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostRicoh_1.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostRicoh_1.HW.addreg

;
; MSI X320
;
; Disable 2 Unused Controllers with SUBSYS_10101462 on MSI X320
; Hardware IDs: 
;    PCI\VEN_8086&DEV_811C&SUBSYS_10101462
;    PCI\VEN_8086&DEV_811E&SUBSYS_10101462
;

[SDHostMSI.HW.addreg]
HKR,,Disabled,0x00010001,1

[SDHostMSI]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostMSI.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostMSI.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostMSI.HW.addreg

;
; JMicron Host Controller JMB38x Chipset Rev 0, SDMA Mode Only
;

[SDHostJMicron.HW.addreg]
HKR,,DmaMethod,0x00010001,2
HKR,,OverrideFlags,0x00010001,0x07000800

[SDHostJMicron]
CopyFiles=CSCopyFiles
AddReg=SDBUSReg

[SDHostJMicron.Services]
AddService = sdbus, 2, sdbus_Service_Inst

[SDHostJMicron.HW]
AddReg=SDBUSLocationReg
AddReg=SDHostJMicron.HW.addreg

; ///////////////////////////////////////////////////////////
[Strings]
; ///////////////////////////////////////////////////////////

; ///////////////////////////////////////////////////////////
;
; Localizable strings below
;

Generic="SDA Standard Compliant SD Host Controller Vendor"

;
; Device Decription strings
;

;
; PC
;

PCI\VEN_104C&DEV_AC9F.DeviceDesc="Texas Instruments Secure Digital host controller"
PCI\VEN_1679&DEV_3000.DeviceDesc="Tokyo Electron SD Standard host controller"

PCI\VEN_1180&DEV_0822&SUBSYS_C01A144D&REV_17="Ricoh Secure Digital host controller R5C841"

PCI\VEN_1106&DEV_365B.DeviceDesc="VIA Secure Digital host controller"
PCI\VEN_1106&DEV_401B.DeviceDesc="VIA Secure Digital host controller"
PCI\VEN_1106&DEV_95D0.DeviceDesc="VIA Secure Digital host controller"

PCI\CC_080500.DeviceDesc="SDA Standard Compliant SD Host Controller"
PCI\CC_080501.DeviceDesc="SDA Standard Compliant SD Host Controller"

;
; SoC
;

;
; The IDs marked deprecated are not finalized and need to be replaced 
; by the correct IDs the vendors supply in the firmware.
;

ACPI\PNP0D40.DeviceDesc="SDA Standard Compliant SD Host Controller"

ACPI\PNP0FFF.DeviceDesc="Intel SD Host Controller (deprecated)"
ACPI\INT33BA.DeviceDesc="Intel SD Host Controller"
ACPI\VEN_8086&DEV_0F14="Intel SD Host Controller"
ACPI\QCOM7002.DeviceDesc="Qualcomm SoC Secure Digital host controller"
ACPI\QCOM2465.DeviceDesc="Qualcomm SoC Secure Digital host controller"
ACPI\QCOM2466.DeviceDesc="Qualcomm SoC Secure Digital host controller"
ACPI\QCOM24BF.DeviceDesc="Qualcomm SoC Secure Digital host controller"
ACPI\ARMH_PL180.DeviceDesc="ARM Holdings PL180 Secure Digital host controller"

PCI\VEN_8086&DEV_9D2B.DeviceDesc="Intel SD Host Controller"
PCI\VEN_8086&DEV_9D2C.DeviceDesc="Intel SD Host Controller"
PCI\VEN_8086&DEV_9D2D.DeviceDesc="Intel SD Host Controller"

;
; Slot description string
;

SDBUSSlot="SD Host Slot %1!u!"

; ///////////////////////////////////////////////////////////
;
; Non-localizable strings below
;

SERVICE_KERNEL_DRIVER = 1
SERVICE_BOOT_START    = 0
SERVICE_SYSTEM_START  = 1
SERVICE_DEMAND_START  = 3
SERVICE_ERROR_NORMAL  = 1
SERVICE_ERROR_IGNORE  = 0
REG_EXPAND_SZ         = 0x00020000
REG_DWORD             = 0x00010001
REG_SZ                = 0x00000000

;
; Manufacturer name strings
;

Msft="Microsoft"
TED="Tokyo Electron Device"
TI="Texas Instruments"
Ricoh="Ricoh"
VIA="VIA Technologies, Inc"
MSI="MSI"
JMicron="JMicron"
Intel="Intel"
NVidia="NVidia"
Qualcomm="Qualcomm Incorporated"
ARMH="ARM Holdings"
