Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 // Copyright (c) 2011-2017, The Linux Foundation. All rights reserved.
0003 // Copyright (c) 2018, Linaro Limited
0004 
0005 #include "q6dsp-common.h"
0006 #include <linux/kernel.h>
0007 #include <linux/module.h>
0008 #include <linux/string.h>
0009 #include <linux/errno.h>
0010 
0011 int q6dsp_map_channels(u8 ch_map[PCM_MAX_NUM_CHANNEL], int ch)
0012 {
0013     memset(ch_map, 0, PCM_MAX_NUM_CHANNEL);
0014 
0015     switch (ch) {
0016     case 1:
0017         ch_map[0] = PCM_CHANNEL_FC;
0018         break;
0019     case 2:
0020         ch_map[0] = PCM_CHANNEL_FL;
0021         ch_map[1] = PCM_CHANNEL_FR;
0022         break;
0023     case 3:
0024         ch_map[0] = PCM_CHANNEL_FL;
0025         ch_map[1] = PCM_CHANNEL_FR;
0026         ch_map[2] = PCM_CHANNEL_FC;
0027         break;
0028     case 4:
0029         ch_map[0] = PCM_CHANNEL_FL;
0030         ch_map[1] = PCM_CHANNEL_FR;
0031         ch_map[2] = PCM_CHANNEL_LS;
0032         ch_map[3] = PCM_CHANNEL_RS;
0033         break;
0034     case 5:
0035         ch_map[0] = PCM_CHANNEL_FL;
0036         ch_map[1] = PCM_CHANNEL_FR;
0037         ch_map[2] = PCM_CHANNEL_FC;
0038         ch_map[3] = PCM_CHANNEL_LS;
0039         ch_map[4] = PCM_CHANNEL_RS;
0040         break;
0041     case 6:
0042         ch_map[0] = PCM_CHANNEL_FL;
0043         ch_map[1] = PCM_CHANNEL_FR;
0044         ch_map[2] = PCM_CHANNEL_LFE;
0045         ch_map[3] = PCM_CHANNEL_FC;
0046         ch_map[4] = PCM_CHANNEL_LS;
0047         ch_map[5] = PCM_CHANNEL_RS;
0048         break;
0049     case 8:
0050         ch_map[0] = PCM_CHANNEL_FL;
0051         ch_map[1] = PCM_CHANNEL_FR;
0052         ch_map[2] = PCM_CHANNEL_LFE;
0053         ch_map[3] = PCM_CHANNEL_FC;
0054         ch_map[4] = PCM_CHANNEL_LS;
0055         ch_map[5] = PCM_CHANNEL_RS;
0056         ch_map[6] = PCM_CHANNEL_LB;
0057         ch_map[7] = PCM_CHANNEL_RB;
0058         break;
0059     default:
0060         return -EINVAL;
0061     }
0062 
0063     return 0;
0064 }
0065 EXPORT_SYMBOL_GPL(q6dsp_map_channels);
0066 MODULE_LICENSE("GPL v2");