All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Cc: alsa-devel@alsa-project.org, clemens@ladisch.de,
	darrena092@gmail.com, ffado-devel@lists.sf.net
Subject: Re: [PATCH 4/6] bebob: Use different labels for digital input/output interfaces
Date: Mon, 21 Jul 2014 11:58:12 +0200	[thread overview]
Message-ID: <s5hppgznidn.wl%tiwai@suse.de> (raw)
In-Reply-To: <1405908605-8105-5-git-send-email-o-takashi@sakamocchi.jp>

At Mon, 21 Jul 2014 11:10:03 +0900,
Takashi Sakamoto wrote:
> 
> This commit use 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 digital input uses
> 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 | 20 ++++++++++++++------
>  1 file changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/sound/firewire/bebob/bebob_maudio.c b/sound/firewire/bebob/bebob_maudio.c
> index 008ff2c..f2277ce 100644
> --- a/sound/firewire/bebob/bebob_maudio.c
> +++ b/sound/firewire/bebob/bebob_maudio.c
> @@ -440,8 +440,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,
> @@ -449,13 +449,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;
>  }
> @@ -498,6 +498,8 @@ static int special_dig_in_iface_ctl_set(struct snd_kcontrol *kctl,
>  	int err;
>  
>  	id = uval->value.enumerated.item[0];
> +	if (id >= ARRAY_SIZE(special_dig_in_iface_labels))
> +		return 0;

This should return an error.

>  
>  	/* decode user value */
>  	dig_in_fmt = (id >> 1) & 0x01;
> @@ -537,18 +539,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;
>  }
> @@ -571,6 +577,8 @@ static int special_dig_out_iface_ctl_set(struct snd_kcontrol *kctl,
>  	int err;
>  
>  	id = uval->value.enumerated.item[0];
> +	if (id >= ARRAY_SIZE(special_dig_out_iface_labels))
> +		return 0;

Ditto.


thanks,

Takashi


>  
>  	mutex_lock(&bebob->mutex);
>  
> -- 
> 1.9.1
> 

  reply	other threads:[~2014-07-21  9:58 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 [this message]
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   ` [PATCH 2/3] bebob: Use different labels for digital input/output Takashi Sakamoto
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=s5hppgznidn.wl%tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=clemens@ladisch.de \
    --cc=darrena092@gmail.com \
    --cc=ffado-devel@lists.sf.net \
    --cc=o-takashi@sakamocchi.jp \
    /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.