linux/sound/soc/qcom/qdsp6/q6dsp-common.c
Srinivas Kandagatla 4dddbddbce
ASoC: qdsp6: q6common: Add qdsp6 helper functions
This patch adds some common helper functions like translating dsp error
to linux error codes and channel mappings etc.

These functions are used in all the following qdsp6 drivers.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Reviewed-and-tested-by: Rohit kumar <rohitkr@codeaurora.org>
Reviewed-by: Banajit Goswami <bgoswami@codeaurora.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
2018-05-11 12:13:31 +09:00

67 lines
1.5 KiB
C

// 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");