diff options
author | Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | 2023-05-09 12:21:59 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2023-05-11 10:19:03 +0900 |
commit | 4c2be53f411c25b569c8fe3f91d0acfc4c5b8392 (patch) | |
tree | fe460d900e908282ca0d439d1fc73d495ebfea8f /sound/soc/qcom/qdsp6/q6dsp-common.c | |
parent | 850d174696c3542cd39ca196bc7ade1ba7ceddf7 (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.c | 35 |
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"); |