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