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>
This commit is contained in:

committed by
Mark Brown

parent
0e17e98203
commit
4dddbddbce
66
sound/soc/qcom/qdsp6/q6dsp-common.c
Normal file
66
sound/soc/qcom/qdsp6/q6dsp-common.c
Normal file
@@ -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");
|
Reference in New Issue
Block a user