LCOV - code coverage report
Current view: top level - zephyr/sd - sdio.h Coverage Total Hit
Test: new.info Lines: 100.0 % 13 13
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            1 : /*
       2              :  * Copyright 2023 NXP
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : /**
       8              :  * @file
       9              :  * @brief Public API for SDIO subsystem
      10              :  */
      11              : 
      12              : #ifndef ZEPHYR_INCLUDE_SD_SDIO_H_
      13              : #define ZEPHYR_INCLUDE_SD_SDIO_H_
      14              : 
      15              : #include <zephyr/device.h>
      16              : #include <zephyr/drivers/sdhc.h>
      17              : #include <zephyr/sd/sd.h>
      18              : 
      19              : #ifdef __cplusplus
      20              : extern "C" {
      21              : #endif
      22              : 
      23              : /**
      24              :  * @brief Initialize SDIO function.
      25              :  *
      26              :  * Initializes SDIO card function. The card function will not be enabled,
      27              :  * but after this call returns the SDIO function structure can be used to read
      28              :  * and write data from the card.
      29              :  * @param func: function structure to initialize
      30              :  * @param card: SD card to enable function on
      31              :  * @param num: function number to initialize
      32              :  * @retval 0 function was initialized successfully
      33              :  * @retval -EIO: I/O error
      34              :  */
      35            1 : int sdio_init_func(struct sd_card *card, struct sdio_func *func,
      36              :                    enum sdio_func_num num);
      37              : 
      38              : /**
      39              :  * @brief Enable SDIO function
      40              :  *
      41              :  * Enables SDIO card function. @ref sdio_init_func must be called to
      42              :  * initialized the function structure before enabling it in the card.
      43              :  * @param func: function to enable
      44              :  * @retval 0 function was enabled successfully
      45              :  * @retval -ETIMEDOUT: card I/O timed out
      46              :  * @retval -EIO: I/O error
      47              :  */
      48            1 : int sdio_enable_func(struct sdio_func *func);
      49              : 
      50              : /**
      51              :  * @brief Set block size of SDIO function
      52              :  *
      53              :  * Set desired block size for SDIO function, used by block transfers
      54              :  * to SDIO registers.
      55              :  * @param func: function to set block size for
      56              :  * @param bsize: block size
      57              :  * @retval 0 block size was set
      58              :  * @retval -EINVAL: unsupported/invalid block size
      59              :  * @retval -EIO: I/O error
      60              :  */
      61            1 : int sdio_set_block_size(struct sdio_func *func, uint16_t bsize);
      62              : 
      63              : /**
      64              :  * @brief Read byte from SDIO register
      65              :  *
      66              :  * Reads byte from SDIO register
      67              :  * @param func: function to read from
      68              :  * @param reg: register address to read from
      69              :  * @param val: filled with byte value read from register
      70              :  * @retval 0 read succeeded
      71              :  * @retval -EBUSY: card is busy with another request
      72              :  * @retval -ETIMEDOUT: card read timed out
      73              :  * @retval -EIO: I/O error
      74              :  */
      75            1 : int sdio_read_byte(struct sdio_func *func, uint32_t reg, uint8_t *val);
      76              : 
      77              : /**
      78              :  * @brief Write byte to SDIO register
      79              :  *
      80              :  * Writes byte to SDIO register
      81              :  * @param func: function to write to
      82              :  * @param reg: register address to write to
      83              :  * @param write_val: value to write to register
      84              :  * @retval 0 write succeeded
      85              :  * @retval -EBUSY: card is busy with another request
      86              :  * @retval -ETIMEDOUT: card write timed out
      87              :  * @retval -EIO: I/O error
      88              :  */
      89            1 : int sdio_write_byte(struct sdio_func *func, uint32_t reg, uint8_t write_val);
      90              : 
      91              : /**
      92              :  * @brief Write byte to SDIO register, and read result
      93              :  *
      94              :  * Writes byte to SDIO register, and reads the register after write
      95              :  * @param func: function to write to
      96              :  * @param reg: register address to write to
      97              :  * @param write_val: value to write to register
      98              :  * @param read_val: filled with value read from register
      99              :  * @retval 0 write succeeded
     100              :  * @retval -EBUSY: card is busy with another request
     101              :  * @retval -ETIMEDOUT: card write timed out
     102              :  * @retval -EIO: I/O error
     103              :  */
     104            1 : int sdio_rw_byte(struct sdio_func *func, uint32_t reg, uint8_t write_val,
     105              :                  uint8_t *read_val);
     106              : 
     107              : /**
     108              :  * @brief Read bytes from SDIO fifo
     109              :  *
     110              :  * Reads bytes from SDIO register, treating it as a fifo. Reads will
     111              :  * all be done from same address.
     112              :  * @param func: function to read from
     113              :  * @param reg: register address of fifo
     114              :  * @param data: filled with data read from fifo
     115              :  * @param len: length of data to read from card
     116              :  * @retval 0 read succeeded
     117              :  * @retval -EBUSY: card is busy with another request
     118              :  * @retval -ETIMEDOUT: card read timed out
     119              :  * @retval -EIO: I/O error
     120              :  */
     121            1 : int sdio_read_fifo(struct sdio_func *func, uint32_t reg, uint8_t *data,
     122              :                    uint32_t len);
     123              : 
     124              : /**
     125              :  * @brief Write bytes to SDIO fifo
     126              :  *
     127              :  * Writes bytes to SDIO register, treating it as a fifo. Writes will
     128              :  * all be done to same address.
     129              :  * @param func: function to write to
     130              :  * @param reg: register address of fifo
     131              :  * @param data: data to write to fifo
     132              :  * @param len: length of data to write to card
     133              :  * @retval 0 write succeeded
     134              :  * @retval -EBUSY: card is busy with another request
     135              :  * @retval -ETIMEDOUT: card write timed out
     136              :  * @retval -EIO: I/O error
     137              :  */
     138            1 : int sdio_write_fifo(struct sdio_func *func, uint32_t reg, uint8_t *data,
     139              :                     uint32_t len);
     140              : 
     141              : /**
     142              :  * @brief Read blocks from SDIO fifo
     143              :  *
     144              :  * Reads blocks from SDIO register, treating it as a fifo. Reads will
     145              :  * all be done from same address.
     146              :  * @param func: function to read from
     147              :  * @param reg: register address of fifo
     148              :  * @param data: filled with data read from fifo
     149              :  * @param blocks: number of blocks to read from fifo
     150              :  * @retval 0 read succeeded
     151              :  * @retval -EBUSY: card is busy with another request
     152              :  * @retval -ETIMEDOUT: card read timed out
     153              :  * @retval -EIO: I/O error
     154              :  */
     155            1 : int sdio_read_blocks_fifo(struct sdio_func *func, uint32_t reg, uint8_t *data,
     156              :                           uint32_t blocks);
     157              : 
     158              : /**
     159              :  * @brief Write blocks to SDIO fifo
     160              :  *
     161              :  * Writes blocks from SDIO register, treating it as a fifo. Writes will
     162              :  * all be done to same address.
     163              :  * @param func: function to write to
     164              :  * @param reg: register address of fifo
     165              :  * @param data: data to write to fifo
     166              :  * @param blocks: number of blocks to write to fifo
     167              :  * @retval 0 write succeeded
     168              :  * @retval -EBUSY: card is busy with another request
     169              :  * @retval -ETIMEDOUT: card write timed out
     170              :  * @retval -EIO: I/O error
     171              :  */
     172            1 : int sdio_write_blocks_fifo(struct sdio_func *func, uint32_t reg, uint8_t *data,
     173              :                            uint32_t blocks);
     174              : 
     175              : /**
     176              :  * @brief Copy bytes from an SDIO card
     177              :  *
     178              :  * Copies bytes from an SDIO card, starting from provided address.
     179              :  * @param func: function to read from
     180              :  * @param reg: register address to start copy at
     181              :  * @param data: buffer to copy data into
     182              :  * @param len: length of data to read
     183              :  * @retval 0 read succeeded
     184              :  * @retval -EBUSY: card is busy with another request
     185              :  * @retval -ETIMEDOUT: card read timed out
     186              :  * @retval -EIO: I/O error
     187              :  */
     188            1 : int sdio_read_addr(struct sdio_func *func, uint32_t reg, uint8_t *data,
     189              :                    uint32_t len);
     190              : 
     191              : /**
     192              :  * @brief Copy bytes to an SDIO card
     193              :  *
     194              :  * Copies bytes to an SDIO card, starting from provided address.
     195              :  *
     196              :  * @param func: function to write to
     197              :  * @param reg: register address to start copy at
     198              :  * @param data: buffer to copy data from
     199              :  * @param len: length of data to write
     200              :  * @retval 0 write succeeded
     201              :  * @retval -EBUSY: card is busy with another request
     202              :  * @retval -ETIMEDOUT: card write timed out
     203              :  * @retval -EIO: I/O error
     204              :  */
     205            1 : int sdio_write_addr(struct sdio_func *func, uint32_t reg, uint8_t *data,
     206              :                     uint32_t len);
     207              : 
     208              : #ifdef __cplusplus
     209              : }
     210              : #endif
     211              : 
     212              : #endif /* ZEPHYR_INCLUDE_SD_SDMMC_H_ */
        

Generated by: LCOV version 2.0-1