1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* include/linux/msm_audio.h 2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Copyright (C) 2008 Google, Inc. 4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * This software is licensed under the terms of the GNU General Public 6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * License version 2, as published by the Free Software Foundation, and 7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * may be copied, distributed, and modified under those terms. 8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * This program is distributed in the hope that it will be useful, 10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * but WITHOUT ANY WARRANTY; without even the implied warranty of 11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * GNU General Public License for more details. 13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __LINUX_MSM_AUDIO_H 17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __LINUX_MSM_AUDIO_H 18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/types.h> 20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/ioctl.h> 21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <asm/sizes.h> 22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* PCM Audio */ 24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_IOCTL_MAGIC 'a' 26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_START _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned) 28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_STOP _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned) 29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned) 30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_GET_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 3, unsigned) 31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_SET_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 4, unsigned) 32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_GET_STATS _IOR(AUDIO_IOCTL_MAGIC, 5, unsigned) 33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_ENABLE_AUDPP _IOW(AUDIO_IOCTL_MAGIC, 6, unsigned) 34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_SET_ADRC _IOW(AUDIO_IOCTL_MAGIC, 7, unsigned) 35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_SET_EQ _IOW(AUDIO_IOCTL_MAGIC, 8, unsigned) 36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_SET_RX_IIR _IOW(AUDIO_IOCTL_MAGIC, 9, unsigned) 37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_SET_VOLUME _IOW(AUDIO_IOCTL_MAGIC, 10, unsigned) 38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_ENABLE_AUDPRE _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned) 39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_SET_AGC _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned) 40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_SET_NS _IOW(AUDIO_IOCTL_MAGIC, 13, unsigned) 41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define AUDIO_SET_TX_IIR _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned) 42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct msm_audio_config { 44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t buffer_size; 45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t buffer_count; 46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t channel_count; 47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t sample_rate; 48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t type; 49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t unused[3]; 50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct msm_audio_stats { 53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t byte_count; 54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t sample_count; 55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t unused[2]; 56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Audio routing */ 59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SND_IOCTL_MAGIC 's' 61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SND_MUTE_UNMUTED 0 63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SND_MUTE_MUTED 1 64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct msm_snd_device_config { 66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t device; 67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t ear_mute; 68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t mic_mute; 69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SND_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_device_config *) 72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SND_METHOD_VOICE 0 74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct msm_snd_volume_config { 76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t device; 77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t method; 78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint32_t volume; 79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SND_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_snd_volume_config *) 82c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 83c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Returns the number of SND endpoints supported. */ 84c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 85c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SND_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *) 86c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 87c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct msm_snd_endpoint { 88c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int id; /* input and output */ 89c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char name[64]; /* output only */ 90c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 91c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 92c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Takes an index between 0 and one less than the number returned by 93c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * SND_GET_NUM_ENDPOINTS, and returns the SND index and name of a 94c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * SND endpoint. On input, the .id field contains the number of the 95c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * endpoint, and on exit it contains the SND index, while .name contains 96c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * the description of the endpoint. 97c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 98c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 99c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SND_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_snd_endpoint *) 100c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 101c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* __LINUX_MSM_AUDIO_H */ 102