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

Reply via email to