cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

q6dsp-lpass-ports.c (19232B)


      1// SPDX-License-Identifier: GPL-2.0
      2// Copyright (c) 2020, Linaro Limited
      3
      4#include <sound/pcm.h>
      5#include <sound/soc.h>
      6#include <sound/pcm_params.h>
      7#include <dt-bindings/sound/qcom,q6afe.h>
      8#include "q6dsp-lpass-ports.h"
      9
     10#define Q6AFE_TDM_PB_DAI(pre, num, did) {				\
     11		.playback = {						\
     12			.stream_name = pre" TDM"#num" Playback",	\
     13			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
     14				SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
     15				SNDRV_PCM_RATE_176400,			\
     16			.formats = SNDRV_PCM_FMTBIT_S16_LE |		\
     17				   SNDRV_PCM_FMTBIT_S24_LE |		\
     18				   SNDRV_PCM_FMTBIT_S32_LE,		\
     19			.channels_min = 1,				\
     20			.channels_max = 8,				\
     21			.rate_min = 8000,				\
     22			.rate_max = 176400,				\
     23		},							\
     24		.name = #did,						\
     25		.id = did,						\
     26	}
     27
     28#define Q6AFE_TDM_CAP_DAI(pre, num, did) {				\
     29		.capture = {						\
     30			.stream_name = pre" TDM"#num" Capture",		\
     31			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
     32				SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
     33				SNDRV_PCM_RATE_176400,			\
     34			.formats = SNDRV_PCM_FMTBIT_S16_LE |		\
     35				   SNDRV_PCM_FMTBIT_S24_LE |		\
     36				   SNDRV_PCM_FMTBIT_S32_LE,		\
     37			.channels_min = 1,				\
     38			.channels_max = 8,				\
     39			.rate_min = 8000,				\
     40			.rate_max = 176400,				\
     41		},							\
     42		.name = #did,						\
     43		.id = did,						\
     44	}
     45
     46#define Q6AFE_CDC_DMA_RX_DAI(did) {				\
     47		.playback = {						\
     48			.stream_name = #did" Playback",	\
     49			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
     50				SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
     51				SNDRV_PCM_RATE_176400,			\
     52			.formats = SNDRV_PCM_FMTBIT_S16_LE |		\
     53				   SNDRV_PCM_FMTBIT_S24_LE |		\
     54				   SNDRV_PCM_FMTBIT_S32_LE,		\
     55			.channels_min = 1,				\
     56			.channels_max = 8,				\
     57			.rate_min = 8000,				\
     58			.rate_max = 176400,				\
     59		},							\
     60		.name = #did,						\
     61		.id = did,						\
     62	}
     63
     64#define Q6AFE_CDC_DMA_TX_DAI(did) {				\
     65		.capture = {						\
     66			.stream_name = #did" Capture",		\
     67			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
     68				SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
     69				SNDRV_PCM_RATE_176400,			\
     70			.formats = SNDRV_PCM_FMTBIT_S16_LE |		\
     71				   SNDRV_PCM_FMTBIT_S24_LE |		\
     72				   SNDRV_PCM_FMTBIT_S32_LE,		\
     73			.channels_min = 1,				\
     74			.channels_max = 8,				\
     75			.rate_min = 8000,				\
     76			.rate_max = 176400,				\
     77		},							\
     78		.name = #did,						\
     79		.id = did,						\
     80	}
     81
     82
     83static struct snd_soc_dai_driver q6dsp_audio_fe_dais[] = {
     84	{
     85		.playback = {
     86			.stream_name = "HDMI Playback",
     87			.rates = SNDRV_PCM_RATE_48000 |
     88				 SNDRV_PCM_RATE_96000 |
     89				 SNDRV_PCM_RATE_192000,
     90			.formats = SNDRV_PCM_FMTBIT_S16_LE |
     91				   SNDRV_PCM_FMTBIT_S24_LE,
     92			.channels_min = 2,
     93			.channels_max = 8,
     94			.rate_max =     192000,
     95			.rate_min =	48000,
     96		},
     97		.id = HDMI_RX,
     98		.name = "HDMI",
     99	}, {
    100		.name = "SLIMBUS_0_RX",
    101		.id = SLIMBUS_0_RX,
    102		.playback = {
    103			.stream_name = "Slimbus Playback",
    104			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    105				 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    106				 SNDRV_PCM_RATE_192000,
    107			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    108				   SNDRV_PCM_FMTBIT_S24_LE,
    109			.channels_min = 1,
    110			.channels_max = 8,
    111			.rate_min = 8000,
    112			.rate_max = 192000,
    113		},
    114	}, {
    115		.name = "SLIMBUS_0_TX",
    116		.id = SLIMBUS_0_TX,
    117		.capture = {
    118			.stream_name = "Slimbus Capture",
    119			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    120				 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    121				 SNDRV_PCM_RATE_192000,
    122			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    123				   SNDRV_PCM_FMTBIT_S24_LE,
    124			.channels_min = 1,
    125			.channels_max = 8,
    126			.rate_min = 8000,
    127			.rate_max = 192000,
    128		},
    129	}, {
    130		.playback = {
    131			.stream_name = "Slimbus1 Playback",
    132			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |
    133				 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 |
    134				 SNDRV_PCM_RATE_192000,
    135			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    136				   SNDRV_PCM_FMTBIT_S24_LE,
    137			.channels_min = 1,
    138			.channels_max = 2,
    139			.rate_min = 8000,
    140			.rate_max = 192000,
    141		},
    142		.name = "SLIMBUS_1_RX",
    143		.id = SLIMBUS_1_RX,
    144	}, {
    145		.name = "SLIMBUS_1_TX",
    146		.id = SLIMBUS_1_TX,
    147		.capture = {
    148			.stream_name = "Slimbus1 Capture",
    149			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    150				 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    151				 SNDRV_PCM_RATE_192000,
    152			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    153				   SNDRV_PCM_FMTBIT_S24_LE,
    154			.channels_min = 1,
    155			.channels_max = 8,
    156			.rate_min = 8000,
    157			.rate_max = 192000,
    158		},
    159	}, {
    160		.playback = {
    161			.stream_name = "Slimbus2 Playback",
    162			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    163				 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    164				 SNDRV_PCM_RATE_192000,
    165			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    166				   SNDRV_PCM_FMTBIT_S24_LE,
    167			.channels_min = 1,
    168			.channels_max = 8,
    169			.rate_min = 8000,
    170			.rate_max = 192000,
    171		},
    172		.name = "SLIMBUS_2_RX",
    173		.id = SLIMBUS_2_RX,
    174
    175	}, {
    176		.name = "SLIMBUS_2_TX",
    177		.id = SLIMBUS_2_TX,
    178		.capture = {
    179			.stream_name = "Slimbus2 Capture",
    180			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    181				 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    182				 SNDRV_PCM_RATE_192000,
    183			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    184				   SNDRV_PCM_FMTBIT_S24_LE,
    185			.channels_min = 1,
    186			.channels_max = 8,
    187			.rate_min = 8000,
    188			.rate_max = 192000,
    189		},
    190	}, {
    191		.playback = {
    192			.stream_name = "Slimbus3 Playback",
    193			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |
    194				 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 |
    195				 SNDRV_PCM_RATE_192000,
    196			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    197				   SNDRV_PCM_FMTBIT_S24_LE,
    198			.channels_min = 1,
    199			.channels_max = 2,
    200			.rate_min = 8000,
    201			.rate_max = 192000,
    202		},
    203		.name = "SLIMBUS_3_RX",
    204		.id = SLIMBUS_3_RX,
    205
    206	}, {
    207		.name = "SLIMBUS_3_TX",
    208		.id = SLIMBUS_3_TX,
    209		.capture = {
    210			.stream_name = "Slimbus3 Capture",
    211			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    212				 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    213				 SNDRV_PCM_RATE_192000,
    214			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    215				   SNDRV_PCM_FMTBIT_S24_LE,
    216			.channels_min = 1,
    217			.channels_max = 8,
    218			.rate_min = 8000,
    219			.rate_max = 192000,
    220		},
    221	}, {
    222		.playback = {
    223			.stream_name = "Slimbus4 Playback",
    224			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |
    225				 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 |
    226				 SNDRV_PCM_RATE_192000,
    227			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    228				   SNDRV_PCM_FMTBIT_S24_LE,
    229			.channels_min = 1,
    230			.channels_max = 2,
    231			.rate_min = 8000,
    232			.rate_max = 192000,
    233		},
    234		.name = "SLIMBUS_4_RX",
    235		.id = SLIMBUS_4_RX,
    236
    237	}, {
    238		.name = "SLIMBUS_4_TX",
    239		.id = SLIMBUS_4_TX,
    240		.capture = {
    241			.stream_name = "Slimbus4 Capture",
    242			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    243				 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    244				 SNDRV_PCM_RATE_192000,
    245			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    246				   SNDRV_PCM_FMTBIT_S24_LE,
    247			.channels_min = 1,
    248			.channels_max = 8,
    249			.rate_min = 8000,
    250			.rate_max = 192000,
    251		},
    252	}, {
    253		.playback = {
    254			.stream_name = "Slimbus5 Playback",
    255			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |
    256				 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 |
    257				 SNDRV_PCM_RATE_192000,
    258			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    259				   SNDRV_PCM_FMTBIT_S24_LE,
    260			.channels_min = 1,
    261			.channels_max = 2,
    262			.rate_min = 8000,
    263			.rate_max = 192000,
    264		},
    265		.name = "SLIMBUS_5_RX",
    266		.id = SLIMBUS_5_RX,
    267
    268	}, {
    269		.name = "SLIMBUS_5_TX",
    270		.id = SLIMBUS_5_TX,
    271		.capture = {
    272			.stream_name = "Slimbus5 Capture",
    273			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    274				 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    275				 SNDRV_PCM_RATE_192000,
    276			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    277				   SNDRV_PCM_FMTBIT_S24_LE,
    278			.channels_min = 1,
    279			.channels_max = 8,
    280			.rate_min = 8000,
    281			.rate_max = 192000,
    282		},
    283	}, {
    284		.playback = {
    285			.stream_name = "Slimbus6 Playback",
    286			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |
    287				 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 |
    288				 SNDRV_PCM_RATE_192000,
    289			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    290				   SNDRV_PCM_FMTBIT_S24_LE,
    291			.channels_min = 1,
    292			.channels_max = 2,
    293			.rate_min = 8000,
    294			.rate_max = 192000,
    295		},
    296		.name = "SLIMBUS_6_RX",
    297		.id = SLIMBUS_6_RX,
    298
    299	}, {
    300		.name = "SLIMBUS_6_TX",
    301		.id = SLIMBUS_6_TX,
    302		.capture = {
    303			.stream_name = "Slimbus6 Capture",
    304			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    305				 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    306				 SNDRV_PCM_RATE_192000,
    307			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    308				   SNDRV_PCM_FMTBIT_S24_LE,
    309			.channels_min = 1,
    310			.channels_max = 8,
    311			.rate_min = 8000,
    312			.rate_max = 192000,
    313		},
    314	}, {
    315		.playback = {
    316			.stream_name = "Primary MI2S Playback",
    317			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    318				 SNDRV_PCM_RATE_16000,
    319			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    320				   SNDRV_PCM_FMTBIT_S24_LE,
    321			.channels_min = 1,
    322			.channels_max = 8,
    323			.rate_min =     8000,
    324			.rate_max =     48000,
    325		},
    326		.id = PRIMARY_MI2S_RX,
    327		.name = "PRI_MI2S_RX",
    328	}, {
    329		.capture = {
    330			.stream_name = "Primary MI2S Capture",
    331			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    332				 SNDRV_PCM_RATE_16000,
    333			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    334				   SNDRV_PCM_FMTBIT_S24_LE,
    335			.channels_min = 1,
    336			.channels_max = 8,
    337			.rate_min =     8000,
    338			.rate_max =     48000,
    339		},
    340		.id = PRIMARY_MI2S_TX,
    341		.name = "PRI_MI2S_TX",
    342	}, {
    343		.playback = {
    344			.stream_name = "Secondary MI2S Playback",
    345			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    346				 SNDRV_PCM_RATE_16000,
    347			.formats = SNDRV_PCM_FMTBIT_S16_LE,
    348			.channels_min = 1,
    349			.channels_max = 8,
    350			.rate_min =     8000,
    351			.rate_max =     48000,
    352		},
    353		.name = "SEC_MI2S_RX",
    354		.id = SECONDARY_MI2S_RX,
    355	}, {
    356		.capture = {
    357			.stream_name = "Secondary MI2S Capture",
    358			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    359				 SNDRV_PCM_RATE_16000,
    360			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    361				   SNDRV_PCM_FMTBIT_S24_LE,
    362			.channels_min = 1,
    363			.channels_max = 8,
    364			.rate_min =     8000,
    365			.rate_max =     48000,
    366		},
    367		.id = SECONDARY_MI2S_TX,
    368		.name = "SEC_MI2S_TX",
    369	}, {
    370		.playback = {
    371			.stream_name = "Tertiary MI2S Playback",
    372			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    373				 SNDRV_PCM_RATE_16000,
    374			.formats = SNDRV_PCM_FMTBIT_S16_LE,
    375			.channels_min = 1,
    376			.channels_max = 8,
    377			.rate_min =     8000,
    378			.rate_max =     48000,
    379		},
    380		.name = "TERT_MI2S_RX",
    381		.id = TERTIARY_MI2S_RX,
    382	}, {
    383		.capture = {
    384			.stream_name = "Tertiary MI2S Capture",
    385			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    386				 SNDRV_PCM_RATE_16000,
    387			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    388				   SNDRV_PCM_FMTBIT_S24_LE,
    389			.channels_min = 1,
    390			.channels_max = 8,
    391			.rate_min =     8000,
    392			.rate_max =     48000,
    393		},
    394		.id = TERTIARY_MI2S_TX,
    395		.name = "TERT_MI2S_TX",
    396	}, {
    397		.playback = {
    398			.stream_name = "Quaternary MI2S Playback",
    399			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    400				 SNDRV_PCM_RATE_16000,
    401			.formats = SNDRV_PCM_FMTBIT_S16_LE,
    402			.channels_min = 1,
    403			.channels_max = 8,
    404			.rate_min =     8000,
    405			.rate_max =     48000,
    406		},
    407		.name = "QUAT_MI2S_RX",
    408		.id = QUATERNARY_MI2S_RX,
    409	}, {
    410		.capture = {
    411			.stream_name = "Quaternary MI2S Capture",
    412			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    413				 SNDRV_PCM_RATE_16000,
    414			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    415				   SNDRV_PCM_FMTBIT_S24_LE,
    416			.channels_min = 1,
    417			.channels_max = 8,
    418			.rate_min =     8000,
    419			.rate_max =     48000,
    420		},
    421		.id = QUATERNARY_MI2S_TX,
    422		.name = "QUAT_MI2S_TX",
    423	}, {
    424		.playback = {
    425			.stream_name = "Quinary MI2S Playback",
    426			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    427			SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_96000 |
    428			SNDRV_PCM_RATE_192000,
    429			.formats = SNDRV_PCM_FMTBIT_S16_LE,
    430			.channels_min = 1,
    431			.channels_max = 8,
    432			.rate_min =     8000,
    433			.rate_max =     192000,
    434		},
    435		.id = QUINARY_MI2S_RX,
    436		.name = "QUIN_MI2S_RX",
    437	}, {
    438		.capture = {
    439			.stream_name = "Quinary MI2S Capture",
    440			.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
    441				 SNDRV_PCM_RATE_16000,
    442			.formats = SNDRV_PCM_FMTBIT_S16_LE,
    443			.channels_min = 1,
    444			.channels_max = 8,
    445			.rate_min =     8000,
    446			.rate_max =     48000,
    447		},
    448		.id = QUINARY_MI2S_TX,
    449		.name = "QUIN_MI2S_TX",
    450	},
    451	Q6AFE_TDM_PB_DAI("Primary", 0, PRIMARY_TDM_RX_0),
    452	Q6AFE_TDM_PB_DAI("Primary", 1, PRIMARY_TDM_RX_1),
    453	Q6AFE_TDM_PB_DAI("Primary", 2, PRIMARY_TDM_RX_2),
    454	Q6AFE_TDM_PB_DAI("Primary", 3, PRIMARY_TDM_RX_3),
    455	Q6AFE_TDM_PB_DAI("Primary", 4, PRIMARY_TDM_RX_4),
    456	Q6AFE_TDM_PB_DAI("Primary", 5, PRIMARY_TDM_RX_5),
    457	Q6AFE_TDM_PB_DAI("Primary", 6, PRIMARY_TDM_RX_6),
    458	Q6AFE_TDM_PB_DAI("Primary", 7, PRIMARY_TDM_RX_7),
    459	Q6AFE_TDM_CAP_DAI("Primary", 0, PRIMARY_TDM_TX_0),
    460	Q6AFE_TDM_CAP_DAI("Primary", 1, PRIMARY_TDM_TX_1),
    461	Q6AFE_TDM_CAP_DAI("Primary", 2, PRIMARY_TDM_TX_2),
    462	Q6AFE_TDM_CAP_DAI("Primary", 3, PRIMARY_TDM_TX_3),
    463	Q6AFE_TDM_CAP_DAI("Primary", 4, PRIMARY_TDM_TX_4),
    464	Q6AFE_TDM_CAP_DAI("Primary", 5, PRIMARY_TDM_TX_5),
    465	Q6AFE_TDM_CAP_DAI("Primary", 6, PRIMARY_TDM_TX_6),
    466	Q6AFE_TDM_CAP_DAI("Primary", 7, PRIMARY_TDM_TX_7),
    467	Q6AFE_TDM_PB_DAI("Secondary", 0, SECONDARY_TDM_RX_0),
    468	Q6AFE_TDM_PB_DAI("Secondary", 1, SECONDARY_TDM_RX_1),
    469	Q6AFE_TDM_PB_DAI("Secondary", 2, SECONDARY_TDM_RX_2),
    470	Q6AFE_TDM_PB_DAI("Secondary", 3, SECONDARY_TDM_RX_3),
    471	Q6AFE_TDM_PB_DAI("Secondary", 4, SECONDARY_TDM_RX_4),
    472	Q6AFE_TDM_PB_DAI("Secondary", 5, SECONDARY_TDM_RX_5),
    473	Q6AFE_TDM_PB_DAI("Secondary", 6, SECONDARY_TDM_RX_6),
    474	Q6AFE_TDM_PB_DAI("Secondary", 7, SECONDARY_TDM_RX_7),
    475	Q6AFE_TDM_CAP_DAI("Secondary", 0, SECONDARY_TDM_TX_0),
    476	Q6AFE_TDM_CAP_DAI("Secondary", 1, SECONDARY_TDM_TX_1),
    477	Q6AFE_TDM_CAP_DAI("Secondary", 2, SECONDARY_TDM_TX_2),
    478	Q6AFE_TDM_CAP_DAI("Secondary", 3, SECONDARY_TDM_TX_3),
    479	Q6AFE_TDM_CAP_DAI("Secondary", 4, SECONDARY_TDM_TX_4),
    480	Q6AFE_TDM_CAP_DAI("Secondary", 5, SECONDARY_TDM_TX_5),
    481	Q6AFE_TDM_CAP_DAI("Secondary", 6, SECONDARY_TDM_TX_6),
    482	Q6AFE_TDM_CAP_DAI("Secondary", 7, SECONDARY_TDM_TX_7),
    483	Q6AFE_TDM_PB_DAI("Tertiary", 0, TERTIARY_TDM_RX_0),
    484	Q6AFE_TDM_PB_DAI("Tertiary", 1, TERTIARY_TDM_RX_1),
    485	Q6AFE_TDM_PB_DAI("Tertiary", 2, TERTIARY_TDM_RX_2),
    486	Q6AFE_TDM_PB_DAI("Tertiary", 3, TERTIARY_TDM_RX_3),
    487	Q6AFE_TDM_PB_DAI("Tertiary", 4, TERTIARY_TDM_RX_4),
    488	Q6AFE_TDM_PB_DAI("Tertiary", 5, TERTIARY_TDM_RX_5),
    489	Q6AFE_TDM_PB_DAI("Tertiary", 6, TERTIARY_TDM_RX_6),
    490	Q6AFE_TDM_PB_DAI("Tertiary", 7, TERTIARY_TDM_RX_7),
    491	Q6AFE_TDM_CAP_DAI("Tertiary", 0, TERTIARY_TDM_TX_0),
    492	Q6AFE_TDM_CAP_DAI("Tertiary", 1, TERTIARY_TDM_TX_1),
    493	Q6AFE_TDM_CAP_DAI("Tertiary", 2, TERTIARY_TDM_TX_2),
    494	Q6AFE_TDM_CAP_DAI("Tertiary", 3, TERTIARY_TDM_TX_3),
    495	Q6AFE_TDM_CAP_DAI("Tertiary", 4, TERTIARY_TDM_TX_4),
    496	Q6AFE_TDM_CAP_DAI("Tertiary", 5, TERTIARY_TDM_TX_5),
    497	Q6AFE_TDM_CAP_DAI("Tertiary", 6, TERTIARY_TDM_TX_6),
    498	Q6AFE_TDM_CAP_DAI("Tertiary", 7, TERTIARY_TDM_TX_7),
    499	Q6AFE_TDM_PB_DAI("Quaternary", 0, QUATERNARY_TDM_RX_0),
    500	Q6AFE_TDM_PB_DAI("Quaternary", 1, QUATERNARY_TDM_RX_1),
    501	Q6AFE_TDM_PB_DAI("Quaternary", 2, QUATERNARY_TDM_RX_2),
    502	Q6AFE_TDM_PB_DAI("Quaternary", 3, QUATERNARY_TDM_RX_3),
    503	Q6AFE_TDM_PB_DAI("Quaternary", 4, QUATERNARY_TDM_RX_4),
    504	Q6AFE_TDM_PB_DAI("Quaternary", 5, QUATERNARY_TDM_RX_5),
    505	Q6AFE_TDM_PB_DAI("Quaternary", 6, QUATERNARY_TDM_RX_6),
    506	Q6AFE_TDM_PB_DAI("Quaternary", 7, QUATERNARY_TDM_RX_7),
    507	Q6AFE_TDM_CAP_DAI("Quaternary", 0, QUATERNARY_TDM_TX_0),
    508	Q6AFE_TDM_CAP_DAI("Quaternary", 1, QUATERNARY_TDM_TX_1),
    509	Q6AFE_TDM_CAP_DAI("Quaternary", 2, QUATERNARY_TDM_TX_2),
    510	Q6AFE_TDM_CAP_DAI("Quaternary", 3, QUATERNARY_TDM_TX_3),
    511	Q6AFE_TDM_CAP_DAI("Quaternary", 4, QUATERNARY_TDM_TX_4),
    512	Q6AFE_TDM_CAP_DAI("Quaternary", 5, QUATERNARY_TDM_TX_5),
    513	Q6AFE_TDM_CAP_DAI("Quaternary", 6, QUATERNARY_TDM_TX_6),
    514	Q6AFE_TDM_CAP_DAI("Quaternary", 7, QUATERNARY_TDM_TX_7),
    515	Q6AFE_TDM_PB_DAI("Quinary", 0, QUINARY_TDM_RX_0),
    516	Q6AFE_TDM_PB_DAI("Quinary", 1, QUINARY_TDM_RX_1),
    517	Q6AFE_TDM_PB_DAI("Quinary", 2, QUINARY_TDM_RX_2),
    518	Q6AFE_TDM_PB_DAI("Quinary", 3, QUINARY_TDM_RX_3),
    519	Q6AFE_TDM_PB_DAI("Quinary", 4, QUINARY_TDM_RX_4),
    520	Q6AFE_TDM_PB_DAI("Quinary", 5, QUINARY_TDM_RX_5),
    521	Q6AFE_TDM_PB_DAI("Quinary", 6, QUINARY_TDM_RX_6),
    522	Q6AFE_TDM_PB_DAI("Quinary", 7, QUINARY_TDM_RX_7),
    523	Q6AFE_TDM_CAP_DAI("Quinary", 0, QUINARY_TDM_TX_0),
    524	Q6AFE_TDM_CAP_DAI("Quinary", 1, QUINARY_TDM_TX_1),
    525	Q6AFE_TDM_CAP_DAI("Quinary", 2, QUINARY_TDM_TX_2),
    526	Q6AFE_TDM_CAP_DAI("Quinary", 3, QUINARY_TDM_TX_3),
    527	Q6AFE_TDM_CAP_DAI("Quinary", 4, QUINARY_TDM_TX_4),
    528	Q6AFE_TDM_CAP_DAI("Quinary", 5, QUINARY_TDM_TX_5),
    529	Q6AFE_TDM_CAP_DAI("Quinary", 6, QUINARY_TDM_TX_6),
    530	Q6AFE_TDM_CAP_DAI("Quinary", 7, QUINARY_TDM_TX_7),
    531	{
    532		.playback = {
    533			.stream_name = "Display Port Playback",
    534			.rates = SNDRV_PCM_RATE_48000 |
    535				 SNDRV_PCM_RATE_96000 |
    536				 SNDRV_PCM_RATE_192000,
    537			.formats = SNDRV_PCM_FMTBIT_S16_LE |
    538				   SNDRV_PCM_FMTBIT_S24_LE,
    539			.channels_min = 2,
    540			.channels_max = 8,
    541			.rate_max =     192000,
    542			.rate_min =	48000,
    543		},
    544		.id = DISPLAY_PORT_RX,
    545		.name = "DISPLAY_PORT",
    546	},
    547	Q6AFE_CDC_DMA_RX_DAI(WSA_CODEC_DMA_RX_0),
    548	Q6AFE_CDC_DMA_TX_DAI(WSA_CODEC_DMA_TX_0),
    549	Q6AFE_CDC_DMA_RX_DAI(WSA_CODEC_DMA_RX_1),
    550	Q6AFE_CDC_DMA_TX_DAI(WSA_CODEC_DMA_TX_1),
    551	Q6AFE_CDC_DMA_TX_DAI(WSA_CODEC_DMA_TX_2),
    552	Q6AFE_CDC_DMA_TX_DAI(VA_CODEC_DMA_TX_0),
    553	Q6AFE_CDC_DMA_TX_DAI(VA_CODEC_DMA_TX_1),
    554	Q6AFE_CDC_DMA_TX_DAI(VA_CODEC_DMA_TX_2),
    555	Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_0),
    556	Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_0),
    557	Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_1),
    558	Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_1),
    559	Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_2),
    560	Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_2),
    561	Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_3),
    562	Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_3),
    563	Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_4),
    564	Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_4),
    565	Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_5),
    566	Q6AFE_CDC_DMA_TX_DAI(TX_CODEC_DMA_TX_5),
    567	Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_6),
    568	Q6AFE_CDC_DMA_RX_DAI(RX_CODEC_DMA_RX_7),
    569};
    570
    571int q6dsp_audio_ports_of_xlate_dai_name(struct snd_soc_component *component,
    572					const struct of_phandle_args *args,
    573					const char **dai_name)
    574{
    575	int id = args->args[0];
    576	int ret = -EINVAL;
    577	int i;
    578
    579	for (i = 0; i  < ARRAY_SIZE(q6dsp_audio_fe_dais); i++) {
    580		if (q6dsp_audio_fe_dais[i].id == id) {
    581			*dai_name = q6dsp_audio_fe_dais[i].name;
    582			ret = 0;
    583			break;
    584		}
    585	}
    586
    587	return ret;
    588}
    589EXPORT_SYMBOL_GPL(q6dsp_audio_ports_of_xlate_dai_name);
    590
    591struct snd_soc_dai_driver *q6dsp_audio_ports_set_config(struct device *dev,
    592				struct q6dsp_audio_port_dai_driver_config *cfg,
    593				int *num_dais)
    594{
    595	int i;
    596
    597	for (i = 0; i  < ARRAY_SIZE(q6dsp_audio_fe_dais); i++) {
    598		q6dsp_audio_fe_dais[i].probe = cfg->probe;
    599		q6dsp_audio_fe_dais[i].remove = cfg->remove;
    600
    601		switch (q6dsp_audio_fe_dais[i].id) {
    602		case HDMI_RX:
    603		case DISPLAY_PORT_RX:
    604			q6dsp_audio_fe_dais[i].ops = cfg->q6hdmi_ops;
    605			break;
    606		case SLIMBUS_0_RX ... SLIMBUS_6_TX:
    607			q6dsp_audio_fe_dais[i].ops = cfg->q6slim_ops;
    608			break;
    609		case QUINARY_MI2S_RX ... QUINARY_MI2S_TX:
    610		case PRIMARY_MI2S_RX ... QUATERNARY_MI2S_TX:
    611			q6dsp_audio_fe_dais[i].ops = cfg->q6i2s_ops;
    612			break;
    613		case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
    614			q6dsp_audio_fe_dais[i].ops = cfg->q6tdm_ops;
    615			break;
    616		case WSA_CODEC_DMA_RX_0 ... RX_CODEC_DMA_RX_7:
    617			q6dsp_audio_fe_dais[i].ops = cfg->q6dma_ops;
    618			break;
    619		default:
    620			break;
    621		}
    622	}
    623
    624	*num_dais = ARRAY_SIZE(q6dsp_audio_fe_dais);
    625	return q6dsp_audio_fe_dais;
    626}
    627EXPORT_SYMBOL_GPL(q6dsp_audio_ports_set_config);