At Fri, 7 Sep 2012 07:25:44 +0200,
David Henningsson wrote:
>
> The purpose of this flag is unclear. If the problem is that some machines
> have broken misc/NO_PRESENCE bits, they should be fixed by pin fixups.
>
> In addition, this causes jack detection functionality to be flawed on
> the M31EI, where there are two jacks without jack detection (which is
> properly marked as NO_PRESENCE), but due to ignore_misc_bit, these
> jacks are instead being reported as being present but always unplugged.
>
> BugLink: https://bugs.launchpad.net/bugs/939161
> Signed-off-by: David Henningsson <email address hidden>
So this will fix this one case but will break some others certainly.
It's a difficult to judge, but more removal is better, so I'll take
this.
But I still wonder why PulseAudio cares the headphone jack state even
though this has only one output at all?
Takashi
> ---
> sound/pci/hda/hda_auto_parser.c | 4 ----
> sound/pci/hda/hda_codec.h | 1 -
> sound/pci/hda/hda_jack.c | 5 ++---
> 3 files changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/sound/pci/hda/hda_auto_parser.c b/sound/pci/hda/hda_auto_parser.c
> index 4f7d2df..9acd5a9 100644
> --- a/sound/pci/hda/hda_auto_parser.c
> +++ b/sound/pci/hda/hda_auto_parser.c
> @@ -141,7 +141,6 @@ int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
> memset(sequences_hp, 0, sizeof(sequences_hp));
> assoc_line_out = 0;
>
> - codec->ignore_misc_bit = true;
> end_nid = codec->start_nid + codec->num_nodes;
> for (nid = codec->start_nid; nid < end_nid; nid++) {
> unsigned int wid_caps = get_wcaps(codec, nid);
> @@ -157,9 +156,6 @@ int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
> continue;
>
> def_conf = snd_hda_codec_get_pincfg(codec, nid);
> - if (!(get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) &
> - AC_DEFCFG_MISC_NO_PRESENCE))
> - codec->ignore_misc_bit = false;
> conn = get_defcfg_connect(def_conf);
> if (conn == AC_JACK_PORT_NONE)
> continue;
> diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
> index 8fd9f63..ee4ae8e 100644
> --- a/sound/pci/hda/hda_codec.h
> +++ b/sound/pci/hda/hda_codec.h
> @@ -861,7 +861,6 @@ struct hda_codec {
> unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */
> unsigned int pins_shutup:1; /* pins are shut up */
> unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
> - unsigned int ignore_misc_bit:1; /* ignore MISC_NO_PRESENCE bit */
> unsigned int no_jack_detect:1; /* Machine has no jack-detection */
> unsigned int pcm_format_first:1; /* PCM format must be set first */
> unsigned int epss:1; /* supporting EPSS? */
> diff --git a/sound/pci/hda/hda_jack.c b/sound/pci/hda/hda_jack.c
> index aaccc02..c9333c9 100644
> --- a/sound/pci/hda/hda_jack.c
> +++ b/sound/pci/hda/hda_jack.c
> @@ -26,9 +26,8 @@ bool is_jack_detectable(struct hda_codec *codec, hda_nid_t nid)
> return false;
> if (!(snd_hda_query_pin_caps(codec, nid) & AC_PINCAP_PRES_DETECT))
> return false;
> - if (!codec->ignore_misc_bit &&
> - (get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) &
> - AC_DEFCFG_MISC_NO_PRESENCE))
> + if (get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)) &
> + AC_DEFCFG_MISC_NO_PRESENCE)
> return false;
> if (!(get_wcaps(codec, nid) & AC_WCAP_UNSOL_CAP))
> return false;
> --
> 1.7.9.5
>
At Fri, 7 Sep 2012 07:25:44 +0200, /bugs.launchpad .net/bugs/ 939161
David Henningsson wrote:
>
> The purpose of this flag is unclear. If the problem is that some machines
> have broken misc/NO_PRESENCE bits, they should be fixed by pin fixups.
>
> In addition, this causes jack detection functionality to be flawed on
> the M31EI, where there are two jacks without jack detection (which is
> properly marked as NO_PRESENCE), but due to ignore_misc_bit, these
> jacks are instead being reported as being present but always unplugged.
>
> BugLink: https:/
> Signed-off-by: David Henningsson <email address hidden>
So this will fix this one case but will break some others certainly.
It's a difficult to judge, but more removal is better, so I'll take
this.
But I still wonder why PulseAudio cares the headphone jack state even
though this has only one output at all?
Takashi
> --- hda/hda_ auto_parser. c | 4 ---- hda/hda_ codec.h | 1 - hda/hda_ jack.c | 5 ++--- pci/hda/ hda_auto_ parser. c b/sound/ pci/hda/ hda_auto_ parser. c pci/hda/ hda_auto_ parser. c pci/hda/ hda_auto_ parser. c parse_pin_ defcfg( struct hda_codec *codec, sequences_ hp, 0, sizeof( sequences_ hp)); ignore_ misc_bit = true; parse_pin_ defcfg( struct hda_codec *codec, codec_get_ pincfg( codec, nid); defcfg_ misc(snd_ hda_codec_ get_pincfg( codec, nid)) & MISC_NO_ PRESENCE) ) ignore_ misc_bit = false; connect( def_conf) ; pci/hda/ hda_codec. h b/sound/ pci/hda/ hda_codec. h pci/hda/ hda_codec. h pci/hda/ hda_codec. h pci/hda/ hda_jack. c b/sound/ pci/hda/ hda_jack. c pci/hda/ hda_jack. c pci/hda/ hda_jack. c detectable( struct hda_codec *codec, hda_nid_t nid) hda_query_ pin_caps( codec, nid) & AC_PINCAP_ PRES_DETECT) ) >ignore_ misc_bit && misc(snd_ hda_codec_ get_pincfg( codec, nid)) & MISC_NO_ PRESENCE) ) misc(snd_ hda_codec_ get_pincfg( codec, nid)) & MISC_NO_ PRESENCE)
> sound/pci/
> sound/pci/
> sound/pci/
> 3 files changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/sound/
> index 4f7d2df..9acd5a9 100644
> --- a/sound/
> +++ b/sound/
> @@ -141,7 +141,6 @@ int snd_hda_
> memset(
> assoc_line_out = 0;
>
> - codec->
> end_nid = codec->start_nid + codec->num_nodes;
> for (nid = codec->start_nid; nid < end_nid; nid++) {
> unsigned int wid_caps = get_wcaps(codec, nid);
> @@ -157,9 +156,6 @@ int snd_hda_
> continue;
>
> def_conf = snd_hda_
> - if (!(get_
> - AC_DEFCFG_
> - codec->
> conn = get_defcfg_
> if (conn == AC_JACK_PORT_NONE)
> continue;
> diff --git a/sound/
> index 8fd9f63..ee4ae8e 100644
> --- a/sound/
> +++ b/sound/
> @@ -861,7 +861,6 @@ struct hda_codec {
> unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */
> unsigned int pins_shutup:1; /* pins are shut up */
> unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
> - unsigned int ignore_misc_bit:1; /* ignore MISC_NO_PRESENCE bit */
> unsigned int no_jack_detect:1; /* Machine has no jack-detection */
> unsigned int pcm_format_first:1; /* PCM format must be set first */
> unsigned int epss:1; /* supporting EPSS? */
> diff --git a/sound/
> index aaccc02..c9333c9 100644
> --- a/sound/
> +++ b/sound/
> @@ -26,9 +26,8 @@ bool is_jack_
> return false;
> if (!(snd_
> return false;
> - if (!codec-
> - (get_defcfg_
> - AC_DEFCFG_
> + if (get_defcfg_
> + AC_DEFCFG_
> return false;
> if (!(get_wcaps(codec, nid) & AC_WCAP_UNSOL_CAP))
> return false;
> --
> 1.7.9.5
>