Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Chris J Arges <chris.j.arges@canonical.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: Adam Goode <adam@spicenitz.org>,
	alsa-devel@alsa-project.org, Robin Gareus <robin@gareus.org>
Subject: Re: Scarlett 18i8 hardware out of sync with AlsaMixer
Date: Wed, 27 May 2015 08:53:26 -0500	[thread overview]
Message-ID: <20150527135325.GA12862@canonical.com> (raw)
In-Reply-To: <s5hzj4q9mri.wl-tiwai@suse.de>

On Wed, May 27, 2015 at 03:24:17PM +0200, Takashi Iwai wrote:
> [Added more people to Cc]
> 
> At Wed, 27 May 2015 08:55:21 -0400,
> Adam Goode wrote:
> > 
> > The settings were not reset across a mem sleep (echo mem > /sys/power/state).
> > 
> > Hard power off / power on does make the settings get out of sync.
>

Ok did some testing on my Scarlett 18i8:
 suspend/resume -> settings not reset
 poweroff/poweron -> settings not reset
 unplug/replug usb -> settings not reset
 powercycle unit -> settings not reset

Is there a more consistent method to trigger this issue?
In addition are you manually triggering 'alsactl restore/save' in this process?

I'll do some additional testing to see if I can trigger this.
 
> Then maybe the problem is that the device keeps the old setting while
> the driver resets to the default.  I vaguely remember that scarlett
> could save the default state in a persistent area, and the original
> driver patch had a kctl to trigger it.  We didn't take it because it
> might be dangerous.
> 
>

The original issue was this:
  Hey, as Tobias mentioned this is a HW saving (to the mixer's NVRAM)
  function used for using the mixer disconnected from a computer. We
  wouldn't want to continually write the NVRAM on every control update as
  I'm unsure of how many write-cycles the device is capable of.

So if we wrote to NVRAM on each control update we might wear out the memory
very quickly. I think this functionality is more for using the device
disconnected from a computer.
 
> Takashi
> 
> 
> > Adam
> > 
> > 
> > On Wed, May 27, 2015 at 2:43 AM, Takashi Iwai <tiwai@suse.de> wrote:
> > > At Tue, 26 May 2015 21:39:22 -0400,
> > > Adam Goode wrote:
> > >>
> > >> Linux 4.0.2-300.fc22.x86_64
> > >>
> > >> Hi,
> > >>
> > >> I have the Scarlett 18i8 USB device that is supported by the new
> > >> scarlett_mixer.c code. I am happy to say that the mixer code works in
> > >> most cases. But under some conditions, I cannot get any sound out of
> > >> the device until I go and toggle the "Matrix 01 Input" and "Matrix 02
> > >> Input" enums up and then down (from PCM 1 and PCM 2). This appears to
> > >> me to be some kind of cache invalidation bug, where the device is out
> > >> of sync with kernel mixer state.
> > >>
> > >> I will take a look at the code myself at some point, but not for a
> > >> while. But I am happy to try patches if anyone comes up with anything
> > >> in the mean time.
> > >

Does this change anything (untested)? And are non-enum settings affected?

diff --git a/sound/usb/mixer_scarlett.c b/sound/usb/mixer_scarlett.c
index 7438e7c..ad4a452 100644
--- a/sound/usb/mixer_scarlett.c
+++ b/sound/usb/mixer_scarlett.c
@@ -438,11 +438,9 @@ static int scarlett_ctl_enum_put(struct snd_kcontrol *kctl,
 
 	val = ucontrol->value.integer.value[0];
 	val = val + opt->start;
-	if (val != oval) {
-		snd_usb_set_cur_mix_value(elem, 0, 0, val);
-		return 1;
-	}
-	return 0;
+	/* always set cur mix value */
+	snd_usb_set_cur_mix_value(elem, 0, 0, val);
+	return 1;
 }
 
 static int scarlett_ctl_enum_resume(struct usb_mixer_elem_list *list)

--chris

> > > Does it happen after some S3/S4 or even during a normal operation
> > > without power-saving?  The USB-audio device supports autopm, so this
> > > needs to be checked, too.
> > >
> > >
> > > Takashi
> > 
> 

  parent reply	other threads:[~2015-05-27 13:53 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-27  1:39 Scarlett 18i8 hardware out of sync with AlsaMixer Adam Goode
2015-05-27  6:43 ` Takashi Iwai
2015-05-27 12:55   ` Adam Goode
2015-05-27 13:24     ` Takashi Iwai
2015-05-27 13:37       ` Adam Goode
2015-05-27 13:53       ` Chris J Arges [this message]
2015-06-09 21:44         ` Adam Goode
2015-06-10  4:24         ` Adam Goode
2015-06-13 23:03           ` Robin Gareus
2015-06-19 11:34             ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150527135325.GA12862@canonical.com \
    --to=chris.j.arges@canonical.com \
    --cc=adam@spicenitz.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=robin@gareus.org \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox