All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Thierry Escande <thierry.escande@collabora.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>
Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org
Subject: Re: [alsa-devel] [PATCH 1/2] ASoc: cht_bsw_max98090_ti: Fix jack initialization
Date: Thu, 4 May 2017 12:01:45 -0500	[thread overview]
Message-ID: <4d672855-bb4a-088e-250b-b0fecfd8bb68@linux.intel.com> (raw)
In-Reply-To: <1493719869-16100-2-git-send-email-thierry.escande@collabora.com>

On 05/02/2017 05:11 AM, Thierry Escande wrote:

> If the ts3a227e audio accessory detection hardware is present and its
> driver probed, the jack needs to be created before enabling jack
> detection in the ts3a227e driver. With this patch, the jack is
> instantiated in the max98090 headset init function if the ts3a227e is
> present. This fixes a null pointer dereference as the jack detection
> enabling function in the ts3a driver was called before the jack is
> created.
is this in any way related to 
https://bugzilla.kernel.org/show_bug.cgi?id=151521
" Sound not working on Acer Chromebook R11 (CYAN) braswell / cherryview 
/ cherry trail"

I provided a similar patch and didn't see any followup. 
https://bugzilla.kernel.org/attachment.cgi?id=254867
Thanks
-Pierre

>
> Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
> ---
>   sound/soc/intel/boards/cht_bsw_max98090_ti.c | 50 +++++++++++++++++-----------
>   1 file changed, 30 insertions(+), 20 deletions(-)
>
> diff --git a/sound/soc/intel/boards/cht_bsw_max98090_ti.c b/sound/soc/intel/boards/cht_bsw_max98090_ti.c
> index 742bc0d..f17e474 100644
> --- a/sound/soc/intel/boards/cht_bsw_max98090_ti.c
> +++ b/sound/soc/intel/boards/cht_bsw_max98090_ti.c
> @@ -128,30 +128,21 @@ static int cht_codec_init(struct snd_soc_pcm_runtime *runtime)
>   	struct cht_mc_private *ctx = snd_soc_card_get_drvdata(runtime->card);
>   	struct snd_soc_jack *jack = &ctx->jack;
>   
> -	/**
> -	* TI supports 4 butons headset detection
> -	* KEY_MEDIA
> -	* KEY_VOICECOMMAND
> -	* KEY_VOLUMEUP
> -	* KEY_VOLUMEDOWN
> -	*/
> -	if (ctx->ts3a227e_present)
> -		jack_type = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE |
> -					SND_JACK_BTN_0 | SND_JACK_BTN_1 |
> -					SND_JACK_BTN_2 | SND_JACK_BTN_3;
> -	else
> -		jack_type = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE;
> +	if (ctx->ts3a227e_present) {
> +		/*
> +		 * The jack has already been created in the
> +		 * cht_max98090_headset_init() function.
> +		 */
> +		snd_soc_jack_notifier_register(jack, &cht_jack_nb);
> +		return 0;
> +	}
> +
> +	jack_type = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE;
>   
>   	ret = snd_soc_card_jack_new(runtime->card, "Headset Jack",
>   					jack_type, jack, NULL, 0);
> -
> -	if (ret) {
> +	if (ret)
>   		dev_err(runtime->dev, "Headset Jack creation failed %d\n", ret);
> -		return ret;
> -	}
> -
> -	if (ctx->ts3a227e_present)
> -		snd_soc_jack_notifier_register(jack, &cht_jack_nb);
>   
>   	return ret;
>   }
> @@ -200,6 +191,25 @@ static int cht_max98090_headset_init(struct snd_soc_component *component)
>   {
>   	struct snd_soc_card *card = component->card;
>   	struct cht_mc_private *ctx = snd_soc_card_get_drvdata(card);
> +	struct snd_soc_jack *jack = &ctx->jack;
> +	int jack_type;
> +	int ret;
> +
> +	/*
> +	 * TI supports 4 butons headset detection
> +	 * KEY_MEDIA
> +	 * KEY_VOICECOMMAND
> +	 * KEY_VOLUMEUP
> +	 * KEY_VOLUMEDOWN
> +	 */
> +	jack_type = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE |
> +		    SND_JACK_BTN_0 | SND_JACK_BTN_1 |
> +		    SND_JACK_BTN_2 | SND_JACK_BTN_3;
> +
> +	ret = snd_soc_card_jack_new(card, "Headset Jack", jack_type,
> +				    jack, NULL, 0);
> +	if (ret)
> +		return ret;
>   
>   	return ts3a227e_enable_jack_detect(component, &ctx->jack);
>   }

WARNING: multiple messages have this Message-ID (diff)
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Thierry Escande <thierry.escande@collabora.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>
Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] ASoc: cht_bsw_max98090_ti: Fix jack initialization
Date: Thu, 4 May 2017 12:01:45 -0500	[thread overview]
Message-ID: <4d672855-bb4a-088e-250b-b0fecfd8bb68@linux.intel.com> (raw)
In-Reply-To: <1493719869-16100-2-git-send-email-thierry.escande@collabora.com>

On 05/02/2017 05:11 AM, Thierry Escande wrote:

> If the ts3a227e audio accessory detection hardware is present and its
> driver probed, the jack needs to be created before enabling jack
> detection in the ts3a227e driver. With this patch, the jack is
> instantiated in the max98090 headset init function if the ts3a227e is
> present. This fixes a null pointer dereference as the jack detection
> enabling function in the ts3a driver was called before the jack is
> created.
is this in any way related to 
https://bugzilla.kernel.org/show_bug.cgi?id=151521
" Sound not working on Acer Chromebook R11 (CYAN) braswell / cherryview 
/ cherry trail"

I provided a similar patch and didn't see any followup. 
https://bugzilla.kernel.org/attachment.cgi?id=254867
Thanks
-Pierre

>
> Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
> ---
>   sound/soc/intel/boards/cht_bsw_max98090_ti.c | 50 +++++++++++++++++-----------
>   1 file changed, 30 insertions(+), 20 deletions(-)
>
> diff --git a/sound/soc/intel/boards/cht_bsw_max98090_ti.c b/sound/soc/intel/boards/cht_bsw_max98090_ti.c
> index 742bc0d..f17e474 100644
> --- a/sound/soc/intel/boards/cht_bsw_max98090_ti.c
> +++ b/sound/soc/intel/boards/cht_bsw_max98090_ti.c
> @@ -128,30 +128,21 @@ static int cht_codec_init(struct snd_soc_pcm_runtime *runtime)
>   	struct cht_mc_private *ctx = snd_soc_card_get_drvdata(runtime->card);
>   	struct snd_soc_jack *jack = &ctx->jack;
>   
> -	/**
> -	* TI supports 4 butons headset detection
> -	* KEY_MEDIA
> -	* KEY_VOICECOMMAND
> -	* KEY_VOLUMEUP
> -	* KEY_VOLUMEDOWN
> -	*/
> -	if (ctx->ts3a227e_present)
> -		jack_type = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE |
> -					SND_JACK_BTN_0 | SND_JACK_BTN_1 |
> -					SND_JACK_BTN_2 | SND_JACK_BTN_3;
> -	else
> -		jack_type = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE;
> +	if (ctx->ts3a227e_present) {
> +		/*
> +		 * The jack has already been created in the
> +		 * cht_max98090_headset_init() function.
> +		 */
> +		snd_soc_jack_notifier_register(jack, &cht_jack_nb);
> +		return 0;
> +	}
> +
> +	jack_type = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE;
>   
>   	ret = snd_soc_card_jack_new(runtime->card, "Headset Jack",
>   					jack_type, jack, NULL, 0);
> -
> -	if (ret) {
> +	if (ret)
>   		dev_err(runtime->dev, "Headset Jack creation failed %d\n", ret);
> -		return ret;
> -	}
> -
> -	if (ctx->ts3a227e_present)
> -		snd_soc_jack_notifier_register(jack, &cht_jack_nb);
>   
>   	return ret;
>   }
> @@ -200,6 +191,25 @@ static int cht_max98090_headset_init(struct snd_soc_component *component)
>   {
>   	struct snd_soc_card *card = component->card;
>   	struct cht_mc_private *ctx = snd_soc_card_get_drvdata(card);
> +	struct snd_soc_jack *jack = &ctx->jack;
> +	int jack_type;
> +	int ret;
> +
> +	/*
> +	 * TI supports 4 butons headset detection
> +	 * KEY_MEDIA
> +	 * KEY_VOICECOMMAND
> +	 * KEY_VOLUMEUP
> +	 * KEY_VOLUMEDOWN
> +	 */
> +	jack_type = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE |
> +		    SND_JACK_BTN_0 | SND_JACK_BTN_1 |
> +		    SND_JACK_BTN_2 | SND_JACK_BTN_3;
> +
> +	ret = snd_soc_card_jack_new(card, "Headset Jack", jack_type,
> +				    jack, NULL, 0);
> +	if (ret)
> +		return ret;
>   
>   	return ts3a227e_enable_jack_detect(component, &ctx->jack);
>   }

  reply	other threads:[~2017-05-04 17:01 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-02 10:11 [PATCH 0/2] Add ACPI table for the ts3a227e driver Thierry Escande
2017-05-02 10:11 ` [PATCH 1/2] ASoc: cht_bsw_max98090_ti: Fix jack initialization Thierry Escande
2017-05-04 17:01   ` Pierre-Louis Bossart [this message]
2017-05-04 17:01     ` Pierre-Louis Bossart
2017-05-05 12:37     ` [alsa-devel] " Thierry Escande
2017-05-05 16:14       ` Pierre-Louis Bossart
2017-05-02 10:11 ` [PATCH 2/2] ASoC: ts3a227e: add acpi table Thierry Escande
2017-09-19 13:45   ` Applied "ASoC: ts3a227e: add acpi table" to the asoc tree Mark Brown
2017-09-19 13:45     ` Mark Brown

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=4d672855-bb4a-088e-250b-b0fecfd8bb68@linux.intel.com \
    --to=pierre-louis.bossart@linux.intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=thierry.escande@collabora.com \
    --cc=tiwai@suse.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 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.