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