VSF Documented
Data Structures | Macros | Typedefs | Enumerations | Functions
vsf_template_i2s.h File Reference
#include "./vsf_template_hal_driver.h"
#include "hal/arch/vsf_arch.h"

Go to the source code of this file.

Data Structures

struct  vsf_i2s_status_t
 
struct  vsf_i2s_capability_t
 
struct  vsf_i2s_isr_t
 i2s interrupt configuration More...
 
struct  vsf_i2s_cfg_t
 i2s configuration More...
 
struct  vsf_i2s_op_t
 
struct  vsf_i2s_t
 

Macros

#define VSF_I2S_CFG_MULTI_CLASS   ENABLED
 Enable multi-class support by default for maximum availability..
 
#define VSF_I2S_CFG_PREFIX   vsf
 Define I2S hardware mask if count is defined.
 
#define VSF_I2S_CFG_FUNCTION_RENAME   ENABLED
 Disable VSF_I2S_CFG_FUNCTION_RENAME to use the original function names (e.g., vsf_i2s_init()).
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_MODE   DISABLED
 In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_MODE to redefine enum vsf_i2s_mode_t.
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_IRQ_MASK   DISABLED
 In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_IRQ_MASK to redefine enum vsf_i2s_irq_mask_t.
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_STATUS   DISABLED
 In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_STATUS to redefine struct vsf_i2s_status_t.
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_CFG   DISABLED
 In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_TYPE_CFG to redefine struct vsf_i2s_cfg_t. For compatibility, members should not be deleted when redefining.
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED
 In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_TYPE_CAPABILITY to redefine struct vsf_i2s_capability_t. For compatibility, members should not be deleted when struct vsf_i2s_capability_t redefining.
 
#define VSF_I2S_CFG_INHERIT_HAL_CAPABILITY   ENABLED
 In specific hardware driver, we can enable macro VSF_I2S_CFG_INHERIT_HAL_CAPABILITY to inherit structure vsf_peripheral_capability_t.
 
#define VSF_I2S_APIS(__prefix_name)
 I2S API template, used to generate I2S type, specific prefix function declarations, etc.
 

Typedefs

typedef enum vsf_i2s_mode_t vsf_i2s_mode_t
 
typedef enum vsf_i2s_irq_mask_t vsf_i2s_irq_mask_t
 
typedef struct vsf_i2s_status_t vsf_i2s_status_t
 
typedef struct vsf_i2s_capability_t vsf_i2s_capability_t
 
typedef struct vsf_i2s_t vsf_i2s_t
 
typedef void vsf_i2s_isr_handler_t(void *target_ptr, vsf_i2s_t *i2s_ptr, vsf_i2s_irq_mask_t irq_mask)
 i2s interrupt callback function prototype.
 
typedef struct vsf_i2s_isr_t vsf_i2s_isr_t
 i2s interrupt configuration
 
typedef struct vsf_i2s_cfg_t vsf_i2s_cfg_t
 i2s configuration
 
typedef struct vsf_i2s_op_t vsf_i2s_op_t
 

Enumerations

enum  vsf_i2s_mode_t {
  VSF_I2S_MODE_MASTER = (0x01ul << 0) ,
  VSF_I2S_MODE_SLAVE = (0x00ul << 0) ,
  VSF_I2S_DATA_BITLEN_16 = (0x01ul << 1) ,
  VSF_I2S_DATA_BITLEN_24 = (0x02ul << 1) ,
  VSF_I2S_DATA_BITLEN_32 = (0x03ul << 1) ,
  VSF_I2S_FRAME_BITLEN_16 = (0x01ul << 3) ,
  VSF_I2S_FRAME_BITLEN_24 = (0x02ul << 3) ,
  VSF_I2S_FRAME_BITLEN_32 = (0x03ul << 3) ,
  VSF_I2S_STANDARD_PHILIPS = (0x01ul << 5) ,
  VSF_I2S_STANDARD_MSB = (0x02ul << 5) ,
  VSF_I2S_STANDARD_LSB = (0x03ul << 5) ,
  VSF_I2S_LRCK_POL = (0x01ul << 7) ,
  VSF_I2S_BCK_POL = (0x01ul << 8) ,
  VSF_I2S_MCLK_OUTPUT = (0x01ul << 9)
}
 
enum  {
  VSF_I2S_MODE_COUNT = 0 ,
  VSF_I2S_MODE_MASK ,
  VSF_I2S_DATA_BITLEN_COUNT = 0 ,
  VSF_I2S_DATA_BITLEN_MASK ,
  VSF_I2S_FRAME_BITLEN_COUNT = 0 ,
  VSF_I2S_FRAME_BITLEN_MASK ,
  VSF_I2S_STANDARD_COUNT = 0 ,
  VSF_I2S_STANDARD_MASK ,
  VSF_I2S_MODE_ALL_BITS_MASK
}
 
enum  vsf_i2s_irq_mask_t {
  VSF_I2S_IRQ_MASK_TX_TGL_BUFFER = (0x1ul << 0) ,
  VSF_I2S_IRQ_MASK_RX_TGL_BUFFER = (0x1ul << 1)
}
 
enum  { VSF_I2S_IRQ_ALL_BITS_MASK }
 

Functions

vsf_err_t vsf_i2s_init (vsf_i2s_t *i2s_ptr, vsf_i2s_cfg_t *i2s_cfg)
 Initialize an I2S instance.
 
vsf_err_t vsf_i2s_tx_init (vsf_i2s_t *i2s_ptr, vsf_i2s_cfg_t *i2s_cfg)
 Initialize i2s tx channel.
 
void vsf_i2s_tx_fini (vsf_i2s_t *i2s_ptr)
 Finalize i2s tx channel.
 
vsf_err_t vsf_i2s_tx_get_configuration (vsf_i2s_t *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr)
 Get the current configuration of i2s tx channel.
 
vsf_err_t vsf_i2s_tx_start (vsf_i2s_t *i2s_ptr)
 Start i2s tx channel.
 
vsf_err_t vsf_i2s_rx_init (vsf_i2s_t *i2s_ptr, vsf_i2s_cfg_t *i2s_cfg)
 Initialize i2s rx channel.
 
void vsf_i2s_rx_fini (vsf_i2s_t *i2s_ptr)
 Finalize i2s rx channel.
 
vsf_err_t vsf_i2s_rx_get_configuration (vsf_i2s_t *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr)
 Get the current configuration of i2s rx channel.
 
vsf_err_t vsf_i2s_rx_start (vsf_i2s_t *i2s_ptr)
 Start i2s rx channel.
 
void vsf_i2s_fini (vsf_i2s_t *i2s_ptr)
 Finalize a i2s instance.
 
fsm_rt_t vsf_i2s_enable (vsf_i2s_t *i2s_ptr)
 Enable I2S instance.
 
fsm_rt_t vsf_i2s_disable (vsf_i2s_t *i2s_ptr)
 Disable i2s instance.
 
vsf_i2s_status_t vsf_i2s_status (vsf_i2s_t *i2s_ptr)
 Get the status of i2s instance.
 
vsf_i2s_capability_t vsf_i2s_capability (vsf_i2s_t *i2s_ptr)
 Get the capability of i2s instance.
 
vsf_err_t vsf_i2s_get_configuration (vsf_i2s_t *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr)
 Get the current configuration of an I2S instance.
 

Macro Definition Documentation

◆ VSF_I2S_CFG_MULTI_CLASS

#define VSF_I2S_CFG_MULTI_CLASS   ENABLED

Enable multi-class support by default for maximum availability..

◆ VSF_I2S_CFG_PREFIX

#define VSF_I2S_CFG_PREFIX   vsf

Define I2S hardware mask if count is defined.

Define I2S hardware count if mask is defined.

We can redefine macro VSF_I2S_CFG_PREFIX to specify a prefix to call a specific driver directly in the application code.

◆ VSF_I2S_CFG_FUNCTION_RENAME

#define VSF_I2S_CFG_FUNCTION_RENAME   ENABLED

Disable VSF_I2S_CFG_FUNCTION_RENAME to use the original function names (e.g., vsf_i2s_init()).

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_MODE

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_MODE   DISABLED

In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_MODE to redefine enum vsf_i2s_mode_t.

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_IRQ_MASK

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_IRQ_MASK   DISABLED

In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_IRQ_MASK to redefine enum vsf_i2s_irq_mask_t.

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_STATUS

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_STATUS   DISABLED

In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_STATUS to redefine struct vsf_i2s_status_t.

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_CFG

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_CFG   DISABLED

In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_TYPE_CFG to redefine struct vsf_i2s_cfg_t. For compatibility, members should not be deleted when redefining.

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_CAPABILITY

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED

In specific hardware driver, we can enable macro VSF_I2S_CFG_REIMPLEMENT_TYPE_CAPABILITY to redefine struct vsf_i2s_capability_t. For compatibility, members should not be deleted when struct vsf_i2s_capability_t redefining.

◆ VSF_I2S_CFG_INHERIT_HAL_CAPABILITY

#define VSF_I2S_CFG_INHERIT_HAL_CAPABILITY   ENABLED

In specific hardware driver, we can enable macro VSF_I2S_CFG_INHERIT_HAL_CAPABILITY to inherit structure vsf_peripheral_capability_t.

◆ VSF_I2S_APIS

#define VSF_I2S_APIS (   __prefix_name)
Value:
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, init, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, get_configuration, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, tx_init, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, void, i2s, tx_fini, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, tx_get_configuration, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, tx_start, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, rx_init, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, void, i2s, rx_fini, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, rx_get_configuration, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, rx_start, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, i2s, enable, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, i2s, disable, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_i2s_status_t, i2s, status, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_i2s_capability_t, i2s, capability, VSF_MCONNECT(__prefix_name, _t) *i2s_ptr)
vsf_err_t
Definition __type.h:42
struct VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_t)
Definition flash.c:53
__le16 capability
Definition ieee80211.h:134
Definition vsf_template_i2s.h:268
i2s configuration
Definition vsf_template_i2s.h:344
Definition vsf_template_i2s.h:259
fsm_rt_t
Definition vsf_fsm.h:315
#define __VSF_HAL_TEMPLATE_API
Definition vsf_template_instance_declaration.h:117
uint8_t status
Definition vsf_tgui.h:144

I2S API template, used to generate I2S type, specific prefix function declarations, etc.

Parameters
[in]__prefix_nameThe prefix used for generating I2S functions.

Typedef Documentation

◆ vsf_i2s_mode_t

◆ vsf_i2s_irq_mask_t

◆ vsf_i2s_status_t

◆ vsf_i2s_capability_t

◆ vsf_i2s_t

typedef struct vsf_i2s_t vsf_i2s_t

◆ vsf_i2s_isr_handler_t

typedef void vsf_i2s_isr_handler_t(void *target_ptr, vsf_i2s_t *i2s_ptr, vsf_i2s_irq_mask_t irq_mask)

i2s interrupt callback function prototype.

Note
It is called after interrupt occurs.
Parameters
target_ptrpointer of user.
i2s_ptrpointer of i2s instance.
irq_maskone or more value of enum vsf_i2s_irq_mask_t
Returns
None.
static void __user_i2s_irqhandler(void *target_ptr, vsf_i2s_t *i2s_ptr, enum irq_mask)
{
if (irq_mask & I2S_IRQ_MASK_TX_TGL_BUFFER) {
// do something
}
if (irq_mask & I2S_IRQ_MASK_RX_TGL_BUFFER) {
// do something
}
}
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
Definition vsf_template_i2s.h:372

◆ vsf_i2s_isr_t

typedef struct vsf_i2s_isr_t vsf_i2s_isr_t

i2s interrupt configuration

◆ vsf_i2s_cfg_t

typedef struct vsf_i2s_cfg_t vsf_i2s_cfg_t

i2s configuration

◆ vsf_i2s_op_t

typedef struct vsf_i2s_op_t vsf_i2s_op_t

Enumeration Type Documentation

◆ vsf_i2s_mode_t

Enumerator
VSF_I2S_MODE_MASTER 
VSF_I2S_MODE_SLAVE 
VSF_I2S_DATA_BITLEN_16 
VSF_I2S_DATA_BITLEN_24 
VSF_I2S_DATA_BITLEN_32 
VSF_I2S_FRAME_BITLEN_16 
VSF_I2S_FRAME_BITLEN_24 
VSF_I2S_FRAME_BITLEN_32 
VSF_I2S_STANDARD_PHILIPS 
VSF_I2S_STANDARD_MSB 
VSF_I2S_STANDARD_LSB 
VSF_I2S_LRCK_POL 
VSF_I2S_BCK_POL 
VSF_I2S_MCLK_OUTPUT 

◆ anonymous enum

anonymous enum
Enumerator
VSF_I2S_MODE_COUNT 
VSF_I2S_MODE_MASK 
VSF_I2S_DATA_BITLEN_COUNT 
VSF_I2S_DATA_BITLEN_MASK 
VSF_I2S_FRAME_BITLEN_COUNT 
VSF_I2S_FRAME_BITLEN_MASK 
VSF_I2S_STANDARD_COUNT 
VSF_I2S_STANDARD_MASK 
VSF_I2S_MODE_ALL_BITS_MASK 

◆ vsf_i2s_irq_mask_t

Enumerator
VSF_I2S_IRQ_MASK_TX_TGL_BUFFER 
VSF_I2S_IRQ_MASK_RX_TGL_BUFFER 

◆ anonymous enum

anonymous enum
Enumerator
VSF_I2S_IRQ_ALL_BITS_MASK 

Function Documentation

◆ vsf_i2s_init()

vsf_err_t vsf_i2s_init ( vsf_i2s_t i2s_ptr,
vsf_i2s_cfg_t i2s_cfg 
)
extern

Initialize an I2S instance.

Parameters
[in]i2s_ptrpointer to structure vsf_i2s_t
[in]cfg_ptrpointer to configuration structure vsf_i2s_cfg_t
Returns
vsf_err_t: VSF_ERR_NONE if initialization successful, otherwise return error code
Note
It is not necessary to call vsf_i2s_fini() to deinitialization. vsf_i2s_init() should be called before any other I2S API except vsf_i2s_capability().

◆ vsf_i2s_tx_init()

vsf_err_t vsf_i2s_tx_init ( vsf_i2s_t i2s_ptr,
vsf_i2s_cfg_t i2s_cfg 
)
extern

Initialize i2s tx channel.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
[in]cfg_ptra pointer to structure vsf_i2s_cfg_t
Returns
vsf_err_t: VSF_ERR_NONE if i2s initialized successfully, or a negative error code

◆ vsf_i2s_tx_fini()

void vsf_i2s_tx_fini ( vsf_i2s_t i2s_ptr)
extern

Finalize i2s tx channel.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
Returns
void

◆ vsf_i2s_tx_get_configuration()

vsf_err_t vsf_i2s_tx_get_configuration ( vsf_i2s_t i2s_ptr,
vsf_i2s_cfg_t cfg_ptr 
)
extern

Get the current configuration of i2s tx channel.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
[out]cfg_ptra pointer to structure vsf_i2s_cfg_t to store the current configuration
Returns
vsf_err_t: VSF_ERR_NONE if successful, or a negative error code

◆ vsf_i2s_tx_start()

vsf_err_t vsf_i2s_tx_start ( vsf_i2s_t i2s_ptr)
extern

Start i2s tx channel.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
Returns
vsf_err_t: VSF_ERR_NONE if i2s started successfully, or a negative error code

◆ vsf_i2s_rx_init()

vsf_err_t vsf_i2s_rx_init ( vsf_i2s_t i2s_ptr,
vsf_i2s_cfg_t i2s_cfg 
)
extern

Initialize i2s rx channel.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
[in]cfg_ptra pointer to structure vsf_i2s_cfg_t
Returns
vsf_err_t: VSF_ERR_NONE if i2s initialized successfully, or a negative error code

◆ vsf_i2s_rx_fini()

void vsf_i2s_rx_fini ( vsf_i2s_t i2s_ptr)
extern

Finalize i2s rx channel.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
Returns
void

◆ vsf_i2s_rx_get_configuration()

vsf_err_t vsf_i2s_rx_get_configuration ( vsf_i2s_t i2s_ptr,
vsf_i2s_cfg_t cfg_ptr 
)
extern

Get the current configuration of i2s rx channel.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
[out]cfg_ptra pointer to structure vsf_i2s_cfg_t to store the current configuration
Returns
vsf_err_t: VSF_ERR_NONE if successful, or a negative error code

◆ vsf_i2s_rx_start()

vsf_err_t vsf_i2s_rx_start ( vsf_i2s_t i2s_ptr)
extern

Start i2s rx channel.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
Returns
vsf_err_t: VSF_ERR_NONE if i2s started successfully, or a negative error code

◆ vsf_i2s_fini()

void vsf_i2s_fini ( vsf_i2s_t i2s_ptr)
extern

Finalize a i2s instance.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
Returns
none

◆ vsf_i2s_enable()

fsm_rt_t vsf_i2s_enable ( vsf_i2s_t i2s_ptr)
extern

Enable I2S instance.

Parameters
[in]i2s_ptrpointer to structure vsf_i2s_t
Returns
fsm_rt_t: return fsm_rt_cpl if enabled, fsm_rt_onging if waiting to be enabled

◆ vsf_i2s_disable()

fsm_rt_t vsf_i2s_disable ( vsf_i2s_t i2s_ptr)
extern

Disable i2s instance.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
Returns
fsm_rt_t: fsm_rt_cpl if disable complete, else return fsm_rt_onging

◆ vsf_i2s_status()

vsf_i2s_status_t vsf_i2s_status ( vsf_i2s_t i2s_ptr)
extern

Get the status of i2s instance.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
Returns
vsf_i2s_status_t: return all status of current i2s

◆ vsf_i2s_capability()

vsf_i2s_capability_t vsf_i2s_capability ( vsf_i2s_t i2s_ptr)
extern

Get the capability of i2s instance.

Parameters
[in]i2s_ptra pointer to structure vsf_i2s_t
Returns
vsf_i2s_capability_t: return all capability of current i2s vsf_i2s_capability_t

◆ vsf_i2s_get_configuration()

vsf_err_t vsf_i2s_get_configuration ( vsf_i2s_t i2s_ptr,
vsf_i2s_cfg_t cfg_ptr 
)
extern

Get the current configuration of an I2S instance.

Parameters
[in]i2s_ptrpointer to structure vsf_i2s_t
[out]cfg_ptrpointer to configuration structure vsf_i2s_cfg_t to store the current configuration
Returns
vsf_err_t: VSF_ERR_NONE if successful, otherwise return error code
Note
This function retrieves the current I2S configuration including sample rate, data format, and other settings. The I2S instance should be initialized before calling this function.
Generated from commit: vsfteam/vsf@74aa6ce