From: John Hsu Date: Wed, 6 Jul 2016 02:09:35 +0000 (+0800) Subject: ASoC: nau8825: jack connection decision with different insertion logic X-Git-Tag: v4.14-rc1~2705^2~7^2~5^6~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bff03e81502cb9ac99daeeb47b4d0e779cc48fde;p=platform%2Fkernel%2Flinux-rpi.git ASoC: nau8825: jack connection decision with different insertion logic The original design only covers the jack insertion logic is active low. Add more condition to cover no matter the logic is active low and high. Signed-off-by: John Hsu Signed-off-by: Mark Brown --- diff --git a/sound/soc/codecs/nau8825.c b/sound/soc/codecs/nau8825.c index 3f30e6e..a97418d 100644 --- a/sound/soc/codecs/nau8825.c +++ b/sound/soc/codecs/nau8825.c @@ -1345,10 +1345,17 @@ EXPORT_SYMBOL_GPL(nau8825_enable_jack_detect); static bool nau8825_is_jack_inserted(struct regmap *regmap) { - int status; + bool active_high, is_high; + int status, jkdet; + regmap_read(regmap, NAU8825_REG_JACK_DET_CTRL, &jkdet); + active_high = !!(jkdet & NAU8825_JACK_POLARITY); regmap_read(regmap, NAU8825_REG_I2C_DEVICE_ID, &status); - return !(status & NAU8825_GPIO2JD1); + is_high = !!(status & NAU8825_GPIO2JD1); + /* return jack connection status according to jack insertion logic + * active high or active low. + */ + return active_high == is_high; } static void nau8825_restart_jack_detection(struct regmap *regmap)