mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 6b0bcb5de0066e2706de8493f8a3c612c2157b82 Mon Sep 17 00:00:00 2001
 | |
| From: Matthias Reichl <hias@horus.com>
 | |
| Date: Fri, 29 Sep 2023 21:50:28 +0200
 | |
| Subject: [PATCH] ASoC: hdmi-codec: Fix broken channel map reporting
 | |
| 
 | |
| Commit b84b53149476b22cc3b8677b771fb4cf06d1d455 upstream.
 | |
| 
 | |
| Commit 4e0871333661 ("ASoC: hdmi-codec: fix channel info for
 | |
| compressed formats") accidentally changed hcp->chmap_idx from
 | |
| ca_id, the CEA channel allocation ID, to idx, the index to
 | |
| the table of channel mappings ordered by preference.
 | |
| 
 | |
| This resulted in wrong channel maps being reported to userspace,
 | |
| eg for 5.1 "FL,FR,LFE,FC" was reported instead of the expected
 | |
| "FL,FR,LFE,FC,RL,RR":
 | |
| 
 | |
| ~ # speaker-test -c 6 -t sine
 | |
| ...
 | |
|  0 - Front Left
 | |
|  3 - Front Center
 | |
|  1 - Front Right
 | |
|  2 - LFE
 | |
|  4 - Unknown
 | |
|  5 - Unknown
 | |
| 
 | |
| ~ # amixer cget iface=PCM,name='Playback Channel Map' | grep ': values'
 | |
|   : values=3,4,8,7,0,0,0,0
 | |
| 
 | |
| Switch this back to ca_id in case of PCM audio so the correct channel
 | |
| map is reported again and set it to HDMI_CODEC_CHMAP_IDX_UNKNOWN in
 | |
| case of non-PCM audio so the PCM channel map control returns "Unknown"
 | |
| channels (value 0).
 | |
| 
 | |
| Fixes: 4e0871333661 ("ASoC: hdmi-codec: fix channel info for compressed formats")
 | |
| Cc: stable@vger.kernel.org
 | |
| Signed-off-by: Matthias Reichl <hias@horus.com>
 | |
| Link: https://lore.kernel.org/r/20230929195027.97136-1-hias@horus.com
 | |
| Signed-off-by: Mark Brown <broonie@kernel.org>
 | |
| ---
 | |
|  sound/soc/codecs/hdmi-codec.c | 5 ++++-
 | |
|  1 file changed, 4 insertions(+), 1 deletion(-)
 | |
| 
 | |
| --- a/sound/soc/codecs/hdmi-codec.c
 | |
| +++ b/sound/soc/codecs/hdmi-codec.c
 | |
| @@ -520,7 +520,10 @@ static int hdmi_codec_fill_codec_params(
 | |
|  	hp->sample_rate = sample_rate;
 | |
|  	hp->channels = channels;
 | |
|  
 | |
| -	hcp->chmap_idx = idx;
 | |
| +	if (pcm_audio)
 | |
| +		hcp->chmap_idx = ca_id;
 | |
| +	else
 | |
| +		hcp->chmap_idx = HDMI_CODEC_CHMAP_IDX_UNKNOWN;
 | |
|  
 | |
|  	return 0;
 | |
|  }
 |