完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
rk3288 gpio按键驱动分析
dts配置GPIO 164 gpio_keys { // rk3036-echo.dts 165 compatible = "gpio-keys"; 166 #address-cells = <1>; 167 #size-cells = <0>; 168 169 pinctrl-names = "default"; 170 pinctrl-0 = <&pwr_key>; 171 172 power_key: power-key { 173 label = "GPIO Key Power"; 174 gpios = <&gpio0 1 GPIO_ACTIVE_LOW>; // [gpio2 25] to GPIO0_A1 175 linux,code = 176 debounce-interval = <100>; 177 wakeup-source; 178 }; 179 }; 832 &pinctrl { 833 keys { 834 pwr_key: pwr-key { 835 rockchip,pins = <0 1 RK_FUNC_GPIO &pcfg_pull_none>; // pcfg_pull_default 836 }; 837 }; 838 }; 驱动文件:./drivers/input/keyboard/gpio_keys.c 以下是GPIO按键驱动的简单代码调用流程跟踪: gpio_keys_probe -->pdata = gpio_keys_get_devtree_pdata(dev); //获取dts的资源配置 --> -->input = devm_input_allocate_device(dev); //分配输入子设备 -->error = gpio_keys_setup_key(pdev, input, bdata, button); //设置GPIO按键属性,在这个接口判断GPIO是否合法有效能用,申请GPIO,申请gpio中断号 -->gpio_is_valid(button->gpio) -->gpio_set_debounce -->irq = gpio_to_irq(button->gpio); //设置GPIO中断号 -->INIT_DELAYED_WORK(&bdata->work, gpio_keys_gpio_work_func); //初始化工作队列gpio_keys_gpio_work_func -->isr = gpio_keys_gpio_isr; //注册中断子函数,按键按下,触发中断,然后调用中断子函数 -->mod_delayed_work//调用工作队列 -->gpio_keys_gpio_work_func //调用gpio按键工作队列 -->gpio_keys_gpio_report_event(bdata); //调用gpio按键上报处理函数 -->state = gpio_get_value_cansleep(button->gpio); //获取gpio的状态 -->state = (state ? 1 : 0) ^ button->active_low; //这里得出判断按键的状态,为1就是按下,为0就是抬起 -->input_event(input, type, button->code, !!state); //上报GPIO按键键值和状态 -->input_sync(input); //sync一下,表示此次上报完成 -->irqflags = IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING; //设置上升沿或者下降沿触发中断 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1924 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2406 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5193 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:27 , Processed in 0.538880 second(s), Total 41, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号