diff mbox

[linux-joule,2/9] extcon-arizona: Use micd-pol gpio conditionally

Message ID 1497965716-31326-2-git-send-email-jesse.sung@canonical.com
State New
Headers show

Commit Message

Wen-chien Jesse Sung June 20, 2017, 1:35 p.m. UTC
From: Jukka Laitinen <jukka.laitinen@intel.com>

BugLink: https://launchpad.net/bugs/1698051

The micd-pol gpio is not necessarily used by the hardware. If it
is not defined anywhere, don't try to initialize the GPIO

Signed-off-by: Jukka Laitinen <jukka.laitinen@intel.com>
Signed-off-by: Wen-chien Jesse Sung <jesse.sung@canonical.com>
---
 drivers/extcon/extcon-arizona.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
diff mbox

Patch

diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c
index e4890dd..a078cdb 100644
--- a/drivers/extcon/extcon-arizona.c
+++ b/drivers/extcon/extcon-arizona.c
@@ -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);