Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7abd4e2a authored by Mark Brown's avatar Mark Brown
Browse files

extcon: arizona: Make mic detection timeout configurable

parent cd59e796
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@
#define ARIZONA_HPDET_MAX 10000

#define HPDET_DEBOUNCE 500
#define MICD_TIMEOUT 2000
#define DEFAULT_MICD_TIMEOUT 2000

struct arizona_extcon_info {
	struct device *dev;
@@ -60,6 +60,8 @@ struct arizona_extcon_info {
	const struct arizona_micd_range *micd_ranges;
	int num_micd_ranges;

	int micd_timeout;

	bool micd_reva;
	bool micd_clamp;

@@ -889,7 +891,7 @@ static void arizona_micd_detect(struct work_struct *work)
handled:
	if (info->detecting)
		schedule_delayed_work(&info->micd_timeout_work,
				      msecs_to_jiffies(MICD_TIMEOUT));
				      msecs_to_jiffies(info->micd_timeout));

	pm_runtime_mark_last_busy(info->dev);
	mutex_unlock(&info->lock);
@@ -970,7 +972,7 @@ static irqreturn_t arizona_jackdet(int irq, void *data)

		if (cancelled_mic)
			schedule_delayed_work(&info->micd_timeout_work,
					      msecs_to_jiffies(MICD_TIMEOUT));
					      msecs_to_jiffies(info->micd_timeout));

		goto out;
	}
@@ -1027,6 +1029,11 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
				   ARIZONA_MICD_CLAMP_DB | ARIZONA_JD1_DB);
	}

	if (arizona->pdata.micd_timeout)
		info->micd_timeout = arizona->pdata.micd_timeout;
	else
		info->micd_timeout = DEFAULT_MICD_TIMEOUT;

	/* Clear trig_sts to make sure DCVDD is not forced up */
	regmap_write(arizona->regmap, ARIZONA_AOD_WKUP_AND_TRIG,
		     ARIZONA_MICD_CLAMP_FALL_TRIG_STS |
+3 −0
Original line number Diff line number Diff line
@@ -149,6 +149,9 @@ struct arizona_pdata {
	/** Mic detect debounce level */
	int micd_dbtime;

	/** Mic detect timeout (ms) */
	int micd_timeout;

	/** Force MICBIAS on for mic detect */
	bool micd_force_micbias;