brintos

brintos / linux-shallow public Read only

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