| .. _sdhc_api: |
| |
| |
| Secure Digital High Capacity (SDHC) |
| ################################### |
| |
| The SDHC api offers a generic interface for interacting with an SD host |
| controller device. It is used by the SD subsystem, and is not intended to be |
| directly used by the application |
| |
| Basic Operation |
| *************** |
| |
| SD Host Controller |
| ================== |
| |
| An SD host controller is a device capable of sending SD commands to an attached |
| SD card. These commands can be sent using the native SD protocol, or over SPI. |
| Some SD host controllers are also capable of communicating with MMC devices. |
| The SDHC api is designed to provide a generic way to send commands to and |
| interact with attached SD devices. |
| |
| Requests |
| ======== |
| |
| The core of the SDHC api is the :c:func:`sdhc_request` api. Requests contain a |
| :c:struct:`sdhc_command` command structure, and an optional |
| :c:struct:`sdhc_data` data structure. The caller may check the return code, |
| or the ``response`` field of the SD command structure to determine if the |
| SDHC request succeeded. The data structure allows the caller to specify a |
| number of blocks to transfer, and a buffer location to read or write them from. |
| Whether the provided buffer is used for sending or reading data depends on the |
| command opcode provided. |
| |
| Host Controller I/O |
| =================== |
| |
| The :c:func:`sdhc_set_io` api allows the user to change I/O settings of the SD |
| host controller, such as clock frequency, I/O voltage, and card power. Not all |
| controllers will support applying all I/O settings. For example, SPI mode |
| controllers typically cannot toggle power to the SD card. |
| |
| Related configuration options: |
| |
| * :kconfig:option:`CONFIG_SDHC` |
| |
| API Reference |
| ************* |
| |
| .. doxygengroup:: sdhc_interface |