summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvijeth.po2021-03-17 13:25:40 -0500
committervijeth.po2021-03-17 13:28:05 -0500
commit80caf2105a6148a9c483b8da011ca936bee7e992 (patch)
tree02ce0e1ca7160011e3235c72668675bc68c5eb49
parente0bda1f447a7cbc83f68a56c02b25ddd5cb10366 (diff)
downloadtas2562-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.c49
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;