;/++
;
;Copyright (c) Oxford Semiconductor Inc.  All rights reserved.
;
;Module Name:
;    OxPCIeMf.inf
;
;Abstract:
;    PCI Express MF WDF driver installation file.
;
;--*/


[Version]
Signature                   = "$Windows NT$"
Class                       = MultiportSerial
ClassGuid                   = {50906cb8-ba12-11d1-bf5d-0000f805f530}
Provider                    = %Oxsemi%
CatalogFile                 = OxPCIeMf.cat
;#OxData#DriverVer                   = [[UartDate]],[[UartVersion]]
DriverVer                   = 01/16/2008,1.00.0000.14
;#OxEndData

[DestinationDirs]
DestinationDirs_SystemDir   = 11   ; %windir%\system32
DestinationDirs_DriversDir  = 12   ; %windir%\system32\drivers

[SourceDisksNames]
0=%Desc_0%



[ControlFlags]
ExcludeFromSelect           = *


[SourceDisksFiles]
OxPCIeMf.sys                = 0
OxPCIeSer.sys               = 0
OxPCIeUi.dll                = 0
;#OxData#[[BrandingFile]].oxbe              = 0
OxPCIeSer.oxbe              = 0
;#OxEndData
;#OxData#[[BrandingFile]].png               = 0
OxPCIeSer.png               = 0
;#OxEndData



[Manufacturer]
%Oxsemi%                    = Oxsemi,ntAMD64


; For Win2K
[Oxsemi]
;#OxData#%MfDesc%                   = MfInstSect,PCI\VEN_[[MfVendorId]]&DEV_[[MfDeviceId]]
; PCIe952, mode 1: function 3, 1UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C11B
; PCIe952, mode 1: function 3, 1UART, +GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C11F
; PCIe952, mode 3: function 0, 1UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C138
; PCIe952, mode 3: function 1, 1UART, +GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C13D
; PCIe952, mode 5: function 0, 2UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C158
; PCIe952, mode 5: function 1, 2UART, +GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C15D
;
; PCIe954, mode 0: function 0, 4UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C208
; PCIe954, mode 0: function 1, 4UART, +GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C20D
;
; PCIe958, mode 0: function 0, 8UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C308
; PCIe958, mode 0: function 1, 8UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C30D
;
; PCIe200, mode 0: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C40B
; PCIe200, mode 0: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C40F
; PCIe200, mode 1: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C41B
; PCIe200, mode 1: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C41F
; PCIe200, mode 2: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C42B
; PCIe200, mode 2: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C42F
; PCIe200, mode 3: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C43B
; PCIe200, mode 3: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C43F
; PCIe200, mode 4: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C44B
; PCIe200, mode 4: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C44F
; PCIe200, mode 5: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C45B
; PCIe200, mode 5: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C45F
; PCIe200, mode 6: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C46B
; PCIe200, mode 6: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C46F
; PCIe200, mode 7: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C47B
; PCIe200, mode 7: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C47F
; PCIe200, mode 8: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C48B
; PCIe200, mode 8: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C48F
; PCIe200, mode 9: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C49B
; PCIe200, mode 9: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C49F
; PCIe200, mode A: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4AB
; PCIe200, mode A: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4AF
; PCIe200, mode B: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4BB
; PCIe200, mode B: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4BF
; PCIe200, mode C: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4CB
; PCIe200, mode C: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4CF
;#OxEndData

; For XP and later
[Oxsemi.ntAMD64]
;#OxData#%MfDesc%                   = MfInstSect,PCI\VEN_[[MfVendorId]]&DEV_[[MfDeviceId]]
; PCIe952, mode 1: function 3, 1UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C11B
; PCIe952, mode 1: function 3, 1UART, +GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C11F
; PCIe952, mode 3: function 0, 1UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C138
; PCIe952, mode 3: function 1, 1UART, +GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C13D
; PCIe952, mode 5: function 0, 2UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C158
; PCIe952, mode 5: function 1, 2UART, +GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C15D
;
; PCIe954, mode 0: function 0, 4UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C208
; PCIe954, mode 0: function 1, 4UART, +GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C20D
;
; PCIe958, mode 0: function 0, 8UART, -GPIO, -PMI
%MfDesc%                   = MfInstSect,PCI\VEN_1415&DEV_C308
; PCIe958, mode 0: function 1, 8UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C30D
;
; PCIe200, mode 0: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C40B
; PCIe200, mode 0: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C40F
; PCIe200, mode 1: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C41B
; PCIe200, mode 1: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C41F
; PCIe200, mode 2: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C42B
; PCIe200, mode 2: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C42F
; PCIe200, mode 3: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C43B
; PCIe200, mode 3: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C43F
; PCIe200, mode 4: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C44B
; PCIe200, mode 4: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C44F
; PCIe200, mode 5: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C45B
; PCIe200, mode 5: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C45F
; PCIe200, mode 6: function 3, 1UART, -GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C46B
; PCIe200, mode 6: function 3, 1UART, +GPIO, -PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C46F
; PCIe200, mode 7: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C47B
; PCIe200, mode 7: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C47F
; PCIe200, mode 8: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C48B
; PCIe200, mode 8: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C48F
; PCIe200, mode 9: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C49B
; PCIe200, mode 9: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C49F
; PCIe200, mode A: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4AB
; PCIe200, mode A: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4AF
; PCIe200, mode B: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4BB
; PCIe200, mode B: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4BF
; PCIe200, mode C: function 3, 1UART, -GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4CB
; PCIe200, mode C: function 3, 1UART, +GPIO, +PMI
%MfDesc%                    = MfInstSect,PCI\VEN_1415&DEV_C4CF
;#OxEndData

[MfInstSect]
CopyINF                     = OxPCIeSer.inf
CopyFiles                   = DestinationDirs_SystemDir,DestinationDirs_DriversDir


[DestinationDirs_SystemDir]
OxPCIeUi.dll
;#OxData#[[BrandingFile]].oxbe
OxPCIeSer.oxbe
;#OxEndData
;#OxData#[[BrandingFile]].png
OxPCIeSer.png
;#OxEndData

[DestinationDirs_DriversDir]
OxPCIeMf.sys
OxPCIeSer.sys


[MfInstSect.HW]
AddReg                      = MfInstSect.HW_AddReg


[MfInstSect.Services]
;#OxData#AddService                  = [[UartBrandingFile]]Mf,%SPSVCINST_ASSOCSERVICE%,MfInstSect.Services_AddService,EventLog_AddService
AddService                  = OxPCIeSerMf,%SPSVCINST_ASSOCSERVICE%,MfInstSect.Services_AddService,EventLog_AddService
;#OxEndData

[MfInstSect.HW_AddReg]
; Support MSI
HKR,"Interrupt Management",%REG_KEYONLY%
HKR,"Interrupt Management\MessageSignaledInterruptProperties",%REG_KEYONLY%
HKR,"Interrupt Management\MessageSignaledInterruptProperties",MSISupported,%REG_DWORD%,1

[MfInstSect.Services_AddService]
ServiceType                 = %SERVICE_KERNEL_DRIVER%
StartType                   = %SERVICE_DEMAND_START%
ErrorControl                = %SERVICE_ERROR_NORMAL%
ServiceBinary               = %12%\OxPCIeMf.sys
LoadOrderGroup              = Extended base


[EventLog_AddService]
AddReg                      = EventLog_AddService_AddReg

[EventLog_AddService_AddReg]
HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll"
HKR,,TypesSupported,%REG_DWORD%,7



;-------------------------------------------------------------------------
; Coinstaller installation
;-------------------------------------------------------------------------
[DestinationDirs]
CoInstaller_CopyFiles       = 11    ; %windir%\system32


[SourceDisksFiles]
; make sure the number matches with SourceDisksNames
WdfCoinstaller01005.dll     = 0


[MfInstSect.CoInstallers]
AddReg                      = CoInstaller_AddReg
CopyFiles                   = CoInstaller_CopyFiles


[MfInstSect.Wdf]
KmdfService                 = OxPCIeMf,MfInstSect.Wdf_KmdfService


[CoInstaller_CopyFiles]
WdfCoinstaller01005.dll

[CoInstaller_AddReg]
; Add WDF class coinstaller
HKR,,CoInstallers32,%REG_MULTI_SZ%,"WdfCoinstaller01005.dll,WdfCoInstaller"

[MfInstSect.Wdf_KmdfService]
KmdfLibraryVersion          = 1.5



[Strings]
;
; *******   Localizable Strings   *******
;#OxData#Oxsemi                      = "[[Manufacturer]]"
Oxsemi                      = "Oxford Semiconductor Inc"
;#OxEndData
;#OxData#MfDesc                      = "[[MfDeviceDescription]]"
MfDesc                      = "PCI Express Multiport Serial Adapter"
;#OxEndData
;#OxData#Desc_0                      = "[[MfDriverDescription]]"
Desc_0                      = "Oxford Semiconductor Multiport UART Driver"
;#OxEndData

; ******* Non Localizable Strings *******
SERVICE_BOOT_START          = 0x0
SERVICE_SYSTEM_START        = 0x1
SERVICE_AUTO_START          = 0x2
SERVICE_DEMAND_START        = 0x3
SERVICE_DISABLED            = 0x4

SERVICE_KERNEL_DRIVER       = 0x1

SERVICE_ERROR_IGNORE        = 0x0
SERVICE_ERROR_NORMAL        = 0x1
SERVICE_ERROR_SEVERE        = 0x2
SERVICE_ERROR_CRITICAL      = 0x3

SPSVCINST_ASSOCSERVICE      = 0x2

REG_SZ                      = 0x00000000
REG_BINARY                  = 0x00000001
REG_KEYONLY                 = 0x00000010
REG_MULTI_SZ                = 0x00010000
REG_EXPAND_SZ               = 0x00020000
REG_DWORD                   = 0x00010001



;#OxComment#-------------------------------------------------------------------
;#OxComment#       OXide definitions. Do not modify
;#OxComment#-------------------------------------------------------------------

;#OxGlobalSection#Manufacturer information
	;#OxGroup#Manufacturer name
        ;#OxDefine#Manufacturer#Name #String[32]
  ;#OxEndGroup
;#OxEndSection

;#OxGlobalSection#UART Driver Version
	;#OxGroup#Driver version information
        ;#OxDefine#UartVersion#Driver Version#String[12]
        ;#OxDefine#UartDate#Date#Date
  ;#OxEndGroup
;#OxEndSection

;#OxGlobalSection#Multiport UART Support Details
	;#OxGroup#Description
        ;#OxDefine#MfDeviceDescription#Device Description#String[48]
        ;#OxDefine#MfDriverDescription#Driver Description  #String[48]
  ;#OxEndGroup
;#OxEndSection

;#OxGlobalSection#Supported UART Devices
	;#OxMultiGroup#Supported Vendor and Device IDs
		;#OxDefine#MfVendorId#Vendor Id#VendorId
		;#OxDefine#MfDeviceId#Device Id#PCIeDeviceId
	;#OxEndGroup
;#OxEndSection
