From a103c71fe7164dbd863312906b917e9597735608 Mon Sep 17 00:00:00 2001 From: Daniel Mack Date: Wed, 18 May 2011 11:28:44 +0200 Subject: [PATCH] --- yaml --- r: 248188 b: refs/heads/master c: 3bc6fbc7439a88969de97d979795ce7847950668 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/sound/usb/clock.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 5a28da9ce5af..f55ef925ec2b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0ef283247a0cf0fd2e8370ee467030292eb3129e +refs/heads/master: 3bc6fbc7439a88969de97d979795ce7847950668 diff --git a/trunk/sound/usb/clock.c b/trunk/sound/usb/clock.c index 7754a1034545..075195e8661a 100644 --- a/trunk/sound/usb/clock.c +++ b/trunk/sound/usb/clock.c @@ -104,6 +104,15 @@ static bool uac_clock_source_is_valid(struct snd_usb_audio *chip, int source_id) int err; unsigned char data; struct usb_device *dev = chip->dev; + struct uac_clock_source_descriptor *cs_desc = + snd_usb_find_clock_source(chip->ctrl_intf, source_id); + + if (!cs_desc) + return 0; + + /* If a clock source can't tell us whether it's valid, we assume it is */ + if (!uac2_control_is_readable(cs_desc->bmControls, UAC2_CS_CONTROL_CLOCK_VALID)) + return 1; err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), UAC2_CS_CUR, USB_TYPE_CLASS | USB_RECIP_INTERFACE | USB_DIR_IN, @@ -114,7 +123,7 @@ static bool uac_clock_source_is_valid(struct snd_usb_audio *chip, int source_id) if (err < 0) { snd_printk(KERN_WARNING "%s(): cannot get clock validity for id %d\n", __func__, source_id); - return err; + return 0; } return !!data;