Exemple #1
0
static void msm8960_ext_spk_power_amp_on(u32 spk)
{
	int ret = 0;

	if (spk & (SPK_AMP_POS | SPK_AMP_NEG)) {
		if ((msm8930_ext_spk_pamp & SPK_AMP_POS) &&
			(msm8930_ext_spk_pamp & SPK_AMP_NEG)) {

			pr_debug("%s() External Bottom Speaker Ampl already "
				"turned on. spk = 0x%08x\n", __func__, spk);
			return;
		}

		msm8930_ext_spk_pamp |= spk;

		if ((msm8930_ext_spk_pamp & SPK_AMP_POS) &&
			(msm8930_ext_spk_pamp & SPK_AMP_NEG)) {

			if (socinfo_get_pmic_model() == PMIC_MODEL_PM8917) {
				ret = msm8930_cfg_spkr_gpio(
						LEFT_SPKR_AMPL_GPIO,
						1, "LEFT_SPKR_AMPL");
				if (ret) {
					pr_err("%s: Failed to config ampl gpio %u\n",
						__func__, LEFT_SPKR_AMPL_GPIO);
					return;
				}
			} else {

				/*
				 * 8930 CDP does not have a 5V speaker boost,
				 * hence the GPIO enable for speaker boost is
				 * only required for platforms other than CDP
				 */
				if (!machine_is_msm8930_cdp()) {
					ret = msm8930_cfg_spkr_gpio(
					  SPKR_BOOST_GPIO, 1, "SPKR_BOOST");
					if (ret) {
						pr_err("%s: Failure: spkr boost gpio %u\n",
						  __func__, SPKR_BOOST_GPIO);
						return;
					}
				}
				pm8xxx_spk_enable(MSM8930_SPK_ON);
			}

			pr_debug("%s: sleeping 10 ms after turning on external "
				" Left Speaker Ampl\n", __func__);
			usleep_range(10000, 10000);
		}

	} else  {

		pr_err("%s: ERROR : Invalid External Speaker Ampl. spk = 0x%08x\n",
			__func__, spk);
		return;
	}
}
Exemple #2
0
static void msm8960_ext_spk_power_amp_on(u32 spk)
{
	int ret = 0;

	if (spk & (SPK_AMP_POS | SPK_AMP_NEG)) {
		if ((msm8930_ext_spk_pamp & SPK_AMP_POS) &&
			(msm8930_ext_spk_pamp & SPK_AMP_NEG)) {

			pr_debug("%s() External Bottom Speaker Ampl already "
				"turned on. spk = 0x%08x\n", __func__, spk);
			return;
		}

		msm8930_ext_spk_pamp |= spk;

		if ((msm8930_ext_spk_pamp & SPK_AMP_POS) &&
			(msm8930_ext_spk_pamp & SPK_AMP_NEG)) {

			if (socinfo_get_pmic_model() == PMIC_MODEL_PM8917) {
				ret = msm8930_cfg_spkr_gpio(
						LEFT_SPKR_AMPL_GPIO,
						1, "LEFT_SPKR_AMPL");
				if (ret) {
					pr_err("%s: Failed to config ampl gpio %u\n",
						__func__, LEFT_SPKR_AMPL_GPIO);
					return;
				}
			} else {

				if (machine_is_msm8930_mtp()
					|| machine_is_msm8930_fluid()) {
					ret = msm8930_cfg_spkr_gpio(
					  SPKR_BOOST_GPIO, 1, "SPKR_BOOST");
					if (ret) {
						pr_err("%s: Failure: spkr boost gpio %u\n",
						  __func__, SPKR_BOOST_GPIO);
						return;
					}
				}
				pm8xxx_spk_enable(MSM8930_SPK_ON);
			}

			pr_debug("%s: slepping 4 ms after turning on external "
				" Left Speaker 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_on(u32 spk)
{
	int ret = 0;

	if (spk & (SPK_AMP_POS | SPK_AMP_NEG)) {
		if ((msm8930_ext_spk_pamp & SPK_AMP_POS) &&
			(msm8930_ext_spk_pamp & SPK_AMP_NEG)) {

			pr_debug("%s() External Bottom Speaker Ampl already "
				"turned on. spk = 0x%08x\n", __func__, spk);
			return;
		}

		msm8930_ext_spk_pamp |= spk;

		if ((msm8930_ext_spk_pamp & SPK_AMP_POS) &&
			(msm8930_ext_spk_pamp & SPK_AMP_NEG)) {
#if 0
			if (socinfo_get_pmic_model() == PMIC_MODEL_PM8917) {
				ret = msm8930_cfg_spkr_gpio(
						LEFT_SPKR_AMPL_GPIO,
						1, "LEFT_SPKR_AMPL");
				if (ret) {
					pr_err("%s: Failed to config ampl gpio %u\n",
						__func__, LEFT_SPKR_AMPL_GPIO);
					return;
				}
			} else {

				if (machine_is_msm8930_mtp()
					|| machine_is_msm8930_fluid()) {
					ret = msm8930_cfg_spkr_gpio(
					  SPKR_BOOST_GPIO, 1, "SPKR_BOOST");
					if (ret) {
						pr_err("%s: Failure: spkr boost gpio %u\n",
						  __func__, SPKR_BOOST_GPIO);
						return;
					}
				} else if (socinfo_get_platform_subtype() ==
						PLATFORM_SUBTYPE_SGLTE) {
					ret = pm8xxx_gpio_config(
							spkr_boost_enable_gpio,
							&SPKR_ON);
					if (ret) {
						pr_err("%s: Failure: spkr" \
							"boost gpio ON %u\n",
						  __func__, spkr_boost_enable_gpio);
						return;
					} else {
						pr_debug("%s:Config PMIC8038" \
					"gpio for speaker ON successfully\n",
						__func__);
					}
				}
				pm8xxx_spk_enable(MSM8930_SPK_ON);
			}
#else
			
    #if 0
    // chenjun:is NOT PMIC_MODEL_PM8917
			if (socinfo_get_pmic_model() == PMIC_MODEL_PM8917)
			{
			    pr_err("chenjun:is PMIC_MODEL_PM8917\n");
			}
			else
			{
			    pr_err("chenjun:is NOT PMIC_MODEL_PM8917\n");
			}
    #endif

// chenjun:gpio 14 and 19 are used for speaker amplifier
			ret = msm8930_cfg_spkr_gpio(
						YDA_SPKR_EN0_GPIO,
						1, "YDA_SPKR_EN0");

			pr_err("chenjun:%s:enable SPKR EN0(%d):ret(%d)\n",
			            __func__, YDA_SPKR_EN0_GPIO, ret);

			ret = msm8930_cfg_spkr_gpio(
						YDA_SPKR_EN1_GPIO,
						1, "YDA_SPKR_EN1");

			pr_err("chenjun:%s:enable SPKR EN1(%d):ret(%d)\n",
			            __func__, YDA_SPKR_EN1_GPIO, ret);
#endif
			pr_debug("%s: sleeping 4 ms after turning on external "
				" Left Speaker Ampl\n", __func__);
			usleep_range(4000, 4000);
		}

	} else  {

		pr_err("%s: ERROR : Invalid External Speaker Ampl. spk = 0x%08x\n",
			__func__, spk);
		return;
	}
}