Commit 80ee293a72541d2e50015e6113f0f870a3377b13
- Diff rendering mode:
- inline
- side by side
arch/arm/mach-msm/htc_acoustic.c
(12 / 3)
|   | |||
| 22 | 22 | #include <linux/delay.h> | |
| 23 | 23 | #include <linux/kernel.h> | |
| 24 | 24 | #include <linux/uaccess.h> | |
| 25 | #include <linux/io.h> | ||
| 25 | 26 | #include <linux/mutex.h> | |
| 26 | 27 | ||
| 27 | 28 | #include <mach/msm_smd.h> | |
| … | … | ||
| 70 | 70 | static struct msm_rpc_endpoint *endpoint; | |
| 71 | 71 | static struct mutex api_lock; | |
| 72 | 72 | static struct mutex rpc_connect_mutex; | |
| 73 | static unsigned int mic_offset; | ||
| 73 | 74 | ||
| 74 | 75 | int turn_mic_bias_on(int on) | |
| 75 | 76 | { | |
| 76 | 77 | struct msm_dex_command dex; | |
| 77 | 78 | dex.cmd=PCOM_UPDATE_AUDIO; | |
| 78 | 79 | dex.has_data=1; | |
| 80 | |||
| 81 | /* enable handset mic */ | ||
| 82 | writel(0xffff0080|(on?0x100:0), MSM_SHARED_RAM_BASE+mic_offset); | ||
| 79 | 83 | dex.data=0x10; | |
| 80 | *(unsigned *)(MSM_SHARED_RAM_BASE+0xfed00)=0xffff0080 | (on?0x100:0); | ||
| 81 | 84 | msm_proc_comm_wince(&dex,0); | |
| 85 | return 0; | ||
| 82 | 86 | } | |
| 83 | 87 | ||
| 84 | 88 | EXPORT_SYMBOL(turn_mic_bias_on); | |
| … | … | ||
| 203 | 203 | static int __init acoustic_init(void) | |
| 204 | 204 | { | |
| 205 | 205 | 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; | ||
| 206 | 211 | case MACH_TYPE_HTCRAPHAEL: | |
| 207 | 212 | case MACH_TYPE_HTCDIAMOND_CDMA: | |
| 208 | 213 | case MACH_TYPE_HTCDIAMOND: | |
| 209 | 214 | case MACH_TYPE_HTCBLACKSTONE: | |
| 210 | 215 | case MACH_TYPE_HTCRAPHAEL_CDMA: | |
| 211 | case MACH_TYPE_HTCTOPAZ: | ||
| 212 | case MACH_TYPE_HTCRHODIUM: | ||
| 216 | mic_offset = 0xfed00; | ||
| 213 | 217 | htc_acoustic_vir_addr=(void *)(MSM_SHARED_RAM_BASE+0xfc300); | |
| 214 | 218 | break; | |
| 215 | 219 | default: |
arch/arm/mach-msm/htc_hw.c
(7 / 13)
|   | |||
| 131 | 131 | void snd_set_device(int device, int ear_mute, int mic_mute) {}; | |
| 132 | 132 | int snd_ini() {} | |
| 133 | 133 | #endif | |
| 134 | //htc_hw.c | ||
| 135 | int turn_mic_bias_on(int on); | ||
| 136 | |||
| 134 | 137 | void msm_audio_path(int i) { | |
| 135 | unsigned int moffset = 0; | ||
| 136 | 138 | char* sparameterraph = "PHONE_EARCUPLE_VOL2"; | |
| 137 | 139 | char* sparametertopa = "PHONE_EARCUPLE_VOL0"; | |
| 138 | 140 | char* sparameter = NULL; | |
| 139 | 141 | switch(__machine_arch_type) { | |
| 140 | 142 | case MACH_TYPE_HTCTOPAZ: | |
| 141 | 143 | case MACH_TYPE_HTCRHODIUM: | |
| 142 | moffset = 0xfb9c0; | ||
| 143 | 144 | sparameter = sparametertopa; | |
| 144 | 145 | break; | |
| 145 | 146 | case MACH_TYPE_HTCRAPHAEL: | |
| … | … | ||
| 148 | 148 | case MACH_TYPE_HTCDIAMOND: | |
| 149 | 149 | case MACH_TYPE_HTCBLACKSTONE: | |
| 150 | 150 | case MACH_TYPE_HTCRAPHAEL_CDMA: | |
| 151 | moffset = 0xfed00; | ||
| 152 | 151 | sparameter = sparameterraph; | |
| 153 | 152 | break; | |
| 154 | 153 | default: | |
| … | … | ||
| 166 | 166 | dex.data=0x01; | |
| 167 | 167 | msm_proc_comm_wince(&dex,0); | |
| 168 | 168 | ||
| 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); | ||
| 174 | 170 | snd_ini(); | |
| 175 | 171 | snd_set_device(0,SND_MUTE_UNMUTED,SND_MUTE_UNMUTED); /* "HANDSET" */ | |
| 176 | 172 | break; | |
| … | … | ||
| 174 | 174 | set_audio_parameters("CE_PLAYBACK_HANDSFREE"); | |
| 175 | 175 | dex.data=0x01; | |
| 176 | 176 | 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); | ||
| 182 | 180 | ||
| 183 | 181 | snd_ini(); | |
| 184 | 182 | snd_set_device(1,SND_MUTE_MUTED,SND_MUTE_MUTED); /* "SPEAKER" */ |

