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_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()
。
在执行
和重新初始化。重置后,客户必须自行执行
初始化步骤,例如调用 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_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()
。
在执行
和重新初始化。重置后,客户必须自行执行
初始化步骤,例如调用 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
|
Sdio Funcs 数量(包括 func 0) |
无默认设置 |
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 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_DisableFnIntr_Response
|
|
2 |
err |
zx/Status
|
Device_DisableFn_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_DisableFn_Response
|
|
2 |
err |
zx/Status
|
Device_DoRwByte_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_DoRwByte_Response
|
|
2 |
err |
zx/Status
|
Device_DoRwTxn_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_DoRwTxn_Response
|
|
2 |
err |
zx/Status
|
Device_DoVendorControlRwByte_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_DoVendorControlRwByte_Response
|
|
2 |
err |
zx/Status
|
Device_EnableFnIntr_Result
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_EnableFnIntr_Response
|
|
2 |
err |
zx/Status
|
Device_EnableFn_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_EnableFn_Response
|
|
2 |
err |
zx/Status
|
Device_GetBlockSize_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_GetBlockSize_Response
|
|
2 |
err |
zx/Status
|
Device_GetDevHwInfo_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_GetDevHwInfo_Response
|
|
2 |
err |
zx/Status
|
Device_GetInBandIntr_Result 严格资源
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_GetInBandIntr_Response
|
|
2 |
err |
zx/Status
|
Device_IntrPending_Result strict
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_IntrPending_Response
|
|
2 |
err |
zx/Status
|
Device_IoAbort_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_IoAbort_Response
|
|
2 |
err |
zx/Status
|
Device_PerformTuning_Result strict
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_PerformTuning_Response
|
|
2 |
err |
zx/Status
|
Device_RegisterVmo_Result strict
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_RegisterVmo_Response
|
|
2 |
err |
zx/Status
|
Device_RequestCardReset_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_RequestCardReset_Response
|
|
2 |
err |
zx/Status
|
Device_UnregisterVmo_Result 严格的 资源
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_UnregisterVmo_Response
|
|
2 |
err |
zx/Status
|
Device_UpdateBlockSize_Result 严格
在 fuchsia.hardware.sdio/sdio.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
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
|
频道 |