• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_I2S_COMMON_H
9 #define HPM_I2S_COMMON_H
10 
11 /**
12  * @brief I2S common driver APIs
13  * @defgroup i2s_common_interface I2S common driver APIs
14  * @ingroup io_interfaces
15  * @{
16  */
17 
18 #define I2S_PROTOCOL_I2S_PHILIPS (0U)
19 #define I2S_PROTOCOL_MSB_JUSTIFIED (1U)
20 #define I2S_PROTOCOL_LEFT_JUSTIFIED (1U)
21 #define I2S_PROTOCOL_LSB_JUSTIFIED (2U)
22 #define I2S_PROTOCOL_RIGHT_JUSTIFIED (2U)
23 #define I2S_PROTOCOL_PCM (3U)
24 
25 /* i2s channel slot mask */
26 #define I2S_CHANNEL_SLOT_MASK(x) (1U << (x))
27 /* convert audio depth value into CFGR[DATASIZ] value map */
28 #define I2S_CFGR_DATASIZ(x) ((x - 16) >> 3)
29 /* convert channel length value into CFGR[CHSIZ] value map */
30 #define I2S_CFGR_CHSIZ(x)   ((x - 16) >> 4)
31 
32 /**
33  * @brief I2S audio depth
34  */
35 enum {
36     i2s_audio_depth_16_bits = 16,
37     i2s_audio_depth_24_bits = 24,
38     i2s_audio_depth_32_bits = 32,
39 };
40 
41 /**
42  * @brief I2S channel length
43  */
44 enum {
45     i2s_channel_length_16_bits = 16,
46     i2s_channel_length_32_bits = 32,
47 };
48 
49 /**
50  * @brief I2S stereo/mono channel
51  */
52 enum {
53     i2s_mono_left  = 0,
54     i2s_mono_right = 1,
55     i2s_stereo     = 2,
56 };
57 
58 /**
59  * @}
60  */
61 
62 #endif /* HPM_I2S_COMMON_H */
63