forked from Minki/linux
4dddbddbce
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>
67 lines
1.5 KiB
C
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");
|