Add support for LPASS LPI MI2S dais in the dai-driver, these dais are used in Monaco based platform devices.
Unified · Split
| @@ -96,6 +96,42 @@ · 95 unmodified lines | |||
| 96 | .id = did, \ | 96 | .id = did, \ |
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | #define Q6AFE_MI2S_RX_DAI(pre, did) { \ | ||
| 100 | .playback = { \ | ||
| 101 | .stream_name = pre" MI2S Playback", \ | ||
| 102 | .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\ | ||
| 103 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\ | ||
| 104 | SNDRV_PCM_RATE_176400, \ | ||
| 105 | .formats = SNDRV_PCM_FMTBIT_S16_LE | \ | ||
| 106 | SNDRV_PCM_FMTBIT_S24_LE | \ | ||
| 107 | SNDRV_PCM_FMTBIT_S32_LE, \ | ||
| 108 | .channels_min = 1, \ | ||
| 109 | .channels_max = 8, \ | ||
| 110 | .rate_min = 8000, \ | ||
| 111 | .rate_max = 176400, \ | ||
| 112 | }, \ | ||
| 113 | .name = #did, \ | ||
| 114 | .id = did, \ | ||
| 115 | } | ||
| 116 | |||
| 117 | #define Q6AFE_MI2S_TX_DAI(pre, did) { \ | ||
| 118 | .capture = { \ | ||
| 119 | .stream_name = pre" MI2S Capture", \ | ||
| 120 | .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\ | ||
| 121 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\ | ||
| 122 | SNDRV_PCM_RATE_176400, \ | ||
| 123 | .formats = SNDRV_PCM_FMTBIT_S16_LE | \ | ||
| 124 | SNDRV_PCM_FMTBIT_S24_LE | \ | ||
| 125 | SNDRV_PCM_FMTBIT_S32_LE, \ | ||
| 126 | .channels_min = 1, \ | ||
| 127 | .channels_max = 8, \ | ||
| 128 | .rate_min = 8000, \ | ||
| 129 | .rate_max = 176400, \ | ||
| 130 | }, \ | ||
| 131 | .name = #did, \ | ||
| 132 | .id = did, \ | ||
| 133 | } | ||
| 134 | |||
| 99 | static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { | 135 | static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { |
| 100 | { | 136 | { |
| 101 | .playback = { | 137 | .playback = { |
| @@ -484,6 +520,16 @@ static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = { · 382 unmodified lines | |||
| 484 | .id = QUINARY_MI2S_TX, | 520 | .id = QUINARY_MI2S_TX, |
| 485 | .name = "QUIN_MI2S_TX", | 521 | .name = "QUIN_MI2S_TX", |
| 486 | }, | 522 | }, |
| 523 | Q6AFE_MI2S_RX_DAI("LPI RX0", LPI_MI2S_RX_0), | ||
| 524 | Q6AFE_MI2S_RX_DAI("LPI RX1", LPI_MI2S_RX_1), | ||
| 525 | Q6AFE_MI2S_RX_DAI("LPI RX2", LPI_MI2S_RX_2), | ||
| 526 | Q6AFE_MI2S_RX_DAI("LPI RX3", LPI_MI2S_RX_3), | ||
| 527 | Q6AFE_MI2S_RX_DAI("LPI RX4", LPI_MI2S_RX_4), | ||
| 528 | Q6AFE_MI2S_TX_DAI("LPI TX0", LPI_MI2S_TX_0), | ||
| 529 | Q6AFE_MI2S_TX_DAI("LPI TX1", LPI_MI2S_TX_1), | ||
| 530 | Q6AFE_MI2S_TX_DAI("LPI TX2", LPI_MI2S_TX_2), | ||
| 531 | Q6AFE_MI2S_TX_DAI("LPI TX3", LPI_MI2S_TX_3), | ||
| 532 | Q6AFE_MI2S_TX_DAI("LPI TX4", LPI_MI2S_TX_4), | ||
| 487 | Q6AFE_TDM_PB_DAI("Primary", 0, PRIMARY_TDM_RX_0), | 533 | Q6AFE_TDM_PB_DAI("Primary", 0, PRIMARY_TDM_RX_0), |
| 488 | Q6AFE_TDM_PB_DAI("Primary", 1, PRIMARY_TDM_RX_1), | 534 | Q6AFE_TDM_PB_DAI("Primary", 1, PRIMARY_TDM_RX_1), |
| 489 | Q6AFE_TDM_PB_DAI("Primary", 2, PRIMARY_TDM_RX_2), | 535 | Q6AFE_TDM_PB_DAI("Primary", 2, PRIMARY_TDM_RX_2), |
| @@ -636,6 +682,7 @@ struct snd_soc_dai_driver *q6dsp_audio_ports_set_config(struct device *dev, · 146 unmodified lines | |||
| 636 | break; | 682 | break; |
| 637 | case QUINARY_MI2S_RX ... QUINARY_MI2S_TX: | 683 | case QUINARY_MI2S_RX ... QUINARY_MI2S_TX: |
| 638 | case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX: | 684 | case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX: |
| 685 | case LPI_MI2S_RX_0 ... LPI_MI2S_TX_4: | ||
| 639 | q6dsp_audio_fe_dais[i].ops = cfg->q6i2s_ops; | 686 | q6dsp_audio_fe_dais[i].ops = cfg->q6i2s_ops; |
| 640 | break; | 687 | break; |
| 641 | case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7: | 688 | case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7: |