All of 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.