266 lines
6.7 KiB
C
266 lines
6.7 KiB
C
/* arch/arm/mach-msm/qdsp6/q6audio_devices.h
|
|
*
|
|
* Copyright (C) 2009 Google, Inc.
|
|
* Author: Brian Swetland <swetland@google.com>
|
|
*
|
|
* This software is licensed under the terms of the GNU General Public
|
|
* License version 2, as published by the Free Software Foundation, and
|
|
* may be copied, distributed, and modified under those terms.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
*/
|
|
|
|
struct q6_device_info {
|
|
uint32_t id;
|
|
uint32_t cad_id;
|
|
uint32_t path;
|
|
uint32_t rate;
|
|
uint8_t dir;
|
|
uint8_t codec;
|
|
uint8_t hw;
|
|
};
|
|
|
|
#define Q6_ICODEC_RX 0
|
|
#define Q6_ICODEC_TX 1
|
|
#define Q6_ECODEC_RX 2
|
|
#define Q6_ECODEC_TX 3
|
|
#define Q6_SDAC_RX 6
|
|
#define Q6_SDAC_TX 7
|
|
#define Q6_CODEC_NONE 255
|
|
|
|
#define Q6_TX 1
|
|
#define Q6_RX 2
|
|
#define Q6_TX_RX 3
|
|
|
|
#define CAD_HW_DEVICE_ID_HANDSET_MIC 0x01
|
|
#define CAD_HW_DEVICE_ID_HANDSET_SPKR 0x02
|
|
#define CAD_HW_DEVICE_ID_HEADSET_MIC 0x03
|
|
#define CAD_HW_DEVICE_ID_HEADSET_SPKR_MONO 0x04
|
|
#define CAD_HW_DEVICE_ID_HEADSET_SPKR_STEREO 0x05
|
|
#define CAD_HW_DEVICE_ID_SPKR_PHONE_MIC 0x06
|
|
#define CAD_HW_DEVICE_ID_SPKR_PHONE_MONO 0x07
|
|
#define CAD_HW_DEVICE_ID_SPKR_PHONE_STEREO 0x08
|
|
#define CAD_HW_DEVICE_ID_BT_SCO_MIC 0x09
|
|
#define CAD_HW_DEVICE_ID_BT_SCO_SPKR 0x0A
|
|
#define CAD_HW_DEVICE_ID_BT_A2DP_SPKR 0x0B
|
|
#define CAD_HW_DEVICE_ID_TTY_HEADSET_MIC 0x0C
|
|
#define CAD_HW_DEVICE_ID_TTY_HEADSET_SPKR 0x0D
|
|
|
|
#define CAD_HW_DEVICE_ID_DEFAULT_TX 0x0E
|
|
#define CAD_HW_DEVICE_ID_DEFAULT_RX 0x0F
|
|
|
|
/* Logical Device to indicate A2DP routing */
|
|
#define CAD_HW_DEVICE_ID_BT_A2DP_TX 0x10
|
|
#define CAD_HW_DEVICE_ID_HEADSET_MONO_PLUS_SPKR_MONO_RX 0x11
|
|
#define CAD_HW_DEVICE_ID_HEADSET_MONO_PLUS_SPKR_STEREO_RX 0x12
|
|
#define CAD_HW_DEVICE_ID_HEADSET_STEREO_PLUS_SPKR_MONO_RX 0x13
|
|
#define CAD_HW_DEVICE_ID_HEADSET_STEREO_PLUS_SPKR_STEREO_RX 0x14
|
|
|
|
#define CAD_HW_DEVICE_ID_VOICE 0x15
|
|
|
|
#define CAD_HW_DEVICE_ID_I2S_RX 0x20
|
|
#define CAD_HW_DEVICE_ID_I2S_TX 0x21
|
|
|
|
/* AUXPGA */
|
|
#define CAD_HW_DEVICE_ID_HEADSET_SPKR_STEREO_LB 0x22
|
|
#define CAD_HW_DEVICE_ID_HEADSET_SPKR_MONO_LB 0x23
|
|
#define CAD_HW_DEVICE_ID_SPEAKER_SPKR_STEREO_LB 0x24
|
|
#define CAD_HW_DEVICE_ID_SPEAKER_SPKR_MONO_LB 0x25
|
|
|
|
#define CAD_HW_DEVICE_ID_NULL_RX 0x2A
|
|
|
|
#define CAD_HW_DEVICE_ID_MAX_NUM 0x2F
|
|
|
|
#define CAD_HW_DEVICE_ID_INVALID 0xFF
|
|
|
|
#define CAD_RX_DEVICE 0x00
|
|
#define CAD_TX_DEVICE 0x01
|
|
|
|
static struct q6_device_info q6_audio_devices[] = {
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_HANDSET_SPKR,
|
|
.cad_id = CAD_HW_DEVICE_ID_HANDSET_SPKR,
|
|
.path = ADIE_PATH_HANDSET_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_HANDSET,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_HEADSET_SPKR_MONO,
|
|
.cad_id = CAD_HW_DEVICE_ID_HEADSET_SPKR_MONO,
|
|
.path = ADIE_PATH_HEADSET_MONO_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_HEADSET,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_HEADSET_SPKR_STEREO,
|
|
.cad_id = CAD_HW_DEVICE_ID_HEADSET_SPKR_STEREO,
|
|
.path = ADIE_PATH_HEADSET_STEREO_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_HEADSET,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_SPKR_PHONE_MONO,
|
|
.cad_id = CAD_HW_DEVICE_ID_SPKR_PHONE_MONO,
|
|
.path = ADIE_PATH_SPEAKER_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_SPEAKER,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_SPKR_PHONE_STEREO,
|
|
.cad_id = CAD_HW_DEVICE_ID_SPKR_PHONE_STEREO,
|
|
.path = ADIE_PATH_SPEAKER_STEREO_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_SPEAKER,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_SPKR_PHONE_MONO_W_MONO_HEADSET,
|
|
.cad_id = CAD_HW_DEVICE_ID_HEADSET_MONO_PLUS_SPKR_MONO_RX,
|
|
.path = ADIE_PATH_SPKR_MONO_HDPH_MONO_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_SPEAKER,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_SPKR_PHONE_MONO_W_STEREO_HEADSET,
|
|
.cad_id = CAD_HW_DEVICE_ID_HEADSET_STEREO_PLUS_SPKR_MONO_RX,
|
|
.path = ADIE_PATH_SPKR_MONO_HDPH_STEREO_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_SPEAKER,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_SPKR_PHONE_STEREO_W_MONO_HEADSET,
|
|
.cad_id = CAD_HW_DEVICE_ID_HEADSET_MONO_PLUS_SPKR_STEREO_RX,
|
|
.path = ADIE_PATH_SPKR_STEREO_HDPH_MONO_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_SPEAKER,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_SPKR_PHONE_STEREO_W_STEREO_HEADSET,
|
|
.cad_id = CAD_HW_DEVICE_ID_HEADSET_STEREO_PLUS_SPKR_STEREO_RX,
|
|
.path = ADIE_PATH_SPKR_STEREO_HDPH_STEREO_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_SPEAKER,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_TTY_HEADSET_SPKR,
|
|
.cad_id = CAD_HW_DEVICE_ID_TTY_HEADSET_SPKR,
|
|
.path = ADIE_PATH_TTY_HEADSET_RX,
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ICODEC_RX,
|
|
.hw = Q6_HW_TTY,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_HANDSET_MIC,
|
|
.cad_id = CAD_HW_DEVICE_ID_HANDSET_MIC,
|
|
.path = ADIE_PATH_HANDSET_TX,
|
|
.rate = 8000,
|
|
.dir = Q6_TX,
|
|
.codec = Q6_ICODEC_TX,
|
|
.hw = Q6_HW_HANDSET,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_HEADSET_MIC,
|
|
.cad_id = CAD_HW_DEVICE_ID_HEADSET_MIC,
|
|
.path = ADIE_PATH_HEADSET_MONO_TX,
|
|
.rate = 8000,
|
|
.dir = Q6_TX,
|
|
.codec = Q6_ICODEC_TX,
|
|
.hw = Q6_HW_HEADSET,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_SPKR_PHONE_MIC,
|
|
.cad_id = CAD_HW_DEVICE_ID_SPKR_PHONE_MIC,
|
|
.path = ADIE_PATH_SPEAKER_TX,
|
|
.rate = 8000,
|
|
.dir = Q6_TX,
|
|
.codec = Q6_ICODEC_TX,
|
|
.hw = Q6_HW_SPEAKER,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_TTY_HEADSET_MIC,
|
|
.cad_id = CAD_HW_DEVICE_ID_TTY_HEADSET_MIC,
|
|
.path = ADIE_PATH_TTY_HEADSET_TX,
|
|
.rate = 8000,
|
|
.dir = Q6_TX,
|
|
.codec = Q6_ICODEC_TX,
|
|
.hw = Q6_HW_HEADSET,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_BT_SCO_SPKR,
|
|
.cad_id = CAD_HW_DEVICE_ID_BT_SCO_SPKR,
|
|
.path = 0, /* XXX */
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ECODEC_RX,
|
|
.hw = Q6_HW_BT_SCO,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_BT_A2DP_SPKR,
|
|
.cad_id = CAD_HW_DEVICE_ID_BT_A2DP_SPKR,
|
|
.path = 0, /* XXX */
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_ECODEC_RX,
|
|
.hw = Q6_HW_BT_A2DP,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_BT_SCO_MIC,
|
|
.cad_id = CAD_HW_DEVICE_ID_BT_SCO_MIC,
|
|
.path = 0, /* XXX */
|
|
.rate = 8000,
|
|
.dir = Q6_TX,
|
|
.codec = Q6_ECODEC_TX,
|
|
.hw = Q6_HW_BT_SCO,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_I2S_SPKR,
|
|
.cad_id = CAD_HW_DEVICE_ID_I2S_RX,
|
|
.path = 0, /* XXX */
|
|
.rate = 48000,
|
|
.dir = Q6_RX,
|
|
.codec = Q6_SDAC_RX,
|
|
.hw = Q6_HW_SPEAKER,
|
|
},
|
|
{
|
|
.id = ADSP_AUDIO_DEVICE_ID_I2S_MIC,
|
|
.cad_id = CAD_HW_DEVICE_ID_I2S_TX,
|
|
.path = 0, /* XXX */
|
|
.rate = 16000,
|
|
.dir = Q6_TX,
|
|
.codec = Q6_SDAC_TX,
|
|
.hw = Q6_HW_SPEAKER,
|
|
},
|
|
{
|
|
.id = 0,
|
|
.cad_id = 0,
|
|
.path = 0,
|
|
.rate = 8000,
|
|
.dir = 0,
|
|
.codec = Q6_CODEC_NONE,
|
|
.hw = 0,
|
|
},
|
|
};
|
|
|