예제 #1
0
static int ssm2602_resume(struct snd_soc_codec *codec)
{
	snd_soc_cache_sync(codec);

	ssm2602_set_bias_level(codec, SND_SOC_BIAS_STANDBY);

	return 0;
}
예제 #2
0
파일: ssm2602.c 프로젝트: 454053205/linux
static int ssm260x_probe(struct snd_soc_codec *codec)
{
	struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec);
	int ret;

	pr_info("ssm2602 Audio Codec %s", SSM2602_VERSION);

	ret = snd_soc_codec_set_cache_io(codec, 7, 9, ssm2602->control_type);
	if (ret < 0) {
		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
		return ret;
	}

	ret = ssm2602_reset(codec);
	if (ret < 0) {
		dev_err(codec->dev, "Failed to issue reset: %d\n", ret);
		return ret;
	}

	/* set the update bits */
	snd_soc_update_bits(codec, SSM2602_LINVOL,
			    LINVOL_LRIN_BOTH, LINVOL_LRIN_BOTH);
	snd_soc_update_bits(codec, SSM2602_RINVOL,
			    RINVOL_RLIN_BOTH, RINVOL_RLIN_BOTH);
	/*select Line in as default input*/
	snd_soc_write(codec, SSM2602_APANA, APANA_SELECT_DAC |
			APANA_ENABLE_MIC_BOOST);

	switch (ssm2602->type) {
	case SSM2602:
		ret = ssm2602_probe(codec);
		break;
	case SSM2604:
		ret = ssm2604_probe(codec);
		break;
	}

	if (ret)
		return ret;

	ssm2602_set_bias_level(codec, SND_SOC_BIAS_STANDBY);

	return 0;
}
예제 #3
0
/* remove everything here */
static int ssm2602_remove(struct snd_soc_codec *codec)
{
	ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF);
	return 0;
}
예제 #4
0
static int ssm2602_suspend(struct snd_soc_codec *codec, pm_message_t state)
{
	ssm2602_set_bias_level(codec, SND_SOC_BIAS_OFF);
	return 0;
}