From 716ca530e1c4515d8683c9d5be3d56b301758b66 Mon Sep 17 00:00:00 2001 From: James <> Date: Wed, 4 Nov 2015 11:49:21 +0000 Subject: trunk-47381 --- ...6-asoc-sunxi-fix-distortion-on-16bit-mono.patch | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 target/linux/sunxi/patches-4.1/166-asoc-sunxi-fix-distortion-on-16bit-mono.patch (limited to 'target/linux/sunxi/patches-4.1/166-asoc-sunxi-fix-distortion-on-16bit-mono.patch') diff --git a/target/linux/sunxi/patches-4.1/166-asoc-sunxi-fix-distortion-on-16bit-mono.patch b/target/linux/sunxi/patches-4.1/166-asoc-sunxi-fix-distortion-on-16bit-mono.patch new file mode 100644 index 0000000..b3668de --- /dev/null +++ b/target/linux/sunxi/patches-4.1/166-asoc-sunxi-fix-distortion-on-16bit-mono.patch @@ -0,0 +1,33 @@ +From f8517e7d836269f5fa1e1049394104417d3a7357 Mon Sep 17 00:00:00 2001 +From: "B.R. Oake" +Date: Sat, 6 Sep 2014 14:58:50 +0000 +Subject: [PATCH] ASoC: sunxi-codec: Fix distortion on 16-bit mono + +Patch to remove distortion on 16-bit mono, based on the linux-sunxi-3.4 +code. + +Signed-off-by: Hans de Goede +--- + sound/soc/sunxi/sunxi-codec.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/sound/soc/sunxi/sunxi-codec.c ++++ b/sound/soc/sunxi/sunxi-codec.c +@@ -215,9 +215,6 @@ static int sunxi_codec_prepare(struct sn + regmap_update_bits(priv->regmap, SUNXI_DAC_FIFOC, 0x1 << SUNXI_DAC_FIFOC_FIR_VERSION, 0x1 << SUNXI_DAC_FIFOC_FIR_VERSION); + } + +- /* set TX FIFO MODE - 0 works for both 16 and 24 bits */ +- regmap_update_bits(priv->regmap, SUNXI_DAC_FIFOC, 0x1 << SUNXI_DAC_FIFOC_TX_FIFO_MODE, 0x0 << SUNXI_DAC_FIFOC_TX_FIFO_MODE); +- + /* send last sample when DAC FIFO under run */ + regmap_update_bits(priv->regmap, SUNXI_DAC_FIFOC, 0x1 << SUNXI_DAC_FIFOC_SEND_LASAT, 0x0 << SUNXI_DAC_FIFOC_SEND_LASAT); + } else { +@@ -329,6 +326,7 @@ static int sunxi_codec_hw_params(struct + regmap_update_bits(priv->regmap, SUNXI_DAC_FIFOC, 7 << SUNXI_DAC_FIFOC_DAC_FS, hwrate << SUNXI_DAC_FIFOC_DAC_FS); + regmap_update_bits(priv->regmap, SUNXI_DAC_FIFOC, 1 << SUNXI_DAC_FIFOC_MONO_EN, is_mono << SUNXI_DAC_FIFOC_MONO_EN); + regmap_update_bits(priv->regmap, SUNXI_DAC_FIFOC, 1 << SUNXI_DAC_FIFOC_TX_SAMPLE_BITS, is_24bit << SUNXI_DAC_FIFOC_TX_SAMPLE_BITS); ++ regmap_update_bits(priv->regmap, SUNXI_DAC_FIFOC, 1 << SUNXI_DAC_FIFOC_TX_FIFO_MODE, !is_24bit << SUNXI_DAC_FIFOC_TX_FIFO_MODE); + if (is_24bit) + priv->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + else -- cgit v1.2.3