mirror of
https://github.com/apache/nuttx.git
synced 2026-05-31 14:27:37 +08:00
drivers/audio/es8388: Add input support
This commit is contained in:
committed by
Alan Carvalho de Assis
parent
64e7e43f1f
commit
326261dd7d
@@ -210,6 +210,7 @@ config AUDIO_ES8388
|
|||||||
bool "ES8388 codec chip"
|
bool "ES8388 codec chip"
|
||||||
default n
|
default n
|
||||||
depends on AUDIO
|
depends on AUDIO
|
||||||
|
select AUDIO_DRIVER_SPECIFIC_BUFFERS
|
||||||
---help---
|
---help---
|
||||||
Select to enable support for the ES8388 Audio codec by Everest
|
Select to enable support for the ES8388 Audio codec by Everest
|
||||||
Semiconductor.
|
Semiconductor.
|
||||||
@@ -223,10 +224,62 @@ config ES8388_INPUT_INITVOLUME
|
|||||||
int "ES8388 initial input volume setting"
|
int "ES8388 initial input volume setting"
|
||||||
default 1000
|
default 1000
|
||||||
|
|
||||||
|
config ES8388_OUTPUT_CHANNEL
|
||||||
|
int
|
||||||
|
default 0 if ES8388_OUTPUT_CHANNEL_LINE1
|
||||||
|
default 1 if ES8388_OUTPUT_CHANNEL_LINE2
|
||||||
|
default 2 if ES8388_OUTPUT_CHANNEL_ALL
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "ES8388 output channel"
|
||||||
|
default ES8388_OUTPUT_CHANNEL_ALL
|
||||||
|
---help---
|
||||||
|
Select the codec channel that will output audio.
|
||||||
|
The actual device that will reproduce the audio signal depends
|
||||||
|
on the board implementation.
|
||||||
|
|
||||||
|
config ES8388_OUTPUT_CHANNEL_LINE1
|
||||||
|
bool "Line 1"
|
||||||
|
|
||||||
|
config ES8388_OUTPUT_CHANNEL_LINE2
|
||||||
|
bool "Line 2"
|
||||||
|
|
||||||
|
config ES8388_OUTPUT_CHANNEL_ALL
|
||||||
|
bool "Both"
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
config ES8388_OUTPUT_INITVOLUME
|
config ES8388_OUTPUT_INITVOLUME
|
||||||
int "ES8388 initial output volume setting"
|
int "ES8388 initial output volume setting"
|
||||||
default 400
|
default 400
|
||||||
|
|
||||||
|
config ES8388_INPUT_CHANNEL
|
||||||
|
int
|
||||||
|
default 0 if ES8388_INPUT_CHANNEL_LINE1
|
||||||
|
default 1 if ES8388_INPUT_CHANNEL_LINE2
|
||||||
|
default 3 if ES8388_INPUT_CHANNEL_DIFFERENTIAL
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "ES8388 input channel"
|
||||||
|
default ES8388_INPUT_CHANNEL_LINE1
|
||||||
|
---help---
|
||||||
|
Select the codec channel that will input audio.
|
||||||
|
The actual device that will reproduce the audio signal depends
|
||||||
|
on the board implementation.
|
||||||
|
The "Differential" option will take the difference between the Line 1
|
||||||
|
left and right channels.
|
||||||
|
|
||||||
|
config ES8388_INPUT_CHANNEL_LINE1
|
||||||
|
bool "Line 1"
|
||||||
|
|
||||||
|
config ES8388_INPUT_CHANNEL_LINE2
|
||||||
|
bool "Line 2"
|
||||||
|
|
||||||
|
config ES8388_INPUT_CHANNEL_DIFFERENTIAL
|
||||||
|
bool "Differential"
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
config ES8388_INFLIGHT
|
config ES8388_INFLIGHT
|
||||||
int "ES8388 maximum in-flight audio buffers"
|
int "ES8388 maximum in-flight audio buffers"
|
||||||
default 2
|
default 2
|
||||||
|
|||||||
+303
-165
File diff suppressed because it is too large
Load Diff
@@ -1072,10 +1072,10 @@ struct es8388_dev_s
|
|||||||
FAR const struct es8388_lower_s *lower; /* Pointer to the board lower functions */
|
FAR const struct es8388_lower_s *lower; /* Pointer to the board lower functions */
|
||||||
FAR struct i2c_master_s *i2c; /* I2C driver to use */
|
FAR struct i2c_master_s *i2c; /* I2C driver to use */
|
||||||
FAR struct i2s_dev_s *i2s; /* I2S driver to use */
|
FAR struct i2s_dev_s *i2s; /* I2S driver to use */
|
||||||
struct dq_queue_s pendq; /* Queue of pending buffers to be sent */
|
struct dq_queue_s pendq; /* Queue of pending buffers to be processed */
|
||||||
struct dq_queue_s doneq; /* Queue of sent buffers to be returned */
|
struct dq_queue_s doneq; /* Queue of sent buffers to be returned */
|
||||||
struct file mq; /* Message queue for receiving messages */
|
struct file mq; /* Message queue for receiving messages */
|
||||||
char mqname[16]; /* Our message queue name */
|
char mqname[NAME_MAX]; /* Our message queue name */
|
||||||
pthread_t threadid; /* ID of our thread */
|
pthread_t threadid; /* ID of our thread */
|
||||||
uint32_t bitrate; /* Actual programmed bit rate */
|
uint32_t bitrate; /* Actual programmed bit rate */
|
||||||
mutex_t pendlock; /* Protect pendq */
|
mutex_t pendlock; /* Protect pendq */
|
||||||
@@ -1084,7 +1084,8 @@ struct es8388_dev_s
|
|||||||
#ifndef CONFIG_AUDIO_EXCLUDE_BALANCE
|
#ifndef CONFIG_AUDIO_EXCLUDE_BALANCE
|
||||||
uint16_t balance; /* Current balance level {0..1000} */
|
uint16_t balance; /* Current balance level {0..1000} */
|
||||||
#endif /* CONFIG_AUDIO_EXCLUDE_BALANCE */
|
#endif /* CONFIG_AUDIO_EXCLUDE_BALANCE */
|
||||||
uint16_t volume; /* Current volume level {0..1000} */
|
uint16_t volume_out; /* Current output volume level {0..1000} */
|
||||||
|
uint16_t volume_in; /* Current input volume level {0..1000} */
|
||||||
#endif /* CONFIG_AUDIO_EXCLUDE_VOLUME */
|
#endif /* CONFIG_AUDIO_EXCLUDE_VOLUME */
|
||||||
uint8_t nchannels; /* Number of channels (1 or 2) */
|
uint8_t nchannels; /* Number of channels (1 or 2) */
|
||||||
uint8_t bpsamp; /* Bits per sample */
|
uint8_t bpsamp; /* Bits per sample */
|
||||||
@@ -1100,6 +1101,7 @@ struct es8388_dev_s
|
|||||||
es8388_module_t audio_mode; /* The current audio mode of the ES8388 chip */
|
es8388_module_t audio_mode; /* The current audio mode of the ES8388 chip */
|
||||||
es8388_dac_output_t dac_output; /* The current output of the ES8388 DAC */
|
es8388_dac_output_t dac_output; /* The current output of the ES8388 DAC */
|
||||||
es8388_adc_input_t adc_input; /* The current input of the ES8388 ADC */
|
es8388_adc_input_t adc_input; /* The current input of the ES8388 ADC */
|
||||||
|
es8388_mic_gain_t mic_gain; /* The current microphone gain */
|
||||||
uint32_t mclk; /* The current MCLK frequency */
|
uint32_t mclk; /* The current MCLK frequency */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -240,9 +240,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define AUDIO_VOLUME_MAX 1000
|
#define AUDIO_VOLUME_MAX 1000
|
||||||
#define AUDIO_VOLUME_MAX_FLOAT 1000.0f
|
|
||||||
#define AUDIO_VOLUME_MIN 0
|
#define AUDIO_VOLUME_MIN 0
|
||||||
#define AUDIO_VOLUME_MIN_FLOAT 0.0f
|
|
||||||
|
|
||||||
/* Audio Balance Limits *****************************************************/
|
/* Audio Balance Limits *****************************************************/
|
||||||
|
|
||||||
@@ -252,11 +250,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define AUDIO_BALANCE_RIGHT 1000
|
#define AUDIO_BALANCE_RIGHT 1000
|
||||||
#define AUDIO_BALANCE_RIGHT_FLOAT 1000.0f
|
|
||||||
#define AUDIO_BALANCE_CENTER 500
|
#define AUDIO_BALANCE_CENTER 500
|
||||||
#define AUDIO_BALANCE_CENTER_FLOAT 500.0f
|
|
||||||
#define AUDIO_BALANCE_LEFT 0
|
#define AUDIO_BALANCE_LEFT 0
|
||||||
#define AUDIO_BALANCE_LEFT_FLOAT 0.0f
|
|
||||||
|
|
||||||
/* Supported Feature Units controls *****************************************/
|
/* Supported Feature Units controls *****************************************/
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user