Message ID | 20210421005546.7534-1-jee.heng.sia@intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 62bad12bceebd7d336ced4e44f408b702c151ba0 |
Headers | show |
Series | ASoC: Intel: KMB: Fix random noise at the HDMI output | expand |
On Wed, 21 Apr 2021 08:55:46 +0800, Sia Jee Heng wrote: > Random noise could be heard when playing audio to the HDMI output. > This is due to the IEC conversion is invoked in the external loop. > As a result, this additional loop takes up a lot of the processing > cycle. > > hdmi_reformat_iec958() process the conversion using an internal loop, > it is safe to move it out from the external loop to avoid unnecessary > processing cycle been spent. Furthermore, ALSA IEC958 plugin works in > 32bit format only. Applied to https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next Thanks! [1/1] ASoC: Intel: KMB: Fix random noise at the HDMI output commit: 62bad12bceebd7d336ced4e44f408b702c151ba0 All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark
diff --git a/sound/soc/intel/keembay/kmb_platform.c b/sound/soc/intel/keembay/kmb_platform.c index 0fd1e8f62c89..96741c7c0fba 100644 --- a/sound/soc/intel/keembay/kmb_platform.c +++ b/sound/soc/intel/keembay/kmb_platform.c @@ -105,14 +105,15 @@ static unsigned int kmb_pcm_tx_fn(struct kmb_i2s_info *kmb_i2s, void *buf = runtime->dma_area; int i; + if (kmb_i2s->iec958_fmt) + hdmi_reformat_iec958(runtime, kmb_i2s, tx_ptr); + /* KMB i2s uses two separate L/R FIFO */ for (i = 0; i < kmb_i2s->fifo_th; i++) { if (kmb_i2s->config.data_width == 16) { writel(((u16(*)[2])buf)[tx_ptr][0], i2s_base + LRBR_LTHR(0)); writel(((u16(*)[2])buf)[tx_ptr][1], i2s_base + RRBR_RTHR(0)); } else { - if (kmb_i2s->iec958_fmt) - hdmi_reformat_iec958(runtime, kmb_i2s, tx_ptr); writel(((u32(*)[2])buf)[tx_ptr][0], i2s_base + LRBR_LTHR(0)); writel(((u32(*)[2])buf)[tx_ptr][1], i2s_base + RRBR_RTHR(0)); }