LCOV - code coverage report
Current view: top level - zephyr/sd - sdio.h Hit Total Coverage
Test: new.info Lines: 13 13 100.0 %
Date: 2024-12-22 00:14:23

          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 1.14