void __init runnymede_audio_init(void) { mutex_init(&bt_sco_lock); mutex_init(&audio_2v85_usage_lock); audio_2v85_usage_counter = 0; htc_7x30_register_analog_ops(&ops); htc_7x30_register_icodec_ops(&iops); htc_7x30_register_ecodec_ops(&eops); htc_7x30_register_voice_ops(&vops); acoustic_register_ops(&acoustic); acdb_register_ops(&acdb); aic3254_register_ctl_ops(&cops); gpio_request(runnymede_AUD_MICPATH_SEL, "aud_mic_sel"); gpio_direction_output(runnymede_AUD_MICPATH_SEL, 1); gpio_set_value(runnymede_AUD_MICPATH_SEL, 0); mutex_lock(&bt_sco_lock); config_gpio_table(aux_pcm_gpio_off, ARRAY_SIZE(aux_pcm_gpio_off)); gpio_set_value(runnymede_GPIO_BT_PCM_OUT, 0); gpio_set_value(runnymede_GPIO_BT_PCM_SYNC, 0); gpio_set_value(runnymede_GPIO_BT_PCM_CLK, 0); mutex_unlock(&bt_sco_lock); }
void __init mecha_audio_init(void) { static struct pm8058_gpio tpa2051_pwr = { .direction = PM_GPIO_DIR_OUT, .output_buffer = PM_GPIO_OUT_BUF_CMOS, .output_value = 0, .pull = PM_GPIO_PULL_NO, .vin_sel = 6, /* S3 1.8 V */ .out_strength = PM_GPIO_STRENGTH_HIGH, .function = PM_GPIO_FUNC_NORMAL, }; mutex_init(&bt_sco_lock); #ifdef CONFIG_MSM7KV2_AUDIO htc_7x30_register_analog_ops(&ops); htc_7x30_register_icodec_ops(&iops); htc_7x30_register_ecodec_ops(&eops); htc_7x30_register_voice_ops(&vops); acoustic_register_ops(&acoustic); acdb_register_ops(&acdb); #endif aic3254_register_ctl_ops(&cops); pm8058_gpio_config(MECHA_AUD_SPK_SD, &tpa2051_pwr); if (system_rev == 0) pm8058_gpio_config(MECHA_GPIO_AUD_AMP_EN_XA, &tpa2051_pwr); else { gpio_request(MECHA_GPIO_AUD_AMP_EN, "aud_amp_en"); gpio_direction_output(MECHA_GPIO_AUD_AMP_EN, 1); gpio_set_value(MECHA_GPIO_AUD_AMP_EN, 0); } gpio_request(MECHA_AUD_MICPATH_SEL, "aud_mic_sel"); gpio_direction_output(MECHA_AUD_MICPATH_SEL, 1); gpio_set_value(MECHA_AUD_MICPATH_SEL, 0); gpio_set_value(MECHA_AUD_CODEC_RST, 0); mdelay(1); gpio_set_value(MECHA_AUD_CODEC_RST, 1); mutex_lock(&bt_sco_lock); config_gpio_table(aux_pcm_gpio_off, ARRAY_SIZE(aux_pcm_gpio_off)); gpio_set_value(MECHA_GPIO_BT_PCM_OUT, 0); gpio_set_value(MECHA_GPIO_BT_PCM_SYNC, 0); gpio_set_value(MECHA_GPIO_BT_PCM_CLK, 0); mutex_unlock(&bt_sco_lock); }
void __init spade_audio_init(void) { struct pm8058_gpio audio_pwr = { .direction = PM_GPIO_DIR_OUT, .output_buffer = PM_GPIO_OUT_BUF_CMOS, .output_value = 0, .pull = PM_GPIO_PULL_NO, .out_strength = PM_GPIO_STRENGTH_HIGH, .function = PM_GPIO_FUNC_NORMAL, .vin_sel = 6, }; mutex_init(&bt_sco_lock); mutex_init(&mic_lock); #ifdef CONFIG_MSM7KV2_AUDIO htc_7x30_register_analog_ops(&ops); htc_7x30_register_icodec_ops(&iops); htc_7x30_register_ecodec_ops(&eops); htc_7x30_register_voice_ops(&vops); acoustic_register_ops(&acoustic); #endif aic3254_register_ctl_ops(&cops); /* Init PMIC GPIO */ pm8058_gpio_config(SPADE_AUD_EP_EN, &audio_pwr); pm8058_gpio_config(SPADE_AUD_SPK_ENO, &audio_pwr); pm8058_gpio_config(SPADE_AUD_HP_EN, &audio_pwr); /* Rest AIC3254 */ gpio_set_value(SPADE_AUD_CODEC_RST, 0); mdelay(1); gpio_set_value(SPADE_AUD_CODEC_RST, 1); mutex_lock(&bt_sco_lock); config_gpio_table(aux_pcm_gpio_off, ARRAY_SIZE(aux_pcm_gpio_off)); gpio_set_value(SPADE_GPIO_BT_PCM_OUT, 0); gpio_set_value(SPADE_GPIO_BT_PCM_SYNC, 0); gpio_set_value(SPADE_GPIO_BT_PCM_CLK, 0); mutex_unlock(&bt_sco_lock); }
void __init mecha_audio_init(void) { mutex_init(&bt_sco_lock); #ifdef CONFIG_MSM7KV2_AUDIO htc_7x30_register_analog_ops(&ops); htc_7x30_register_icodec_ops(&iops); htc_7x30_register_ecodec_ops(&eops); htc_7x30_register_voice_ops(&vops); acoustic_register_ops(&acoustic); acdb_register_ops(&acdb); #endif aic3254_register_ctl_ops(&cops); #if 0 pm8058_gpio_config(MECHA_AUD_SPK_SD, &tpa2051_pwr); if (system_rev == 0) pm8058_gpio_config(MECHA_GPIO_AUD_AMP_EN_XA, &tpa2051_pwr); else { gpio_request(MECHA_GPIO_AUD_AMP_EN, "aud_amp_en"); gpio_direction_output(MECHA_GPIO_AUD_AMP_EN, 1); gpio_set_value(MECHA_GPIO_AUD_AMP_EN, 0); } #endif gpio_request(MECHA_AUD_MICPATH_SEL, "aud_mic_sel"); gpio_direction_output(MECHA_AUD_MICPATH_SEL, 1); gpio_set_value(MECHA_AUD_MICPATH_SEL, 0); gpio_set_value(MECHA_AUD_CODEC_RST, 0); mdelay(1); gpio_set_value(MECHA_AUD_CODEC_RST, 1); mutex_lock(&bt_sco_lock); config_gpio_table(aux_pcm_gpio_off, ARRAY_SIZE(aux_pcm_gpio_off)); gpio_set_value(MECHA_GPIO_BT_PCM_OUT, 0); gpio_set_value(MECHA_GPIO_BT_PCM_SYNC, 0); gpio_set_value(MECHA_GPIO_BT_PCM_CLK, 0); mutex_unlock(&bt_sco_lock); }
void __init runnymede_audio_init(void) { struct pm8058_gpio tpa2051_pwr = { .direction = PM_GPIO_DIR_OUT, .output_buffer = PM_GPIO_OUT_BUF_CMOS, .output_value = 0, .pull = PM_GPIO_PULL_NO, .vin_sel = 6, /* S3 1.8 V */ .out_strength = PM_GPIO_STRENGTH_HIGH, .function = PM_GPIO_FUNC_NORMAL, }; mutex_init(&bt_sco_lock); mutex_init(&audio_2v85_usage_lock); audio_2v85_usage_counter = 0; #ifdef CONFIG_MSM7KV2_AUDIO htc_7x30_register_analog_ops(&ops); htc_7x30_register_icodec_ops(&iops); htc_7x30_register_ecodec_ops(&eops); htc_7x30_register_voice_ops(&vops); acoustic_register_ops(&acoustic); acdb_register_ops(&acdb); #endif aic3254_register_ctl_ops(&cops); pm8058_gpio_config(runnymede_AUD_SPK_SD, &tpa2051_pwr); pm8058_gpio_config(runnymede_AUD_AMP_EN, &tpa2051_pwr); gpio_request(runnymede_AUD_MICPATH_SEL, "aud_mic_sel"); gpio_direction_output(runnymede_AUD_MICPATH_SEL, 1); gpio_set_value(runnymede_AUD_MICPATH_SEL, 0); mutex_lock(&bt_sco_lock); config_gpio_table(aux_pcm_gpio_off, ARRAY_SIZE(aux_pcm_gpio_off)); gpio_set_value(runnymede_GPIO_BT_PCM_OUT, 0); gpio_set_value(runnymede_GPIO_BT_PCM_SYNC, 0); gpio_set_value(runnymede_GPIO_BT_PCM_CLK, 0); mutex_unlock(&bt_sco_lock); }
void __init primou_audio_init(void) { mutex_init(&bt_sco_lock); #ifdef CONFIG_MSM7KV2_AUDIO htc_7x30_register_analog_ops(&ops); htc_7x30_register_icodec_ops(&iops); htc_7x30_register_ecodec_ops(&eops); htc_7x30_register_voice_ops(&vops); acoustic_register_ops(&acoustic); acdb_register_ops(&acdb); #endif gpio_request(PM8058_GPIO_PM_TO_SYS(PRIMOU_AUD_SPK_SD), "AUD_SPK_EN"); gpio_direction_output(PM8058_GPIO_PM_TO_SYS(PRIMOU_AUD_SPK_SD), 1); gpio_set_value(PM8058_GPIO_PM_TO_SYS(PRIMOU_AUD_SPK_SD), 0); gpio_request(PM8058_GPIO_PM_TO_SYS(PRIMOU_AUD_CODEC_EN), "aud_2v85_en"); gpio_direction_output(PM8058_GPIO_PM_TO_SYS(PRIMOU_AUD_CODEC_EN), 1); gpio_set_value(PRIMOU_AUD_CODEC_EN, 0); primou_hs_n1v8_enable(0); mutex_lock(&bt_sco_lock); config_gpio_table(aux_pcm_gpio_off, ARRAY_SIZE(aux_pcm_gpio_off)); gpio_set_value(PRIMOU_GPIO_BT_PCM_OUT, 0); gpio_set_value(PRIMOU_GPIO_BT_PCM_SYNC, 0); gpio_set_value(PRIMOU_GPIO_BT_PCM_CLK, 0); mutex_unlock(&bt_sco_lock); audio_wq = create_workqueue("AUDIO_EFFECT_VOLUME"); if (audio_wq == NULL) { pr_aud_info("%s: cannot create workqueue\n", __func__); } }