diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-04-01 14:25:55 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-04-02 06:54:07 -0400 |
commit | 7abd4e2a8f1c3e534da44c35e2d3d6353573e51f (patch) | |
tree | 11750ecd0013545a1ad35d1e9093e289db4802bc /drivers/extcon/extcon-arizona.c | |
parent | cd59e79656f4e7137909166248a935d422b1245a (diff) |
extcon: arizona: Make mic detection timeout configurable
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/extcon/extcon-arizona.c')
-rw-r--r-- | drivers/extcon/extcon-arizona.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c index c7f8eb4299d2..7a1b4a7791ba 100644 --- a/drivers/extcon/extcon-arizona.c +++ b/drivers/extcon/extcon-arizona.c | |||
@@ -42,7 +42,7 @@ | |||
42 | #define ARIZONA_HPDET_MAX 10000 | 42 | #define ARIZONA_HPDET_MAX 10000 |
43 | 43 | ||
44 | #define HPDET_DEBOUNCE 500 | 44 | #define HPDET_DEBOUNCE 500 |
45 | #define MICD_TIMEOUT 2000 | 45 | #define DEFAULT_MICD_TIMEOUT 2000 |
46 | 46 | ||
47 | struct arizona_extcon_info { | 47 | struct arizona_extcon_info { |
48 | struct device *dev; | 48 | struct device *dev; |
@@ -60,6 +60,8 @@ struct arizona_extcon_info { | |||
60 | const struct arizona_micd_range *micd_ranges; | 60 | const struct arizona_micd_range *micd_ranges; |
61 | int num_micd_ranges; | 61 | int num_micd_ranges; |
62 | 62 | ||
63 | int micd_timeout; | ||
64 | |||
63 | bool micd_reva; | 65 | bool micd_reva; |
64 | bool micd_clamp; | 66 | bool micd_clamp; |
65 | 67 | ||
@@ -889,7 +891,7 @@ static void arizona_micd_detect(struct work_struct *work) | |||
889 | handled: | 891 | handled: |
890 | if (info->detecting) | 892 | if (info->detecting) |
891 | schedule_delayed_work(&info->micd_timeout_work, | 893 | schedule_delayed_work(&info->micd_timeout_work, |
892 | msecs_to_jiffies(MICD_TIMEOUT)); | 894 | msecs_to_jiffies(info->micd_timeout)); |
893 | 895 | ||
894 | pm_runtime_mark_last_busy(info->dev); | 896 | pm_runtime_mark_last_busy(info->dev); |
895 | mutex_unlock(&info->lock); | 897 | mutex_unlock(&info->lock); |
@@ -970,7 +972,7 @@ static irqreturn_t arizona_jackdet(int irq, void *data) | |||
970 | 972 | ||
971 | if (cancelled_mic) | 973 | if (cancelled_mic) |
972 | schedule_delayed_work(&info->micd_timeout_work, | 974 | schedule_delayed_work(&info->micd_timeout_work, |
973 | msecs_to_jiffies(MICD_TIMEOUT)); | 975 | msecs_to_jiffies(info->micd_timeout)); |
974 | 976 | ||
975 | goto out; | 977 | goto out; |
976 | } | 978 | } |
@@ -1027,6 +1029,11 @@ static irqreturn_t arizona_jackdet(int irq, void *data) | |||
1027 | ARIZONA_MICD_CLAMP_DB | ARIZONA_JD1_DB); | 1029 | ARIZONA_MICD_CLAMP_DB | ARIZONA_JD1_DB); |
1028 | } | 1030 | } |
1029 | 1031 | ||
1032 | if (arizona->pdata.micd_timeout) | ||
1033 | info->micd_timeout = arizona->pdata.micd_timeout; | ||
1034 | else | ||
1035 | info->micd_timeout = DEFAULT_MICD_TIMEOUT; | ||
1036 | |||
1030 | /* Clear trig_sts to make sure DCVDD is not forced up */ | 1037 | /* Clear trig_sts to make sure DCVDD is not forced up */ |
1031 | regmap_write(arizona->regmap, ARIZONA_AOD_WKUP_AND_TRIG, | 1038 | regmap_write(arizona->regmap, ARIZONA_AOD_WKUP_AND_TRIG, |
1032 | ARIZONA_MICD_CLAMP_FALL_TRIG_STS | | 1039 | ARIZONA_MICD_CLAMP_FALL_TRIG_STS | |