fuchsia.hardware.sdhci

Added: HEAD

PROTOCOLS

Device

Defined in fuchsia.hardware.sdhci/sdhci.fidl

GetBaseClock

Request

<EMPTY>

Response

NameType
clock uint32

GetBti

Gets a handle to the bus transaction initiator for the device. The caller receives ownership of the handle.

Request

NameType
index uint32

Response

NameType
payload Device_GetBti_Result

GetInterrupt

Request

<EMPTY>

Response

NameType
payload Device_GetInterrupt_Result

GetMmio

Mmio size minus offset must be at least 512 bytes as per the SDHCI specification.

Request

<EMPTY>

Response

NameType
payload Device_GetMmio_Result

GetQuirks

Returns device quirks.

Request

<EMPTY>

Response

NameType
quirks Quirk
dma_boundary_alignment uint64

HwReset

Platform specific HW reset.

Request

<EMPTY>

Response

<EMPTY>

VendorSetBusClock

SDHCI defines two clocks: the clock delivered to the external card ("SD clock") and the internal clock (upstream of the SD clock).

VendorSetBusClock() always enables the internal clock, and if frequency_hz is nonzero, enables the SD clock with the given frequency (the SD clock is disabled if frequency_hz is zero). The driver must wait for all clocks to be stable before returning.

This method is optional. If no vendor-specific clock configuration is needed, ZX_ERR_STOP should be returned, after which the SDHCI driver will configure the Clock Control register as recommended by the SDHCI specification.

Request

NameType
frequency_hz uint32

Response

NameType
payload Device_VendorSetBusClock_Result

STRUCTS

Device_GetBti_Response resource

Defined in fuchsia.hardware.sdhci/sdhci.fidl

FieldTypeDescriptionDefault
bti handle<bti> No default

Device_GetInterrupt_Response resource

Defined in fuchsia.hardware.sdhci/sdhci.fidl

FieldTypeDescriptionDefault
irq handle<interrupt> No default

Device_GetMmio_Response resource

Defined in fuchsia.hardware.sdhci/sdhci.fidl

FieldTypeDescriptionDefault
mmio handle<vmo> No default
offset zx/Off No default

Device_VendorSetBusClock_Response

Defined in fuchsia.hardware.sdhci/sdhci.fidl

<EMPTY>

UNIONS

Device_GetBti_Result strict resource

Defined in fuchsia.hardware.sdhci/sdhci.fidl

OrdinalVariantTypeDescription
response Device_GetBti_Response
err zx/Status

Device_GetInterrupt_Result strict resource

Defined in fuchsia.hardware.sdhci/sdhci.fidl

OrdinalVariantTypeDescription
response Device_GetInterrupt_Response
err zx/Status

Device_GetMmio_Result strict resource

Defined in fuchsia.hardware.sdhci/sdhci.fidl

OrdinalVariantTypeDescription
response Device_GetMmio_Response
err zx/Status

Device_VendorSetBusClock_Result strict

Defined in fuchsia.hardware.sdhci/sdhci.fidl

OrdinalVariantTypeDescription
response Device_VendorSetBusClock_Response
err zx/Status

BITS

Quirk strict

Type: uint64

Defined in fuchsia.hardware.sdhci/sdhci.fidl

NameValueDescription
1

This is a BCM28xx specific quirk. The bottom 8 bits of the 136 bit response are normally filled by 7 CRC bits and 1 reserved bit. The BCM controller checks the CRC for us and strips it off in the process. The higher level stack expects 136B responses to be packed in a certain way so we shift all the fields back to their proper offsets.

2

BCM28xx quirk: The BCM28xx appears to use its internal DMA engine to perform transfers against the SD card. Normally we would use SDMA or ADMA (if the part supported it). Since this part doesn't appear to support either, we just use PIO.

4

The bottom 8 bits of the 136 bit response are normally filled by 7 CRC bits and 1 reserved bit. Some controllers strip off the CRC. The higher level stack expects 136B responses to be packed in a certain way so we shift all the fields back to their proper offsets.

8

The controller uses a tuning process that does not follow the SDHCI specification.

16

Don't use DDR modes even if the SDHCI capabilities register indicates it is supported.

32

Prevent DMA buffers from crossing boundaries specified by dma_boundary_alignment. For example, a boundary alignment of 0x10000 will cause buffers crossing 64K boundaries to be split across multiple descriptors.

SERVICES

Service

Defined in fuchsia.hardware.sdhci/sdhci.fidl

NameTypeTransport
device fuchsia.hardware.sdhci/Device Driver