linux/sound/soc/qcom/qdsp6/q6dsp-common.c
<<
>>
Prefs
   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
  11int 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}
  65EXPORT_SYMBOL_GPL(q6dsp_map_channels);
  66MODULE_LICENSE("GPL v2");
  67