Commit | Line | Data |
---|---|---|
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 | ||
11 | int 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 | } | |
65 | EXPORT_SYMBOL_GPL(q6dsp_map_channels); | |
66 | MODULE_LICENSE("GPL v2"); |