1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * 4 * HDF is dual licensed: you can use it either under the terms of 5 * the GPL, or the BSD license, at your option. 6 * See the LICENSE file in the root of this repository for complete details. 7 */ 8 9 #ifndef AUDIO_ACCESSORY_BASE_H 10 #define AUDIO_ACCESSORY_BASE_H 11 12 #include "audio_host.h" 13 #include "audio_control.h" 14 15 #ifdef __cplusplus 16 #if __cplusplus 17 extern "C" { 18 #endif 19 #endif /* __cplusplus */ 20 21 enum I2sFrequency { 22 I2S_SAMPLE_FREQUENCY_8000 = 8000, /* 8kHz sample_rate */ 23 I2S_SAMPLE_FREQUENCY_11025 = 11025, /* 11.025kHz sample_rate */ 24 I2S_SAMPLE_FREQUENCY_12000 = 12000, /* 12kHz sample_rate */ 25 I2S_SAMPLE_FREQUENCY_16000 = 16000, /* 16kHz sample_rate */ 26 I2S_SAMPLE_FREQUENCY_22050 = 22050, /* 22.050kHz sample_rate */ 27 I2S_SAMPLE_FREQUENCY_24000 = 24000, /* 24kHz sample_rate */ 28 I2S_SAMPLE_FREQUENCY_32000 = 32000, /* 32kHz sample_rate */ 29 I2S_SAMPLE_FREQUENCY_44100 = 44100, /* 44.1kHz sample_rate */ 30 I2S_SAMPLE_FREQUENCY_48000 = 48000, /* 48kHz sample_rate */ 31 I2S_SAMPLE_FREQUENCY_64000 = 64000, /* 64kHz sample_rate */ 32 I2S_SAMPLE_FREQUENCY_88200 = 88200, /* 88.2kHz sample_rate */ 33 I2S_SAMPLE_FREQUENCY_96000 = 96000 /* 96kHz sample_rate */ 34 }; 35 36 enum I2sFrequencyRegVal { 37 I2S_SAMPLE_FREQUENCY_REG_VAL_8000 = 0x0, /* 8kHz sample_rate */ 38 I2S_SAMPLE_FREQUENCY_REG_VAL_11025 = 0x1, /* 11.025kHz sample_rate */ 39 I2S_SAMPLE_FREQUENCY_REG_VAL_12000 = 0x2, /* 12kHz sample_rate */ 40 I2S_SAMPLE_FREQUENCY_REG_VAL_16000 = 0x3, /* 16kHz sample_rate */ 41 I2S_SAMPLE_FREQUENCY_REG_VAL_22050 = 0x4, /* 22.050kHz sample_rate */ 42 I2S_SAMPLE_FREQUENCY_REG_VAL_24000 = 0x5, /* 24kHz sample_rate */ 43 I2S_SAMPLE_FREQUENCY_REG_VAL_32000 = 0x6, /* 32kHz sample_rate */ 44 I2S_SAMPLE_FREQUENCY_REG_VAL_44100 = 0x7, /* 44.1kHz sample_rate */ 45 I2S_SAMPLE_FREQUENCY_REG_VAL_48000 = 0x8, /* 48kHz sample_rate */ 46 I2S_SAMPLE_FREQUENCY_REG_VAL_64000 = 0x9, /* 64kHz sample_rate */ 47 I2S_SAMPLE_FREQUENCY_REG_VAL_88200 = 0xA, /* 88.2kHz sample_rate */ 48 I2S_SAMPLE_FREQUENCY_REG_VAL_96000 = 0xB /* 96kHz sample_rate */ 49 }; 50 51 enum I2sFormatRegVal { 52 I2S_SAMPLE_FORMAT_REG_VAL_MSB_24 = 0x2, /* MSB-justified data up to 24 bits */ 53 I2S_SAMPLE_FORMAT_REG_VAL_24 = 0x3, /* I2S data up to 24 bits */ 54 I2S_SAMPLE_FORMAT_REG_VAL_LSB_16 = 0x4, /* LSB-justified 16-bit data */ 55 I2S_SAMPLE_FORMAT_REG_VAL_LSB_18 = 0x5, /* LSB-justified 18-bit data */ 56 I2S_SAMPLE_FORMAT_REG_VAL_LSB_20 = 0x6, /* LSB-justified 20-bit data */ 57 I2S_SAMPLE_FORMAT_REG_VAL_LSB_24 = 0x7, /* LSB-justified 24-bit data */ 58 }; 59 60 int32_t FormatToBitWidth(enum AudioFormat format, uint16_t *bitWidth); 61 int32_t RateToFrequency(uint32_t rate, uint16_t *freq); 62 63 #ifdef __cplusplus 64 #if __cplusplus 65 } 66 #endif 67 #endif /* __cplusplus */ 68 69 #endif 70