aboutsummaryrefslogtreecommitdiff
path: root/sound/firewire/motu/motu-protocol-v2.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/firewire/motu/motu-protocol-v2.c')
-rw-r--r--sound/firewire/motu/motu-protocol-v2.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/sound/firewire/motu/motu-protocol-v2.c b/sound/firewire/motu/motu-protocol-v2.c
index 784073aa1026..f0a0ecad4d74 100644
--- a/sound/firewire/motu/motu-protocol-v2.c
+++ b/sound/firewire/motu/motu-protocol-v2.c
@@ -86,24 +86,23 @@ static int detect_clock_source_optical_model(struct snd_motu *motu, u32 data,
*src = SND_MOTU_CLOCK_SOURCE_INTERNAL;
break;
case 1:
+ *src = SND_MOTU_CLOCK_SOURCE_ADAT_ON_OPT;
+ break;
+ case 2:
{
__be32 reg;
// To check the configuration of optical interface.
- int err = snd_motu_transaction_read(motu, V2_IN_OUT_CONF_OFFSET,
- &reg, sizeof(reg));
+ int err = snd_motu_transaction_read(motu, V2_IN_OUT_CONF_OFFSET, &reg, sizeof(reg));
if (err < 0)
return err;
- if (be32_to_cpu(reg) & 0x00000200)
+ if (((data & V2_OPT_IN_IFACE_MASK) >> V2_OPT_IN_IFACE_SHIFT) == V2_OPT_IFACE_MODE_SPDIF)
*src = SND_MOTU_CLOCK_SOURCE_SPDIF_ON_OPT;
else
- *src = SND_MOTU_CLOCK_SOURCE_ADAT_ON_OPT;
+ *src = SND_MOTU_CLOCK_SOURCE_SPDIF_ON_COAX;
break;
}
- case 2:
- *src = SND_MOTU_CLOCK_SOURCE_SPDIF_ON_COAX;
- break;
case 3:
*src = SND_MOTU_CLOCK_SOURCE_SPH;
break;