1 #ifndef __INTELMID_SND_CTRL_H__ 2 #define __INTELMID_SND_CTRL_H__ 3 /* 4 * intelmid_snd_control.h - Intel Sound card driver for MID 5 * 6 * Copyright (C) 2008-10 Intel Corporation 7 * Authors: Vinod Koul <vinod.koul@intel.com> 8 * Harsha Priya <priya.harsha@intel.com> 9 * Dharageswari R <dharageswari.r@intel.com> 10 * KP Jeeja <jeeja.kp@intel.com> 11 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12 * 13 * This program is free software; you can redistribute it and/or modify 14 * it under the terms of the GNU General Public License as published by 15 * the Free Software Foundation; version 2 of the License. 16 * 17 * This program is distributed in the hope that it will be useful, but 18 * WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 * General Public License for more details. 21 * 22 * You should have received a copy of the GNU General Public License along 23 * with this program; if not, write to the Free Software Foundation, Inc., 24 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 25 * 26 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 27 * 28 * This file defines all snd control functions 29 */ 30 31 /* 32 Mask bits 33 */ 34 #define MASK0 0x01 /* 0000 0001 */ 35 #define MASK1 0x02 /* 0000 0010 */ 36 #define MASK2 0x04 /* 0000 0100 */ 37 #define MASK3 0x08 /* 0000 1000 */ 38 #define MASK4 0x10 /* 0001 0000 */ 39 #define MASK5 0x20 /* 0010 0000 */ 40 #define MASK6 0x40 /* 0100 0000 */ 41 #define MASK7 0x80 /* 1000 0000 */ 42 /* 43 value bits 44 */ 45 #define VALUE0 0x01 /* 0000 0001 */ 46 #define VALUE1 0x02 /* 0000 0010 */ 47 #define VALUE2 0x04 /* 0000 0100 */ 48 #define VALUE3 0x08 /* 0000 1000 */ 49 #define VALUE4 0x10 /* 0001 0000 */ 50 #define VALUE5 0x20 /* 0010 0000 */ 51 #define VALUE6 0x40 /* 0100 0000 */ 52 #define VALUE7 0x80 /* 1000 0000 */ 53 54 #define MUTE 0 /* ALSA Passes 0 for mute */ 55 #define UNMUTE 1 /* ALSA Passes 1 for unmute */ 56 57 #define MAX_VOL_PMIC_VENDOR0 0x3f /* max vol in dB for stereo & voice DAC */ 58 #define MIN_VOL_PMIC_VENDOR0 0 /* min vol in dB for stereo & voice DAC */ 59 /* Head phone volume control */ 60 #define MAX_HP_VOL_PMIC_VENDOR1 6 /* max volume in dB for HP */ 61 #define MIN_HP_VOL_PMIC_VENDOR1 (-84) /* min volume in dB for HP */ 62 #define MAX_HP_VOL_INDX_PMIC_VENDOR1 40 /* Number of HP volume control values */ 63 64 /* Mono Earpiece Volume control */ 65 #define MAX_EP_VOL_PMIC_VENDOR1 0 /* max volume in dB for EP */ 66 #define MIN_EP_VOL_PMIC_VENDOR1 (-75) /* min volume in dB for EP */ 67 #define MAX_EP_VOL_INDX_PMIC_VENDOR1 32 /* Number of EP volume control values */ 68 69 int sst_sc_reg_access(struct sc_reg_access *sc_access, 70 int type, int num_val); 71 extern struct snd_pmic_ops snd_pmic_ops_fs; 72 extern struct snd_pmic_ops snd_pmic_ops_mx; 73 extern struct snd_pmic_ops snd_pmic_ops_nc; 74 extern struct snd_pmic_ops snd_msic_ops; 75 76 /* device */ 77 enum SND_INPUT_DEVICE { 78 AMIC, 79 DMIC, 80 HS_MIC, 81 IN_UNDEFINED 82 }; 83 84 enum SND_OUTPUT_DEVICE { 85 STEREO_HEADPHONE, 86 MONO_EARPIECE, 87 88 INTERNAL_SPKR, 89 RECEIVER, 90 OUT_UNDEFINED 91 }; 92 93 enum pmic_controls { 94 PMIC_SND_HP_MIC_MUTE = 0x0001, 95 PMIC_SND_AMIC_MUTE = 0x0002, 96 PMIC_SND_DMIC_MUTE = 0x0003, 97 PMIC_SND_CAPTURE_VOL = 0x0004, 98 /* Output controls */ 99 PMIC_SND_LEFT_PB_VOL = 0x0010, 100 PMIC_SND_RIGHT_PB_VOL = 0x0011, 101 PMIC_SND_LEFT_HP_MUTE = 0x0012, 102 PMIC_SND_RIGHT_HP_MUTE = 0x0013, 103 PMIC_SND_LEFT_SPEAKER_MUTE = 0x0014, 104 PMIC_SND_RIGHT_SPEAKER_MUTE = 0x0015, 105 PMIC_SND_RECEIVER_VOL = 0x0016, 106 PMIC_SND_RECEIVER_MUTE = 0x0017, 107 /* Other controls */ 108 PMIC_SND_MUTE_ALL = 0x0020, 109 PMIC_MAX_CONTROLS = 0x0020, 110 }; 111 112 #endif /* __INTELMID_SND_CTRL_H__ */ 113 114 115