void bravo_analog_init(void) { D("%s\n", __func__); /* stereo pmic init */ pmic_spkr_set_gain(LEFT_SPKR, SPKR_GAIN_PLUS12DB); pmic_spkr_set_gain(RIGHT_SPKR, SPKR_GAIN_PLUS12DB); pmic_spkr_en_right_chan(OFF_CMD); pmic_spkr_en_left_chan(OFF_CMD); pmic_spkr_add_right_left_chan(OFF_CMD); pmic_spkr_en_stereo(OFF_CMD); pmic_spkr_select_usb_with_hpf_20hz(OFF_CMD); pmic_spkr_bypass_mux(OFF_CMD); pmic_spkr_en_hpf(ON_CMD); pmic_spkr_en_sink_curr_from_ref_volt_cir(OFF_CMD); pmic_spkr_set_mux_hpf_corner_freq(SPKR_FREQ_0_73KHZ); pmic_mic_set_volt(MIC_VOLT_1_80V); pmic_set_speaker_delay(SPKR_DLY_100MS); gpio_request(BRAVO_AUD_JACKHP_EN, "aud_jackhp_en"); gpio_direction_output(BRAVO_AUD_JACKHP_EN, 1); gpio_set_value(BRAVO_AUD_JACKHP_EN, 0); mutex_lock(&bt_sco_lock); config_gpio_table(bt_sco_disable, ARRAY_SIZE(bt_sco_disable)); gpio_set_value(BRAVO_BT_PCM_OUT, 0); mutex_unlock(&bt_sco_lock); }
static int debug_spkr_set_mux_hpf_corner_freq(char *buf, int size) { int freq; int cnt; cnt = sscanf(buf, "%d", &freq); if (cnt < 1) { printk(KERN_ERR "%s: sscanf failed cnt=%d" , __func__, cnt); return -EINVAL; } if (pmic_spkr_set_mux_hpf_corner_freq(freq) < 0) return -EFAULT; return size; }
void htcleo_speaker_enable(int en) { struct spkr_config_mode scm; memset(&scm, 0, sizeof(scm)); D("%s %d\n", __func__, en); if (en) { scm.is_right_chan_en = 0; scm.is_left_chan_en = 1; scm.is_stereo_en = 0; scm.is_hpf_en = 0; //1; // CotullaTODO: check it pmic_spkr_en_mute(LEFT_SPKR, 0); pmic_spkr_en_mute(RIGHT_SPKR, 0); pmic_set_spkr_configuration(&scm); pmic_spkr_set_mux_hpf_corner_freq(SPKR_FREQ_0_76KHZ); pmic_spkr_en(LEFT_SPKR, 1); pmic_spkr_en(RIGHT_SPKR, 0); pmic_spkr_en_hpf(ON_CMD); // +LEO /* unmute */ pmic_spkr_en_mute(LEFT_SPKR, 1); mdelay(40); } else { pmic_spkr_en_mute(LEFT_SPKR, 0); pmic_spkr_en_hpf(OFF_CMD); // +LEO pmic_spkr_en(LEFT_SPKR, 0); pmic_spkr_en(RIGHT_SPKR, 0); pmic_set_spkr_configuration(&scm); } }