Merge tag 'nfs-for-5.3-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[linux-2.6-block.git] / sound / soc / qcom / qdsp6 / q6dsp-common.c
CommitLineData
4dddbddb
SK
1// SPDX-License-Identifier: GPL-2.0
2// Copyright (c) 2011-2017, The Linux Foundation. All rights reserved.
3// Copyright (c) 2018, Linaro Limited
4
5#include "q6dsp-common.h"
6#include <linux/kernel.h>
7#include <linux/module.h>
8#include <linux/string.h>
9#include <linux/errno.h>
10
11int q6dsp_map_channels(u8 ch_map[PCM_MAX_NUM_CHANNEL], int ch)
12{
13 memset(ch_map, 0, PCM_MAX_NUM_CHANNEL);
14
15 switch (ch) {
16 case 1:
17 ch_map[0] = PCM_CHANNEL_FC;
18 break;
19 case 2:
20 ch_map[0] = PCM_CHANNEL_FL;
21 ch_map[1] = PCM_CHANNEL_FR;
22 break;
23 case 3:
24 ch_map[0] = PCM_CHANNEL_FL;
25 ch_map[1] = PCM_CHANNEL_FR;
26 ch_map[2] = PCM_CHANNEL_FC;
27 break;
28 case 4:
29 ch_map[0] = PCM_CHANNEL_FL;
30 ch_map[1] = PCM_CHANNEL_FR;
31 ch_map[2] = PCM_CHANNEL_LS;
32 ch_map[3] = PCM_CHANNEL_RS;
33 break;
34 case 5:
35 ch_map[0] = PCM_CHANNEL_FL;
36 ch_map[1] = PCM_CHANNEL_FR;
37 ch_map[2] = PCM_CHANNEL_FC;
38 ch_map[3] = PCM_CHANNEL_LS;
39 ch_map[4] = PCM_CHANNEL_RS;
40 break;
41 case 6:
42 ch_map[0] = PCM_CHANNEL_FL;
43 ch_map[1] = PCM_CHANNEL_FR;
44 ch_map[2] = PCM_CHANNEL_LFE;
45 ch_map[3] = PCM_CHANNEL_FC;
46 ch_map[4] = PCM_CHANNEL_LS;
47 ch_map[5] = PCM_CHANNEL_RS;
48 break;
49 case 8:
50 ch_map[0] = PCM_CHANNEL_FL;
51 ch_map[1] = PCM_CHANNEL_FR;
52 ch_map[2] = PCM_CHANNEL_LFE;
53 ch_map[3] = PCM_CHANNEL_FC;
54 ch_map[4] = PCM_CHANNEL_LS;
55 ch_map[5] = PCM_CHANNEL_RS;
56 ch_map[6] = PCM_CHANNEL_LB;
57 ch_map[7] = PCM_CHANNEL_RB;
58 break;
59 default:
60 return -EINVAL;
61 }
62
63 return 0;
64}
65EXPORT_SYMBOL_GPL(q6dsp_map_channels);
66MODULE_LICENSE("GPL v2");