| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 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"); |