On 18-12-2017 19:30, Takashi Iwai wrote:
> On Mon, 18 Dec 2017 20:10:44 +0100,
> Mauro Santos wrote:
>>
>> On 18-12-2017 17:50, Jaejoong Kim wrote:
>>> Mauro,
>>>
>>> Could you please try debug patch(I also attach the patch file)?
>>
>> With the attached patch I get the following when plugging in the usb dac
>> directly to a usb3 port:
>> [ 54.391539] usb 1-2: new full-speed USB device number 7 using xhci_hcd
>> [ 54.514996] usb 1-2: device descriptor read/64, error -71
>> [ 54.849808] input: HiFimeDIY Audio HiFimeDIY DAC as
>> /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:1852:7022.0003/input/input20
>> [ 54.850168] hid-generic 0003:1852:7022.0003: input,hidraw2: USB HID
>> v1.00 Device [HiFimeDIY Audio HiFimeDIY DAC] on usb-0000:00:14.0-2/input0
>> [ 54.950421] usb 1-2: [DEBUG] nameid:0, len:0
>> [ 54.950426] usb 1-2: [DEBUG] len:3, get_term_name:PCM
>> [ 54.950429] usb 1-2: [11] SU [PCM] items = 2
>> [ 54.950985] usbcore: registered new interface driver snd-usb-audio
>
> Hmm, the driver get the supposedly correct name string here, so I see
> no flaw, so far.
>
> Could you put the similar debug prints after reverting the commit and
> compare? Or, at minimum, you can enable simply the kernel debug
> prints like below:
>
> % echo "file sound/usb/mixer.c +p" > /sys/kernel/debug/dynamic_debug_control
>
> and re-plug the device.
>
> Also, could you attach the output of "amixer contents" on both working
> and non-working kernels?
>
I have compiled a new kernel where I have reverted the commit and I've
added the debug output based on your last debug patch. I attach the
patch that reverts the changes and adds the debug output just in case
anyone wants to do a sanity check on it (don't mind the indentation I
think I botched that).
With the debug patches I get no extra output when echoing to the
dynamic_debug/control file, I guess that's expected.
I attach the dmesg and amixer outputs for the case without revert plus
debug (bad) and revert plus debug (good).
One change does jump out:
bad: usb 1-2: [11] SU [PCM] items = 2
good: usb 1-2: [11] SU [PCM Capture Source] items = 2
--
Mauro Santos
Simple mixer control 'PCM',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 110
Mono:
Front Left: Playback 0 [0%] [-55.00dB] [on]
Front Right: Playback 0 [0%] [-55.00dB] [on]
Simple mixer control 'PCM Capture Source',0
Capabilities: enum
Items: 'Line' 'IEC958 In'
Item0: 'Line'
Simple mixer control 'Line',0
Capabilities: cvolume cswitch cswitch-joined
Capture channels: Front Left - Front Right
Limits: Capture 0 - 104
Front Left: Capture 0 [0%] [-40.00dB] [off]
Front Right: Capture 0 [0%] [-40.00dB] [off]
[ 63.600402] usb 1-2: new full-speed USB device number 7 using xhci_hcd
[ 63.723739] usb 1-2: device descriptor read/64, error -71
[ 64.057506] input: HiFimeDIY Audio HiFimeDIY DAC as
/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:1852:7022.0003/input/input20
[ 64.057780] hid-generic 0003:1852:7022.0003: input,hidraw2: USB HID v1.00
Device [HiFimeDIY Audio HiFimeDIY DAC] on usb-0000:00:14.0-2/input0
[ 64.154091] usb 1-2: [DEBUG] nameid:0, len:0
[ 64.154095] usb 1-2: [DEBUG] len:3, get_term_name:PCM
[ 64.154097] usb 1-2: [11] SU [PCM Capture Source] items = 2
[ 64.154495] usbcore: registered new interface driver snd-usb-audio
diff -ur a/sound/usb/mixer.c b/sound/usb/mixer.c
--- a/sound/usb/mixer.c 2017-12-18 19:47:02.748776502 +0000
+++ b/sound/usb/mixer.c 2017-12-18 20:18:30.023770892 +0000
@@ -595,7 +595,7 @@
while (snd_ctl_find_id(mixer->chip->card, &kctl->id))
kctl->id.index++;
if ((err = snd_ctl_add(mixer->chip->card, kctl)) < 0) {
- usb_audio_dbg(mixer->chip, "cannot add control (err = %d)\n",
+ usb_audio_err(mixer->chip, "cannot add control (err = %d)\n",
err);
return err;
}
@@ -656,10 +656,14 @@
unsigned char *name, int maxlen, int term_only)
{
struct iterm_name_combo *names;
+ int len;
- if (iterm->name)
- return snd_usb_copy_string_desc(state, iterm->name,
+ if (iterm->name) {
+ len = snd_usb_copy_string_desc(state, iterm->name,
name, maxlen);
+ usb_audio_err(state->chip, "[DEBUG] len:%d, iterm->name:%d\n", len, iterm->name);
+ return len;
+ }
/* virtual type - not a real terminal */
if (iterm->type >> 16) {
@@ -2175,17 +2179,24 @@
nameid = uac_selector_unit_iSelector(desc);
len = check_mapped_name(map, kctl->id.name, sizeof(kctl->id.name));
+
+ usb_audio_err(state->chip, "[DEBUG] nameid:%d, len:%d\n", nameid, len);
+
if (len)
;
- else if (nameid)
+ else if (nameid) {
len = snd_usb_copy_string_desc(state, nameid, kctl->id.name,
sizeof(kctl->id.name));
- else
+ usb_audio_err(state->chip, "[DEBUG] len:%d, copy_string id.name:%s\n",
+ len, (len > 0) ? kctl->id.name : " ");
+ }
+ else {
len = get_term_name(state, &state->oterm,
kctl->id.name, sizeof(kctl->id.name), 0);
-
- if (!len) {
- strlcpy(kctl->id.name, "USB", sizeof(kctl->id.name));
+ usb_audio_err(state->chip, "[DEBUG] len:%d, get_term_name:%s\n",
+ len, (len > 0) ? kctl->id.name : " ");
+ if (!len)
+ strlcpy(kctl->id.name, "USB", sizeof(kctl->id.name));
if (desc->bDescriptorSubtype == UAC2_CLOCK_SELECTOR)
append_ctl_name(kctl, " Clock Source");
@@ -2195,7 +2206,7 @@
append_ctl_name(kctl, " Playback Source");
}
- usb_audio_dbg(state->chip, "[%d] SU [%s] items = %d\n",
+ usb_audio_err(state->chip, "[%d] SU [%s] items = %d\n",
cval->head.id, kctl->id.name, desc->bNrInPins);
return snd_usb_mixer_add_control(&cval->head, kctl);
}
Simple mixer control 'PCM',0
Capabilities: pvolume pswitch pswitch-joined enum
Items: 'Line' 'IEC958 In'
Item0: 'Line'
Item1: 'Line'
Simple mixer control 'Line',0
Capabilities: cvolume cswitch cswitch-joined
Capture channels: Front Left - Front Right
Limits: Capture 0 - 104
Front Left: Capture 0 [0%] [-40.00dB] [off]
Front Right: Capture 0 [0%] [-40.00dB] [off]
[ 56.317038] usb 1-2: new full-speed USB device number 7 using xhci_hcd
[ 56.440424] usb 1-2: device descriptor read/64, error -71
[ 56.775327] input: HiFimeDIY Audio HiFimeDIY DAC as
/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:1852:7022.0003/input/input20
[ 56.775689] hid-generic 0003:1852:7022.0003: input,hidraw2: USB HID v1.00
Device [HiFimeDIY Audio HiFimeDIY DAC] on usb-0000:00:14.0-2/input0
[ 56.876892] usb 1-2: [DEBUG] nameid:0, len:0
[ 56.876896] usb 1-2: [DEBUG] len:3, get_term_name:PCM
[ 56.876900] usb 1-2: [11] SU [PCM] items = 2
[ 56.877392] usbcore: registered new interface driver snd-usb-audio