SDIO Host Controller Driver Fast-Path Support (Windows Embedded CE 6.0)
1/6/2010
The primary change to the host controller driver is the addition of polling for Fast-Path operations. A normal SDIO operation utilizes interrupts after I/O starts on the controller. Fast-Path requires the host controller driver poll for I/O completion instead. For more information on Fast-Path operations, see SDIO Fast-Path Overview.
Checking for Fast-Path Support
Even though the bus driver is responsible for enabling Fast-Path, the host controller driver determines whether or not to perform Fast-Path operations. The host controller driver can determine if Fast-Path operations are enabled by using the following code.
BOOL bFastPathEnabled;
//Determine if Fast-Path is enabled for this request.
bFastPathEnabled = ( 0 != ( pRequest->SystemFlags & SD_FAST_PATH_AVAILABLE));
Note
After the host controller driver ascertains if Fast-Path is enabled, it needs to determine if Fast-Path is the optimal method for handling the bus request.
Fast-Path Threshold
The host controller driver compares the size of a bus request against a threshold value to determine whether or not a bus request should proceed as a Fast-Path operation. The threshold value ensures that bus requests proceed as Fast-Path operations when doing so will speed up the processing of the request and will not degrade system throughput. By default, the Fast-Path threshold is set at 2 kB. The following registry entry can be used to change the default threshold by editing the Threshold value.
[HKEY_LOCAL_MACHINE\Drivers\Builtin\SDBusDriver]
"Order"=dword:15
"Dll"="SDBus.dll"
"Prefix"="SDC"
"ThreadPriority"=dword:64 ; default thread priority for dispatch thread
"RequestListDepth"=dword:30 ; pre-allocated requests
"Flags"=dword:10000 ; DEVFLAGS_TRUSTEDCALLERONLY
"IClass"=multi_sz:"{20FA98A8-B298-4b32-8D72-C716AEE2FA84}=%b","{6F40791D-300E-44E4-BC38-E0E63CA8375C}=%b"
"Threshold”=dword:0x800