diff options
author | Álvaro Fernández Rojas <noltari@gmail.com> | 2017-03-08 09:46:30 +0100 |
---|---|---|
committer | Álvaro Fernández Rojas <noltari@gmail.com> | 2017-03-08 09:54:01 +0100 |
commit | 8b52a8906bf376610e5a8d051ead1d50610e6da1 (patch) | |
tree | f8e0b6467501c56f03fc6782433a765417b21ce5 /target/linux/brcm2708/patches-4.4/0571-Revert-bcm2835-i2s-Changes-for-allowing-asymmetric-s.patch | |
parent | b3ba3764d0e81097229ffeb0eff9d72ee42a801d (diff) | |
download | upstream-8b52a8906bf376610e5a8d051ead1d50610e6da1.tar.gz upstream-8b52a8906bf376610e5a8d051ead1d50610e6da1.tar.bz2 upstream-8b52a8906bf376610e5a8d051ead1d50610e6da1.zip |
brcm2708: update linux 4.4 patches to latest version
As usual these patches were extracted and rebased from the raspberry pi repo:
https://github.com/raspberrypi/linux/tree/rpi-4.4.y
- led1 can't be controlled on rpi-3 for linux 4.4, remove it.
- Fix modules.mk typos.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/brcm2708/patches-4.4/0571-Revert-bcm2835-i2s-Changes-for-allowing-asymmetric-s.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.4/0571-Revert-bcm2835-i2s-Changes-for-allowing-asymmetric-s.patch | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.4/0571-Revert-bcm2835-i2s-Changes-for-allowing-asymmetric-s.patch b/target/linux/brcm2708/patches-4.4/0571-Revert-bcm2835-i2s-Changes-for-allowing-asymmetric-s.patch new file mode 100644 index 0000000000..3904abbaa3 --- /dev/null +++ b/target/linux/brcm2708/patches-4.4/0571-Revert-bcm2835-i2s-Changes-for-allowing-asymmetric-s.patch @@ -0,0 +1,101 @@ +From ba1f22a0d2179a0201e764c341d9dbf8f1c27ffe Mon Sep 17 00:00:00 2001 +From: Phil Elwell <phil@raspberrypi.org> +Date: Mon, 16 Jan 2017 20:58:18 +0000 +Subject: [PATCH] Revert "bcm2835-i2s: Changes for allowing asymmetric sample + formats. (#1783)" + +This reverts commit 4897c5c2f7adb4f77d638121e9959174dff87b9c. + +Signed-off-by: Phil Elwell <phil@raspberrypi.org> + +See: https://github.com/raspberrypi/linux/issues/1799 +--- + sound/soc/bcm/bcm2835-i2s.c | 54 ++++++++++++++------------------------------- + 1 file changed, 16 insertions(+), 38 deletions(-) + +diff --git a/sound/soc/bcm/bcm2835-i2s.c b/sound/soc/bcm/bcm2835-i2s.c +index d2b0801..aedb01f 100644 +--- a/sound/soc/bcm/bcm2835-i2s.c ++++ b/sound/soc/bcm/bcm2835-i2s.c +@@ -310,7 +310,6 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream, + unsigned int sampling_rate = params_rate(params); + unsigned int data_length, data_delay, bclk_ratio; + unsigned int ch1pos, ch2pos, mode, format; +- unsigned int previous_ftxp, previous_frxp; + unsigned int mash = BCM2835_CLK_MASH_1; + unsigned int divi, divf, target_frequency; + int clk_src = -1; +@@ -321,7 +320,6 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream, + bool frame_master = (master == SND_SOC_DAIFMT_CBS_CFS + || master == SND_SOC_DAIFMT_CBM_CFS); + uint32_t csreg; +- bool packed; + + /* + * If a stream is already enabled, +@@ -467,46 +465,26 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream, + return -EINVAL; + } + +- /* Set the format for the matching stream direction. */ +- switch (substream->stream) { +- case SNDRV_PCM_STREAM_PLAYBACK: +- regmap_write(dev->i2s_regmap, BCM2835_I2S_TXC_A_REG, format); +- break; +- case SNDRV_PCM_STREAM_CAPTURE: +- regmap_write(dev->i2s_regmap, BCM2835_I2S_RXC_A_REG, format); +- break; +- default: +- return -EINVAL; +- } ++ /* ++ * Set format for both streams. ++ * We cannot set another frame length ++ * (and therefore word length) anyway, ++ * so the format will be the same. ++ */ ++ regmap_write(dev->i2s_regmap, BCM2835_I2S_RXC_A_REG, format); ++ regmap_write(dev->i2s_regmap, BCM2835_I2S_TXC_A_REG, format); + + /* Setup the I2S mode */ +- /* Keep existing FTXP and FRXP values. */ +- regmap_read(dev->i2s_regmap, BCM2835_I2S_MODE_A_REG, &mode); +- +- previous_ftxp = mode & BCM2835_I2S_FTXP; +- previous_frxp = mode & BCM2835_I2S_FRXP; +- + mode = 0; + +- /* +- * Retain the frame packed mode (2 channels per 32 bit word) +- * of the other direction stream intact. The formats of each +- * direction can be different as long as the frame length is +- * shared for both. +- */ +- packed = data_length <= 16; +- +- switch (substream->stream) { +- case SNDRV_PCM_STREAM_PLAYBACK: +- mode |= previous_frxp; +- mode |= packed ? BCM2835_I2S_FTXP : 0; +- break; +- case SNDRV_PCM_STREAM_CAPTURE: +- mode |= previous_ftxp; +- mode |= packed ? BCM2835_I2S_FRXP : 0; +- break; +- default: +- return -EINVAL; ++ if (data_length <= 16) { ++ /* ++ * Use frame packed mode (2 channels per 32 bit word) ++ * We cannot set another frame length in the second stream ++ * (and therefore word length) anyway, ++ * so the format will be the same. ++ */ ++ mode |= BCM2835_I2S_FTXP | BCM2835_I2S_FRXP; + } + + mode |= BCM2835_I2S_FLEN(bclk_ratio - 1); +-- +2.1.4 + |