| #ifndef __INTEL_SST_H__ |
| #define __INTEL_SST_H__ |
| /* |
| * intel_sst.h - Intel SST Driver for audio engine |
| * |
| * Copyright (C) 2008-10 Intel Corporation |
| * Authors: Vinod Koul <vinod.koul@intel.com> |
| * Harsha Priya <priya.harsha@intel.com> |
| * Dharageswari R <dharageswari.r@intel.com> |
| * KP Jeeja <jeeja.kp@intel.com> |
| * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; version 2 of the License. |
| * |
| * 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. |
| * |
| * You should have received a copy of the GNU General Public License along |
| * with this program; if not, write to the Free Software Foundation, Inc., |
| * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
| * |
| * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| * |
| * This driver exposes the audio engine functionalities to the ALSA |
| * and middleware. |
| * This file is shared between the SST and MAD drivers |
| */ |
| #include "intel_sst_ioctl.h" |
| #include <sound/jack.h> |
| |
| #define SST_CARD_NAMES "intel_mid_card" |
| |
| #define MFLD_MAX_HW_CH 4 |
| /* control list Pmic & Lpe */ |
| /* Input controls */ |
| enum port_status { |
| ACTIVATE = 1, |
| DEACTIVATE, |
| }; |
| |
| /* Card states */ |
| enum sst_card_states { |
| SND_CARD_UN_INIT = 0, |
| SND_CARD_INIT_DONE, |
| }; |
| |
| enum sst_controls { |
| SST_SND_ALLOC = 0x1000, |
| SST_SND_PAUSE = 0x1001, |
| SST_SND_RESUME = 0x1002, |
| SST_SND_DROP = 0x1003, |
| SST_SND_FREE = 0x1004, |
| SST_SND_BUFFER_POINTER = 0x1005, |
| SST_SND_STREAM_INIT = 0x1006, |
| SST_SND_START = 0x1007, |
| SST_SND_STREAM_PROCESS = 0x1008, |
| SST_MAX_CONTROLS = 0x1008, |
| SST_CONTROL_BASE = 0x1000, |
| SST_ENABLE_RX_TIME_SLOT = 0x1009, |
| }; |
| |
| enum SND_CARDS { |
| SND_FS = 0, |
| SND_MX, |
| SND_NC, |
| SND_MSIC |
| }; |
| |
| struct pcm_stream_info { |
| int str_id; |
| void *mad_substream; |
| void (*period_elapsed) (void *mad_substream); |
| unsigned long long buffer_ptr; |
| int sfreq; |
| }; |
| |
| struct snd_pmic_ops { |
| int card_status; |
| int master_mute; |
| int num_channel; |
| int input_dev_id; |
| int mute_status; |
| struct mutex lock; |
| int pb_on, pbhs_on; |
| int cap_on; |
| int output_dev_id; |
| int lineout_dev_id, line_out_names_cnt; |
| int prev_lineout_dev_id; |
| bool jack_interrupt_status; |
| int (*set_input_dev) (u8 value); |
| int (*set_output_dev) (u8 value); |
| int (*set_lineout_dev) (u8 value); |
| int (*set_mute) (int dev_id, u8 value); |
| int (*get_mute) (int dev_id, u8 *value); |
| |
| int (*set_vol) (int dev_id, int value); |
| int (*get_vol) (int dev_id, int *value); |
| |
| int (*init_card) (void); |
| int (*set_pcm_audio_params) |
| (int sfreq, int word_size , int num_channel); |
| int (*set_pcm_voice_params) (void); |
| int (*set_voice_port) (int status); |
| int (*set_audio_port) (int status); |
| |
| int (*power_up_pmic_pb) (unsigned int port); |
| int (*power_up_pmic_cp) (unsigned int port); |
| int (*power_down_pmic_pb) (unsigned int device); |
| int (*power_down_pmic_cp) (unsigned int device); |
| int (*power_down_pmic) (void); |
| void (*pmic_irq_cb) (void *cb_data, u8 value); |
| void (*pmic_irq_enable)(void *data); |
| int (*pmic_jack_enable) (void); |
| int (*pmic_get_mic_bias)(void *intelmaddata); |
| int (*pmic_set_headset_state)(int state); |
| |
| unsigned int hw_dmic_map[MFLD_MAX_HW_CH]; |
| unsigned int available_dmics; |
| int (*set_hw_dmic_route) (u8 index); |
| |
| int gpio_amp; |
| }; |
| |
| extern void sst_mad_send_jack_report(struct snd_jack *jack, |
| int buttonpressevent, |
| int status); |
| |
| |
| int intemad_set_headset_state(int state); |
| int intelmad_get_mic_bias(void); |
| |
| struct intel_sst_pcm_control { |
| int (*open) (struct snd_sst_params *str_param); |
| int (*device_control) (int cmd, void *arg); |
| int (*close) (unsigned int str_id); |
| }; |
| struct intel_sst_card_ops { |
| char *module_name; |
| unsigned int vendor_id; |
| struct intel_sst_pcm_control *pcm_control; |
| struct snd_pmic_ops *scard_ops; |
| }; |
| |
| /* modified for generic access */ |
| struct sc_reg_access { |
| u16 reg_addr; |
| u8 value; |
| u8 mask; |
| }; |
| enum sc_reg_access_type { |
| PMIC_READ = 0, |
| PMIC_WRITE, |
| PMIC_READ_MODIFY, |
| }; |
| |
| int register_sst_card(struct intel_sst_card_ops *card); |
| void unregister_sst_card(struct intel_sst_card_ops *card); |
| #endif /* __INTEL_SST_H__ */ |