mirror of
https://github.com/apache/nuttx.git
synced 2025-01-13 06:18:40 +08:00
bbd6931d61
The fake audio driver aims to easily simulate the functions of audio driver through reading and writing files. With it, you can conveniently customize and define various capture or playback audio drivers for debugging or automated testing. Signed-off-by: yaojingwei <yaojingwei@xiaomi.com>
569 lines
13 KiB
Text
569 lines
13 KiB
Text
#
|
|
# For a description of the syntax of this configuration file,
|
|
# see the file kconfig-language.txt in the NuttX tools repository.
|
|
#
|
|
|
|
menuconfig DRIVERS_AUDIO
|
|
bool "Audio Device Support"
|
|
default n
|
|
---help---
|
|
Enable support for audio device drivers. This includes drivers for
|
|
MP3, WMA and Ogg Vorbis encoding, decoding, as well as drivers for
|
|
interfacing with external DSP chips to perform custom audio functions.
|
|
|
|
NOTE: All of these drivers depend on support from the audio subsystem
|
|
enabled with the AUDIO selection.
|
|
|
|
if DRIVERS_AUDIO
|
|
|
|
config AUDIO_TONE
|
|
bool "Audio Tone Generator using PWM"
|
|
default n
|
|
depends on PWM && DRIVERS_AUDIO
|
|
---help---
|
|
This driver enables the Audio Tone Generator for NuttX.
|
|
|
|
if AUDIO_TONE
|
|
|
|
endif # AUDIO_TONE
|
|
|
|
config AUDIO_VS1053
|
|
bool "VS1053 codec chip"
|
|
default n
|
|
depends on AUDIO
|
|
---help---
|
|
Select to enable support for the VS1053 Audio codec by VLSI Solutions.
|
|
This chip provides encoding and decoding of MP3, WMA, AAC and Ogg
|
|
Vorbis format audio. It also has a general DSP which is user
|
|
programmable to perform special audio (or any DSP) functions.
|
|
|
|
if AUDIO_VS1053
|
|
|
|
config VS1053_DEVICE_COUNT
|
|
int "Number of VS1053 devices attached"
|
|
default 1
|
|
---help---
|
|
Sets the number of VS1053 type devices available to the system.
|
|
This is required to reserve global, static lower-half driver
|
|
context pointers for the DREQ ISR to use for lookup when it needs
|
|
to signal that additional data is being requested.
|
|
|
|
config VS1053_WORKER_STACKSIZE
|
|
int "VS1053 worker thread stack size"
|
|
default 768
|
|
---help---
|
|
Stack size to use with the VS1053 worker thread.
|
|
|
|
if AUDIO_DRIVER_SPECIFIC_BUFFERS
|
|
|
|
config VS1053_NUM_BUFFERS
|
|
int "Number of Audio Pipeline Buffers to use"
|
|
default 2
|
|
---help---
|
|
Sets the number of the Audio Pipeline Buffers used to deliver audio
|
|
data to the VS1053 driver. The minimum you should set this is
|
|
2 buffers, which should be adequate for most media types.
|
|
|
|
config VS1053_BUFFER_SIZE
|
|
int "Size of Audio Pipeline Buffers to use"
|
|
default 8192
|
|
---help---
|
|
Sets the size of the Audio Pipeline Buffers used to deliver audio
|
|
data to the VS1053 driver. The minimum you should set this is
|
|
2048 bytes. The larger the buffer, the better CPU performance.
|
|
|
|
endif # AUDIO_DRIVER_SPECIFIC_BUFFERS
|
|
endif # AUDIO_VS1053
|
|
|
|
config AUDIO_CS43L22
|
|
bool "CS43L22 audio chip"
|
|
default n
|
|
depends on AUDIO
|
|
---help---
|
|
Select to enable support for the CS43L22 Audio codec by Cirrus Logic.
|
|
This chip is a lower level audio chip.. basically
|
|
an exotic D-to-A. It includes no built-in support for audio CODECS
|
|
The CS43L22 provides:
|
|
|
|
- Low power consumption
|
|
- High SNR
|
|
- Stereo digital microphone input
|
|
- Digital Dynamic Range Controller (compressor / limiter)
|
|
- Digital sidetone mixing
|
|
- Ground-referenced headphone driver
|
|
- Ground-referenced line outputs
|
|
|
|
NOTE: This driver also depends on both I2C and I2S support although
|
|
that dependency is not explicit here.
|
|
|
|
if AUDIO_CS43L22
|
|
|
|
config CS43L22_INITVOLUME
|
|
int "CS43L22 initial volume setting"
|
|
default 250
|
|
|
|
config CS43L22_INFLIGHT
|
|
int "CS43L22 maximum in-flight audio buffers"
|
|
default 2
|
|
|
|
config CS43L22_MSG_PRIO
|
|
int "CS43L22 message priority"
|
|
default 1
|
|
|
|
config CS43L22_BUFFER_SIZE
|
|
int "CS43L22 preferred buffer size"
|
|
default 8192
|
|
|
|
config CS43L22_NUM_BUFFERS
|
|
int "CS43L22 preferred number of buffers"
|
|
default 4
|
|
|
|
config CS43L22_WORKER_STACKSIZE
|
|
int "CS43L22 worker thread stack size"
|
|
default 768
|
|
|
|
config CS43L22_REGDUMP
|
|
bool "CS43L22 register dump"
|
|
default n
|
|
---help---
|
|
Enable logic to dump the contents of all CS43L22 registers.
|
|
|
|
config CS43L22_CLKDEBUG
|
|
bool "CS43L22 clock analysis"
|
|
default n
|
|
---help---
|
|
Enable logic to analyze CS43L22 clock configuration.
|
|
|
|
endif # AUDIO_CS43L22
|
|
|
|
config AUDIO_CS4344
|
|
bool "CS4344 audio chip"
|
|
default n
|
|
depends on AUDIO
|
|
---help---
|
|
Select to enable support for the CS4344 Audio codec by Cirrus Logic.
|
|
This chip is a lower level audio chip.. basically
|
|
an exotic D-to-A. It includes no built-in support for audio CODECS.
|
|
|
|
if AUDIO_CS4344
|
|
|
|
config CS4344_INFLIGHT
|
|
int "CS4344 maximum in-flight audio buffers"
|
|
default 2
|
|
|
|
config CS4344_MSG_PRIO
|
|
int "CS4344 message priority"
|
|
default 1
|
|
|
|
config CS4344_BUFFER_SIZE
|
|
int "CS4344 preferred buffer size"
|
|
default 8192
|
|
|
|
config CS4344_NUM_BUFFERS
|
|
int "CS4344 preferred number of buffers"
|
|
default 4
|
|
|
|
config CS4344_WORKER_STACKSIZE
|
|
int "CS4344 worker thread stack size"
|
|
default 768
|
|
|
|
endif # AUDIO_CS4344
|
|
|
|
config AUDIO_ES8311
|
|
bool "ES8311 codec chip"
|
|
default n
|
|
depends on AUDIO
|
|
---help---
|
|
Select to enable support for the ES8311 Audio codec by Everest
|
|
Semiconductor.
|
|
|
|
NOTE: This driver also depends on both I2C and I2S support although
|
|
that dependency is not explicit here.
|
|
|
|
if AUDIO_ES8311
|
|
|
|
config ES8311_INPUT_INITVOLUME
|
|
int "ES8311 initial input volume setting"
|
|
default 1000
|
|
|
|
config ES8311_OUTPUT_INITVOLUME
|
|
int "ES8311 initial output volume setting"
|
|
default 400
|
|
|
|
choice
|
|
prompt "MCLK source"
|
|
default ES8311_SRC_MCLK
|
|
---help---
|
|
Select the source of the MCLK signal.
|
|
|
|
config ES8311_SRC_MCLK
|
|
bool "From MCLK Pin"
|
|
|
|
config ES8311_SRC_BCLK
|
|
bool "From BCLK Pin"
|
|
|
|
endchoice
|
|
|
|
config ES8311_INFLIGHT
|
|
int "ES8311 maximum in-flight audio buffers"
|
|
default 2
|
|
|
|
config ES8311_MSG_PRIO
|
|
int "ES8311 message priority"
|
|
default 1
|
|
|
|
config ES8311_BUFFER_SIZE
|
|
int "ES8311 preferred buffer size"
|
|
default 8192
|
|
|
|
config ES8311_NUM_BUFFERS
|
|
int "ES8311 preferred number of buffers"
|
|
default 4
|
|
|
|
config ES8311_WORKER_STACKSIZE
|
|
int "ES8311 worker thread stack size"
|
|
default 2048
|
|
|
|
endif # AUDIO_ES8388
|
|
|
|
config AUDIO_ES8388
|
|
bool "ES8388 codec chip"
|
|
default n
|
|
depends on AUDIO
|
|
select AUDIO_DRIVER_SPECIFIC_BUFFERS
|
|
---help---
|
|
Select to enable support for the ES8388 Audio codec by Everest
|
|
Semiconductor.
|
|
|
|
NOTE: This driver also depends on both I2C and I2S support although
|
|
that dependency is not explicit here.
|
|
|
|
if AUDIO_ES8388
|
|
|
|
config ES8388_INPUT_INITVOLUME
|
|
int "ES8388 initial input volume setting"
|
|
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
|
|
int "ES8388 initial output volume setting"
|
|
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
|
|
int "ES8388 maximum in-flight audio buffers"
|
|
default 2
|
|
|
|
config ES8388_MSG_PRIO
|
|
int "ES8388 message priority"
|
|
default 1
|
|
|
|
config ES8388_BUFFER_SIZE
|
|
int "ES8388 preferred buffer size"
|
|
default 8192
|
|
|
|
config ES8388_NUM_BUFFERS
|
|
int "ES8388 preferred number of buffers"
|
|
default 4
|
|
|
|
config ES8388_WORKER_STACKSIZE
|
|
int "ES8388 worker thread stack size"
|
|
default 2048
|
|
|
|
config ES8388_REGDUMP
|
|
bool "ES8388 register dump"
|
|
default n
|
|
depends on DEBUG_FEATURES
|
|
---help---
|
|
Enable logic to dump the contents of all ES8388 registers.
|
|
|
|
endif # AUDIO_ES8388
|
|
|
|
config AUDIO_WM8776
|
|
bool "WM8776 audio chip"
|
|
default n
|
|
depends on AUDIO
|
|
---help---
|
|
Select to enable support for the WM8776 Audio codec by Wolfson
|
|
Microelectonics.
|
|
|
|
if AUDIO_WM8776
|
|
|
|
config WM8776_INFLIGHT
|
|
int "WM8776 maximum in-flight audio buffers"
|
|
default 2
|
|
|
|
config WM8776_MSG_PRIO
|
|
int "WM8776 message priority"
|
|
default 1
|
|
|
|
config WM8776_WORKER_STACKSIZE
|
|
int "WM8776 worker thread stack size"
|
|
default 768
|
|
|
|
config WM8776_SWAP_HPOUT
|
|
bool "Swap WM8776 HP out signals"
|
|
default n
|
|
|
|
endif # AUDIO_WM8776
|
|
|
|
config AUDIO_WM8994
|
|
bool "WM8994 audio chip"
|
|
default n
|
|
depends on AUDIO
|
|
---help---
|
|
Select to enable support for the WM8994 Audio codec by Wolfson
|
|
Microelectonics. This chip is a lower level audio chip.. basically
|
|
an exotic D-to-A. It includes no built-in support for audio CODECS
|
|
The WM8994 provides:
|
|
|
|
- Low power consumption
|
|
- High SNR
|
|
- Stereo digital microphone input
|
|
- Digital Dynamic Range Controller (compressor / limiter)
|
|
- Digital sidetone mixing
|
|
- Ground-referenced headphone driver
|
|
- Ground-referenced line outputs
|
|
|
|
NOTE: This driver also depends on both I2C and I2S support although
|
|
that dependency is not explicit here.
|
|
|
|
if AUDIO_WM8994
|
|
|
|
config WM8994_INITVOLUME
|
|
int "WM8994 initial volume setting"
|
|
default 250
|
|
|
|
config WM8994_INFLIGHT
|
|
int "WM8994 maximum in-flight audio buffers"
|
|
default 2
|
|
|
|
config WM8994_MSG_PRIO
|
|
int "WM8994 message priority"
|
|
default 1
|
|
|
|
config WM8994_BUFFER_SIZE
|
|
int "WM8994 preferred buffer size"
|
|
default 8192
|
|
|
|
config WM8994_NUM_BUFFERS
|
|
int "WM8994 preferred number of buffers"
|
|
default 4
|
|
|
|
config WM8994_WORKER_STACKSIZE
|
|
int "WM8994 worker thread stack size"
|
|
default 768
|
|
|
|
config WM8994_REGDUMP
|
|
bool "WM8994 register dump"
|
|
default n
|
|
---help---
|
|
Enable logic to dump the contents of all WM8994 registers.
|
|
|
|
config WM8994_CLKDEBUG
|
|
bool "WM8994 clock analysis"
|
|
default n
|
|
---help---
|
|
Enable logic to analyze WM8994 clock configuration.
|
|
|
|
endif # AUDIO_WM8994
|
|
|
|
config AUDIO_WM8904
|
|
bool "WM8904 audio chip"
|
|
default n
|
|
depends on AUDIO
|
|
---help---
|
|
Select to enable support for the WM8904 Audio codec by Wolfson
|
|
Microelectonics. This chip is a lower level audio chip.. basically
|
|
an exotic D-to-A. It includes no built-in support for audio CODECS
|
|
The WM8904 provides:
|
|
|
|
- Low power consumption
|
|
- High SNR
|
|
- Stereo digital microphone input
|
|
- Digital Dynamic Range Controller (compressor / limiter)
|
|
- Digital sidetone mixing
|
|
- Ground-referenced headphone driver
|
|
- Ground-referenced line outputs
|
|
|
|
NOTE: This driver also depends on both I2C and I2S support although
|
|
that dependency is not explicit here.
|
|
|
|
if AUDIO_WM8904
|
|
|
|
config WM8904_INITVOLUME
|
|
int "WM8904 initial volume setting"
|
|
default 250
|
|
|
|
config WM8904_INFLIGHT
|
|
int "WM8904 maximum in-flight audio buffers"
|
|
default 2
|
|
|
|
config WM8904_MSG_PRIO
|
|
int "WM8904 message priority"
|
|
default 1
|
|
|
|
config WM8904_BUFFER_SIZE
|
|
int "WM8904 preferred buffer size"
|
|
default 8192
|
|
|
|
config WM8904_NUM_BUFFERS
|
|
int "WM8904 preferred number of buffers"
|
|
default 4
|
|
|
|
config WM8904_WORKER_STACKSIZE
|
|
int "WM8904 worker thread stack size"
|
|
default 768
|
|
|
|
config WM8904_REGDUMP
|
|
bool "WM8904 register dump"
|
|
default n
|
|
---help---
|
|
Enable logic to dump the contents of all WM8904 registers.
|
|
|
|
config WM8904_CLKDEBUG
|
|
bool "WM8904 clock analysis"
|
|
default n
|
|
---help---
|
|
Enable logic to analyze WM8904 clock configuration.
|
|
|
|
endif # AUDIO_WM8904
|
|
|
|
config AUDIO_NULL
|
|
bool "NULL audio device"
|
|
default n
|
|
depends on AUDIO
|
|
---help---
|
|
A do-nothing audio device driver to simplify testing of audio
|
|
decoders.
|
|
|
|
if AUDIO_NULL
|
|
|
|
config AUDIO_NULL_MSG_PRIO
|
|
int "Null audio device message priority"
|
|
default 1
|
|
|
|
config AUDIO_NULL_BUFFER_SIZE
|
|
int "Null audio device preferred buffer size"
|
|
default 8192
|
|
|
|
config AUDIO_NULL_NUM_BUFFERS
|
|
int "Null audio device preferred number of buffers"
|
|
default 4
|
|
|
|
config AUDIO_NULL_WORKER_STACKSIZE
|
|
int "Null audio device worker thread stack size"
|
|
default 768
|
|
|
|
endif # AUDIO_NULL
|
|
|
|
config AUDIO_I2S
|
|
bool "Audio I2S"
|
|
depends on AUDIO
|
|
depends on I2S
|
|
|
|
config AUDIO_DMA
|
|
bool "Audio DMA"
|
|
select AUDIO_DRIVER_SPECIFIC_BUFFERS
|
|
depends on AUDIO
|
|
depends on DMA
|
|
|
|
config AUDIO_FAKE
|
|
bool "Fake audio device"
|
|
default n
|
|
depends on AUDIO
|
|
---help---
|
|
A fake audio device driver to simplify testing of audio
|
|
capture and playback.
|
|
|
|
if AUDIO_FAKE
|
|
|
|
config FAKE_AUDIO_DEVICE_PARAMS
|
|
string "fake audio device params"
|
|
default ""
|
|
---help---
|
|
This is a params for fake audio device. The format like:
|
|
{dev_name, playback, sample_rates[4], channels, format[4], period_time, periods}.
|
|
|
|
- dev_name (string): pcm2c or pcm2p or others.
|
|
- playback (bool): true or false.
|
|
- sample_rates(uint32 array): {16000, 32000}.
|
|
- channels (uint8, {min_chan, max_chan}): {1, 2}.
|
|
- format(uint8 array): {8,16,32}.
|
|
- period_time(uint32): 100, unit ms.
|
|
- periods (uint32): 4, buffer cnt.
|
|
e.g:
|
|
{"pcm2c", false, {8000, 16000, 44100}, {1, 2}, {16}, 100, 4},
|
|
{"pcm2p", true, {8000, 16000, 44100}, {1, 2}, {16}, 100, 4},
|
|
|
|
config FAKE_AUDIO_DATA_PATH
|
|
string "fake audio device data path"
|
|
default "/data/"
|
|
---help---
|
|
This dir is used to store the audio file for virtual capture or playback device.
|
|
The filename for capture device should comply with the format "devname_samplerate_channels_format.pcm".
|
|
e.g: pcm2c_16000_2_16.pcm.
|
|
The filename format of playback device is the same as capture device.
|
|
e.g: pcm2p_16000_2_16.pcm.
|
|
|
|
config AUDIO_FAKE_MSG_PRIO
|
|
int "Fake audio device message priority"
|
|
default 1
|
|
|
|
config AUDIO_FAKE_WORKER_STACKSIZE
|
|
int "Fake audio device worker thread stack size"
|
|
default 768
|
|
|
|
endif # AUDIO_FAKE
|
|
|
|
endif # DRIVERS_AUDIO
|