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;
	}
}