summaryrefslogtreecommitdiff
path: root/sound/soc/qcom/qdsp6/q6dsp-common.c
diff options
context:
space:
mode:
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2023-05-09 12:21:59 +0100
committerMark Brown <broonie@kernel.org>2023-05-11 10:19:03 +0900
commit4c2be53f411c25b569c8fe3f91d0acfc4c5b8392 (patch)
treefe460d900e908282ca0d439d1fc73d495ebfea8f /sound/soc/qcom/qdsp6/q6dsp-common.c
parent850d174696c3542cd39ca196bc7ade1ba7ceddf7 (diff)
ASoC: qcom: q6dsp-common: move channel allocation to common
move hdmi/dp channel allocation to a common function q6dsp_get_channel_allocation() so that we can reuse this across q6afe and q6apm drivers. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org Link: https://lore.kernel.org/r/20230509112202.21471-2-srinivas.kandagatla@linaro.org Signed-off-by: Mark Brown <broonie@kernel.org
Diffstat (limited to 'sound/soc/qcom/qdsp6/q6dsp-common.c')
-rw-r--r--sound/soc/qcom/qdsp6/q6dsp-common.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/sound/soc/qcom/qdsp6/q6dsp-common.c b/sound/soc/qcom/qdsp6/q6dsp-common.c
index d393003492c7..95585dea2b36 100644
--- a/sound/soc/qcom/qdsp6/q6dsp-common.c
+++ b/sound/soc/qcom/qdsp6/q6dsp-common.c
@@ -63,4 +63,39 @@ int q6dsp_map_channels(u8 ch_map[PCM_MAX_NUM_CHANNEL], int ch)
return 0;
}
EXPORT_SYMBOL_GPL(q6dsp_map_channels);
+
+int q6dsp_get_channel_allocation(int channels)
+{
+ int channel_allocation;
+
+ /* HDMI spec CEA-861-E: Table 28 Audio InfoFrame Data Byte 4 */
+ switch (channels) {
+ case 2:
+ channel_allocation = 0;
+ break;
+ case 3:
+ channel_allocation = 0x02;
+ break;
+ case 4:
+ channel_allocation = 0x06;
+ break;
+ case 5:
+ channel_allocation = 0x0A;
+ break;
+ case 6:
+ channel_allocation = 0x0B;
+ break;
+ case 7:
+ channel_allocation = 0x12;
+ break;
+ case 8:
+ channel_allocation = 0x13;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return channel_allocation;
+}
+EXPORT_SYMBOL_GPL(q6dsp_get_channel_allocation);
MODULE_LICENSE("GPL v2");