From: "Andrew F. Davis" <afd@ti.com>
To: "Liam Girdwood" <lgirdwood@gmail.com>,
"Mark Brown" <broonie@kernel.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Mark Rutland" <mark.rutland@arm.com>,
"Benoît Cousson" <bcousson@baylibre.com>,
"Tony Lindgren" <tony@atomide.com>
Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org,
linux-kernel@vger.kernel.org, "Andrew F . Davis" <afd@ti.com>
Subject: [PATCH 13/17] ASoC: tlv320aic31xx: Add overflow detection support
Date: Wed, 8 Nov 2017 18:27:37 -0600 [thread overview]
Message-ID: <20171109002741.10897-14-afd@ti.com> (raw)
In-Reply-To: <20171109002741.10897-1-afd@ti.com>
Similar to short circuit detection, when the ADC/DAC is saturated and
overflows poor audio quality can result and should be reported to the
user. This device support Automatic Dynamic Range Compression (DRC)
to reduce this but it is not enabled currently in this driver.
Signed-off-by: Andrew F. Davis <afd@ti.com>
---
sound/soc/codecs/tlv320aic31xx.c | 20 +++++++++++++++++++-
sound/soc/codecs/tlv320aic31xx.h | 7 +++++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/tlv320aic31xx.c b/sound/soc/codecs/tlv320aic31xx.c
index 34867274c102..f208362017c6 100644
--- a/sound/soc/codecs/tlv320aic31xx.c
+++ b/sound/soc/codecs/tlv320aic31xx.c
@@ -1339,6 +1339,23 @@ static irqreturn_t aic31xx_irq(int irq, void *data)
if (value & AIC31XX_HPRSCDETECT)
dev_err(dev, "Short circuit on Right output is detected\n");
+ ret = regmap_read(aic31xx->regmap, AIC31XX_OFFLAG, &value);
+ if (ret) {
+ dev_err(dev, "Failed to read overflow flag: %d\n", ret);
+ return IRQ_NONE;
+ }
+
+ if (value & AIC31XX_DAC_OF_LEFT)
+ dev_err(dev, "Left-channel DAC overflow has occurred\n");
+ if (value & AIC31XX_DAC_OF_RIGHT)
+ dev_err(dev, "Right-channel DAC overflow has occurred\n");
+ if (value & AIC31XX_DAC_OF_SHIFTER)
+ dev_err(dev, "DAC barrel shifter overflow has occurred\n");
+ if (value & AIC31XX_ADC_OF)
+ dev_err(dev, "ADC overflow has occurred\n");
+ if (value & AIC31XX_ADC_OF_SHIFTER)
+ dev_err(dev, "ADC barrel shifter overflow has occurred\n");
+
return IRQ_HANDLED;
}
@@ -1413,7 +1430,8 @@ static int aic31xx_i2c_probe(struct i2c_client *i2c,
AIC31XX_GPIO1_FUNC_SHIFT);
regmap_write(aic31xx->regmap, AIC31XX_INT1CTRL,
- AIC31XX_SC);
+ AIC31XX_SC |
+ AIC31XX_ENGINE);
ret = devm_request_threaded_irq(aic31xx->dev, aic31xx->irq,
NULL, aic31xx_irq,
diff --git a/sound/soc/codecs/tlv320aic31xx.h b/sound/soc/codecs/tlv320aic31xx.h
index 3415a96aa6c3..944a19539324 100644
--- a/sound/soc/codecs/tlv320aic31xx.h
+++ b/sound/soc/codecs/tlv320aic31xx.h
@@ -174,6 +174,13 @@ enum aic31xx_type {
#define AIC31XX_HPRDRVPWRSTATUS BIT(1)
#define AIC31XX_SPRDRVPWRSTATUS BIT(0)
+/* AIC31XX_OFFLAG */
+#define AIC31XX_DAC_OF_LEFT BIT(7)
+#define AIC31XX_DAC_OF_RIGHT BIT(6)
+#define AIC31XX_DAC_OF_SHIFTER BIT(5)
+#define AIC31XX_ADC_OF BIT(3)
+#define AIC31XX_ADC_OF_SHIFTER BIT(1)
+
/* AIC31XX_INTRDACFLAG */
#define AIC31XX_HPLSCDETECT BIT(7)
#define AIC31XX_HPRSCDETECT BIT(6)
--
2.15.0
next prev parent reply other threads:[~2017-11-09 0:27 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-09 0:27 [PATCH 00/17] Add Headphone Detection to TLV320AIC31xx Driver Andrew F. Davis
2017-11-09 0:27 ` [PATCH 02/17] ASoC: tlv320aic31xx: Reformat header file using GENMASK and BIT macros Andrew F. Davis
2017-11-09 0:27 ` [PATCH 03/17] ASoC: tlv320aic31xx: Fix GPIO1 register definition Andrew F. Davis
[not found] ` <20171109002741.10897-4-afd-l0cyMroinI0@public.gmane.org>
2017-11-09 12:45 ` Mark Brown
2017-11-09 14:32 ` Andrew F. Davis
2017-11-09 0:27 ` [PATCH 05/17] ASoC: tlv320aic31xx: Switch GPIO handling to use gpiod_* API Andrew F. Davis
2017-12-01 13:43 ` Applied "ASoC: tlv320aic31xx: Switch GPIO handling to use gpiod_* API" to the asoc tree Mark Brown
2017-11-09 0:27 ` [PATCH 06/17] ASoC: tlv320aic31xx: Remove platform data Andrew F. Davis
2017-11-09 0:27 ` [PATCH 07/17] ASoC: tlv320aic31xx: Add MICBIAS off setting Andrew F. Davis
2017-11-15 15:30 ` Rob Herring
2017-11-09 0:27 ` [PATCH 08/17] ASoC: tlv320aic31xx: Check clock and divider before division Andrew F. Davis
2017-12-01 13:43 ` Applied "ASoC: tlv320aic31xx: Check clock and divider before division" to the asoc tree Mark Brown
2017-11-09 0:27 ` [PATCH 09/17] ASoC: tlv320aic31xx: Add CODEC clock slave support Andrew F. Davis
2017-11-09 0:27 ` [PATCH 10/17] ASoC: tlv320aic31xx: Fix inverted BCLK handling Andrew F. Davis
2017-11-09 0:27 ` [PATCH 11/17] ASoC: tlv320aic31xx: Reset registers during probe Andrew F. Davis
2017-11-09 0:27 ` [PATCH 12/17] ASoC: tlv320aic31xx: Add short circuit detection support Andrew F. Davis
2017-11-09 0:27 ` Andrew F. Davis [this message]
2017-11-09 0:27 ` [PATCH 14/17] ASoC: tlv320aic31xx: Add headphone/headset detection Andrew F. Davis
2017-11-09 0:27 ` [PATCH 15/17] ASoC: tlv320aic31xx: Add button press detection Andrew F. Davis
[not found] ` <20171109002741.10897-1-afd-l0cyMroinI0@public.gmane.org>
2017-11-09 0:27 ` [PATCH 01/17] ASoC: tlv320aic31xx: General source formatting cleanup Andrew F. Davis
2017-11-09 12:41 ` Mark Brown
2017-11-09 14:13 ` Andrew F. Davis
2017-11-09 16:15 ` Mark Brown
2017-11-09 0:27 ` [PATCH 04/17] ASoC: tlv320aic31xx: Merge init function into probe Andrew F. Davis
2017-12-01 13:43 ` Applied "ASoC: tlv320aic31xx: Merge init function into probe" to the asoc tree Mark Brown
2017-11-09 0:27 ` [PATCH 16/17] NOT FOR MERGING: Add TLV320DAC3101 to BBB for testing Andrew F. Davis
2017-11-09 0:27 ` [PATCH 17/17] NOT FOR MERGING: Add demo jack detection policy " Andrew F. Davis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171109002741.10897-14-afd@ti.com \
--to=afd@ti.com \
--cc=alsa-devel@alsa-project.org \
--cc=bcousson@baylibre.com \
--cc=broonie@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).