Hi Charles, On 19. 4. 5. 오전 1:33, Charles Keepax wrote: > Microphone detection provides the button detection features on the > Arizona CODECs as such it will be running if the jack is currently > inserted. If the driver is unbound whilst the jack is still inserted > this will cause warnings from the regulator framework as the MICVDD > regulator is put but was never disabled. > > Correct this by disabling microphone detection on driver removal and if > the microphone detection was running disable the regulator and put the > runtime reference that was currently held. > > Signed-off-by: Charles Keepax <ckee...@opensource.cirrus.com> > --- > drivers/extcon/extcon-arizona.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c > index da0e9bc4262fa..9327479c719c2 100644 > --- a/drivers/extcon/extcon-arizona.c > +++ b/drivers/extcon/extcon-arizona.c > @@ -1726,6 +1726,16 @@ static int arizona_extcon_remove(struct > platform_device *pdev) > struct arizona_extcon_info *info = platform_get_drvdata(pdev); > struct arizona *arizona = info->arizona; > int jack_irq_rise, jack_irq_fall; > + bool change; > + > + regmap_update_bits_check(arizona->regmap, ARIZONA_MIC_DETECT_1, > + ARIZONA_MICD_ENA, 0, > + &change); > + > + if (change) { > + regulator_disable(info->micvdd); > + pm_runtime_put(info->dev); > + }> > gpiod_put(info->micd_pol_gpio); > >
Applied it. IMO, I think that this driver have to handle the exception handling when regmap_update_bits_check() returns error or 'change' value is not changed. This driver have same issue about exception handling on multiple places. Please take it on separate patche. -- Best Regards, Chanwoo Choi Samsung Electronics