@@ -240,8 +240,9 @@ static void arizona_extcon_set_mode(struct arizona_extcon_info *info, int mode)
gpio_set_value_cansleep(arizona->pdata.micd_pol_gpio,
info->micd_modes[mode].gpio);
else
- gpiod_set_value_cansleep(info->micd_pol_gpio,
- info->micd_modes[mode].gpio);
+ if (info->micd_pol_gpio)
+ gpiod_set_value_cansleep(info->micd_pol_gpio,
+ info->micd_modes[mode].gpio);
regmap_update_bits(arizona->regmap, ARIZONA_MIC_DETECT_1,
ARIZONA_MICD_BIAS_SRC_MASK,
@@ -1373,10 +1374,10 @@ static int arizona_extcon_probe(struct platform_device *pdev)
GPIOD_OUT_LOW);
if (IS_ERR(info->micd_pol_gpio)) {
ret = PTR_ERR(info->micd_pol_gpio);
- dev_err(arizona->dev,
+ dev_dbg(arizona->dev,
"Failed to get microphone polarity GPIO: %d\n",
ret);
- goto err_register;
+ info->micd_pol_gpio = 0;
}
}
@@ -1605,7 +1606,8 @@ err_rise_wake:
err_rise:
arizona_free_irq(arizona, jack_irq_rise, info);
err_gpio:
- gpiod_put(info->micd_pol_gpio);
+ if (info->micd_pol_gpio)
+ gpiod_put(info->micd_pol_gpio);
err_register:
pm_runtime_disable(&pdev->dev);
return ret;
@@ -1617,7 +1619,8 @@ static int arizona_extcon_remove(struct platform_device *pdev)
struct arizona *arizona = info->arizona;
int jack_irq_rise, jack_irq_fall;
- gpiod_put(info->micd_pol_gpio);
+ if (info->micd_pol_gpio)
+ gpiod_put(info->micd_pol_gpio);
pm_runtime_disable(&pdev->dev);