android 耳机插拔检测(kernel)

Android的耳机检测其实代码改动很少的,也是因为少吧,所以一直没写文档。就这么拖了将近两个月。

 

 驱动程序有三个实现版本:

 

其一是

:drivers/char/micco_hsdetect.c

它通过

kobject_uevent

上报状态给用户空间。

 

其二是:

drivers/input/keyboard/micco_keys.c

它通过

input_report_switch

上报事件给用户空间。

 

其三是:

drivers/switch/switch_micco.c

注册了一个

switch_dev

,这个好像是

android

平台专用的。

 

参考自:

http://blog.csdn.net/absurd/archive/2009/11/01/4754912.aspx 

 

 

我是用第三种方法做的。

 

一、在littleton.c中注册platform_device

如下: 

#ifdef CONFIG_SWITCH_GPIO  

static structgpio_switch_platform_data headset_switch_data = 

.name = "h2w", 

.gpio = 127, 

 }; 

 

 

 

static structplatform_device headset_switch_device = 

 { 

.name = "switch-gpio", 

.dev = 

 { 

 

 .platform_data = &headset_switch_data, 

}; 

#endif 

 

littleton_init()中注册platform_device ,包括增加的headset_switch_device。

其中gpio_switch_platform_data 的name可以随意,但必须与上层的路径相符,gpio

号为耳机检测的中断GPIO,这里的127是指PXA310的GPIO127。platform_device 

的name为\drivers\switch\switch_gpio.c 中的 platform_driver的name

static struct platform_driver gpio_switch_driver =  

.probe= gpio_switch_probe, 

.remove = __devexit_p(gpio_switch_remove), 

.driver =

         { 

                   . name = "switch-gpio", 

                   .owner = THIS_MODULE,

         }, 

}; 

 

注册成功后可以使用shell查看开发板中/sys/class/switch目录下多了一个文件夹h2w

 

 

H2w 的监控和消息发送有android中的headsetobserver.java实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值