From: Andrew Perepech <andrew.perepech@xxxxxxxxxxxx>
The driver currently reads the EINT IRQ polarity from the
"mediatek,eint-level-pol" property but never actually configures the
hardware accordingly.
Implement the IRQ polarity configuration in hardware.
Signed-off-by: Andrew Perepech <andrew.perepech@xxxxxxxxxxxx>
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@xxxxxxxxxxxxx>
---
sound/soc/codecs/mt6359-accdet.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/sound/soc/codecs/mt6359-accdet.c b/sound/soc/codecs/mt6359-accdet.c
index 6f07db879c6a56ce4843954f51bb9602373e4aa5..eee676d1faef2076bc837a12a2ee3615216752b7 100644
--- a/sound/soc/codecs/mt6359-accdet.c
+++ b/sound/soc/codecs/mt6359-accdet.c
@@ -733,6 +733,22 @@ static void config_digital_init_by_mode(struct mt6359_accdet *priv)
BIT(ACCDET_EINT1_INVERTER_SW_EN_SFT));
}
}
+
+ if (priv->data->eint_pol == IRQ_TYPE_LEVEL_LOW) {
+ /* EINT polarity normal */
+ regmap_update_bits(priv->regmap,
+ ACCDET_EINT_IN_INVERSE_ADDR,
+ ACCDET_EINT_IN_INVERSE_MASK_SFT,
+ 0);
+ } else if (priv->data->eint_pol == IRQ_TYPE_LEVEL_HIGH) {
+ /* EINT polarity inverse */
+ regmap_update_bits(priv->regmap,
+ ACCDET_EINT_IN_INVERSE_ADDR,
+ ACCDET_EINT_IN_INVERSE_MASK_SFT,
+ BIT(ACCDET_EINT_IN_INVERSE_SFT));
+ } else {
+ dev_warn(priv->dev, "Unacceptable EINT level type, using default\n");
+ }
}
static void config_eint_init_by_mode(struct mt6359_accdet *priv)
--
2.48.1
[Index of Archives]
[Pulseaudio]
[Linux Audio Users]
[ALSA Devel]
[Fedora Desktop]
[Fedora SELinux]
[Big List of Linux Books]
[Yosemite News]
[KDE Users]