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