diff options
| author | Rodrigo Vivi <[email protected]> | 2018-07-23 09:13:12 -0700 | 
|---|---|---|
| committer | Rodrigo Vivi <[email protected]> | 2018-07-23 09:13:12 -0700 | 
| commit | c74a7469f97c0f40b46e82ee979f9fb1bb6e847c (patch) | |
| tree | f2690a1a916b73ef94657fbf0e0141ae57701825 /sound/soc/qcom/qdsp6/q6dsp-common.c | |
| parent | 6f15a7de86c8cf2dc09fc9e6d07047efa40ef809 (diff) | |
| parent | 500775074f88d9cf5416bed2ca19592812d62c41 (diff) | |
Merge drm/drm-next into drm-intel-next-queued
We need a backmerge to get DP_DPCD_REV_14 before we push other
i915 changes to dinq that could break compilation.
Signed-off-by: Rodrigo Vivi <[email protected]>
Diffstat (limited to 'sound/soc/qcom/qdsp6/q6dsp-common.c')
| -rw-r--r-- | sound/soc/qcom/qdsp6/q6dsp-common.c | 66 | 
1 files changed, 66 insertions, 0 deletions
| diff --git a/sound/soc/qcom/qdsp6/q6dsp-common.c b/sound/soc/qcom/qdsp6/q6dsp-common.c new file mode 100644 index 000000000000..d393003492c7 --- /dev/null +++ b/sound/soc/qcom/qdsp6/q6dsp-common.c @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-2.0 +// Copyright (c) 2011-2017, The Linux Foundation. All rights reserved. +// Copyright (c) 2018, Linaro Limited + +#include "q6dsp-common.h" +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/string.h> +#include <linux/errno.h> + +int q6dsp_map_channels(u8 ch_map[PCM_MAX_NUM_CHANNEL], int ch) +{ +	memset(ch_map, 0, PCM_MAX_NUM_CHANNEL); + +	switch (ch) { +	case 1: +		ch_map[0] = PCM_CHANNEL_FC; +		break; +	case 2: +		ch_map[0] = PCM_CHANNEL_FL; +		ch_map[1] = PCM_CHANNEL_FR; +		break; +	case 3: +		ch_map[0] = PCM_CHANNEL_FL; +		ch_map[1] = PCM_CHANNEL_FR; +		ch_map[2] = PCM_CHANNEL_FC; +		break; +	case 4: +		ch_map[0] = PCM_CHANNEL_FL; +		ch_map[1] = PCM_CHANNEL_FR; +		ch_map[2] = PCM_CHANNEL_LS; +		ch_map[3] = PCM_CHANNEL_RS; +		break; +	case 5: +		ch_map[0] = PCM_CHANNEL_FL; +		ch_map[1] = PCM_CHANNEL_FR; +		ch_map[2] = PCM_CHANNEL_FC; +		ch_map[3] = PCM_CHANNEL_LS; +		ch_map[4] = PCM_CHANNEL_RS; +		break; +	case 6: +		ch_map[0] = PCM_CHANNEL_FL; +		ch_map[1] = PCM_CHANNEL_FR; +		ch_map[2] = PCM_CHANNEL_LFE; +		ch_map[3] = PCM_CHANNEL_FC; +		ch_map[4] = PCM_CHANNEL_LS; +		ch_map[5] = PCM_CHANNEL_RS; +		break; +	case 8: +		ch_map[0] = PCM_CHANNEL_FL; +		ch_map[1] = PCM_CHANNEL_FR; +		ch_map[2] = PCM_CHANNEL_LFE; +		ch_map[3] = PCM_CHANNEL_FC; +		ch_map[4] = PCM_CHANNEL_LS; +		ch_map[5] = PCM_CHANNEL_RS; +		ch_map[6] = PCM_CHANNEL_LB; +		ch_map[7] = PCM_CHANNEL_RB; +		break; +	default: +		return -EINVAL; +	} + +	return 0; +} +EXPORT_SYMBOL_GPL(q6dsp_map_channels); +MODULE_LICENSE("GPL v2"); |