fuchsia.hardware.sdio

Added: HEAD

PROTOCOLS

Device

Defined in fuchsia.hardware.sdio/sdio.fidl

AckInBandIntr

See above. Clients should call AckInBandIntr() after starting to wait on the interrupt object just in case there is already an in-band interrupt pending for this function.

Request

<EMPTY>

DisableFn

Request

<EMPTY>

Response

NameType
payload Device_DisableFn_Result

DisableFnIntr

Request

<EMPTY>

Response

NameType
payload Device_DisableFnIntr_Result

DoRwByte

Request

NameType
write bool
addr uint32
write_byte uint8

Response

NameType
payload Device_DoRwByte_Result

DoRwTxn

Clients are responsible for performing the following cache operations:

After read requests:

  • Call zx_cache_flush with ZX_CACHE_FLUSH_DATA | ZX_CACHE_FLUSH_INVALIDATE on buffers that have been mapped by the client.
  • Call zx_vmo_op_range with ZX_VMO_OP_CACHE_CLEAN_INVALIDATE on all other buffers.

Note that writing to any portion of a buffer before DoRwTxn has returned can corrupt the received data.

Before write requests:

  • Call zx_cache_flush with ZX_CACHE_FLUSH_DATA on buffers that have been mapped by the client.
  • Call zx_vmo_op_range with ZX_VMO_OP_CACHE_CLEAN on all other buffers.

Request

NameType
txn SdioRwTxn

Response

NameType
payload Device_DoRwTxn_Result

DoVendorControlRwByte

Reads or writes to a vendor CCCR register. addr must be in [0xF0, 0xFF].

Request

NameType
write bool
addr uint8
write_byte uint8

Response

NameType
payload Device_DoVendorControlRwByte_Result

EnableFn

Request

<EMPTY>

Response

NameType
payload Device_EnableFn_Result

EnableFnIntr

Request

<EMPTY>

Response

NameType
payload Device_EnableFnIntr_Result

GetBlockSize

Request

<EMPTY>

Response

NameType
payload Device_GetBlockSize_Result

GetDevHwInfo

Request

<EMPTY>

Response

NameType
payload Device_GetDevHwInfo_Result

GetInBandIntr

Returns a virtual interrupt that will be triggered by the SDIO driver when the card signals an interrupt corresponding to this function. No additional interrupts will be triggered until AckInBandIntr() is called.

Request

<EMPTY>

Response

NameType
payload Device_GetInBandIntr_Result

IntrPending

Returns true if an interrupt is pending for function fn_idx, false otherwise.

Request

<EMPTY>

Response

NameType
payload Device_IntrPending_Result

IoAbort

The following functions access the card common control registers (CCCR) on function 0. Aborts an I/O operation occurring on the specified function.

Request

<EMPTY>

Response

NameType
payload Device_IoAbort_Result

IoReady

Returns the value of the I/O Ready bit for this function in CCCR.

Request

<EMPTY>

Response

NameType
payload Device_IoReady_Result

PerformTuning

Perform tuning in the background. Clients can use this to update the host controller delay settings in case the bus delay has changed due to temperature or other factors. For example, clients could call this periodically, or only in response to data CRC errors. The amount of time this call takes (and the amount of time that other requests are blocked for) is controller-dependent.

Returns ZX_ERR_ALREADY_BOUND if another call to PerformTuning() is already pending. Otherwise returns ZX_OK or an error value if the SDMMC driver's tuning process failed (see the SDMMC protocol).

Request

<EMPTY>

Response

NameType
payload Device_PerformTuning_Result

RegisterVmo

Request

NameType
vmo_id uint32
vmo handle<vmo>
offset uint64
size uint64
vmo_rights uint32

Response

NameType
payload Device_RegisterVmo_Result

RequestCardReset

Requests that the core driver hard reset the card and perform the SDIO initialization sequence again. The callback will be called after the card has been re-initialized, and in the meantime all IO calls from this client will return ZX_ERR_SHOULD_WAIT. If an error occurs during initialization then all subsequent IO calls will return ZX_ERR_IO_NOT_PRESENT. The only way to recover from this situation would be to call RequestCardReset() again.

The SDIO core driver will wait for all clients to call this method before performing the reset and re-initialization. After the reset clients will have to perform their own initialization steps again, such as calling EnableFnIntr() or UpdateBlockSize().

VMO registration methods can always be called regardless of the reset state.

The specific method used to hard reset the card is platform- or board-specific; examples include toggling a reset GPIO or power cycling the card.

Request

<EMPTY>

Response

NameType
payload Device_RequestCardReset_Result

UnregisterVmo

Request

NameType
vmo_id uint32

Response

NameType
payload Device_UnregisterVmo_Result

UpdateBlockSize

Request

NameType
blk_sz uint16
deflt bool

Response

NameType
payload Device_UpdateBlockSize_Result

DriverDevice

Defined in fuchsia.hardware.sdio/sdio.fidl

A driver transport variant of the Device protocol.

AckInBandIntr

See above. Clients should call AckInBandIntr() after starting to wait on the interrupt object just in case there is already an in-band interrupt pending for this function.

Request

<EMPTY>

DisableFn

Request

<EMPTY>

Response

NameType
payload Device_DisableFn_Result

DisableFnIntr

Request

<EMPTY>

Response

NameType
payload Device_DisableFnIntr_Result

DoRwByte

Request

NameType
write bool
addr uint32
write_byte uint8

Response

NameType
payload Device_DoRwByte_Result

DoRwTxn

Clients are responsible for performing the following cache operations:

After read requests:

  • Call zx_cache_flush with ZX_CACHE_FLUSH_DATA | ZX_CACHE_FLUSH_INVALIDATE on buffers that have been mapped by the client.
  • Call zx_vmo_op_range with ZX_VMO_OP_CACHE_CLEAN_INVALIDATE on all other buffers.

Note that writing to any portion of a buffer before DoRwTxn has returned can corrupt the received data.

Before write requests:

  • Call zx_cache_flush with ZX_CACHE_FLUSH_DATA on buffers that have been mapped by the client.
  • Call zx_vmo_op_range with ZX_VMO_OP_CACHE_CLEAN on all other buffers.

Request

NameType
txn SdioRwTxn

Response

NameType
payload Device_DoRwTxn_Result

DoVendorControlRwByte

Reads or writes to a vendor CCCR register. addr must be in [0xF0, 0xFF].

Request

NameType
write bool
addr uint8
write_byte uint8

Response

NameType
payload Device_DoVendorControlRwByte_Result

EnableFn

Request

<EMPTY>

Response

NameType
payload Device_EnableFn_Result

EnableFnIntr

Request

<EMPTY>

Response

NameType
payload Device_EnableFnIntr_Result

GetBlockSize

Request

<EMPTY>

Response

NameType
payload Device_GetBlockSize_Result

GetDevHwInfo

Request

<EMPTY>

Response

NameType
payload Device_GetDevHwInfo_Result

GetInBandIntr

Returns a virtual interrupt that will be triggered by the SDIO driver when the card signals an interrupt corresponding to this function. No additional interrupts will be triggered until AckInBandIntr() is called.

Request

<EMPTY>

Response

NameType
payload Device_GetInBandIntr_Result

IntrPending

Returns true if an interrupt is pending for function fn_idx, false otherwise.

Request

<EMPTY>

Response

NameType
payload Device_IntrPending_Result

IoAbort

The following functions access the card common control registers (CCCR) on function 0. Aborts an I/O operation occurring on the specified function.

Request

<EMPTY>

Response

NameType
payload Device_IoAbort_Result

IoReady

Returns the value of the I/O Ready bit for this function in CCCR.

Request

<EMPTY>

Response

NameType
payload Device_IoReady_Result

PerformTuning

Perform tuning in the background. Clients can use this to update the host controller delay settings in case the bus delay has changed due to temperature or other factors. For example, clients could call this periodically, or only in response to data CRC errors. The amount of time this call takes (and the amount of time that other requests are blocked for) is controller-dependent.

Returns ZX_ERR_ALREADY_BOUND if another call to PerformTuning() is already pending. Otherwise returns ZX_OK or an error value if the SDMMC driver's tuning process failed (see the SDMMC protocol).

Request

<EMPTY>

Response

NameType
payload Device_PerformTuning_Result

RegisterVmo

Request

NameType
vmo_id uint32
vmo handle<vmo>
offset uint64
size uint64
vmo_rights uint32

Response

NameType
payload Device_RegisterVmo_Result

RequestCardReset

Requests that the core driver hard reset the card and perform the SDIO initialization sequence again. The callback will be called after the card has been re-initialized, and in the meantime all IO calls from this client will return ZX_ERR_SHOULD_WAIT. If an error occurs during initialization then all subsequent IO calls will return ZX_ERR_IO_NOT_PRESENT. The only way to recover from this situation would be to call RequestCardReset() again.

The SDIO core driver will wait for all clients to call this method before performing the reset and re-initialization. After the reset clients will have to perform their own initialization steps again, such as calling EnableFnIntr() or UpdateBlockSize().

VMO registration methods can always be called regardless of the reset state.

The specific method used to hard reset the card is platform- or board-specific; examples include toggling a reset GPIO or power cycling the card.

Request

<EMPTY>

Response

NameType
payload Device_RequestCardReset_Result

UnregisterVmo

Request

NameType
vmo_id uint32

Response

NameType
payload Device_UnregisterVmo_Result

UpdateBlockSize

Request

NameType
blk_sz uint16
deflt bool

Response

NameType
payload Device_UpdateBlockSize_Result

STRUCTS

Device_DisableFnIntr_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

Device_DisableFn_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

Device_DoRwByte_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
read_byte uint8 No default

Device_DoRwTxn_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

Device_DoVendorControlRwByte_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
read_byte uint8 No default

Device_EnableFnIntr_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

Device_EnableFn_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

Device_GetBlockSize_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
cur_blk_size uint16 No default

Device_GetDevHwInfo_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
hw_info SdioHwInfo No default

Device_GetInBandIntr_Response resource

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
irq handle<interrupt> No default

Device_IntrPending_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
pending bool No default

Device_IoAbort_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

Device_IoReady_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
ready bool No default

Device_PerformTuning_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

Device_RegisterVmo_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

Device_RequestCardReset_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

Device_UnregisterVmo_Response resource

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
vmo handle<vmo> No default

Device_UpdateBlockSize_Response

Defined in fuchsia.hardware.sdio/sdio.fidl

<EMPTY>

SdioDeviceHwInfo

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
num_funcs uint32

number of sdio funcs including func 0

No default
sdio_vsn uint32 No default
cccr_vsn uint32 No default
caps SdioDeviceCapabilities No default
max_tran_speed uint32 No default

SdioFuncHwInfo

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
manufacturer_id uint32 No default
product_id uint32 No default
max_blk_size uint32 No default
fn_intf_code uint8 No default

SdioHwInfo

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
dev_hw_info SdioDeviceHwInfo No default
func_hw_info SdioFuncHwInfo No default
host_max_transfer_size uint32 No default

SdioRwTxn resource

Defined in fuchsia.hardware.sdio/sdio.fidl

FieldTypeDescriptionDefault
addr uint32 No default
incr bool No default
write bool No default
buffers vector<fuchsia.hardware.sdmmc/SdmmcBufferRegion> No default

UNIONS

Device_DisableFnIntr_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_DisableFnIntr_Response
err zx/Status

Device_DisableFn_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_DisableFn_Response
err zx/Status

Device_DoRwByte_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_DoRwByte_Response
err zx/Status

Device_DoRwTxn_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_DoRwTxn_Response
err zx/Status

Device_DoVendorControlRwByte_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_DoVendorControlRwByte_Response
err zx/Status

Device_EnableFnIntr_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_EnableFnIntr_Response
err zx/Status

Device_EnableFn_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_EnableFn_Response
err zx/Status

Device_GetBlockSize_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_GetBlockSize_Response
err zx/Status

Device_GetDevHwInfo_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_GetDevHwInfo_Response
err zx/Status

Device_GetInBandIntr_Result strict resource

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_GetInBandIntr_Response
err zx/Status

Device_IntrPending_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_IntrPending_Response
err zx/Status

Device_IoAbort_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_IoAbort_Response
err zx/Status

Device_IoReady_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_IoReady_Response
err zx/Status

Device_PerformTuning_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_PerformTuning_Response
err zx/Status

Device_RegisterVmo_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_RegisterVmo_Response
err zx/Status

Device_RequestCardReset_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_RequestCardReset_Response
err zx/Status

Device_UnregisterVmo_Result strict resource

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_UnregisterVmo_Response
err zx/Status

Device_UpdateBlockSize_Result strict

Defined in fuchsia.hardware.sdio/sdio.fidl

OrdinalVariantTypeDescription
response Device_UpdateBlockSize_Response
err zx/Status

BITS

SdioDeviceCapabilities strict

Type: uint32

Defined in fuchsia.hardware.sdio/sdio.fidl

NameValueDescription
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536

CONSTANTS

NameValueTypeDescription
SDIO_MAX_FUNCS 8 uint8

SERVICES

DriverService

Defined in fuchsia.hardware.sdio/sdio.fidl

NameTypeTransport
device fuchsia.hardware.sdio/DriverDevice Driver

Service

Defined in fuchsia.hardware.sdio/sdio.fidl

NameTypeTransport
device fuchsia.hardware.sdio/Device Channel