[alsa-devel] [PATCH 2/2] ALSA: hda - hdmi: Set infoframe and channel mapping even without sink

Anssi Hannula anssi.hannula at iki.fi
Mon May 5 16:48:04 CEST 2014


Takashi Iwai kirjoitti 2014-05-05 17:34:
> At Mon,  5 May 2014 02:38:44 +0300,
> Anssi Hannula wrote:
>> 
>> Currently infoframe contents and channel mapping are only set when a
>> sink (monitor) is present.
>> 
>> However, this does not make much sense, since
>> 1) We can make a very reasonable guess on CA after 18e391862c ("ALSA:
>>    hda - hdmi: Fallback to ALSA allocation when selecting CA") or by
>>    relying on a previously valid ELD (or we may be using a
>>    user-specified channel map).
>> 2) Not setting infoframe contents and channel count simply means they
>>    are left at a possibly incorrect state - playback is still allowed
>>    to proceed (with missing or wrongly mapped channels).
>> 
>> Reasons for monitor_present being 0 include disconnected cable, video
>> driver issues, or codec not being spec-compliant. Note that in
>> actual disconnected-cable case it should not matter if these settings
>> are wrong as they will be re-set after jack detection, though.
>> 
>> Change the behavior to allow the infoframe contents and the channel
>> mapping to be set even without a sink/monitor, either based on the
>> previous valid ELD contents, if any, or based on sensible defaults
>> (standard channel layouts or provided custom map, sink type HDMI).
>> 
>> Signed-off-by: Anssi Hannula <anssi.hannula at iki.fi>
>> Tested-by: Stephan Raue <stephan at openelec.tv>
>> ---
>> 
>> This simply removes the monitor_present check, which is probably more
>> trouble than it is worth, as it may trip obscure setups even though we
>> can tolerate !monitor_present and !eld in 99%+ of all cases by using
>> defaults, nowadays post-18e391862c anyway.
>> Downside is that missing monitor_present may not be noticed by the 
>> user
>> as ~everything continues to work.
> 
> Is this considered as a "fix" for 3.15 kernel?  If so, I find it a bit
> distracting to queue the previous patch for stable while we're
> removing the whole things here later.
> 
> If this is intended for testing for 3.16 kernel, I'm fine to take as
> is.

Well, I intended it for 3.16, since I don't have anything concrete that 
it
would fix that the previous AFAICS safer patch did not (for now, at 
least...).

Sorry for not making it explicit.

> thanks,
> 
> Takashi
> 
>> 
>> 
>>  sound/pci/hda/patch_hdmi.c | 4 ----
>>  1 file changed, 4 deletions(-)
>> 
>> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
>> index 1edbb9c47c2d..016f785cdf45 100644
>> --- a/sound/pci/hda/patch_hdmi.c
>> +++ b/sound/pci/hda/patch_hdmi.c
>> @@ -1127,10 +1127,6 @@ static void hdmi_setup_audio_infoframe(struct 
>> hda_codec *codec,
>>  					    AMP_OUT_UNMUTE);
>> 
>>  	eld = &per_pin->sink_eld;
>> -	if (!eld->monitor_present) {
>> -		hdmi_set_channel_count(codec, per_pin->cvt_nid, channels);
>> -		return;
>> -	}
>> 
>>  	if (!non_pcm && per_pin->chmap_set)
>>  		ca = hdmi_manual_channel_allocation(channels, per_pin->chmap);
>> --
>> 1.8.4.5
>> 


More information about the Alsa-devel mailing list