static void aic3008_i2s_control(int dsp_enum)
{
    AUD_DBG("%s %d\n", __func__, dsp_enum);
	switch (dsp_enum) {
	case Phone_Default:
	case Phone_BT:
	case VOIP_BT:
	case VOIP_BT_HW_AEC:
		if (pcbid >= PROJECT_PHASE_XB || board_get_sku_tag() == 0x34600) {
			power_config("AUD_BT_SEL", TEGRA_GPIO_PK5, GPIO_OUTPUT);
		}
		break;
	case FM_Headset:
	case FM_Speaker:
		power_config("AUD_FM_SEL", TEGRA_GPIO_PK6, GPIO_OUTPUT);
		break;
	default:
		if (pcbid >= PROJECT_PHASE_XB || board_get_sku_tag() == 0x34600) {
			power_deconfig("AUD_BT_SEL", TEGRA_GPIO_PK5, GPIO_OUTPUT);
		}
		power_deconfig("AUD_FM_SEL", TEGRA_GPIO_PK6, GPIO_OUTPUT);
		break;
	}
	return;
}
Exemplo n.º 2
0
static void aic3008_amp_powerdown(int type)
{
	switch (type) {
	case HEADSET_AMP:
		if (pcbid >= PROJECT_PHASE_XB || board_get_sku_tag() == 0x34600) {
			power_deconfig("AUD_HEADPHONE_EN", TEGRA_GPIO_PP7, GPIO_OUTPUT);
		}
		break;
	case SPEAKER_AMP:
		if (pcbid >= PROJECT_PHASE_XB || board_get_sku_tag() == 0x34600) {
#if (defined(CONFIG_SND_AMP_TFA9887))
			set_tfa9887_spkamp(0, 0);
#endif
		} else {
			power_deconfig("AUD_SPK_EN", TEGRA_GPIO_PP6, GPIO_OUTPUT);
		}
		break;
	case DOCK_AMP:
		if (pcbid >= PROJECT_PHASE_XB || board_get_sku_tag() == 0x34600) {
		} else {
			power_deconfig("AUD_LINEOUT_EN", TEGRA_GPIO_PP7, GPIO_OUTPUT);
		}
		dock_config("TEGRA_GPIO_DESK_AUD", TEGRA_GPIO_PCC5, false, true);
		break;
	default:
		AUD_ERR("aic3008_amp_powerdown unknown type %d\n", type);
		break;
	}
	return;
}
Exemplo n.º 3
0
static void aic3008_suspend(void)
{
	spin_lock(&aic3008_power_ctl->spin_lock);
	if (pcbid >= PROJECT_PHASE_XD) {
		power_deconfig("AUD_MCLK_EN", TEGRA_GPIO_PN1, GPIO_OUTPUT);
	} else if (pcbid >= PROJECT_PHASE_XA && pcbid <= PROJECT_PHASE_XC) {
		power_deconfig("AUD_MCLK_EN", TEGRA_GPIO_PX7, GPIO_OUTPUT);
	} else AUD_ERR("%s: no pcbid satisfy.", __func__);
	common_deconfig();
	aic3008_power_ctl->isPowerOn = false;
	spin_unlock(&aic3008_power_ctl->spin_lock);
	return;
}
static void aic3008_amp_powerdown(int type)
{
	switch (type) {
	case HEADSET_AMP:
		break;
	case SPEAKER_AMP:
		power_deconfig("AUD_SPK_EN", TEGRA_GPIO_PP6, GPIO_OUTPUT);
		break;
	case DOCK_AMP:
		power_deconfig("AUD_LINEOUT_EN", TEGRA_GPIO_PP7, GPIO_OUTPUT);
		config_tegra_desk_aud_gpios(false, true);
		break;
	}
	return;
}
Exemplo n.º 5
0
static void aic3008_suspend(void)
{
	spin_lock(&aic3008_power_ctl->spin_lock);
	power_deconfig("AUD_MCLK_EN", TEGRA_GPIO_PX7, GPIO_OUTPUT);
	common_deconfig();
	aic3008_power_ctl->isPowerOn = false;
	spin_unlock(&aic3008_power_ctl->spin_lock);
	return;
}
Exemplo n.º 6
0
static void aic3008_amp_powerdown(int type)
{
	switch (type) {
	case HEADSET_AMP:
		break;
	case SPEAKER_AMP:
		power_deconfig("AUD_SPK_EN", TEGRA_GPIO_PP6, GPIO_OUTPUT);
		break;
	case DOCK_AMP:
		power_deconfig("AUD_LINEOUT_EN", TEGRA_GPIO_PP7, GPIO_OUTPUT);
		dock_config("TEGRA_GPIO_DESK_AUD", TEGRA_GPIO_PCC5, false, true);
		break;
	default:
		AUD_ERR("aic3008_amp_powerdown unknown type %d\n", type);
		break;
	}
	return;
}
Exemplo n.º 7
0
static void aic3008_hs_vol_control(int db)
{
	switch (db) {
		case BEATS_GAIN_ON:
			if (pcbid >= PROJECT_PHASE_XB || board_get_sku_tag() == 0x34600) {
				power_config("AUD_HP_GAIN_CONTROL", TEGRA_GPIO_PD1, GPIO_OUTPUT);
			}
			break;
		case BEATS_GAIN_OFF:
			if (pcbid >= PROJECT_PHASE_XB || board_get_sku_tag() == 0x34600) {
				power_deconfig("AUD_HP_GAIN_CONTROL", TEGRA_GPIO_PD1, GPIO_OUTPUT);
			}
			break;
		default:
			break;
	}
	return;
}