Android如何用gpio检测耳机插入和按键事件

1.dtsi:

gpio_headset = <&msm_gpio 72 0>;

gpio_key = <&msm_gpio 90 0>;

qcom,pinctrl-names =

             "all_off",
             "pri_i2s_act",
             "ehsd_pin_default";

pinctrl-names =
             "all_off",
             "pri_i2s_act",
             
"ehsd_pin_default";

pinctrl-0 = <&cdc_pdm_lines_sus &cross_conn_det_sus
                             &vdd_spkdrv_sus>;
pinctrl-1 = <&cdc_pdm_lines_act &cross_conn_det_sus
                             &vdd_spkdrv_act>;

pinctrl-2 = <&ehsd_pin_act>;

+ehsd_int_pin {
+            ehsd_pin_act: ehsd_pin_act {
+                mux {
+                    pins = "gpio72","gpio90";
+                    function = "gpio";
+                };
+                config {
+                    pins = "gpio72", "gpio90";
+                    drive-strength = <2>;
+                    bias-pull-up;
+                };
+            };
+            ehsd_pin_sus: ehsd_pin_sus {
+                mux {
+                    pins = "gpio72", "gpio90";
+                    function = "gpio";
+                };
+                config {
+                    pins = "gpio72", "gpio90";
+                    drive-strength = <2>;
+                    bias-pull-up;
+                };
+            };
+        };

2.wcd-mbhc-v2.c

定义一个队列
+static int mbhc_headset_inserted =0;
+static struct workqueue_struct *local_headset_workqueue;
+static struct wake_lock headset_wake_lock;

+static int get_gpio_states(struct pinctrl *pinctrl)
+{
+        int ret =0;
+        pinctrl_infor.ehd_default = pinctrl_lookup_state(pinctrl,
+                       "
ehsd_pin_default");
+               if (IS_ERR(pinctrl_infor.ehd_default)) {
+                       pr_err("%s: Unable to get pinctrl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值