基于I2C的FT5306触摸屏驱动程序执行流程

本文详细解析了FT5306触摸屏驱动的工作流程,包括初始化过程、休眠与唤醒管理、中断处理机制及数据读取上报等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://wenku.baidu.com/view/903a7a681eb91a37f1115c79.html


1, module_init(ft5306_touch_init); 

2, static int __init ft5306_touch_init(void) 

  a) i2c_add_driver(&ft5306_touch_driver);  

3, static struct i2c_driver ft5306_touch_driver(就是向系统注册一些程序,在系统规定的时机执行) 

  a) .probe = ft5306_touch_probe,注册检测程序和一些初始化信息,检测是否准备好程序(开机时执行) 
  b) .remove = ft5306_touch_remove,基本不执行,只在卸载 
  c) .suspend = ft5306_touch_suspend(#ifndef CONFIG_HAS_EARLYSUSPEND)注册挂起程序(休眠时执行) 
  d) .resume = ft5306_touch_resume(#ifndef CONFIG_HAS_EARLYSUSPEND)注册唤醒程序(唤醒时执行) 

4, ft5306_touch_probe,检测是否准备好  

  a) ft5306_touch_phys_init,初始化 
  b) input_register_device(input_dev);,注册设备 

  c) request_irq()。申请中断号,只是注册但不执行 
  d) INIT_WORK(&touch_work.work, ft5306_touch_worker);完成结构初始化工作,为将工作提交到工作队列做准备,即为顶半部准备好work_struct结构体。只是完成初始化,但不执行 
  e) register_early_suspend(&ft5306_touch_early_suspend_desc);在这里注册唤醒及休眠管理函数(#ifdef CONFIG_HAS_EARLYSUSPEND)

   f) ft5306_virtual_keys_init(),虚拟按键初始化程序,这就是虚拟按键程序的入口 

5, 如果不做任何操作,则进入休眠状态。 

  a) ft5306_touch_early_suspend() 
      i. ft5306_touch_suspend(touch->client, state); 

6, 如果唤醒,则进入唤醒初始化程序 
  a) ft5306_touch_late_resume()唤醒 
    i. ft5306_touch_resume()唤醒 
       1. ft5306_touch_phys_init(data);初始化 

7, 如果还不做任何操作,则循环第4步 (唤醒和休眠的入口,在ft5306_touch_probe函数中 

   #ifdef CONFIG_HAS_EARLYSUSPEND 
       register_early_suspend(&ft5306_touch_early_suspend_desc); 

   #endif 
由ft5306_touch_early_suspend_desc进入唤醒以及初始化,ft5306_touch_probe函数中也调用初始化函数。) 

8, 如果触摸屏幕,则产生中断,进入中断顶半部ft5306_touch_irq_handler(),把工作提交到工作队列,等在安全的时候再执行底半部 

9, 执行底半部,ft5306_touch_worker(struct work_struct *work) 

  a) ft5306_touch_read_points(points);获取触摸屏信息数据 
  b) ft5306_touch_finger_report(data, id, x, y, z);向应用层上报信息 

10, module_exit(ft5306_touch_exit);退出时调用

11, ft5306_touch_exit 

a) i2c_del_driver(&ft5306_touch_driver);调用.remove = ft5306_touch_remove

 b) ft5306_touch_remove() 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值