/* Copyright (c) 2009-2011, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * 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. * */ #ifndef _MACH_QDSP5_V2_AFE_H #define _MACH_QDSP5_V2_AFE_H #include #include #define AFE_HW_PATH_CODEC_RX 1 #define AFE_HW_PATH_CODEC_TX 2 #define AFE_HW_PATH_AUXPCM_RX 3 #define AFE_HW_PATH_AUXPCM_TX 4 #define AFE_HW_PATH_MI2S_RX 5 #define AFE_HW_PATH_MI2S_TX 6 #define AFE_VOLUME_UNITY 0x4000 /* Based on Q14 */ struct msm_afe_config { u16 sample_rate; u16 channel_mode; u16 volume; /* To be expaned for AUX CODEC */ }; int afe_enable(u8 path_id, struct msm_afe_config *config); int afe_disable(u8 path_id); int afe_config_aux_codec(int pcm_ctl_value, int aux_codec_intf_value, int data_format_pad); int afe_config_fm_codec(int fm_enable, uint16_t source); int afe_config_fm_volume(uint16_t volume); int afe_config_fm_calibration_gain(uint16_t device_id, uint16_t calibration_gain); void afe_loopback(int enable); void afe_ext_loopback(int enable, int rx_copp_id, int tx_copp_id); void afe_device_volume_ctrl(u16 device_id, u16 device_volume); int afe_config_rmc_block(struct acdb_rmc_block *acdb_rmc); #endif