drivers: i2s_cavs: Add bidirectional I2S support

Added bidirectional I2S support for Intel S1000

- Added implementation for I2S receive mode
- Extended driver instances to support 3 I2S ports
- Added DMA channel mappings for upto 4 I2S ports
- Utilized k_msgq to track buffers through the driver
    - Allocate buffers for audio reception in the driver
    - Free buffers after audio transmission in the driver
- Perform buffer reload for DMA after every reception/transmission
- Removed unused Kconfig variables
    - I2S_CAVS_TX_BLOCK_COUNT
    - I2S_CAVS_RX_BLOCK_COUNT

Signed-off-by: Sathish Kuttan <sathish.k.kuttan@intel.com>
This commit is contained in:
Sathish Kuttan 2018-07-06 09:30:00 -07:00 committed by Anas Nashif
commit 7e3a457308
2 changed files with 519 additions and 373 deletions

View file

@ -15,44 +15,62 @@ menuconfig I2S_CAVS
if I2S_CAVS
config I2S_CAVS_TX_BLOCK_COUNT
int "TX queue length"
default 4
help
The maximum number of blocks that can be accommodated in the Tx queue.
config I2S_CAVS_0_NAME
string "I2S 0 device name"
default "I2S_0"
config I2S_CAVS_0_IRQ_PRI
int "Interrupt priority"
default 0
config I2S_CAVS_DMA_NAME
string "DMA device name"
default "DMA_0"
help
Name of the DMA device this device driver can use.
config I2S_CAVS_0_DMA_TX_CHANNEL
int "DMA TX channel"
default 2
help
DMA channel number to use for TX transfers.
config I2S_CAVS_IRQ_PRI
int "Interrupt priority"
default 0
config I2S_CAVS_1_NAME
string "I2S 1 device name"
default "I2S_1"
config I2S_CAVS_1_IRQ_PRI
int "Interrupt priority"
default 0
config I2S_CAVS_1_DMA_TX_CHANNEL
int "DMA TX channel"
default 2
help
DMA channel number to use for I2S1 TX transfer.
config I2S_CAVS_1_DMA_RX_CHANNEL
int "DMA RX channel"
default 3
help
DMA channel number to use for I2S1 RX transfer.
config I2S_CAVS_2_NAME
string "I2S 2 device name"
default "I2S_2"
config I2S_CAVS_2_DMA_TX_CHANNEL
int "DMA TX channel"
default 4
help
DMA channel number to use for TX transfers.
DMA channel number to use for I2S2 TX transfer.
config I2S_CAVS_2_DMA_RX_CHANNEL
int "DMA RX channel"
default 5
help
DMA channel number to use for I2S2 RX transfer.
config I2S_CAVS_3_NAME
string "I2S 3 device name"
default "I2S_3"
config I2S_CAVS_3_DMA_TX_CHANNEL
int "DMA TX channel"
default 6
help
DMA channel number to use for I2S3 TX transfer.
config I2S_CAVS_3_DMA_RX_CHANNEL
int "DMA RX channel"
default 7
help
DMA channel number to use for I2S3 RX transfer.
endif # I2S_CAVS

File diff suppressed because it is too large Load diff