summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-3.18/0074-TAS5713-return-error-if-initialisation-fails.patch
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2015-02-11 10:17:55 +0000
committerJohn Crispin <john@openwrt.org>2015-02-11 10:17:55 +0000
commit408c9696264f8e25e4e4f6410e93d2edd06e59dd (patch)
tree1c9e8fbacb1508e8561c43f87389edf02cfb0955 /target/linux/brcm2708/patches-3.18/0074-TAS5713-return-error-if-initialisation-fails.patch
parentf90d9d486a8842077e68e90bba2b276ac1336bab (diff)
downloadmaster-31e0f0ae-408c9696264f8e25e4e4f6410e93d2edd06e59dd.tar.gz
master-31e0f0ae-408c9696264f8e25e4e4f6410e93d2edd06e59dd.tar.bz2
master-31e0f0ae-408c9696264f8e25e4e4f6410e93d2edd06e59dd.zip
brcm2708: update to v3.18
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> SVN-Revision: 44392
Diffstat (limited to 'target/linux/brcm2708/patches-3.18/0074-TAS5713-return-error-if-initialisation-fails.patch')
-rwxr-xr-xtarget/linux/brcm2708/patches-3.18/0074-TAS5713-return-error-if-initialisation-fails.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-3.18/0074-TAS5713-return-error-if-initialisation-fails.patch b/target/linux/brcm2708/patches-3.18/0074-TAS5713-return-error-if-initialisation-fails.patch
new file mode 100755
index 0000000000..e042361ed6
--- /dev/null
+++ b/target/linux/brcm2708/patches-3.18/0074-TAS5713-return-error-if-initialisation-fails.patch
@@ -0,0 +1,72 @@
+From 2a72cdffabd2dd290d126c9a4e544bb65b537993 Mon Sep 17 00:00:00 2001
+From: Daniel Matuschek <daniel@hifiberry.com>
+Date: Fri, 23 Jan 2015 16:41:17 +0100
+Subject: [PATCH 074/114] TAS5713: return error if initialisation fails
+
+Existing TAS5713 driver logs errors during initialisation, but does not return
+an error code. Therefore even if initialisation fails, the driver will still be
+loaded, but won't work. This patch fixes this. I2C communication error will now
+reported correctly by a non-zero return code.
+---
+ sound/soc/codecs/tas5713.c | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/sound/soc/codecs/tas5713.c b/sound/soc/codecs/tas5713.c
+index a24c1da..9b27138 100644
+--- a/sound/soc/codecs/tas5713.c
++++ b/sound/soc/codecs/tas5713.c
+@@ -182,33 +182,40 @@ static int tas5713_probe(struct snd_soc_codec *codec)
+
+ // Reset error
+ ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00);
++ if (ret < 0) return ret;
+
+ // Trim oscillator
+- ret = snd_soc_write(codec, TAS5713_OSC_TRIM, 0x00);
++ ret = snd_soc_write(codec, TAS5713_OSC_TRIM, 0x00);
++ if (ret < 0) return ret;
+ msleep(1000);
+
+ // Reset error
+ ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00);
++ if (ret < 0) return ret;
+
+ // Clock mode: 44/48kHz, MCLK=64xfs
+ ret = snd_soc_write(codec, TAS5713_CLOCK_CTRL, 0x60);
++ if (ret < 0) return ret;
+
+ // I2S 24bit
+ ret = snd_soc_write(codec, TAS5713_SERIAL_DATA_INTERFACE, 0x05);
++ if (ret < 0) return ret;
+
+ // Unmute
+ ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00);
++ if (ret < 0) return ret;
+ ret = snd_soc_write(codec, TAS5713_SOFT_MUTE, 0x00);
++ if (ret < 0) return ret;
+
+ // Set volume to 0db
+ ret = snd_soc_write(codec, TAS5713_VOL_MASTER, 0x00);
++ if (ret < 0) return ret;
+
+ // Now start programming the default initialization sequence
+ for (i = 0; i < ARRAY_SIZE(tas5713_init_sequence); ++i) {
+ ret = i2c_master_send(i2c,
+ tas5713_init_sequence[i].data,
+ tas5713_init_sequence[i].size);
+-
+ if (ret < 0) {
+ printk(KERN_INFO "TAS5713 CODEC PROBE: InitSeq returns: %d\n", ret);
+ }
+@@ -216,7 +223,7 @@ static int tas5713_probe(struct snd_soc_codec *codec)
+
+ // Unmute
+ ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00);
+-
++ if (ret < 0) return ret;
+
+ return 0;
+ }
+--
+1.8.3.2
+