From: Alex Elder <elder@linaro.org>
To: Vaibhav Agarwal <vaibhav.sr@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Alex Elder <elder@kernel.org>, Johan Hovold <johan@kernel.org>,
Mark Greer <mgreer@animalcreek.com>
Cc: devel@driverdev.osuosl.org,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
linux-kernel@vger.kernel.org, greybus-dev@lists.linaro.org,
Dan Carpenter <dan.carpenter@oracle.com>
Subject: Re: [greybus-dev] [PATCH v4 1/7] staging: greybus: audio: Update snd_jack FW usage as per new APIs
Date: Wed, 5 Aug 2020 08:05:11 -0500 [thread overview]
Message-ID: <7cbc0daa-993f-ffc9-78f4-b1e62fd54304@linaro.org> (raw)
In-Reply-To: <896b8e24d990f2bca5aafaebd26e37095042951e.1594290158.git.vaibhav.sr@gmail.com>
On 7/9/20 5:27 AM, Vaibhav Agarwal wrote:
> snd_soc_jack APIs are modified in recent kernel versions. This patch
> updates the codec driver to resolve the compilation errors related to
> jack framework.
Greg has already accepted this series so I won't review this now. But
I still wanted to provide this comment.
It would be helpful in the future to provide a little more information
about the nature of the changes to these APIs. As a reviewer I had to
go track them down to get a little more context about what you are doing
here. So you could say something like:
Audio jacks are now registered at the card level rather than being
associated with a CODEC. The new card-based API allows a jack's pins
to be supplied when the jack is first registered. See: 970939964c26
("ASoC: Allow to register jacks at the card level")
In other words, don't just say "the APIs changed," say "here is how
the APIs have changed." This kind of introduction can be very helpful
and time saving for your reviewers.
-Alex
> Signed-off-by: Vaibhav Agarwal <vaibhav.sr@gmail.com>
> Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> drivers/staging/greybus/audio_codec.c | 54 +++++++++++++++++++++------
> 1 file changed, 42 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/staging/greybus/audio_codec.c b/drivers/staging/greybus/audio_codec.c
> index 08746c85dea6..5d3a5e6a8fe6 100644
> --- a/drivers/staging/greybus/audio_codec.c
> +++ b/drivers/staging/greybus/audio_codec.c
> @@ -709,17 +709,26 @@ static struct snd_soc_dai_driver gbaudio_dai[] = {
> };
>
> static int gbaudio_init_jack(struct gbaudio_module_info *module,
> - struct snd_soc_codec *codec)
> + struct snd_soc_card *card)
> {
> int ret;
> + struct snd_soc_jack_pin *headset, *button;
>
> if (!module->jack_mask)
> return 0;
>
> snprintf(module->jack_name, NAME_SIZE, "GB %d Headset Jack",
> module->dev_id);
> - ret = snd_soc_jack_new(codec, module->jack_name, module->jack_mask,
> - &module->headset_jack);
> +
> + headset = devm_kzalloc(module->dev, sizeof(*headset), GFP_KERNEL);
> + if (!headset)
> + return -ENOMEM;
> +
> + headset->pin = module->jack_name;
> + headset->mask = module->jack_mask;
> +
> + ret = snd_soc_card_jack_new(card, module->jack_name, module->jack_mask,
> + &module->headset_jack, headset, 1);
> if (ret) {
> dev_err(module->dev, "Failed to create new jack\n");
> return ret;
> @@ -730,11 +739,21 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
>
> snprintf(module->button_name, NAME_SIZE, "GB %d Button Jack",
> module->dev_id);
> - ret = snd_soc_jack_new(codec, module->button_name, module->button_mask,
> - &module->button_jack);
> + button = devm_kzalloc(module->dev, sizeof(*button), GFP_KERNEL);
> + if (!button) {
> + ret = -ENOMEM;
> + goto free_headset;
> + }
> +
> + button->pin = module->button_name;
> + button->mask = module->button_mask;
> +
> + ret = snd_soc_card_jack_new(card, module->button_name,
> + module->button_mask, &module->button_jack,
> + button, 1);
> if (ret) {
> dev_err(module->dev, "Failed to create button jack\n");
> - return ret;
> + goto free_headset;
> }
>
> /*
> @@ -750,7 +769,7 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
> KEY_MEDIA);
> if (ret) {
> dev_err(module->dev, "Failed to set BTN_0\n");
> - return ret;
> + goto free_button;
> }
> }
>
> @@ -759,7 +778,7 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
> KEY_VOICECOMMAND);
> if (ret) {
> dev_err(module->dev, "Failed to set BTN_1\n");
> - return ret;
> + goto free_button;
> }
> }
>
> @@ -768,7 +787,7 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
> KEY_VOLUMEUP);
> if (ret) {
> dev_err(module->dev, "Failed to set BTN_2\n");
> - return ret;
> + goto free_button;
> }
> }
>
> @@ -777,7 +796,7 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
> KEY_VOLUMEDOWN);
> if (ret) {
> dev_err(module->dev, "Failed to set BTN_0\n");
> - return ret;
> + goto free_button;
> }
> }
>
> @@ -788,6 +807,16 @@ static int gbaudio_init_jack(struct gbaudio_module_info *module,
> */
>
> return 0;
> +
> +free_button:
> + snd_device_free(card->snd_card, module->button_jack.jack);
> + list_del(&module->button_jack.list);
> +
> +free_headset:
> + snd_device_free(card->snd_card, module->headset_jack.jack);
> + list_del(&module->headset_jack.list);
> +
> + return ret;
> }
>
> int gbaudio_register_module(struct gbaudio_module_info *module)
> @@ -815,7 +844,7 @@ int gbaudio_register_module(struct gbaudio_module_info *module)
> return -EINVAL;
> }
>
> - ret = gbaudio_init_jack(module, codec);
> + ret = gbaudio_init_jack(module, component->card);
> if (ret) {
> up_write(&card->controls_rwsem);
> return ret;
> @@ -942,7 +971,8 @@ void gbaudio_unregister_module(struct gbaudio_module_info *module)
>
> #ifdef CONFIG_SND_JACK
> /* free jack devices for this module from codec->jack_list */
> - list_for_each_entry_safe(jack, next_j, &codec->jack_list, list) {
> + list_for_each_entry_safe(jack, next_j, &component->card->jack_list,
> + list) {
> if (jack == &module->headset_jack)
> mask = GBCODEC_JACK_MASK;
> else if (jack == &module->button_jack)
>
next prev parent reply other threads:[~2020-08-05 16:49 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-09 10:27 [PATCH v4 0/7] Enable Greybus Audio codec driver Vaibhav Agarwal
2020-07-09 10:27 ` [PATCH v4 1/7] staging: greybus: audio: Update snd_jack FW usage as per new APIs Vaibhav Agarwal
2020-08-05 13:05 ` Alex Elder [this message]
2020-08-05 16:52 ` [greybus-dev] " Vaibhav Agarwal
2020-07-09 10:27 ` [PATCH v4 2/7] staging: greybus: audio: Maintain jack list within GB Audio module Vaibhav Agarwal
2020-07-09 10:27 ` [PATCH v4 3/7] staging: greybus: audio: Resolve compilation errors for GB codec module Vaibhav Agarwal
2020-07-09 10:27 ` [PATCH v4 4/7] staging: greybus: audio: Resolve compilation error in topology parser Vaibhav Agarwal
2020-07-09 10:27 ` [PATCH v4 5/7] staging: greybus: audio: Add helper APIs for dynamic audio modules Vaibhav Agarwal
2020-07-09 10:27 ` [PATCH v4 6/7] staging: greybus: audio: Enable GB codec, audio module compilation Vaibhav Agarwal
2020-07-09 10:27 ` [PATCH v4 7/7] drivers: staging: audio: Fix the missing header file for helper file 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=7cbc0daa-993f-ffc9-78f4-b1e62fd54304@linaro.org \
--to=elder@linaro.org \
--cc=alexandre.belloni@bootlin.com \
--cc=dan.carpenter@oracle.com \
--cc=devel@driverdev.osuosl.org \
--cc=elder@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=greybus-dev@lists.linaro.org \
--cc=johan@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mgreer@animalcreek.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
all inboxes | Powered by JetHome®