tp
2018-12-19 10:10:42 0 举报
touch screen driver flow chart 触摸屏驱动流程图
作者其他创作
大纲/内容
调用
sysfs_create_group创建族属性文件
ts_esd_timer_start设置3s定时器,如果tp正常工作3s后产生中断重设3s定时器,否则tp异常打印异常后重启tp
request_threaded_irq申请中断zinitix_touch_work(下降沿一次触发)
set timing/init var
gpio_is_valid/gpio_request判断gpio合法性,申请gpio
设置触摸屏模式touch_dev->touch_mode = TOUCH_POINT_MODE
配置省电模式(lcd关闭时睡眠tp)
input_register_device将touch_dev->input_dev注册到input子系统
misc_register(&touch_misc_device)注册设备
zinitix_touch_probe
ts_power_sequence一段厂商代码
zinitix_parse_dt函数(主要填充设备树下属性名称)
ts_init_touch 初始化tp,检查tp,设置寄存器及tp参数,填充touch_dev结构体
zinitix_power_init初始化电源(设置电压1.8v,设备树下电源属性名vcc-i2c-supply)
zinitix_parsing_data
zinitix_pinctrl_init初始化pinctrl子系统(设置设备树下属性名:pinctrl-names..)
input_set_abs_params设置x,y坐标范围1280*800,接触面长轴,接触工具长轴,多点
清中断work_proceedure判断tp是否空闲状态stop定时器ts_read_coord从POINT_STATUS读出坐标检测是坏数据丢弃上报按键(无)上报坐标(上报坐标按下一次,抬起一次)
compatible与设备树匹配成功“zinitix.zt7554”
INIT_WORK/ zinitix_tmr_workqueue创建初始化工作队列(定时器)
input_allocate_device输入子系统 分配内存初始化
#if defined(CONFIG_FB) touch_dev->fb_notif.notifier_call = fb_notifier_callback;//lcd发生改变时调用 ret = fb_register_client(&touch_dev->fb_notif);//注册fb_notif#elif defined(CONFIG_HAS_EARLYSUSPEND) touch_dev->early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN + 1; touch_dev->early_suspend.suspend = zinitix_early_suspend;//睡眠tp touch_dev->early_suspend.resume = zinitix_late_resume;//唤醒tp register_early_suspend(&touch_dev->early_suspend);#endif
设置input子系统事件,填充input_dev
zinitix,namezinitix,power-gpiozinitix,reset-gpiozinitix,irq-gpiozinitix,en-gpio
0 条评论
下一页