# SDIO ## Overview A Secure Digital Input Output \(SDIO\) card is an extension of the SD specification to cover I/O functions. SD and SDIO are called multimedia card \(MMCs\). In the Hardware Driver Foundation \(HDF\) framework, the SDIO module uses the independent service mode for API adaptation. In this mode, each device independently publishes a device service to handle external access requests. After receiving an access request from an API, the device manager extracts the parameters in the request to call the internal method of the target device. In the independent service mode, the service management capabilities of the HDFDeviceManager can be directly used. However, you need to configure a device node for each device, which increases the memory usage. **Figure 1** Independent service mode  ## Available APIs SdioDeviceOps ``` // Function template struct SdioDeviceOps { int32_t (*incrAddrReadBytes)(struct SdioDevice *dev, uint8_t *data, uint32_t addr, uint32_t size); int32_t (*incrAddrWriteBytes)(struct SdioDevice *dev, uint8_t *data, uint32_t addr, uint32_t size); int32_t (*fixedAddrReadBytes)(struct SdioDevice *dev, uint8_t *data, uint32_t addr, uint32_t size, uint32_t scatterLen); int32_t (*fixedAddrWriteBytes)(struct SdioDevice *dev, uint8_t *data, uint32_t addr, uint32_t size, uint32_t scatterLen); int32_t (*func0ReadBytes)(struct SdioDevice *dev, uint8_t *data, uint32_t addr, uint32_t size); int32_t (*func0WriteBytes)(struct SdioDevice *dev, uint8_t *data, uint32_t addr, uint32_t size); int32_t (*setBlockSize)(struct SdioDevice *dev, uint32_t blockSize); int32_t (*getCommonInfo)(struct SdioDevice *dev, SdioCommonInfo *info, uint32_t infoType); int32_t (*setCommonInfo)(struct SdioDevice *dev, SdioCommonInfo *info, uint32_t infoType); int32_t (*flushData)(struct SdioDevice *dev); int32_t (*enableFunc)(struct SdioDevice *dev); int32_t (*disableFunc)(struct SdioDevice *dev); int32_t (*claimIrq)(struct SdioDevice *dev, SdioIrqHandler *irqHandler); int32_t (*releaseIrq)(struct SdioDevice *dev); int32_t (*findFunc)(struct SdioDevice *dev, struct SdioFunctionConfig *configData); int32_t (*claimHost)(struct SdioDevice *dev); int32_t (*releaseHost)(struct SdioDevice *dev); }; ``` **Table 1** Callbacks for the members in the SdioDeviceOps structure