- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 Linux内核--wakeup_source机制流程简介
timer.cstatic void do_init_timer(struct timer_list *timer,void (*func)(struct timer_list *),unsigned int flags,const char *name, struct lock_class_key *key){timer->entry.pprev = NULL;timer->function = func;timer->flags = flags | raw_smp_pr
2021-02-02 09:08:50
3291
原创 Linux内核--wait_queue_head机制流程简介
core.cint default_wake_function(wait_queue_entry_t *curr, unsigned mode, int wake_flags,void *key){return try_to_wake_up(curr->private, mode, wake_flags, 1); // wake up a thread}EXPORT_SYMBOL(default_wake_function);wait.h/*A single wait-queue
2021-02-02 09:04:50
696
原创 resume时,概率性读写设备通讯错误debug方法
1: 在设备sleep之后,如tp,会低概率出现触发中断函数之后,读ic寄存器失败,可能会导致黑屏死机。因为总线(如i2c, spi…)没及时醒来,而中断优先级比较高,导致喂狗超时。为了解决这个问题,可在系统sleep/wake up时置位flag,待bus ready之后,再做通信。我称为间接法。1.1:pm.h/**struct dev_pm_ops - device PM callbacks.*…@suspend: Executed before putting the system
2021-02-02 09:03:57
443
原创 内核completion工作机制
core.cint default_wake_function(wait_queue_entry_t *curr, unsigned mode, int wake_flags,void *key){return try_to_wake_up(curr->private, mode, wake_flags, 1); // wake up a thread}EXPORT_SYMBOL(default_wake_function);wait.h/*A single wait-queue
2021-01-04 14:59:57
588
原创 TouchPanel--Qcom DRM休眠唤醒通知链的注册及回调流程
移动设备的休眠唤醒功能,为了省电而生,当然,你也可以在休眠的时候做一些差异化的功能。下面就介绍如何在高通平台中根据显示屏的状态,修改设备的工作状态。本文内容参考自sm6350, kernel 4.191:设备的dtsi属性设置示例:xxx-qrd.dtst&qupv3_se8_i2c {#address-cells = <1>;#size-cells = <0>;status = "ok";qcom,i2c-touch-active = "focaltech,f
2020-12-23 13:52:38
3022
2
原创 Linux--timer---clockevents init
简单导图如下:clockevents设备结构体:/**struct clock_event_device - clock event device descriptor@event_handler: Assigned by the framework to be called by the low level handler of the event source@set_next_event: set next event function using a clockso
2020-12-22 10:46:48
337
原创 Linux--workqueue--delayed_work初探
delayed_work的工作比较简单:1:初始化:INIT_DELAYED_WORK(_work, _func);2:启动:schedule_delayed_work(struct delayed_work *dwork,unsigned long delay);以某TP驱动为例,示意图如下:直接上代码:1:关键结构体:/* * The externally visible workqueue. It relays the issued work items to * the
2020-12-22 10:43:54
1245
原创 Linux--workqueue之应用实例
如下举例一个通用workqueue的应用过程:1:创建"gdt-event-queue"工作队列 core_data->event_wq = alloc_workqueue(“gdt-event-queue”, WQ_UNBOUND | WQ_HIGHPRI | WQ_CPU_INTENSIVE, 1);2:初始化workstatic void goodix_ts_resume_work(struct work_struct *work){struct goodix_ts_core *co
2020-12-22 10:40:42
516
原创 TouchPanel--ESD_Check
1、简介TP IC芯片的ESD防护等级为±2KV. 整机时,根据整机的密封及导流能力,可达最高防护等级4:接触±8KV, 空气±15KV. 冬天,人体容易产生大量静电,如脱毛衣时,容易对电子设备产生影响,导致工作不正常。TP/LCD因为处于设备表层,属于受影响较大的模块之一。为了降低影响,ESD_Check机制是目前常用的手段。ESD_Check概念:当芯片受外部干扰,工作不正常时,如TP报点或LCD显示异常,芯片会进入“重生”模式:reset.2、方式: 目前主流方式有2种:方案1:内核起一个周
2020-12-22 10:38:14
2475
1
原创 Linux--workqueue之初始化
1:初始化第一步:分配各项数据结构及系统workqueue/**workqueue_init_early - early init for workqueue subsystemThis is the first half of two-staged workqueue subsystem initializationand invoked as soon as the bare basics - memory allocation, cpumasks andidr are up
2020-07-19 22:27:20
396
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人