fuchsia.hardware.sdio

Added: HEAD

协议

设备

在 fuchsia.hardware.sdio/sdio.fidl 中定义

AckInBandIntr

参见上文。客户端应在开始等待中断对象后调用 AckInBandIntr(),以防此函数已有待处理的带内中断。

请求

<EMPTY>

DisableFn

请求

<EMPTY>

响应

名称类型
payload Device_DisableFn_Result

DisableFnIntr

请求

<EMPTY>

响应

名称类型
payload Device_DisableFnIntr_Result

DoRwTxn

客户端负责执行以下缓存操作:

读取请求后:

  • 在客户端已映射的缓冲区上,使用 ZX_CACHE_FLUSH_DATA | ZX_CACHE_FLUSH_INVALIDATE 调用 zx_cache_flush。
  • 对所有其他缓冲区调用 zx_vmo_op_range 并传入 ZX_VMO_OP_CACHE_CLEAN_INVALIDATE。

请注意,在 DoRwTxn 返回之前写入缓冲区的任何部分都可能会损坏接收到的数据。

在写入请求之前:

  • 对客户端已映射的缓冲区调用 zx_cache_flush 并传入 ZX_CACHE_FLUSH_DATA。
  • 在所有其他缓冲区上调用 zx_vmo_op_range 并传入 ZX_VMO_OP_CACHE_CLEAN。

请求

名称类型
txn SdioRwTxn

响应

名称类型
payload Device_DoRwTxn_Result

DoVendorControlRwByte

读取或写入供应商 CCCR 寄存器。addr 必须在 [0xF0, 0xFF] 范围内。

请求

名称类型
write bool
addr uint8
write_byte uint8

响应

名称类型
payload Device_DoVendorControlRwByte_Result

EnableFn

请求

<EMPTY>

响应

名称类型
payload Device_EnableFn_Result

EnableFnIntr

请求

<EMPTY>

响应

名称类型
payload Device_EnableFnIntr_Result

GetBlockSize

请求

<EMPTY>

响应

名称类型
payload Device_GetBlockSize_Result

GetDevHwInfo

请求

<EMPTY>

响应

名称类型
payload Device_GetDevHwInfo_Result

GetInBandIntr

返回一个虚拟中断,当卡发出与此函数对应的中断信号时,SDIO 驱动程序将触发该中断。在调用 AckInBandIntr() 之前,不会触发其他中断。

请求

<EMPTY>

响应

名称类型
payload Device_GetInBandIntr_Result

IntrPending

如果函数 fn_idx 有待处理的中断,则返回 true,否则返回 false。

请求

<EMPTY>

响应

名称类型
payload Device_IntrPending_Result

IoAbort

以下函数会访问函数 0 上的卡通用控制寄存器 (CCCR)。 中止在指定函数上发生的 I/O 操作。

请求

<EMPTY>

响应

名称类型
payload Device_IoAbort_Result

IoReady

返回 CCCR 中此函数的 I/O 就绪位的值。

请求

<EMPTY>

响应

名称类型
payload Device_IoReady_Result

PerformTuning

在后台执行调优。如果总线延迟因温度或其他因素而发生变化,客户端可以使用此方法更新主机控制器延迟设置。例如,客户端可以定期调用此方法,或仅在响应数据 CRC 错误时调用。此调用所需的时间(以及其他请求被阻塞的时间)取决于控制器。

如果对 PerformTuning() 的另一个调用已处于待处理状态,则返回 ZX_ERR_ALREADY_BOUND。否则,如果 SDMMC 驱动程序的调优过程失败,则返回 ZX_OK 或错误值(请参阅 SDMMC 协议)。

请求

<EMPTY>

响应

名称类型
payload Device_PerformTuning_Result

ReadByte

从寄存器中读取一个字节。如果 suppress_error_messages 为 true,则 SDMMC 堆栈不会记录错误严重性消息。

请求

名称类型
address uint32
suppress_error_messages bool

响应

名称类型
payload Device_ReadByte_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 或对卡进行电源循环。

请求

<EMPTY>

响应

名称类型
payload Device_RequestCardReset_Result

UnregisterVmo

请求

名称类型
vmo_id uint32

响应

名称类型
payload Device_UnregisterVmo_Result

UpdateBlockSize

请求

名称类型
blk_sz uint16
deflt bool

响应

名称类型
payload Device_UpdateBlockSize_Result

WriteByte

将一个字节写入寄存器。如果 read_after_write 为 true,则在写入后读取寄存器并返回该值,否则返回原始值。如果 suppress_error_messages 为 true,则写入操作预计会失败,并且 SDMMC 堆栈不会记录错误严重级别的消息。

请求

名称类型
address uint32
byte uint8
read_after_write bool
suppress_error_messages bool

响应

名称类型
payload Device_WriteByte_Result

DriverDevice

在 fuchsia.hardware.sdio/sdio.fidl 中定义

Device 协议的驱动程序传输变体。

AckInBandIntr

参见上文。客户端应在开始等待中断对象后调用 AckInBandIntr(),以防此函数已有待处理的带内中断。

请求

<EMPTY>

DisableFn

请求

<EMPTY>

响应

名称类型
payload Device_DisableFn_Result

DisableFnIntr

请求

<EMPTY>

响应

名称类型
payload Device_DisableFnIntr_Result

DoRwTxn

客户端负责执行以下缓存操作:

读取请求后:

  • 在客户端已映射的缓冲区上,使用 ZX_CACHE_FLUSH_DATA | ZX_CACHE_FLUSH_INVALIDATE 调用 zx_cache_flush。
  • 对所有其他缓冲区调用 zx_vmo_op_range 并传入 ZX_VMO_OP_CACHE_CLEAN_INVALIDATE。

请注意,在 DoRwTxn 返回之前写入缓冲区的任何部分都可能会损坏接收到的数据。

在写入请求之前:

  • 对客户端已映射的缓冲区调用 zx_cache_flush 并传入 ZX_CACHE_FLUSH_DATA。
  • 在所有其他缓冲区上调用 zx_vmo_op_range 并传入 ZX_VMO_OP_CACHE_CLEAN。

请求

名称类型
txn SdioRwTxn

响应

名称类型
payload Device_DoRwTxn_Result

DoVendorControlRwByte

读取或写入供应商 CCCR 寄存器。addr 必须在 [0xF0, 0xFF] 范围内。

请求

名称类型
write bool
addr uint8
write_byte uint8

响应

名称类型
payload Device_DoVendorControlRwByte_Result

EnableFn

请求

<EMPTY>

响应

名称类型
payload Device_EnableFn_Result

EnableFnIntr

请求

<EMPTY>

响应

名称类型
payload Device_EnableFnIntr_Result

GetBlockSize

请求

<EMPTY>

响应

名称类型
payload Device_GetBlockSize_Result

GetDevHwInfo

请求

<EMPTY>

响应

名称类型
payload Device_GetDevHwInfo_Result

GetInBandIntr

返回一个虚拟中断,当卡发出与此函数对应的中断信号时,SDIO 驱动程序将触发该中断。在调用 AckInBandIntr() 之前,不会触发其他中断。

请求

<EMPTY>

响应

名称类型
payload Device_GetInBandIntr_Result

IntrPending

如果函数 fn_idx 有待处理的中断,则返回 true,否则返回 false。

请求

<EMPTY>

响应

名称类型
payload Device_IntrPending_Result

IoAbort

以下函数会访问函数 0 上的卡通用控制寄存器 (CCCR)。 中止在指定函数上发生的 I/O 操作。

请求

<EMPTY>

响应

名称类型
payload Device_IoAbort_Result

IoReady

返回 CCCR 中此函数的 I/O 就绪位的值。

请求

<EMPTY>

响应

名称类型
payload Device_IoReady_Result

PerformTuning

在后台执行调优。如果总线延迟因温度或其他因素而发生变化,客户端可以使用此方法更新主机控制器延迟设置。例如,客户端可以定期调用此方法,或仅在响应数据 CRC 错误时调用。此调用所需的时间(以及其他请求被阻塞的时间)取决于控制器。

如果对 PerformTuning() 的另一个调用已处于待处理状态,则返回 ZX_ERR_ALREADY_BOUND。否则,如果 SDMMC 驱动程序的调优过程失败,则返回 ZX_OK 或错误值(请参阅 SDMMC 协议)。

请求

<EMPTY>

响应

名称类型
payload Device_PerformTuning_Result

ReadByte

从寄存器中读取一个字节。如果 suppress_error_messages 为 true,则 SDMMC 堆栈不会记录错误严重性消息。

请求

名称类型
address uint32
suppress_error_messages bool

响应

名称类型
payload Device_ReadByte_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 或对卡进行电源循环。

请求

<EMPTY>

响应

名称类型
payload Device_RequestCardReset_Result

UnregisterVmo

请求

名称类型
vmo_id uint32

响应

名称类型
payload Device_UnregisterVmo_Result

UpdateBlockSize

请求

名称类型
blk_sz uint16
deflt bool

响应

名称类型
payload Device_UpdateBlockSize_Result

WriteByte

将一个字节写入寄存器。如果 read_after_write 为 true,则在写入后读取寄存器并返回该值,否则返回原始值。如果 suppress_error_messages 为 true,则写入操作预计会失败,并且 SDMMC 堆栈不会记录错误严重级别的消息。

请求

名称类型
address uint32
byte uint8
read_after_write bool
suppress_error_messages bool

响应

名称类型
payload Device_WriteByte_Result

STRUCTS

Device_DisableFnIntr_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

<EMPTY>

Device_DisableFn_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

<EMPTY>

Device_DoRwTxn_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

<EMPTY>

Device_DoVendorControlRwByte_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

字段类型说明默认
read_byte uint8 无默认应用

Device_EnableFnIntr_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

<EMPTY>

Device_EnableFn_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

<EMPTY>

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 中定义

<EMPTY>

Device_IoReady_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

字段类型说明默认
ready bool 无默认应用

Device_PerformTuning_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

<EMPTY>

Device_ReadByte_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

字段类型说明默认
byte uint8 无默认应用

Device_RegisterVmo_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

<EMPTY>

Device_RequestCardReset_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

<EMPTY>

Device_UnregisterVmo_Response 资源

在 fuchsia.hardware.sdio/sdio.fidl 中定义

字段类型说明默认
vmo handle<vmo> 无默认应用

Device_UpdateBlockSize_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

<EMPTY>

Device_WriteByte_Response

在 fuchsia.hardware.sdio/sdio.fidl 中定义

字段类型说明默认
byte uint8 无默认应用

SdioDeviceHwInfo

在 fuchsia.hardware.sdio/sdio.fidl 中定义

字段类型说明默认
num_funcs uint32

sdio 函数的数量(包括函数 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> 无默认应用

TABLES

FunctionMetadata

在 fuchsia.hardware.sdio/metadata.fidl 中定义

描述 SDIO 函数的元数据。

序数字段类型说明
function uint32

SDIO 功能编号 (1-7)。强制。

id uint32

分配给此函数节点以进行驱动程序绑定的全局 ID。可选。

元数据

在 fuchsia.hardware.sdio/metadata.fidl 中定义

从开发板驱动程序传递到 SDMMC 驱动程序的 SDIO 元数据。

序数字段类型说明
functions vector<FunctionMetadata>:7

SDIO 设备公开的函数列表。强制。

UNIONS

Device_DisableFnIntr_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_DisableFnIntr_Response
err zx/Status

Device_DisableFn_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_DisableFn_Response
err zx/Status

Device_DoRwTxn_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_DoRwTxn_Response
err zx/Status

Device_DoVendorControlRwByte_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_DoVendorControlRwByte_Response
err zx/Status

Device_EnableFnIntr_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_EnableFnIntr_Response
err zx/Status

Device_EnableFn_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_EnableFn_Response
err zx/Status

Device_GetBlockSize_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_GetBlockSize_Response
err zx/Status

Device_GetDevHwInfo_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_GetDevHwInfo_Response
err zx/Status

Device_GetInBandIntr_Result strict resource

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_GetInBandIntr_Response
err zx/Status

Device_IntrPending_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_IntrPending_Response
err zx/Status

Device_IoAbort_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_IoAbort_Response
err zx/Status

Device_IoReady_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_IoReady_Response
err zx/Status

Device_PerformTuning_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_PerformTuning_Response
err zx/Status

Device_ReadByte_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_ReadByte_Response
err zx/Status

Device_RegisterVmo_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_RegisterVmo_Response
err zx/Status

Device_RequestCardReset_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_RequestCardReset_Response
err zx/Status

Device_UnregisterVmo_Result strict resource

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_UnregisterVmo_Response
err zx/Status

Device_UpdateBlockSize_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_UpdateBlockSize_Response
err zx/Status

Device_WriteByte_Result strict

在 fuchsia.hardware.sdio/sdio.fidl 中定义

序数变体类型说明
response Device_WriteByte_Response
err zx/Status

BITS

SdioDeviceCapabilities strict

类型:uint32

在 fuchsia.hardware.sdio/sdio.fidl 中定义

名称值说明
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
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 渠道