diff options
author | vijeth.po | 2021-03-17 13:25:40 -0500 |
---|---|---|
committer | vijeth.po | 2021-03-17 13:28:05 -0500 |
commit | 80caf2105a6148a9c483b8da011ca936bee7e992 (patch) | |
tree | 02ce0e1ca7160011e3235c72668675bc68c5eb49 | |
parent | e0bda1f447a7cbc83f68a56c02b25ddd5cb10366 (diff) | |
download | tas2562-stereo-android-driver-SamsungLSI_K4.19.tar.gz tas2562-stereo-android-driver-SamsungLSI_K4.19.tar.xz tas2562-stereo-android-driver-SamsungLSI_K4.19.zip |
[Codec] Add higher preference to dac_mute when tas2562_mute is called after.SamsungLSI_K4.19
If dac_mute is called with mute and then tas256_mute unmute is called,
then dac_mute has higher preference and device will be in mute
unless dac_mute with unmute is called.
a. Add condition check before power up to check dac_mute flag.
b. do register write in dac_mute only if device is in playback state
(TAS2562_POWER_ACTIVE)
-rw-r--r-- | tas2562-codec.c | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/tas2562-codec.c b/tas2562-codec.c index 453fd87..938aba4 100644 --- a/tas2562-codec.c +++ b/tas2562-codec.c | |||
@@ -453,14 +453,25 @@ static int tas2562_set_power_state(struct tas2562_priv *p_tas2562, | |||
453 | TAS2562_INTERRUPTMASKREG1_DISABLE); | 453 | TAS2562_INTERRUPTMASKREG1_DISABLE); |
454 | 454 | ||
455 | /*Power up sequence*/ | 455 | /*Power up sequence*/ |
456 | n_result = p_tas2562->update_bits(p_tas2562, | 456 | if (p_tas2562->dac_mute == 0) { |
457 | chn, TAS2562_POWERCONTROL, | 457 | n_result = p_tas2562->update_bits(p_tas2562, |
458 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MASK | | 458 | chn, TAS2562_POWERCONTROL, |
459 | TAS2562_POWERCONTROL_ISNSPOWER_MASK | | 459 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MASK | |
460 | TAS2562_POWERCONTROL_VSNSPOWER_MASK, | 460 | TAS2562_POWERCONTROL_ISNSPOWER_MASK | |
461 | TAS2562_POWERCONTROL_OPERATIONALMODE10_ACTIVE | | 461 | TAS2562_POWERCONTROL_VSNSPOWER_MASK, |
462 | TAS2562_POWERCONTROL_ISNSPOWER_ACTIVE | | 462 | TAS2562_POWERCONTROL_OPERATIONALMODE10_ACTIVE | |
463 | TAS2562_POWERCONTROL_VSNSPOWER_ACTIVE); | 463 | TAS2562_POWERCONTROL_ISNSPOWER_ACTIVE | |
464 | TAS2562_POWERCONTROL_VSNSPOWER_ACTIVE); | ||
465 | } else { | ||
466 | n_result = p_tas2562->update_bits(p_tas2562, | ||
467 | chn, TAS2562_POWERCONTROL, | ||
468 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MASK | | ||
469 | TAS2562_POWERCONTROL_ISNSPOWER_MASK | | ||
470 | TAS2562_POWERCONTROL_VSNSPOWER_MASK, | ||
471 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MUTE | | ||
472 | TAS2562_POWERCONTROL_ISNSPOWER_ACTIVE | | ||
473 | TAS2562_POWERCONTROL_VSNSPOWER_ACTIVE); | ||
474 | } | ||
464 | 475 | ||
465 | dev_info(p_tas2562->dev, "set ICN to -80dB\n"); | 476 | dev_info(p_tas2562->dev, "set ICN to -80dB\n"); |
466 | n_result = p_tas2562->bulk_write(p_tas2562, chn, | 477 | n_result = p_tas2562->bulk_write(p_tas2562, chn, |
@@ -1412,16 +1423,18 @@ static int tas2562_dac_mute_ctrl_put(struct snd_kcontrol *pKcontrol, | |||
1412 | else | 1423 | else |
1413 | chn = channel_left; | 1424 | chn = channel_left; |
1414 | 1425 | ||
1415 | if (mute) { | 1426 | if (p_tas2562->mn_power_state == TAS2562_POWER_ACTIVE) { |
1416 | n_result = p_tas2562->update_bits(p_tas2562, chn, | 1427 | if (mute) { |
1417 | TAS2562_POWERCONTROL, | 1428 | n_result = p_tas2562->update_bits(p_tas2562, chn, |
1418 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MASK, | 1429 | TAS2562_POWERCONTROL, |
1419 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MUTE); | 1430 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MASK, |
1420 | } else { | 1431 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MUTE); |
1421 | n_result = p_tas2562->update_bits(p_tas2562, chn, | 1432 | } else { |
1422 | TAS2562_POWERCONTROL, | 1433 | n_result = p_tas2562->update_bits(p_tas2562, chn, |
1423 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MASK, | 1434 | TAS2562_POWERCONTROL, |
1424 | TAS2562_POWERCONTROL_OPERATIONALMODE10_ACTIVE); | 1435 | TAS2562_POWERCONTROL_OPERATIONALMODE10_MASK, |
1436 | TAS2562_POWERCONTROL_OPERATIONALMODE10_ACTIVE); | ||
1437 | } | ||
1425 | } | 1438 | } |
1426 | 1439 | ||
1427 | p_tas2562->dac_mute = mute; | 1440 | p_tas2562->dac_mute = mute; |