通訊協定
InBandInterrupt
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
Callback
要求
<EMPTY>
回應
<EMPTY>
科幻
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
AckInBandInterrupt
要求
<EMPTY>
HostInfo
取得主辦人資訊。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_HostInfo_Result
|
HwReset
發出 HW 重設。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_HwReset_Result
|
PerformTuning
執行調整作業。
要求
名稱 | 類型 |
---|---|
cmd_idx |
uint32
|
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_PerformTuning_Result
|
RegisterInBandInterrupt
註冊要在卡片收到頻內中斷時呼叫的特定回呼。呼叫回呼之前,通訊協定實作會停用控制器中的頻內中斷。用戶端處理上一個中斷後,請呼叫 AckInBandInterrupt()
來重新啟用頻內中斷。
要求
名稱 | 類型 |
---|---|
interrupt_cb |
InBandInterrupt
|
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_RegisterInBandInterrupt_Result
|
RegisterVmo
在下列方法中,vmo_id 是用來識別 VMO,該 VMO 會傳遞給 SdmmcBufferRegion 中的 Request。VMO ID 由呼叫端選擇,可以是任何 uint32 值。註冊 VMO 並將擁有權轉移至通訊協定實作項目。vmo_rights 是包含 SdmmcVmoRight 值的位元欄位,可決定您固定或對應 VMO 時,實作所使用的讀取/寫入權限。實作可能會在這次呼叫期間或任何於要求中使用 vmo 時固定 Vmo,而且會保持固定,直到 VMO 取消註冊為止。client_id 可能位於 [0, SDMMC_MAX_CLIENT_ID] 中,並且識別要註冊這個 VMO 的 ID 空間 (也就是說,如果兩個不同的 VMO 註冊不同的用戶端,可以使用相同的 ID)。
要求
名稱 | 類型 |
---|---|
vmo_id |
uint32
|
client_id |
uint8
|
vmo |
handle<vmo>
|
offset |
uint64
|
size |
uint64
|
vmo_rights |
uint32
|
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_RegisterVmo_Result
|
要求
按順序執行要求,不分介入處理要求。此外,來電會依照接收順序回覆。如果發生錯誤,請取消任何剩餘的要求。否則,系統會傳回最後一個要求的回應。
通訊協定實作會根據要求的屬性和控制器的功能,選擇是否要使用 DMA。
用戶端負責執行下列快取作業:
讀取要求之後:
- 在用戶端對應的緩衝區上使用 ZX_CACHE_FLUSH_DATA | ZX_CACHE_FLUSH_INVALIDATE 呼叫 zx_cache_flush。
- 對所有其他緩衝區使用 ZX_VMO_OP_CACHE_CLEAN_INVALIDATE 呼叫 zx_vmo_op_range。
請注意,在要求傳回前,先寫入緩衝區的任何部分,可能會導致接收的資料毀損。
在寫入要求之前:
- 在用戶端對應的緩衝區上使用 ZX_CACHE_FLUSH_DATA 呼叫 zx_cache_flush。
- 在所有其他緩衝區上使用 ZX_VMO_OP_CACHE_CLEAN 呼叫 zx_vmo_op_range。
要求
名稱 | 類型 |
---|---|
reqs |
vector<SdmmcReq>
|
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_Request_Result
|
SetBusFreq
將公車頻率設定為 0,代表停用卡片。
要求
名稱 | 類型 |
---|---|
bus_freq |
uint32
|
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_SetBusFreq_Result
|
SetBusWidth
設定公車寬度。
要求
名稱 | 類型 |
---|---|
bus_width |
SdmmcBusWidth
|
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_SetBusWidth_Result
|
SetSignalVoltage
設定訊號電壓。
要求
名稱 | 類型 |
---|---|
voltage |
SdmmcVoltage
|
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_SetSignalVoltage_Result
|
SetTiming
設定 mmc 時間。
要求
名稱 | 類型 |
---|---|
timing |
SdmmcTiming
|
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_SetTiming_Result
|
UnregisterVmo
受呼叫者會取消對應/取消固定 VMO,並將擁有權傳回呼叫端。
要求
名稱 | 類型 |
---|---|
vmo_id |
uint32
|
client_id |
uint8
|
回應
名稱 | 類型 |
---|---|
payload |
Sdmmc_UnregisterVmo_Result
|
結構
SdmmcBufferRegion 資源
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
廣闊 | 類型 | 說明 | 預設 |
---|---|---|---|
buffer |
SdmmcBuffer
|
無預設 | |
offset |
uint64
|
在 VMO 間偏移,即可開始讀取或寫入。如果類型為 VMO_ID,則此值與傳遞至 RegisterVmo 的偏移值相對較。 |
無預設 |
size |
uint64
|
要讀取或寫入這個緩衝區區域的位元組數。 |
無預設 |
SdmmcHostInfo
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
廣闊 | 類型 | 說明 | 預設 |
---|---|---|---|
caps |
uint64
|
控制器功能 |
無預設 |
max_transfer_size |
uint64
|
資料要求大小上限 |
無預設 |
max_transfer_size_non_dma |
uint64
|
無預設 | |
max_buffer_regions |
uint64
|
可在單一要求中使用的緩衝區區域數量。 |
無預設 |
SdmmcReq 資源
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
廣闊 | 類型 | 說明 | 預設 |
---|---|---|---|
cmd_idx |
uint32
|
無預設 | |
cmd_flags |
uint32
|
無預設 | |
arg |
uint32
|
無預設 | |
blocksize |
uint32
|
無預設 | |
suppress_error_messages |
bool
|
如果設為 true,SDMMC 驅動程式應減少這項要求產生的任何錯誤訊息記錄層級。這會在預期錯誤或不是嚴重錯誤的要求上設定。 |
無預設 |
client_id |
uint8
|
這項要求的用戶端 ID。只有向這個用戶端註冊的 VMO 可能出現在下列緩衝區中。 |
無預設 |
buffers |
vector<SdmmcBufferRegion>
|
無預設 |
Sdmmc_HostInfo_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
廣闊 | 類型 | 說明 | 預設 |
---|---|---|---|
info |
SdmmcHostInfo
|
無預設 |
Sdmmc_HwReset_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
<EMPTY>
Sdmmc_PerformTuning_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
<EMPTY>
Sdmmc_RegisterInBandInterrupt_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
<EMPTY>
Sdmmc_RegisterVmo_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
<EMPTY>
Sdmmc_Request_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
廣闊 | 類型 | 說明 | 預設 |
---|---|---|---|
response |
uint32[4]
|
無預設 |
Sdmmc_SetBusFreq_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
<EMPTY>
Sdmmc_SetBusWidth_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
<EMPTY>
Sdmmc_SetSignalVoltage_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
<EMPTY>
Sdmmc_SetTiming_Response
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
<EMPTY>
Sdmmc_UnregisterVmo_Response 資源
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
廣闊 | 類型 | 說明 | 預設 |
---|---|---|---|
vmo |
handle<vmo>
|
無預設 |
ENUMS
SdmmcBusWidth 嚴格
類型:uint8
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
名稱 | 物超所值 | 說明 |
---|---|---|
一 |
0 |
|
4 |
1 |
|
氣象 |
2 |
|
最快 |
3 |
SdmmcTiming 嚴格
類型:uint8
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
名稱 | 物超所值 | 說明 |
---|---|---|
LEGACY |
0 |
|
HS |
1 |
|
HSDDR |
2 |
|
HS200 |
3 |
|
HS400 |
4 |
|
SDR12 |
5 |
|
SDR25 |
6 |
|
SDR50 |
7 |
|
SDR104 |
8 |
|
DDR50 |
9 |
|
最快 |
10 |
SdmmcVoltage 嚴格
類型:uint8
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
名稱 | 物超所值 | 說明 |
---|---|---|
V330 |
0 |
|
V180 |
1 |
|
最快 |
2 |
資料表
SdmmcMetadata
定義於 fuchsia.hardware.sdmmc/metadata.fidl
序數 | 廣闊 | 類型 | 說明 |
---|---|---|---|
1 |
max_frequency |
uint32
|
公車作業頻率上限。SDMMC 核心驅動程式會將匯流頻率限制為這個程度。如未指定中繼資料,則預設值為 UINT32_MAX。 |
2 |
speed_capabilities |
SdmmcHostPrefs
|
特定主機的速度功能。如未指定中繼資料,則預設值為 0 (無標記)。 |
3 |
enable_cache |
bool
|
如果為 true,請使用裝置端揮發性快取。如未指定中繼資料,則預設值為 true。如果連接的裝置或插入的卡片沒有儲存空間,系統會忽略此值。 |
4 |
removable |
bool
|
如果為 true,這個 SDMMC 控制器會對應至可移除的記憶卡插槽,其中可能隨時插入或移除 MMC/SD/SDIO 卡。在此情況下,如果無法在驅動程式庫初始化期間探測,就不會視為嚴重錯誤。如未指定中繼資料,則預設值為 false。 |
5 |
max_command_packing |
uint32
|
請使用指令封裝 (批次處理),最多可達這麼多指令。如果值為零,則會停用指令封裝功能。如未指定中繼資料,則預設值為 16。如果連接的裝置或插入的卡片不支援指令封裝,系統就會忽略此值。 |
6 |
use_fidl |
bool
|
完成。如果設為 true,請使用 FIDL SDMMC 通訊協定。如果設為 False,請使用 Banjo SDMMC 通訊協定。如未指定中繼資料,則預設值為 true。 |
聯合國
SdmmcBuffer 嚴格 資源
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
vmo_id |
uint32
|
先前註冊的 VMO ID。 |
2 |
vmo |
handle<vmo>
|
未註冊的 VMO,通訊協定實作不會取得擁有權。VMO 會在輸入要求時釘選,並在傳回前取消固定。 |
Sdmmc_HostInfo_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_HostInfo_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_HwReset_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_HwReset_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_PerformTuning_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_PerformTuning_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_RegisterInBandInterrupt_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_RegisterInBandInterrupt_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_RegisterVmo_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_RegisterVmo_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_Request_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_Request_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_SetBusFreq_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_SetBusFreq_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_SetBusWidth_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_SetBusWidth_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_SetSignalVoltage_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_SetSignalVoltage_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_SetTiming_Result 嚴格
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_SetTiming_Response
|
|
2 |
err |
zx/Status
|
Sdmmc_UnregisterVmo_Result 嚴格 資源
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Sdmmc_UnregisterVmo_Response
|
|
2 |
err |
zx/Status
|
商業智慧
SdmmcHostCap 嚴格
類型:uint64
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
名稱 | 物超所值 | 說明 |
---|---|---|
BUS_WIDTH_8 |
1 | |
指定行銷區域 |
2 | |
VOLTAGE_330 |
4 | |
AUTO_CMD12 |
8 | |
SDR104 |
16 | |
SDR50 |
32 | |
DDR50 |
64 | |
NO_TUNING_SDR50 |
128 | 主機不需要調整 SDR50。 |
SdmmcHostPrefs 嚴格
類型:uint64
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
名稱 | 物超所值 | 說明 |
---|---|---|
DISABLE_HS400 |
1 | |
DISABLE_HS200 |
2 | |
DISABLE_HSDDR |
4 |
SdmmcVmoRight 嚴格
類型:uint32
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
名稱 | 物超所值 | 說明 |
---|---|---|
閱讀 |
1 | |
寫入 |
2 |
觀測站
名稱 | 物超所值 | 類型 | 說明 |
---|---|---|---|
SDMMC_MAX_CLIENT_ID |
7
|
uint8 |
下列 client_id 欄位的最大值。目前,您不需要使用超過 8 個用戶端,但如果之後變更此值,就會增加。 |
SDMMC_PAGES_COUNT |
512
|
uint64 |
每個要求的頁數 - 每個要求 2M 符合 dev/block/sdhci 的 DMA_DESC_COUNT (PAGE_SIZE / sizeof(zx_paddr_t)) |
服務
SdmmcService
定義於 fuchsia.hardware.sdmmc/sdmmc.fidl
名稱 | 類型 | 傳輸 |
---|---|---|
sdmmc |
fuchsia.hardware.sdmmc/Sdmmc
|
駕駛座 |