Commit 80ee293a72541d2e50015e6113f0f870a3377b13

  • Tree SHA1: c77849e
  • Parent SHA1: 8742236 (Move gps-rfkill-init to latecall, so that bluetooth is rfkill0, and makes stupid userland happy.)
  • raw diff | raw patch
Clean up mic management (use writel and put everything in htc_acoustic)
  
2222#include <linux/delay.h>
2323#include <linux/kernel.h>
2424#include <linux/uaccess.h>
25#include <linux/io.h>
2526#include <linux/mutex.h>
2627
2728#include <mach/msm_smd.h>
7070static struct msm_rpc_endpoint *endpoint;
7171static struct mutex api_lock;
7272static struct mutex rpc_connect_mutex;
73static unsigned int mic_offset;
7374
7475int turn_mic_bias_on(int on)
7576{
7677 struct msm_dex_command dex;
7778 dex.cmd=PCOM_UPDATE_AUDIO;
7879 dex.has_data=1;
80
81 /* enable handset mic */
82 writel(0xffff0080|(on?0x100:0), MSM_SHARED_RAM_BASE+mic_offset);
7983 dex.data=0x10;
80 *(unsigned *)(MSM_SHARED_RAM_BASE+0xfed00)=0xffff0080 | (on?0x100:0);
8184 msm_proc_comm_wince(&dex,0);
85 return 0;
8286}
8387
8488EXPORT_SYMBOL(turn_mic_bias_on);
203203static int __init acoustic_init(void)
204204{
205205 switch(__machine_arch_type) {
206 case MACH_TYPE_HTCTOPAZ:
207 case MACH_TYPE_HTCRHODIUM:
208 htc_acoustic_vir_addr=(void *)(MSM_SHARED_RAM_BASE+0xfc300);
209 mic_offset = 0xfb9c0;
210 break;
206211 case MACH_TYPE_HTCRAPHAEL:
207212 case MACH_TYPE_HTCDIAMOND_CDMA:
208213 case MACH_TYPE_HTCDIAMOND:
209214 case MACH_TYPE_HTCBLACKSTONE:
210215 case MACH_TYPE_HTCRAPHAEL_CDMA:
211 case MACH_TYPE_HTCTOPAZ:
212 case MACH_TYPE_HTCRHODIUM:
216 mic_offset = 0xfed00;
213217 htc_acoustic_vir_addr=(void *)(MSM_SHARED_RAM_BASE+0xfc300);
214218 break;
215219 default:
  
131131void snd_set_device(int device, int ear_mute, int mic_mute) {};
132132int snd_ini() {}
133133#endif
134//htc_hw.c
135int turn_mic_bias_on(int on);
136
134137void msm_audio_path(int i) {
135 unsigned int moffset = 0;
136138 char* sparameterraph = "PHONE_EARCUPLE_VOL2";
137139 char* sparametertopa = "PHONE_EARCUPLE_VOL0";
138140 char* sparameter = NULL;
139141 switch(__machine_arch_type) {
140142 case MACH_TYPE_HTCTOPAZ:
141143 case MACH_TYPE_HTCRHODIUM:
142 moffset = 0xfb9c0;
143144 sparameter = sparametertopa;
144145 break;
145146 case MACH_TYPE_HTCRAPHAEL:
148148 case MACH_TYPE_HTCDIAMOND:
149149 case MACH_TYPE_HTCBLACKSTONE:
150150 case MACH_TYPE_HTCRAPHAEL_CDMA:
151 moffset = 0xfed00;
152151 sparameter = sparameterraph;
153152 break;
154153 default:
166166 dex.data=0x01;
167167 msm_proc_comm_wince(&dex,0);
168168
169 /* enable handset mic */
170 *(unsigned *)(MSM_SHARED_RAM_BASE+moffset)=0xffff0080 | 0x100;
171 dex.data=0x10;
172 msm_proc_comm_wince(&dex,0);
173
169 turn_mic_bias_on(1);
174170 snd_ini();
175171 snd_set_device(0,SND_MUTE_UNMUTED,SND_MUTE_UNMUTED); /* "HANDSET" */
176172 break;
174174 set_audio_parameters("CE_PLAYBACK_HANDSFREE");
175175 dex.data=0x01;
176176 msm_proc_comm_wince(&dex,0);
177
178 /* disable handset mic */
179 *(unsigned *)(MSM_SHARED_RAM_BASE+moffset)=0xffff0080;
180 dex.data=0x10;
181 msm_proc_comm_wince(&dex,0);
177 //Really turn mic off?
178 //Some soft apps might want that too.
179 turn_mic_bias_on(0);
182180
183181 snd_ini();
184182 snd_set_device(1,SND_MUTE_MUTED,SND_MUTE_MUTED); /* "SPEAKER" */