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