Re: [PATCH v3 14/15] ASoC: hdac_hdmi: Add jack reporting for user space

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 07 Dec 2015 22:24:28 +0100,
Subhransu S. Prusty wrote:
> 
> User space also need be notified of HDMI hotplug notification so
> that it can select the appropriate device to route audio.
> 
> Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@xxxxxxxxx>
> Signed-off-by: Vinod Koul <vinod.koul@xxxxxxxxx>
> ---
>  sound/soc/codecs/hdac_hdmi.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c
> index 008a29f..cce2af0 100644
> --- a/sound/soc/codecs/hdac_hdmi.c
> +++ b/sound/soc/codecs/hdac_hdmi.c
> @@ -24,6 +24,7 @@
>  #include <linux/hdmi.h>
>  #include <drm/drm_edid.h>
>  #include <sound/pcm_params.h>
> +#include <sound/jack.h>
>  #include <sound/soc.h>
>  #include <sound/hdaudio_ext.h>
>  #include <sound/hda_i915.h>
> @@ -73,6 +74,7 @@ struct hdac_hdmi_pin {
>  	struct hdac_ext_device *edev;
>  	int repoll_count;
>  	struct delayed_work work;
> +	struct snd_jack *jack;
>  };
>  
>  struct hdac_hdmi_dai_pin_map {
> @@ -905,6 +907,7 @@ static void hdac_hdmi_present_sense(struct hdac_hdmi_pin *pin, int repoll)
>  	pin->eld.eld_valid = !!(val & AC_PINSENSE_ELDV);
>  
>  	if (!pin->eld.monitor_present || !pin->eld.eld_valid) {
> +		snd_jack_report(pin->jack, 0);
>  		dev_info(&edev->hdac.dev, "%s: disconnect or eld_invalid\n",
>  				__func__);
>  		goto put_hdac_device;
> @@ -915,6 +918,7 @@ static void hdac_hdmi_present_sense(struct hdac_hdmi_pin *pin, int repoll)
>  		if (hdac_hdmi_get_eld(&edev->hdac, pin->nid,
>  				pin->eld.eld_buffer,
>  				&pin->eld.eld_size) == 0) {
> +			snd_jack_report(pin->jack, SND_JACK_AVOUT);
>  			print_hex_dump_bytes("Eld: ", DUMP_PREFIX_OFFSET,
>  					pin->eld.eld_buffer, pin->eld.eld_size);
>  		} else {
> @@ -1173,6 +1177,7 @@ static int hdmi_codec_probe(struct snd_soc_codec *codec)
>  	struct snd_soc_dapm_context *dapm =
>  		snd_soc_component_get_dapm(&codec->component);
>  	struct hdac_hdmi_pin *pin;
> +	char jack_name[NAME_SIZE];
>  	int ret;
>  
>  	edev->scodec = codec;
> @@ -1189,8 +1194,12 @@ static int hdmi_codec_probe(struct snd_soc_codec *codec)
>  		return ret;
>  	}
>  
> -	list_for_each_entry(pin, &hdmi->pin_list, head)
> +	list_for_each_entry(pin, &hdmi->pin_list, head) {
> +		sprintf(jack_name, "HDMI/DP, Pin=%d Jack", pin->nid);

Such a name makes sense only to be compatible for PA, and then this
string isn't compatible.  Note that it's not about pin but for PCM
stream.  You may wonder why it matters -- see the whole discussion on
MST support.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux