All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
To: clemens@ladisch.de, tiwai@suse.de, perex@perex.cz
Cc: alsa-devel@alsa-project.org, darrena092@gmail.com
Subject: [PATCH 2/3] bebob: Use different labels for digital input/output
Date: Tue, 22 Jul 2014 23:13:47 +0900	[thread overview]
Message-ID: <1406038427-18653-1-git-send-email-o-takashi@sakamocchi.jp> (raw)
In-Reply-To: <1406038263-18558-1-git-send-email-o-takashi@sakamocchi.jp>

This commit uses different labels for control elements of digital input/output
interfaces to correct my misunderstanding about M-Audio Firewire 1814 and
ProjectMix I/O.

According to user manuals for these two models, they have two modes for
digital input; one is S/PDIF in both of optical and coaxial interfaces,
another is ADAT in optical interface only.

But in current implementation, a control element for it reduced labels which
a control element for digital output uses because of my misunderstanding
that optical interface is not available for digital input with S/PDIF mode.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
---
 sound/firewire/bebob/bebob_maudio.c | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/sound/firewire/bebob/bebob_maudio.c b/sound/firewire/bebob/bebob_maudio.c
index fc470c6..42e6f22 100644
--- a/sound/firewire/bebob/bebob_maudio.c
+++ b/sound/firewire/bebob/bebob_maudio.c
@@ -434,8 +434,8 @@ static struct snd_kcontrol_new special_sync_ctl = {
 	.get	= special_sync_ctl_get,
 };
 
-/* Digital interface control for special firmware */
-static char *const special_dig_iface_labels[] = {
+/* Digital input interface control for special firmware */
+static char *const special_dig_in_iface_labels[] = {
 	"S/PDIF Optical", "S/PDIF Coaxial", "ADAT Optical"
 };
 static int special_dig_in_iface_ctl_info(struct snd_kcontrol *kctl,
@@ -443,13 +443,13 @@ static int special_dig_in_iface_ctl_info(struct snd_kcontrol *kctl,
 {
 	einf->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
 	einf->count = 1;
-	einf->value.enumerated.items = ARRAY_SIZE(special_dig_iface_labels);
+	einf->value.enumerated.items = ARRAY_SIZE(special_dig_in_iface_labels);
 
 	if (einf->value.enumerated.item >= einf->value.enumerated.items)
 		einf->value.enumerated.item = einf->value.enumerated.items - 1;
 
 	strcpy(einf->value.enumerated.name,
-	       special_dig_iface_labels[einf->value.enumerated.item]);
+	       special_dig_in_iface_labels[einf->value.enumerated.item]);
 
 	return 0;
 }
@@ -504,9 +504,14 @@ static int special_dig_in_iface_ctl_set(struct snd_kcontrol *kctl,
 					 dig_in_fmt,
 					 params->dig_out_fmt,
 					 params->clk_lock);
-	if ((err < 0) || (params->dig_in_fmt > 0)) /* ADAT */
+	if (err < 0)
+		goto end;
+
+	/* For ADAT, optical interface is only available. */
+	if (params->dig_in_fmt > 0)
 		goto end;
 
+	/* For S/PDIF, optical/coaxial interfaces are selectable. */
 	err = avc_audio_set_selector(bebob->unit, 0x00, 0x04, dig_in_iface);
 	if (err < 0)
 		dev_err(&bebob->unit->device,
@@ -525,18 +530,22 @@ static struct snd_kcontrol_new special_dig_in_iface_ctl = {
 	.put	= special_dig_in_iface_ctl_set
 };
 
+/* Digital output interface control for special firmware */
+static char *const special_dig_out_iface_labels[] = {
+	"S/PDIF Optical and Coaxial", "ADAT Optical"
+};
 static int special_dig_out_iface_ctl_info(struct snd_kcontrol *kctl,
 					  struct snd_ctl_elem_info *einf)
 {
 	einf->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
 	einf->count = 1;
-	einf->value.enumerated.items = ARRAY_SIZE(special_dig_iface_labels) - 1;
+	einf->value.enumerated.items = ARRAY_SIZE(special_dig_out_iface_labels);
 
 	if (einf->value.enumerated.item >= einf->value.enumerated.items)
 		einf->value.enumerated.item = einf->value.enumerated.items - 1;
 
 	strcpy(einf->value.enumerated.name,
-	       special_dig_iface_labels[einf->value.enumerated.item + 1]);
+	       special_dig_out_iface_labels[einf->value.enumerated.item]);
 
 	return 0;
 }
-- 
1.9.1

  reply	other threads:[~2014-07-22 14:13 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-20  4:50 [PATCH -next] ALSA: bebob: Fix missing unlock on error in special_clk_ctl_put() weiyj_lk
2014-07-20  7:51 ` Takashi Sakamoto
2014-07-21  2:09 ` [PATCH 0/6] bebob: Improvements for M-Audio specific operations Takashi Sakamoto
2014-07-21  2:10   ` [PATCH 1/6] bebob: Arrangement for critical section to be shorter Takashi Sakamoto
2014-07-21  2:10   ` [PATCH 2/6] bebob: Reducing function callers for simplicity Takashi Sakamoto
2014-07-21  2:10   ` [PATCH 3/6] bebob: Add dev_err() for debugging Takashi Sakamoto
2014-07-21 10:02     ` Takashi Iwai
2014-07-21  2:10   ` [PATCH 4/6] bebob: Use different labels for digital input/output interfaces Takashi Sakamoto
2014-07-21  9:58     ` Takashi Iwai
2014-07-21 10:49       ` Takashi Sakamoto
2014-07-21  2:10   ` [PATCH 5/6] bebob: Correction for return value of .put callback functions Takashi Sakamoto
2014-07-21  2:10   ` [PATCH 6/6] bebob: Arrangement for a control element to which two settings relate Takashi Sakamoto
2014-07-21  7:06   ` [PATCH 0/6] bebob: Improvements for M-Audio specific operations Takashi Iwai
2014-07-21  9:50     ` Takashi Sakamoto
2014-07-21  9:59       ` Takashi Iwai
2014-07-22 14:11 ` [PATCH 1/3] bebob: Fix a missing to unlock mutex in error handling case Takashi Sakamoto
2014-07-22 14:13   ` Takashi Sakamoto [this message]
2014-07-22 14:13   ` [PATCH 3/3] bebob: Correction for return value of .put callback Takashi Sakamoto
2014-07-22 14:27     ` Takashi Sakamoto
2014-07-22 14:28       ` Takashi Iwai
2014-07-22 14:26   ` [PATCH 1/3] bebob: Fix a missing to unlock mutex in error handling case Takashi Iwai
2014-07-22 15:23     ` Takashi Sakamoto
2014-07-22 15:02   ` [PATCH] ALSA: bebob: Correction for return value of special_clk_ctl_put() in error Takashi Sakamoto
2014-07-22 15:37     ` 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=1406038427-18653-1-git-send-email-o-takashi@sakamocchi.jp \
    --to=o-takashi@sakamocchi.jp \
    --cc=alsa-devel@alsa-project.org \
    --cc=clemens@ladisch.de \
    --cc=darrena092@gmail.com \
    --cc=perex@perex.cz \
    --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.