linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Vaibhav Agarwal <vaibhav.sr@gmail.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Elder <elder@kernel.org>, Johan Hovold <johan@kernel.org>,
	Mark Greer <mgreer@animalcreek.com>,
	Takashi Iwai <tiwai@suse.com>, Jaroslav Kysela <perex@perex.cz>,
	Mark Brown <broonie@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>,
	devel@driverdev.osuosl.org, alsa-devel@alsa-project.org,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	linux-kernel@vger.kernel.org, greybus-dev@lists.linaro.org
Subject: Re: [RESEND PATCH v1 2/6] staging: greybus: audio: Maintain jack list within GB Audio module
Date: Tue, 2 Jun 2020 15:14:17 +0300	[thread overview]
Message-ID: <20200602121417.GE30374@kadam> (raw)
In-Reply-To: <ccb39352a30ab39df1534efafc9415aa89b156fa.1591040859.git.vaibhav.sr@gmail.com>

On Tue, Jun 02, 2020 at 10:51:11AM +0530, Vaibhav Agarwal wrote:
> As per the current implementation for GB codec driver, a jack list is
> maintained for each module. And it expects the list to be populated by
> the snd_soc_jack structure which would require modifications in
> mainstream code.
> 
> However, this is not a necessary requirement and the list can be easily
> maintained within gbaudio_module_info as well. This patch provides the
> relevant changes for the same.
> 
> Signed-off-by: Vaibhav Agarwal <vaibhav.sr@gmail.com>
> ---
>  drivers/staging/greybus/audio_codec.c  | 76 ++++++++++++++------------
>  drivers/staging/greybus/audio_codec.h  | 10 +++-
>  drivers/staging/greybus/audio_module.c | 20 ++++---
>  3 files changed, 60 insertions(+), 46 deletions(-)
> 
> diff --git a/drivers/staging/greybus/audio_codec.c b/drivers/staging/greybus/audio_codec.c
> index ebf8484f0ae7..a2ee587e5a79 100644
> --- a/drivers/staging/greybus/audio_codec.c
> +++ b/drivers/staging/greybus/audio_codec.c
> @@ -712,7 +712,7 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
>  			     struct snd_soc_card *card)
>  {
>  	int ret;
> -
> +	struct gbaudio_jack *gba_jack, *n;
>  	struct snd_soc_jack *jack;

Because we got rid of the jack pointer then we can re-use the name here.

	struct gbaudio_jack *jack, *n;

We still don't want the "struct snd_soc_jack *jack;" pointer.

>  	struct snd_soc_jack_pin *headset, *button;
>  
> @@ -728,7 +728,8 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
>  
>  	headset->pin = module->jack_name;
>  	headset->mask = module->jack_mask;
> -	jack = &module->headset_jack;
> +	gba_jack = &module->headset;
> +	jack = &gba_jack->jack;

Use module->headset.jack directly.

>  
>  	ret = snd_soc_card_jack_new(card, module->jack_name, module->jack_mask,
>  				    jack, headset, 1);
> @@ -737,6 +738,9 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
>  		return ret;
>  	}
>  
> +	/* Add to module's jack list */
> +	list_add(&gba_jack->list, &module->jack_list);


Here as well.

> +
>  	if (!module->button_mask)
>  		return 0;
>  
> @@ -745,20 +749,24 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
>  	button = devm_kzalloc(module->dev, sizeof(*headset), GFP_KERNEL);
>  	if (!button) {
>  		ret = -ENOMEM;
> -		goto free_headset;
> +		goto free_jack;

Let's call the label "free_jacks" (plural).

>  	}
>  
>  	button->pin = module->button_name;
>  	button->mask = module->button_mask;
> -	jack = &module->button_jack;
> +	gba_jack = &module->button;
> +	jack = &gba_jack->jack;
>  
>  	ret = snd_soc_card_jack_new(card, module->button_name,
>  				    module->button_mask, jack, button, 1);
>  	if (ret) {
>  		dev_err(module->dev, "Failed to create button jack\n");
> -		goto free_headset;
> +		goto free_jack;
>  	}
>  
> +	/* Add to module's jack list */
> +	list_add(&gba_jack->list, &module->jack_list);
> +
>  	/*
>  	 * Currently, max 4 buttons are supported with following key mapping
>  	 * BTN_0 = KEY_MEDIA
> @@ -768,58 +776,55 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
>  	 */
>  
>  	if (module->button_mask & SND_JACK_BTN_0) {
> -		ret = snd_jack_set_key(module->button_jack.jack, SND_JACK_BTN_0,
> +		ret = snd_jack_set_key(jack->jack, SND_JACK_BTN_0,
>  				       KEY_MEDIA);
>  		if (ret) {
>  			dev_err(module->dev, "Failed to set BTN_0\n");
> -			goto free_button;
> +			goto free_jack;
>  		}
>  	}
>  
>  	if (module->button_mask & SND_JACK_BTN_1) {
> -		ret = snd_jack_set_key(module->button_jack.jack, SND_JACK_BTN_1,
> +		ret = snd_jack_set_key(jack->jack, SND_JACK_BTN_1,
>  				       KEY_VOICECOMMAND);
>  		if (ret) {
>  			dev_err(module->dev, "Failed to set BTN_1\n");
> -			goto free_button;
> +			goto free_jack;
>  		}
>  	}
>  
>  	if (module->button_mask & SND_JACK_BTN_2) {
> -		ret = snd_jack_set_key(module->button_jack.jack, SND_JACK_BTN_2,
> +		ret = snd_jack_set_key(jack->jack, SND_JACK_BTN_2,
>  				       KEY_VOLUMEUP);
>  		if (ret) {
>  			dev_err(module->dev, "Failed to set BTN_2\n");
> -			goto free_button;
> +			goto free_jack;
>  		}
>  	}
>  
>  	if (module->button_mask & SND_JACK_BTN_3) {
> -		ret = snd_jack_set_key(module->button_jack.jack, SND_JACK_BTN_3,
> +		ret = snd_jack_set_key(jack->jack, SND_JACK_BTN_3,
>  				       KEY_VOLUMEDOWN);
>  		if (ret) {
>  			dev_err(module->dev, "Failed to set BTN_0\n");
> -			goto free_button;
> +			goto free_jack;
>  		}
>  	}
>  
>  	/* FIXME
>  	 * verify if this is really required
>  	set_bit(INPUT_PROP_NO_DUMMY_RELEASE,
> -		module->button_jack.jack->input_dev->propbit);
> +		module->button->jack->jack->input_dev->propbit);
>  	*/
>  
>  	return 0;
>  
> -free_button:
> -	jack = &module->button_jack;
> -	snd_device_free(card->snd_card, jack->jack);
> -	list_del(&jack->list);
> -
> -free_headset:
> -	jack = &module->headset_jack;
> -	snd_device_free(card->snd_card, jack->jack);
> -	list_del(&jack->list);
> +free_jack:
> +	list_for_each_entry_safe(gba_jack, n, &module->jack_list, list) {
> +		jack = &gba_jack->jack;
> +		snd_device_free(card->snd_card, jack->jack);

Since we renamed "gba_jack" to "jack" then this becomes:

		snd_device_free(card->snd_card, jack->jack.jack);

Which is sort of weird, but still okay.

> +		list_del(&gba_jack->list);
> +	}
>  
>  	return ret;
>  }
> @@ -829,6 +834,7 @@ int gbaudio_register_module(struct gbaudio_module_info *module)
>  	int ret;
>  	struct snd_soc_codec *codec;
>  	struct snd_card *card;
> +	struct gbaudio_jack *gba_jack = NULL;

Don't introduce unused assignments.  It just silences static checker
warnings about uninitialized variables and introduces bugs.

Anyway, the same comments for the rest of the patch.  Please don't
introduce so many variables which aren't required and which hurt
grep-ability.

regards,
dan carpenter


  reply	other threads:[~2020-06-02 12:15 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-02  5:21 [RESEND PATCH v1 0/6] Enable Greybus Audio codec driver Vaibhav Agarwal
2020-06-02  5:21 ` [RESEND PATCH v1 1/6] staging: greybus: audio: Update snd_jack FW usage as per new APIs Vaibhav Agarwal
2020-06-02 11:56   ` Dan Carpenter
2020-06-02  5:21 ` [RESEND PATCH v1 2/6] staging: greybus: audio: Maintain jack list within GB Audio module Vaibhav Agarwal
2020-06-02 12:14   ` Dan Carpenter [this message]
2020-06-02  5:21 ` [RESEND PATCH v1 3/6] staging: greybus: audio: Resolve compilation errors for GB codec module Vaibhav Agarwal
2020-06-02 12:29   ` Dan Carpenter
2020-06-02  5:21 ` [RESEND PATCH v1 4/6] staging: greybus: audio: Resolve compilation error in topology parser Vaibhav Agarwal
2020-06-02 12:39   ` Dan Carpenter
2020-06-02  5:21 ` [RESEND PATCH v1 5/6] staging: greybus: audio: Add helper APIs for dynamic audio modules Vaibhav Agarwal
2020-06-02 12:44   ` Dan Carpenter
2020-06-02  5:21 ` [RESEND PATCH v1 6/6] staging: greybus: audio: Enable GB codec, audio module compilation Vaibhav Agarwal
2020-06-02 12:57   ` Dan Carpenter
2020-06-03 17:42     ` Vaibhav Agarwal

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=20200602121417.GE30374@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=devel@driverdev.osuosl.org \
    --cc=elder@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=greybus-dev@lists.linaro.org \
    --cc=johan@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgreer@animalcreek.com \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.com \
    --cc=vaibhav.sr@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).