;/++
;
;Copyright © Oxford Semiconductor Inc.  All rights reserved.
;
;Module Name:
;    OxGpio.inf
;
;Abstract:
;    GPIO WDF driver installation file.
;
;--*/


[Version]
Signature                   = "$Windows NT$"
Class                       = GpioHw
ClassGuid                   = {ECF9C35F-6374-4d89-A68C-5F8E503FCEF8}
Provider                    = %Oxsemi%
CatalogFile                 = OxGpio.cat
;#OxData#DriverVer                   = [[Date]],[[Version]]
DriverVer                   = 01/14/2008,1.00.0000.09
;#OxEndData

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

[SourceDisksNames]
0=%Desc_0%



[ClassInstall32]
AddReg                      = GpioHwClass_AddReg

[GpioHwClass_AddReg]
HKR,,,,%GpioHwClassName%
HKR,,Icon,,"-5"
; Add WMI property page support
HKR,,"WmiConfigClasses",%REG_SZ%,%GpioPropertySheetName%


[ControlFlags]
ExcludeFromSelect           = *


[SourceDisksFiles]
OxGpio.sys                  = 0



[Manufacturer]
%Oxsemi%                    = Oxsemi,ntx86


; For Win2k
[Oxsemi]
;#OxData#%GpioDesc% = GpioInstSect,PCI\VEN_[[VendorId]]&DEV_[[DeviceId]]
; PCIe840, mode 0: function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C006
;
; PCIe952, mode 0: function 2, 1UART (legacy), +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C106
; PCIe952, mode 1: function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C116
; PCIe952, mode 1: function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C11E
; PCIe952, mode 2: function 2, 1UART (legacy), +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C126
; PCIe952, mode 3: function 0, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C134
; PCIe952, mode 3: function 0, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C13C
; PCIe952, mode 4: function 2, 2UART (legacy), +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C146
; PCIe952, mode 5: function 0, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C154
; PCIe952, mode 5: function 0, 2UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C15C
;
; PCIe954, mode 0: function 0, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C204
; PCIe954, mode 0: function 0, 4UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C20C
;
; PCIe958, mode 0: function 0, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C304
; PCIe958, mode 0: function 0, 8UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C30C
;
; PCIe200, mode 0; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C406
; PCIe200, mode 0; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C40E
; PCIe200, mode 1; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C416
; PCIe200, mode 1; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C41E
; PCIe200, mode 2; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C426
; PCIe200, mode 2; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C42E
; PCIe200, mode 3; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C436
; PCIe200, mode 3; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C43E
; PCIe200, mode 4; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C446
; PCIe200, mode 4; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C44E
; PCIe200, mode 5; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C456
; PCIe200, mode 5; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C45E
; PCIe200, mode 6; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C466
; PCIe200, mode 6; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C46E
; PCIe200, mode 7; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C476
; PCIe200, mode 7; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C47E
; PCIe200, mode 8; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C486
; PCIe200, mode 8; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C48E
; PCIe200, mode 9; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C496
; PCIe200, mode 9; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C49E
; PCIe200, mode A; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4A6
; PCIe200, mode A; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4AE
; PCIe200, mode B; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4B6
; PCIe200, mode B; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4BE
; PCIe200, mode C; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4C6
; PCIe200, mode C; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4CE
;#OxEndData

; For WinXP and later
[Oxsemi.ntx86]
;#OxData#%GpioDesc% = GpioInstSect,PCI\VEN_[[VendorId]]&DEV_[[DeviceId]]
; PCIe840, mode 0: function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C006
;
; PCIe952, mode 0: function 2, 1UART (legacy), +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C106
; PCIe952, mode 1: function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C116
; PCIe952, mode 1: function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C11E
; PCIe952, mode 2: function 2, 1UART (legacy), +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C126
; PCIe952, mode 3: function 0, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C134
; PCIe952, mode 3: function 0, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C13C
; PCIe952, mode 4: function 2, 2UART (legacy), +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C146
; PCIe952, mode 5: function 0, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C154
; PCIe952, mode 5: function 0, 2UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C15C
;
; PCIe954, mode 0: function 0, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C204
; PCIe954, mode 0: function 0, 4UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C20C
;
; PCIe958, mode 0: function 0, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C304
; PCIe958, mode 0: function 0, 8UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C30C
;
; PCIe200, mode 0; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C406
; PCIe200, mode 0; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C40E
; PCIe200, mode 1; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C416
; PCIe200, mode 1; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C41E
; PCIe200, mode 2; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C426
; PCIe200, mode 2; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C42E
; PCIe200, mode 3; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C436
; PCIe200, mode 3; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C43E
; PCIe200, mode 4; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C446
; PCIe200, mode 4; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C44E
; PCIe200, mode 5; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C456
; PCIe200, mode 5; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C45E
; PCIe200, mode 6; function 2, 0UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C466
; PCIe200, mode 6; function 2, 1UART, +GPIO, -PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C46E
; PCIe200, mode 7; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C476
; PCIe200, mode 7; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C47E
; PCIe200, mode 8; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C486
; PCIe200, mode 8; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C48E
; PCIe200, mode 9; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C496
; PCIe200, mode 9; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C49E
; PCIe200, mode A; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4A6
; PCIe200, mode A; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4AE
; PCIe200, mode B; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4B6
; PCIe200, mode B; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4BE
; PCIe200, mode C; function 2, 0UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4C6
; PCIe200, mode C; function 2, 1UART, +GPIO, +PMI
%GpioDesc%                  = GpioInstSect,PCI\VEN_1415&DEV_C4CE
;#OxEndData


[GpioInstSect]
CopyFiles                   = DestinationDirs_DriversDir


[DestinationDirs_DriversDir]
OxGpio.sys


[GpioInstSect.HW]
AddReg                      = GpioInstSect.HW_AddReg


[GpioInstSect.Services]
AddService                  = OxGpio,%SPSVCINST_ASSOCSERVICE%,GpioInstSect.Services_AddService,EventLog_AddService


[GpioInstSect.HW_AddReg]
HKR,,IdleTimeout,%REG_DWORD%,%IDLE_TIMEOUT%
HKR,,IdleLowPowerState,%REG_DWORD%,%IDLE_LOW_POWER_DEVICE_STATE%
HKR,,WakeLowPowerState,%REG_DWORD%,%WAKE_LOW_POWER_DEVICE_STATE%
; Support MSI
HKR,"Interrupt Management",%REG_KEYONLY%
HKR,"Interrupt Management\MessageSignaledInterruptProperties",%REG_KEYONLY%
HKR,"Interrupt Management\MessageSignaledInterruptProperties",MSISupported,%REG_DWORD%,1


[GpioInstSect.Services_AddService]
ServiceType                 = %SERVICE_KERNEL_DRIVER%
StartType                   = %SERVICE_DEMAND_START%
ErrorControl                = %SERVICE_ERROR_NORMAL%
ServiceBinary               = %12%\OxGpio.sys


[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


[GpioInstSect.CoInstallers]
AddReg                      = CoInstaller_AddReg
CopyFiles                   = CoInstaller_CopyFiles


[GpioInstSect.Wdf]
KmdfService                 = OxGpio,GpioInstSect.Wdf_KmdfService


[CoInstaller_CopyFiles]
WdfCoinstaller01005.dll

[CoInstaller_AddReg]
; Add WDF class coinstaller
HKR,,CoInstallers32,%REG_MULTI_SZ%,"WdfCoinstaller01005.dll,WdfCoInstaller"
; Add WMI property page provider class coinstaller
HKLM,System\CurrentControlSet\Control\CoDeviceInstallers,{ECF9C35F-6374-4d89-A68C-5F8E503FCEF8}, \
    %REG_MULTI_SZ%,"WmiProp.dll,WmiPropCoInstaller"

[GpioInstSect.Wdf_KmdfService]
KmdfLibraryVersion          = 1.5



[Strings]
;
; *******   Localizable Strings   *******
;#OxData#Oxsemi = "[[Manufacturer]]"
Oxsemi = "Oxford Semiconductor Inc"
;#OxEndData

;#OxData#GpioHwClassName             = "[[DeviceDescription]]"
GpioHwClassName             = "PCI Express GPIO Adapter"
;#OxEndData
;#OxData#GpioDesc                    = "[[DeviceDescription]]"
GpioDesc                    = "PCI Express GPIO Adapter"
;#OxEndData
;#OxData#Desc_0                      = "[[DriverDescription]]"
Desc_0                      = "Oxford Semiconductor GPIO Driver"
;#OxEndData
GpioPropertySheetName       = "GpioPropertySheet"


; ******* 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

IDLE_TIMEOUT                = 10000
IDLE_LOW_POWER_DEVICE_STATE = 4
WAKE_LOW_POWER_DEVICE_STATE = 4


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

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

;#OxGlobalSection#GPIO Details
	;#OxGroup#Driver version information
        ;#OxDefine#Version#Driver Version#String[12]
        ;#OxDefine#Date#Date#Date
  ;#OxEndGroup
	;#OxGroup#Description
        ;#OxDefine#DeviceDescription#Device Description#String[48]
        ;#OxDefine#DriverDescription#Driver Description  #String[48]
  ;#OxEndGroup
;#OxEndSection

;#OxGlobalSection#Supported GPIO Devices
	;#OxMultiGroup#Supported Vendor and Device IDs
		;#OxDefine#VendorId#Vendor Id#VendorId
		;#OxDefine#DeviceId#Device Id#PCIeDeviceId
	;#OxEndGroup
;#OxEndSection
