fuchsia.hardware.sdmmc

新增時間:HEAD

通訊協定

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
1
2
3

SdmmcTiming 嚴格

類型:uint8

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

名稱物超所值說明
0
1
2
3
4
5
6
7
8
9
10

SdmmcVoltage 嚴格

類型:uint8

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

名稱物超所值說明
0
1
2

資料表

SdmmcMetadata

定義於 fuchsia.hardware.sdmmc/metadata.fidl

序數廣闊類型說明
max_frequency uint32

公車作業頻率上限。SDMMC 核心驅動程式會將匯流頻率限制為這個程度。如未指定中繼資料,則預設值為 UINT32_MAX。

speed_capabilities SdmmcHostPrefs

特定主機的速度功能。如未指定中繼資料,則預設值為 0 (無標記)。

enable_cache bool

如果為 true,請使用裝置端揮發性快取。如未指定中繼資料,則預設值為 true。如果連接的裝置或插入的卡片沒有儲存空間,系統會忽略此值。

removable bool

如果為 true,這個 SDMMC 控制器會對應至可移除的記憶卡插槽,其中可能隨時插入或移除 MMC/SD/SDIO 卡。在此情況下,如果無法在驅動程式庫初始化期間探測,就不會視為嚴重錯誤。如未指定中繼資料,則預設值為 false。

max_command_packing uint32

請使用指令封裝 (批次處理),最多可達這麼多指令。如果值為零,則會停用指令封裝功能。如未指定中繼資料,則預設值為 16。如果連接的裝置或插入的卡片不支援指令封裝,系統就會忽略此值。

use_fidl bool

完成。如果設為 true,請使用 FIDL SDMMC 通訊協定。如果設為 False,請使用 Banjo SDMMC 通訊協定。如未指定中繼資料,則預設值為 true。

聯合國

SdmmcBuffer 嚴格 資源

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
vmo_id uint32

先前註冊的 VMO ID。

vmo handle<vmo>

未註冊的 VMO,通訊協定實作不會取得擁有權。VMO 會在輸入要求時釘選,並在傳回前取消固定。

Sdmmc_HostInfo_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_HostInfo_Response
err zx/Status

Sdmmc_HwReset_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_HwReset_Response
err zx/Status

Sdmmc_PerformTuning_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_PerformTuning_Response
err zx/Status

Sdmmc_RegisterInBandInterrupt_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_RegisterInBandInterrupt_Response
err zx/Status

Sdmmc_RegisterVmo_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_RegisterVmo_Response
err zx/Status

Sdmmc_Request_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_Request_Response
err zx/Status

Sdmmc_SetBusFreq_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_SetBusFreq_Response
err zx/Status

Sdmmc_SetBusWidth_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_SetBusWidth_Response
err zx/Status

Sdmmc_SetSignalVoltage_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_SetSignalVoltage_Response
err zx/Status

Sdmmc_SetTiming_Result 嚴格

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_SetTiming_Response
err zx/Status

Sdmmc_UnregisterVmo_Result 嚴格 資源

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

序數Variant類型說明
response Sdmmc_UnregisterVmo_Response
err zx/Status

商業智慧

SdmmcHostCap 嚴格

類型:uint64

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

名稱物超所值說明
1
2
4
8
16
32
64
128

主機不需要調整 SDR50。

SdmmcHostPrefs 嚴格

類型:uint64

定義於 fuchsia.hardware.sdmmc/sdmmc.fidl

名稱物超所值說明
1
2
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 駕駛座