PROTOCOLS
裝置
定義於 fuchsia.hardware.sdio/sdio.fidl
AckInBandIntr
如上所示。開始等待中斷後,用戶端應呼叫 AckInBandIntr()
物件,以防這個函式有待處理的頻內中斷問題。
要求
<空白>
DisableFn
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_DisableFn_Result
|
DisableFnIntr
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_DisableFnIntr_Result
|
DoRwByte
要求
名稱 | 類型 |
---|---|
write |
bool
|
addr |
uint32
|
write_byte |
uint8
|
回應
名稱 | 類型 |
---|---|
payload |
Device_DoRwByte_Result
|
DoRwTxn
用戶端負責執行下列快取作業:
讀取要求之後:
- 使用 ZX_CACHE_FLUSH_DATA 呼叫 zx_cache_flush |在符合下列條件的緩衝區上 ZX_CACHE_FLUSH_INVALIDATE 已由用戶端對應。
- 對所有其他緩衝區使用 ZX_VMO_OP_CACHE_CLEAN_INVALIDATE 呼叫 zx_vmo_op_range。
請注意,在 DoRwTxn 傳回之前,將資料寫入緩衝區的任何部分 接收的資料。
在寫入要求之前:
- 在已經對應到相關緩衝區的緩衝區上,使用 ZX_CACHE_FLUSH_DATA 呼叫 zx_cache_flush 用戶端。
- 在所有其他緩衝區上使用 ZX_VMO_OP_CACHE_CLEAN 呼叫 zx_vmo_op_range。
要求
名稱 | 類型 |
---|---|
txn |
SdioRwTxn
|
回應
名稱 | 類型 |
---|---|
payload |
Device_DoRwTxn_Result
|
DoVendorControlRwByte
讀取或寫入供應商 CCCR 註冊資料庫。addr 必須位於 [0xF0, 0xFF]。
要求
名稱 | 類型 |
---|---|
write |
bool
|
addr |
uint8
|
write_byte |
uint8
|
回應
名稱 | 類型 |
---|---|
payload |
Device_DoVendorControlRwByte_Result
|
EnableFn
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_EnableFn_Result
|
EnableFnIntr
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_EnableFnIntr_Result
|
GetBlockSize
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_GetBlockSize_Result
|
GetDevHwInfo
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_GetDevHwInfo_Result
|
GetInBandIntr
傳回 SDIO 驅動程式在卡片訊號時觸發的虛擬中斷情形
對應至這個函式的中斷情形。不會觸發額外的干擾
直到呼叫 AckInBandIntr()
為止
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_GetInBandIntr_Result
|
IntrPending
如果函式 fn_idx 中有中斷情形,則傳回 true,否則傳回 false。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_IntrPending_Result
|
IoAbort
下列函式可存取函式 0 的卡片通用控制暫存器 (CCCR)。 取消在指定函式上發生的 I/O 作業。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_IoAbort_Result
|
PerformTuning
在背景執行微調。用戶端可以使用這個選項來更新主機控制器延遲 設定,避免公車誤點因溫度或其他因素而發生變化例如: 用戶端可定期呼叫此憑證,或僅於回應資料 CRC 錯誤時呼叫此金鑰。包括 此呼叫花費的時間 (以及封鎖其他要求的時間長度) 端視控制器而定
如果對 PerformTuning()
的其他呼叫已經待處理,則傳回 ZX_ERR_ALREADY_BOUND
。
如果未正確設定 SDMMC 驅動程式庫程式的調整程序,系統會傳回 ZX_OK
或錯誤值 (請參閱
SDMMC 通訊協定)。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_PerformTuning_Result
|
RegisterVmo
要求
名稱 | 類型 |
---|---|
vmo_id |
uint32
|
vmo |
handle<vmo>
|
offset |
uint64
|
size |
uint64
|
vmo_rights |
uint32
|
回應
名稱 | 類型 |
---|---|
payload |
Device_RegisterVmo_Result
|
RequestCardReset
要求核心驅動程式強制重設卡片並執行 SDIO 初始化
序列重新啟動卡片後,系統會呼叫回呼,並啟動
在此同時,來自此用戶端的所有 IO 呼叫都會傳回 ZX_ERR_SHOULD_WAIT。如果發生錯誤
發生時間,則所有後續的 IO 呼叫都會傳回 ZX_ERR_IO_NOT_PRESENT。
這時如要復原,只能再次呼叫 RequestCardReset()
。
SDIO 核心驅動程式會等待所有用戶端呼叫這個方法,然後才會執行
重設及重新初始化。重設後,用戶端必須自行執行
再次初始化步驟,例如呼叫 EnableFnIntr()
或 UpdateBlockSize()
。
無論重設狀態為何,您一律能呼叫 VMO 註冊方法。
實際用於強制重設卡片的方法會因平台或主機板而異;例子 包括切換重設的 GPIO 或自動循環使用卡片。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_RequestCardReset_Result
|
UnregisterVmo
要求
名稱 | 類型 |
---|---|
vmo_id |
uint32
|
回應
名稱 | 類型 |
---|---|
payload |
Device_UnregisterVmo_Result
|
UpdateBlockSize
要求
名稱 | 類型 |
---|---|
blk_sz |
uint16
|
deflt |
bool
|
回應
名稱 | 類型 |
---|---|
payload |
Device_UpdateBlockSize_Result
|
DriverDevice
定義於 fuchsia.hardware.sdio/sdio.fidl
Device
通訊協定的驅動程式庫傳輸變化版本。
AckInBandIntr
如上所示。開始等待中斷後,用戶端應呼叫 AckInBandIntr()
物件,以防這個函式有待處理的頻內中斷問題。
要求
<空白>
DisableFn
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_DisableFn_Result
|
DisableFnIntr
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_DisableFnIntr_Result
|
DoRwByte
要求
名稱 | 類型 |
---|---|
write |
bool
|
addr |
uint32
|
write_byte |
uint8
|
回應
名稱 | 類型 |
---|---|
payload |
Device_DoRwByte_Result
|
DoRwTxn
用戶端負責執行下列快取作業:
讀取要求之後:
- 使用 ZX_CACHE_FLUSH_DATA 呼叫 zx_cache_flush |在符合下列條件的緩衝區上 ZX_CACHE_FLUSH_INVALIDATE 已由用戶端對應。
- 對所有其他緩衝區使用 ZX_VMO_OP_CACHE_CLEAN_INVALIDATE 呼叫 zx_vmo_op_range。
請注意,在 DoRwTxn 傳回之前,將資料寫入緩衝區的任何部分 接收的資料。
在寫入要求之前:
- 在已經對應到相關緩衝區的緩衝區上,使用 ZX_CACHE_FLUSH_DATA 呼叫 zx_cache_flush 用戶端。
- 在所有其他緩衝區上使用 ZX_VMO_OP_CACHE_CLEAN 呼叫 zx_vmo_op_range。
要求
名稱 | 類型 |
---|---|
txn |
SdioRwTxn
|
回應
名稱 | 類型 |
---|---|
payload |
Device_DoRwTxn_Result
|
DoVendorControlRwByte
讀取或寫入供應商 CCCR 註冊資料庫。addr 必須位於 [0xF0, 0xFF]。
要求
名稱 | 類型 |
---|---|
write |
bool
|
addr |
uint8
|
write_byte |
uint8
|
回應
名稱 | 類型 |
---|---|
payload |
Device_DoVendorControlRwByte_Result
|
EnableFn
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_EnableFn_Result
|
EnableFnIntr
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_EnableFnIntr_Result
|
GetBlockSize
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_GetBlockSize_Result
|
GetDevHwInfo
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_GetDevHwInfo_Result
|
GetInBandIntr
傳回 SDIO 驅動程式在卡片訊號時觸發的虛擬中斷情形
對應至這個函式的中斷情形。不會觸發額外的干擾
直到呼叫 AckInBandIntr()
為止
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_GetInBandIntr_Result
|
IntrPending
如果函式 fn_idx 中有中斷情形,則傳回 true,否則傳回 false。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_IntrPending_Result
|
IoAbort
下列函式可存取函式 0 的卡片通用控制暫存器 (CCCR)。 取消在指定函式上發生的 I/O 作業。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_IoAbort_Result
|
PerformTuning
在背景執行微調。用戶端可以使用這個選項來更新主機控制器延遲 設定,避免公車誤點因溫度或其他因素而發生變化例如: 用戶端可定期呼叫此憑證,或僅於回應資料 CRC 錯誤時呼叫此金鑰。包括 此呼叫花費的時間 (以及封鎖其他要求的時間長度) 端視控制器而定
如果對 PerformTuning()
的其他呼叫已經待處理,則傳回 ZX_ERR_ALREADY_BOUND
。
如果未正確設定 SDMMC 驅動程式庫程式的調整程序,系統會傳回 ZX_OK
或錯誤值 (請參閱
SDMMC 通訊協定)。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_PerformTuning_Result
|
RegisterVmo
要求
名稱 | 類型 |
---|---|
vmo_id |
uint32
|
vmo |
handle<vmo>
|
offset |
uint64
|
size |
uint64
|
vmo_rights |
uint32
|
回應
名稱 | 類型 |
---|---|
payload |
Device_RegisterVmo_Result
|
RequestCardReset
要求核心驅動程式強制重設卡片並執行 SDIO 初始化
序列重新啟動卡片後,系統會呼叫回呼,並啟動
在此同時,來自此用戶端的所有 IO 呼叫都會傳回 ZX_ERR_SHOULD_WAIT。如果發生錯誤
發生時間,則所有後續的 IO 呼叫都會傳回 ZX_ERR_IO_NOT_PRESENT。
這時如要復原,只能再次呼叫 RequestCardReset()
。
SDIO 核心驅動程式會等待所有用戶端呼叫這個方法,然後才會執行
重設及重新初始化。重設後,用戶端必須自行執行
再次初始化步驟,例如呼叫 EnableFnIntr()
或 UpdateBlockSize()
。
無論重設狀態為何,您一律能呼叫 VMO 註冊方法。
實際用於強制重設卡片的方法會因平台或主機板而異;例子 包括切換重設的 GPIO 或自動循環使用卡片。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Device_RequestCardReset_Result
|
UnregisterVmo
要求
名稱 | 類型 |
---|---|
vmo_id |
uint32
|
回應
名稱 | 類型 |
---|---|
payload |
Device_UnregisterVmo_Result
|
UpdateBlockSize
要求
名稱 | 類型 |
---|---|
blk_sz |
uint16
|
deflt |
bool
|
回應
名稱 | 類型 |
---|---|
payload |
Device_UpdateBlockSize_Result
|
結構
Device_DisableFnIntr_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
Device_DisableFn_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
Device_DoRwByte_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
read_byte |
uint8
|
無預設 |
Device_DoRwTxn_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
Device_DoVendorControlRwByte_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
read_byte |
uint8
|
無預設 |
Device_EnableFnIntr_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
Device_EnableFn_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
Device_GetBlockSize_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
cur_blk_size |
uint16
|
無預設 |
Device_GetDevHwInfo_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
hw_info |
SdioHwInfo
|
無預設 |
Device_GetInBandIntr_Response 資源
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
irq |
handle<interrupt>
|
無預設 |
Device_IntrPending_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
pending |
bool
|
無預設 |
Device_IoAbort_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
Device_PerformTuning_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
Device_RegisterVmo_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
Device_RequestCardReset_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
Device_UnregisterVmo_Response 資源
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
vmo |
handle<vmo>
|
無預設 |
Device_UpdateBlockSize_Response
定義於 fuchsia.hardware.sdio/sdio.fidl
<空白>
SdioDeviceHwInfo
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
num_funcs |
uint32
|
包括 Func 0 等 sdio 基金的數量 |
無預設 |
sdio_vsn |
uint32
|
無預設 | |
cccr_vsn |
uint32
|
無預設 | |
caps |
SdioDeviceCapabilities
|
無預設 | |
max_tran_speed |
uint32
|
無預設 |
SdioFuncHwInfo
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
manufacturer_id |
uint32
|
無預設 | |
product_id |
uint32
|
無預設 | |
max_blk_size |
uint32
|
無預設 | |
fn_intf_code |
uint8
|
無預設 |
SdioHwInfo
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
dev_hw_info |
SdioDeviceHwInfo
|
無預設 | |
func_hw_info |
SdioFuncHwInfo
|
無預設 | |
host_max_transfer_size |
uint32
|
無預設 |
SdioRwTxn 資源
定義於 fuchsia.hardware.sdio/sdio.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
addr |
uint32
|
無預設 | |
incr |
bool
|
無預設 | |
write |
bool
|
無預設 | |
buffers |
vector<fuchsia.hardware.sdmmc/SdmmcBufferRegion>
|
無預設 |
聯合國
Device_DisableFnIntr_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_DisableFnIntr_Response
|
|
2 |
err |
zx/Status
|
Device_DisableFn_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_DisableFn_Response
|
|
2 |
err |
zx/Status
|
Device_DoRwByte_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_DoRwByte_Response
|
|
2 |
err |
zx/Status
|
Device_DoRwTxn_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_DoRwTxn_Response
|
|
2 |
err |
zx/Status
|
Device_DoVendorControlRwByte_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_DoVendorControlRwByte_Response
|
|
2 |
err |
zx/Status
|
Device_EnableFnIntr_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_EnableFnIntr_Response
|
|
2 |
err |
zx/Status
|
Device_EnableFn_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_EnableFn_Response
|
|
2 |
err |
zx/Status
|
Device_GetBlockSize_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_GetBlockSize_Response
|
|
2 |
err |
zx/Status
|
Device_GetDevHwInfo_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_GetDevHwInfo_Response
|
|
2 |
err |
zx/Status
|
Device_GetInBandIntr_Result 嚴格 資源
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_GetInBandIntr_Response
|
|
2 |
err |
zx/Status
|
Device_IntrPending_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_IntrPending_Response
|
|
2 |
err |
zx/Status
|
Device_IoAbort_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_IoAbort_Response
|
|
2 |
err |
zx/Status
|
Device_PerformTuning_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_PerformTuning_Response
|
|
2 |
err |
zx/Status
|
Device_RegisterVmo_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_RegisterVmo_Response
|
|
2 |
err |
zx/Status
|
Device_RequestCardReset_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_RequestCardReset_Response
|
|
2 |
err |
zx/Status
|
Device_UnregisterVmo_Result 嚴格 資源
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_UnregisterVmo_Response
|
|
2 |
err |
zx/Status
|
Device_UpdateBlockSize_Result 嚴格
定義於 fuchsia.hardware.sdio/sdio.fidl
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Device_UpdateBlockSize_Response
|
|
2 |
err |
zx/Status
|
商業智慧
SdioDeviceCapabilities 嚴格
類型:uint32
定義於 fuchsia.hardware.sdio/sdio.fidl
名稱 | 值 | 說明 |
---|---|---|
MULTI_BLOCK |
1 | |
SRW |
2 | |
DIRECT_COMMAND |
4 | |
SUSPEND_RESUME |
8 | |
LOW_SPEED |
16 | |
HIGH_SPEED |
32 | |
HIGH_POWER |
64 | |
FOUR_BIT_BUS |
128 | |
HS_SDR12 |
256 | |
HS_SDR25 |
512 | |
UHS_SDR50 |
1024 | |
UHS_SDR104 |
2048 | |
UHS_DDR50 |
4096 | |
TYPE_A |
8192 | |
TYPE_B |
16384 | |
TYPE_C |
32768 | |
TYPE_D |
65536 |
觀測站
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
SDIO_MAX_FUNCS |
8
|
uint8 |
服務
DriverService
定義於 fuchsia.hardware.sdio/sdio.fidl
名稱 | 類型 | 傳輸 |
---|---|---|
裝置 |
fuchsia.hardware.sdio/DriverDevice
|
駕駛座 |
服務
定義於 fuchsia.hardware.sdio/sdio.fidl
名稱 | 類型 | 傳輸 |
---|---|---|
裝置 |
fuchsia.hardware.sdio/Device
|
頻道 |