67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0
 | |
| // Copyright (c) 2011-2017, The Linux Foundation. All rights reserved.
 | |
| // Copyright (c) 2018, Linaro Limited
 | |
| 
 | |
| #include "q6dsp-common.h"
 | |
| #include <linux/kernel.h>
 | |
| #include <linux/module.h>
 | |
| #include <linux/string.h>
 | |
| #include <linux/errno.h>
 | |
| 
 | |
| int q6dsp_map_channels(u8 ch_map[PCM_MAX_NUM_CHANNEL], int ch)
 | |
| {
 | |
| 	memset(ch_map, 0, PCM_MAX_NUM_CHANNEL);
 | |
| 
 | |
| 	switch (ch) {
 | |
| 	case 1:
 | |
| 		ch_map[0] = PCM_CHANNEL_FC;
 | |
| 		break;
 | |
| 	case 2:
 | |
| 		ch_map[0] = PCM_CHANNEL_FL;
 | |
| 		ch_map[1] = PCM_CHANNEL_FR;
 | |
| 		break;
 | |
| 	case 3:
 | |
| 		ch_map[0] = PCM_CHANNEL_FL;
 | |
| 		ch_map[1] = PCM_CHANNEL_FR;
 | |
| 		ch_map[2] = PCM_CHANNEL_FC;
 | |
| 		break;
 | |
| 	case 4:
 | |
| 		ch_map[0] = PCM_CHANNEL_FL;
 | |
| 		ch_map[1] = PCM_CHANNEL_FR;
 | |
| 		ch_map[2] = PCM_CHANNEL_LS;
 | |
| 		ch_map[3] = PCM_CHANNEL_RS;
 | |
| 		break;
 | |
| 	case 5:
 | |
| 		ch_map[0] = PCM_CHANNEL_FL;
 | |
| 		ch_map[1] = PCM_CHANNEL_FR;
 | |
| 		ch_map[2] = PCM_CHANNEL_FC;
 | |
| 		ch_map[3] = PCM_CHANNEL_LS;
 | |
| 		ch_map[4] = PCM_CHANNEL_RS;
 | |
| 		break;
 | |
| 	case 6:
 | |
| 		ch_map[0] = PCM_CHANNEL_FL;
 | |
| 		ch_map[1] = PCM_CHANNEL_FR;
 | |
| 		ch_map[2] = PCM_CHANNEL_LFE;
 | |
| 		ch_map[3] = PCM_CHANNEL_FC;
 | |
| 		ch_map[4] = PCM_CHANNEL_LS;
 | |
| 		ch_map[5] = PCM_CHANNEL_RS;
 | |
| 		break;
 | |
| 	case 8:
 | |
| 		ch_map[0] = PCM_CHANNEL_FL;
 | |
| 		ch_map[1] = PCM_CHANNEL_FR;
 | |
| 		ch_map[2] = PCM_CHANNEL_LFE;
 | |
| 		ch_map[3] = PCM_CHANNEL_FC;
 | |
| 		ch_map[4] = PCM_CHANNEL_LS;
 | |
| 		ch_map[5] = PCM_CHANNEL_RS;
 | |
| 		ch_map[6] = PCM_CHANNEL_LB;
 | |
| 		ch_map[7] = PCM_CHANNEL_RB;
 | |
| 		break;
 | |
| 	default:
 | |
| 		return -EINVAL;
 | |
| 	}
 | |
| 
 | |
| 	return 0;
 | |
| }
 | |
| EXPORT_SYMBOL_GPL(q6dsp_map_channels);
 | |
| MODULE_LICENSE("GPL v2");
 |