• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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