Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c5d1c98 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown
Browse files

ASoC: rsnd: control DVC_DVUCR under rsnd_dvc_volume_update()



rsnd_dvc_volume_update() is main function to control
DVC feature like Digital Volume / Mute / Ramp etc.
DVC_DVUCR should be controlled under this function.

Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 92b9a699
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ struct rsnd_dvc {
static void rsnd_dvc_volume_update(struct rsnd_mod *mod)
{
	struct rsnd_dvc *dvc = rsnd_mod_to_dvc(mod);
	u32 dvucr = 0;
	u32 mute = 0;
	int i;

@@ -47,12 +48,20 @@ static void rsnd_dvc_volume_update(struct rsnd_mod *mod)
		mute |= (!!dvc->mute.val[i]) << i;
	}

	/* Enable Digital Volume */
	dvucr = 0x100;
	rsnd_mod_write(mod, DVC_VOL0R, dvc->volume.val[0]);
	rsnd_mod_write(mod, DVC_VOL1R, dvc->volume.val[1]);

	/*  Enable Mute */
	if (mute) {
		dvucr |= 0x1;
		rsnd_mod_write(mod, DVC_ZCMCR, mute);
	}

	rsnd_mod_write(mod, DVC_DVUCR, dvucr);
}

static int rsnd_dvc_probe_gen2(struct rsnd_mod *mod,
			       struct rsnd_dai *rdai)
{
@@ -103,9 +112,6 @@ static int rsnd_dvc_init(struct rsnd_mod *dvc_mod,

	rsnd_mod_write(dvc_mod, DVC_ADINR, rsnd_get_adinr(dvc_mod));

	/*  enable Volume / Mute */
	rsnd_mod_write(dvc_mod, DVC_DVUCR, 0x101);

	/* ch0/ch1 Volume */
	rsnd_dvc_volume_update(dvc_mod);