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_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_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.
 

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, _i2s_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, _i2s_t) *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, void, i2s, tx_fini, VSF_MCONNECT(__prefix_name, _i2s_t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, tx_start, VSF_MCONNECT(__prefix_name, _i2s_t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, rx_init, VSF_MCONNECT(__prefix_name, _i2s_t) *i2s_ptr, vsf_i2s_cfg_t *cfg_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, void, i2s, rx_fini, VSF_MCONNECT(__prefix_name, _i2s_t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, i2s, rx_start, VSF_MCONNECT(__prefix_name, _i2s_t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, i2s, enable, VSF_MCONNECT(__prefix_name, _i2s_t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, i2s, disable, VSF_MCONNECT(__prefix_name, _i2s_t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_i2s_status_t, i2s, status, VSF_MCONNECT(__prefix_name, _i2s_t) *i2s_ptr) \
__VSF_HAL_TEMPLATE_API(__prefix_name, vsf_i2s_capability_t, i2s, capability, VSF_MCONNECT(__prefix_name, _i2s_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:265
i2s configuration
Definition vsf_template_i2s.h:341
Definition vsf_template_i2s.h:256
fsm_rt_t
Definition vsf_fsm.h:315
#define __VSF_HAL_TEMPLATE_API
Definition vsf_template_instance_declaration.h:57
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:369

◆ 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_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_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
Generated from commit: vsfteam/vsf@2b286be