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);
}
Esempio n. 2
0
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);
}
Esempio n. 6
0
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__);
	}

}