static void msm8960_ext_spk_power_amp_on(u32 spk) { pr_info("%s: enable external amp %x\n", __func__, spk); if (spk & (BOTTOM_SPK_AMP_POS | BOTTOM_SPK_AMP_NEG)) { if ((msm8960_ext_bottom_spk_pamp & BOTTOM_SPK_AMP_POS) && (msm8960_ext_bottom_spk_pamp & BOTTOM_SPK_AMP_NEG)) { pr_debug("%s() External Bottom Speaker Ampl already " "turned on. spk = 0x%08x\n", __func__, spk); return; } msm8960_ext_bottom_spk_pamp |= spk; if ((msm8960_ext_bottom_spk_pamp & BOTTOM_SPK_AMP_POS) && (msm8960_ext_bottom_spk_pamp & BOTTOM_SPK_AMP_NEG)) { gpio_direction_output(TPA2051_PAMP_GPIO, 1); if (system_rev < 3) set_speaker_amp(1); pr_debug("%s: slepping 4 ms after turning on external " " Bottom Speaker Ampl\n", __func__); usleep_range(4000, 4000); } } else if (spk & (USB_EXT_AMP_POS | USB_EXT_AMP_NEG)) { if ((msm8960_ext_usb_aud_pamp & USB_EXT_AMP_POS) && (msm8960_ext_usb_aud_pamp & USB_EXT_AMP_NEG)) { pr_debug("%s() External USB Audio Ampl already" "turned on. spk = 0x%08x\n", __func__, spk); return; } msm8960_ext_usb_aud_pamp |= spk; if ((msm8960_ext_usb_aud_pamp & USB_EXT_AMP_POS) && (msm8960_ext_usb_aud_pamp & USB_EXT_AMP_NEG)) { gpio_direction_output(TPA2051_PAMP_GPIO, 1); if (system_rev < 3) set_usb_audio_amp(1); pr_debug("%s: sleeping 4 ms after turning on " " external USB Audio Ampl\n", __func__); usleep_range(4000, 4000); } } else { pr_err("%s: ERROR : Invalid External Speaker Ampl. spk = 0x%08x\n", __func__, spk); return; } }
static void msm8960_ext_spk_power_amp_off(u32 spk) { pr_aud_info("%s: disable external amp %x\n", __func__, spk); #ifdef CONFIG_AUDIO_USAGE_FOR_POWER_CONSUMPTION g_spk_flag = 0; g_spk_end_time = current_kernel_time(); g_spk_total_time += (g_spk_end_time.tv_sec - g_spk_start_time.tv_sec); #endif if (spk & (BOTTOM_SPK_AMP_POS | BOTTOM_SPK_AMP_NEG)) { if (!msm8960_ext_bottom_spk_pamp) return; if (system_rev < 3) set_speaker_amp(0); gpio_direction_output(TPA2051_PAMP_GPIO, 0); msm8960_ext_bottom_spk_pamp = 0; pr_debug("%s: sleeping 4 ms after turning off external Bottom" " Speaker Ampl\n", __func__); usleep_range(4000, 4000); } else if (spk & (USB_EXT_AMP_POS | USB_EXT_AMP_NEG)) { if (!msm8960_ext_usb_aud_pamp) return; if (system_rev < 3) set_usb_audio_amp(0); gpio_direction_output(TPA2051_PAMP_GPIO, 0); msm8960_ext_usb_aud_pamp = 0; pr_debug("%s: sleeping 4 ms after turning off external Top" " Spkaker Ampl\n", __func__); usleep_range(4000, 4000); } else { pr_aud_err("%s: ERROR : Invalid Ext Spk Ampl. spk = 0x%08x\n", __func__, spk); return; } }
static void msm8960_ext_spk_power_amp_off(u32 spk) { pr_info("%s, spk = %d\n", __func__, spk); if (spk & (BOTTOM_SPK_AMP_POS | BOTTOM_SPK_AMP_NEG)) { if (!msm8960_ext_bottom_spk_pamp) return; if (system_rev < 3) set_speaker_amp(0); gpio_direction_output(TPA2051_PAMP_GPIO, 0); msm8960_ext_bottom_spk_pamp = 0; pr_debug("%s: sleeping 4 ms after turning off external Bottom" " Speaker Ampl\n", __func__); usleep_range(4000, 4000); } else if (spk & (USB_EXT_AMP_POS | USB_EXT_AMP_NEG)) { if (!msm8960_ext_usb_aud_pamp) return; if (system_rev < 3) set_usb_audio_amp(0); gpio_direction_output(TPA2051_PAMP_GPIO, 0); msm8960_ext_usb_aud_pamp = 0; pr_debug("%s: sleeping 4 ms after turning off external Top" " Spkaker Ampl\n", __func__); usleep_range(4000, 4000); } else { pr_err("%s: ERROR : Invalid Ext Spk Ampl. spk = 0x%08x\n", __func__, spk); return; } }