Re: [PATCH 1/3] ASoC: rt5682: improve the sensitivity of push button

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 10/30/19 3:55 AM, shumingf@xxxxxxxxxxx wrote:
From: Shuming Fan <shumingf@xxxxxxxxxxx>

The sensitivity could improve by decreasing the HW debounce time

could be improved

and reduce the delay time of workequeue.

typo: work queue.

This patch added a device property for HW debounce time control.
We could change this value to tune the sensitivity of push button.

so for an Intel platform without DT, could we set this property in the machine driver as done for bytcr_rt5640/51?


Signed-off-by: Shuming Fan <shumingf@xxxxxxxxxxx>
---
  include/sound/rt5682.h    |  1 +
  sound/soc/codecs/rt5682.c | 15 +++++++++++++++
  2 files changed, 16 insertions(+)

diff --git a/include/sound/rt5682.h b/include/sound/rt5682.h
index bf2ee75aabb1..bc2c31734df1 100644
--- a/include/sound/rt5682.h
+++ b/include/sound/rt5682.h
@@ -31,6 +31,7 @@ struct rt5682_platform_data {
  	enum rt5682_dmic1_data_pin dmic1_data_pin;
  	enum rt5682_dmic1_clk_pin dmic1_clk_pin;
  	enum rt5682_jd_src jd_src;
+	unsigned int btndet_delay;
  };
#endif
diff --git a/sound/soc/codecs/rt5682.c b/sound/soc/codecs/rt5682.c
index c50b75ce82e0..35dcec135c8a 100644
--- a/sound/soc/codecs/rt5682.c
+++ b/sound/soc/codecs/rt5682.c
@@ -44,6 +44,7 @@ static const struct rt5682_platform_data i2s_default_platform_data = {
  	.dmic1_data_pin = RT5682_DMIC1_DATA_GPIO2,
  	.dmic1_clk_pin = RT5682_DMIC1_CLK_GPIO3,
  	.jd_src = RT5682_JD1,
+	.btndet_delay = 16,
  };
struct rt5682_priv {
@@ -1026,6 +1027,18 @@ static int rt5682_set_jack_detect(struct snd_soc_component *component,
  		regmap_update_bits(rt5682->regmap, RT5682_IRQ_CTRL_2,
  			RT5682_JD1_EN_MASK | RT5682_JD1_POL_MASK,
  			RT5682_JD1_EN | RT5682_JD1_POL_NOR);
+		regmap_update_bits(rt5682->regmap, RT5682_4BTN_IL_CMD_4,
+			0x7f7f, (rt5682->pdata.btndet_delay << 8 |
+			rt5682->pdata.btndet_delay));
+		regmap_update_bits(rt5682->regmap, RT5682_4BTN_IL_CMD_5,
+			0x7f7f, (rt5682->pdata.btndet_delay << 8 |
+			rt5682->pdata.btndet_delay));
+		regmap_update_bits(rt5682->regmap, RT5682_4BTN_IL_CMD_6,
+			0x7f7f, (rt5682->pdata.btndet_delay << 8 |
+			rt5682->pdata.btndet_delay));
+		regmap_update_bits(rt5682->regmap, RT5682_4BTN_IL_CMD_7,
+			0x7f7f, (rt5682->pdata.btndet_delay << 8 |
+			rt5682->pdata.btndet_delay));
  		mod_delayed_work(system_power_efficient_wq,
  			   &rt5682->jack_detect_work, msecs_to_jiffies(250));
  		break;
@@ -2467,6 +2480,8 @@ static int rt5682_parse_dt(struct rt5682_priv *rt5682, struct device *dev)
  		&rt5682->pdata.dmic1_clk_pin);
  	device_property_read_u32(dev, "realtek,jd-src",
  		&rt5682->pdata.jd_src);
+	device_property_read_u32(dev, "realtek,btndet-delay",
+		&rt5682->pdata.btndet_delay);
rt5682->pdata.ldo1_en = of_get_named_gpio(dev->of_node,
  		"realtek,ldo1-en-gpios", 0);

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux