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
 
#define VSF_I2S_CFG_PREFIX   vsf
 
#define VSF_I2S_CFG_FUNCTION_RENAME   ENABLED
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_MODE   DISABLED
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_IRQ_MASK   DISABLED
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_STATUS   DISABLED
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_CFG   DISABLED
 
#define VSF_I2S_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED
 
#define VSF_I2S_CFG_INHERT_HAL_CAPABILITY   ENABLED
 
#define VSF_I2S_APIS(__prefix_name)
 
#define __VSF_HAL_TEMPLATE_API   VSF_HAL_TEMPLATE_API_FP
 
#define __vsf_i2s_t   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_t)
 
#define vsf_i2s_init(__i2s, ...)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_init) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)
 
#define vsf_i2s_enable(__i2s)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_enable) ((__vsf_i2s_t *)(__i2s))
 
#define vsf_i2s_disable(__i2s)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_disable) ((__vsf_i2s_t *)(__i2s))
 
#define vsf_i2s_status(__i2s)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_status) ((__vsf_i2s_t *)(__i2s))
 
#define vsf_i2s_capability(__i2s)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_capability) ((__vsf_i2s_t *)(__i2s))
 
#define vsf_i2s_tx_init(__i2s, ...)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_tx_init) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)
 
#define vsf_i2s_tx_fini(__i2s, ...)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_tx_fini) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)
 
#define vsf_i2s_tx_start(__i2s)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_tx_start) ((__vsf_i2s_t *)(__i2s))
 
#define vsf_i2s_rx_init(__i2s, ...)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_rx_init) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)
 
#define vsf_i2s_rx_fini(__i2s, ...)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_rx_fini) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)
 
#define vsf_i2s_rx_start(__i2s)   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_rx_start) ((__vsf_i2s_t *)(__i2s))
 

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 a 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

◆ VSF_I2S_CFG_PREFIX

#define VSF_I2S_CFG_PREFIX   vsf

◆ VSF_I2S_CFG_FUNCTION_RENAME

#define VSF_I2S_CFG_FUNCTION_RENAME   ENABLED

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_MODE

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_MODE   DISABLED

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_IRQ_MASK

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_IRQ_MASK   DISABLED

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_STATUS

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_STATUS   DISABLED

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_CFG

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_CFG   DISABLED

Redefine struct vsf_i2s_cfg_t. The vsf_i2s_isr_handler_t type also needs to be redefined For compatibility, members should not be deleted when struct vsf_i2s_cfg_t redefining.

◆ VSF_I2S_CFG_REIMPLEMENT_TYPE_CAPABILITY

#define VSF_I2S_CFG_REIMPLEMENT_TYPE_CAPABILITY   DISABLED

Redefine struct vsf_i2s_capability_t. For compatibility, members should not be deleted when struct vsf_i2s_capability_t redefining.

◆ VSF_I2S_CFG_INHERT_HAL_CAPABILITY

#define VSF_I2S_CFG_INHERT_HAL_CAPABILITY   ENABLED

◆ 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:181
i2s configuration
Definition vsf_template_i2s.h:257
Definition vsf_template_i2s.h:172
fsm_rt_t
Definition vsf_fsm.h:315
#define __VSF_HAL_TEMPLATE_API
Definition vsf_template_i2s.h:277
uint8_t status
Definition vsf_tgui.h:122

◆ __VSF_HAL_TEMPLATE_API

#define __VSF_HAL_TEMPLATE_API   VSF_HAL_TEMPLATE_API_FP

◆ __vsf_i2s_t

#define __vsf_i2s_t   VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_t)

◆ vsf_i2s_init

#define vsf_i2s_init (   __i2s,
  ... 
)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_init) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)

◆ vsf_i2s_enable

#define vsf_i2s_enable (   __i2s)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_enable) ((__vsf_i2s_t *)(__i2s))

◆ vsf_i2s_disable

#define vsf_i2s_disable (   __i2s)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_disable) ((__vsf_i2s_t *)(__i2s))

◆ vsf_i2s_status

#define vsf_i2s_status (   __i2s)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_status) ((__vsf_i2s_t *)(__i2s))

◆ vsf_i2s_capability

#define vsf_i2s_capability (   __i2s)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_capability) ((__vsf_i2s_t *)(__i2s))

◆ vsf_i2s_tx_init

#define vsf_i2s_tx_init (   __i2s,
  ... 
)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_tx_init) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)

◆ vsf_i2s_tx_fini

#define vsf_i2s_tx_fini (   __i2s,
  ... 
)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_tx_fini) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)

◆ vsf_i2s_tx_start

#define vsf_i2s_tx_start (   __i2s)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_tx_start) ((__vsf_i2s_t *)(__i2s))

◆ vsf_i2s_rx_init

#define vsf_i2s_rx_init (   __i2s,
  ... 
)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_rx_init) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)

◆ vsf_i2s_rx_fini

#define vsf_i2s_rx_fini (   __i2s,
  ... 
)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_rx_fini) ((__vsf_i2s_t *)(__i2s), ##__VA_ARGS__)

◆ vsf_i2s_rx_start

#define vsf_i2s_rx_start (   __i2s)    VSF_MCONNECT(VSF_I2S_CFG_PREFIX, _i2s_rx_start) ((__vsf_i2s_t *)(__i2s))

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:283

◆ 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 a i2s instance.

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 was initialized, or a negative 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_ptra pointer to structure vsf_i2s_t
Returns
fsm_rt_t: fsm_rt_cpl if enable complete, else return fsm_rt_onging

◆ 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