FT系列touch---------suspend和resume的实现

本文介绍了一个触摸屏驱动程序如何实现挂起与恢复功能。通过定义`focal_suspend_work`和`focal_resume_work`函数,并在探针函数中初始化工作队列,实现了在屏幕关闭时挂起触摸功能,在屏幕打开时恢复触摸功能。

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

    在ftxxxx_ts.c中


static void focal_suspend_work(struct work_struct *work)
{

}
static void focal_resume_work(struct work_struct *work)
{

}

然后在probe函数中

INIT_WORK(&ftxxxx_ts->suspend_work, focal_suspend_work);
INIT_WORK(&ftxxxx_ts->resume_work, focal_resume_work);

之后再

void ftxxxx_ts_suspend(void)
{
queue_work(ftxxxx_ts->suspend_resume_wq,&ftxxxx_ts->suspend_work);
return;
}
EXPORT_SYMBOL(ftxxxx_ts_suspend);   //这样在整个kernel中都可以用extern 使用
void ftxxxx_ts_resume(void)
{
queue_work(ftxxxx_ts->suspend_resume_wq,&ftxxxx_ts->resume_work);
return;
}
EXPORT_SYMBOL(ftxxxx_ts_resume);


最后在panel的driver里/kernel/drivers/video/msm/mdss/mdss_dsi_panel.c


extern void ftxxxx_ts_suspend(void);
extern void ftxxxx_ts_resume(void);


static int mdss_dsi_panel_off(struct mdss_panel_data *pdata)  //灭屏的时候调用
{

ftxxxx_ts_suspend();//suspend touch

}


static int mdss_dsi_panel_on(struct mdss_panel_data *pdata)  //亮屏的时候调用
{

    ftxxxx_ts_resume();//resume touch

}


<6>[55185.399531][T17993] PM: suspend exit <3>[55185.425821][ T1059] set scheduler: curr=surfaceflinger tgid=1059 p=surfaceflinger tgid=1059 prio=97 C:(do_sched_setscheduler<-__arm64_sys_sched_setscheduler<-invoke_syscall<-el0_svc_common<-do_el0_svc) <6>[55185.428598][ T1001] [DISP]Enabling CRTC wakelock <6>[55185.428632][ T1001] [DISP]CRTC0 hold wakelock mtk_drm_crtc_atomic_resume 14308 cnt(2) <6>[55185.428983][ T1001] [DISP]mtk_dsi_set_mmclk_by_datarate_V1, 11751, data_rate =998, mmclk=330 pixclk_min=174, dual=0 <6>[55185.429993][ T1001] mtk_iommu: debug [trace] resume |0x1 | 0 |0x0 |14016000.m4u <6>[55185.430102][ T1001] debug for lcm lcm_panel_poweron+ <6>[55185.456948][ T1001] debug for lcm lcm_panel_poweron- <6>[55185.458039][ T1001] [DISP]crtc0 mtk_set_dpc_dsi_clk set 0 <6>[55185.458454][ T1001] [DISP]mtk_crtc_config_default_path:12891 scaling_en:0 hdisplay:1080 vdisplay:2400 lcm:width:0 lcm_height:0 <6>[55185.458530][ T1001] [DISP]mtk_rdma_cal_golden_setting,w:1080,h:2400,vrefresh:120,bpc:8,is_vdo:1,is_dc:0,sram:0,fifo:2240 <5>[55185.458567][ T1001] disp_ccorr_config, compId: 11 <5>[55185.458575][ T1001] disp_ccorr_config, compId: 11, ccorr_hw_valid: 1 <5>[55185.458595][ T1001] disp_ccorr_config, compId: 12 <5>[55185.458601][ T1001] disp_ccorr_config, compId: 12, ccorr_hw_valid: 1 <6>[55185.458949][ T1001] [DISP]RCT_ON = 0x1, num_extra_mux_bits = 246->240, slice_bits = 172800 <3>[55185.459253][ T1001] [DISP][E]mtk_dsi_encoder_enable doze status=0+ <3>[55185.459264][ T1001] [DISP][E]MTK_DISP_EVENT_BLANK early unblank,data=0 <3>[55185.459273][ T1001] [OPLUS_CHG][chg_mtk_drm_notifier_callback]Invalid event <3>[55185.459281][ T1001] [TP0]touchpanel: mtk gki notifier event:0, blank:0 <3>[55185.459286][ T1001] [TP0]touchpanel: tp_resume start. <6>[55185.459421][ T1001] oplus_bsp_uff_fp_driver: [oplus_fb_notifier_call] val = 0 <6>[55185.459431][ T1001] [btmtk_info] btmtk_disp_notify_cb: value[0], data[0] <6>[55185.459445][ T1001] [btmtk_info] btmtk_disp_notify_cb: blank state [0]->[1], and send cmd <6>[55185.459453][ T1001] [btmtk_info] [InternalCmd] btmtk_intcmd_wmt_blank_status <3>[55185.465901][T22441] [TP0]touchpanel: speedup_resume is called <3>[55185.465947][T22441] [TP0]touchpanel: release all touch point and key, clear tp touch down flag <3>[55185.465956][T22441] [TP]focaltech,ft3658u_spi: fts_reset:call <3>[55185.465962][T22441] [TP]focaltech,ft3658u_spi: fts_hw_reset. <3>[55185.465968][T22441] [TP]focaltech,ft3658u_spi: Set the reset_gpio <6>[55185.467558][ T1048] #@# cm_mgr_get_dram_type(607) ddr_type 0x0 <5>[55185.471159][ T978] [mtk_nanohub]mtk_nanohub_flush [1] <6>[55185.474993][ T1001] [btmtk_info] btmtk_btif_send_and_recv, ret = 496 <6>[55185.475039][ T1001] [btmtk_info] [InternalCmd] btmtk_intcmd_wmt_blank_status done, result = WMT_EVT_SUCCESS <6>[55185.475047][ T1001] [btmtk_info] btmtk_disp_notify_cb: end <6>[55185.475054][ T1001] enter ppm lcmoff fb! <6>[55185.475063][ T1001] [wlan][1001]kalGetMtkDispEvent:(SW4 INFO) wlan_fb_notifier_callback: event[0], blank[0] eEvent[2] <6>[55185.475091][ T1001] [DISP]mtk_vidle_force_power_ctrl_by_cpu power_on[1] power ctrl api is null <6>[55185.476254][ T1001] debug for lcm_prepare+ <6>[55185.476280][ T1001] debug for lcm_panel_init+ <3>[55185.483153][T22441] [TP]focaltech,ft3658u_spi: Set the reset_gpio <6>[55185.496621][ T1001] debug for lcm_panel_init, fps:60 <3>[55185.500307][T14189] [sensor_devinfo] sync_utc2scp_work 737 : kernel_ts: 1753948963.903801, 1753948963.903801 <5>[55185.510970][ T975] get pe5 fail <5>[55185.511023][ T975] get pe5 fail <5>[55185.511120][ T975] get pe5 fail <5>[55185.511188][ T975] get pe5 fail <12>[55185.511281][ T975] healthd: battery l=40 v=3 t=39.0 h=2 st=3 c=1109 fc=4864000 cc=55 chg= <6>[55185.512286][ T4282] mt6360_pmu_chg mt6360-chg.2.auto: mt6360_get_vbus mt6360_get_vbus <5>[55185.537789][ T975] get pe5 fail <5>[55185.537842][ T975] get pe5 fail <5>[55185.537960][ T975] get pe5 fail <5>[55185.538022][ T975] get pe5 fail <6>[55185.549263][T21367] update cpufreq limit idx min 0---max 0,freq min 2600000 ---max 2600000 <6>[55185.550217][T10082] update cpufreq limit idx min 0---max 0,freq min 2000000 ---max 2000000 <3>[55185.554077][ T1017] [OPLUS_CHG][protocol_type_show]fast_chg_type: 0 <6>[55185.554567][ T1017] [OPLUS_CHG][ui_power_show]ui_power_show: 0 45000 0 0 0 0 -1 <3>[55185.555264][T25353] open <3>[55185.555338][T25353] seninf_open 1 <3>[55185.556263][T25353] [imgsensor]imgsensor_open 4 <5>[55185.563311][ T975] get pe5 fail <5>[55185.563356][ T975] get pe5 fail <5>[55185.563431][ T975] get pe5 fail <5>[55185.563480][ T975] get pe5 fail <3>[55185.564630][T25353] [CAMERA SENSOR] CCF kdSetSensorMclk on= 1, freq= 24, TG= 4 <3>[55185.564767][T25353] [imgsensor]sensor_idx 1, power 1 curr_sensor_name hi1634q_mipi_raw23707, enable list hi1634q_mipi_raw23707 <7>[55185.564783][T25353] [Oplusimgsensor_ldoenable_power] sensor_idx:1 pwr_status: 1 <3>[55185.564791][T25353] [Oplusimgsensor_matchhwcfg_power] pwr_actidx:81 <3>[55185.564798][T25353] [Oplusimgsensor_matchhwcfg_power] pwr_actidx:82 <6>[55185.564804][T25353] [Oplusimgsensor_matchhwcfg_power] match oplus_sensor_power_sequence <6>[55185.564814][T25353] [Oplusimgsensor_ldo_powerset_23687] sensor_idx:1 pwr_status:1 pin:1 <6>[55185.564820][T25353] sensor_idx 1, ppwr_info->pin 1, ppwr_info->pin_state_on 13, delay 10 <3>[55185.564827][T25353] [imgsensor]gpio_set :debug pinctrl ENABLE, PinIdx 1, Val 13 <6>[55185.574870][T25353] [Oplusimgsensor_ldo_powerset_23687] sensor_idx:1 pwr_status:1 pin:2 <6>[55185.574899][T25353] sensor_idx 1, ppwr_info->pin 2, ppwr_info->pin_state_on 0, delay 1 <3>[55185.574923][T25353] [imgsensor]gpio_set :debug pinctrl ENABLE, PinIdx 2, Val 0 <6>[55185.576011][T25353] [Oplusimgsensor_ldo_powerset_23687] sensor_idx:1 pwr_status:1 pin:5 <6>[55185.576025][T25353] sensor_idx 1, ppwr_info->pin 5, ppwr_info->pin_state_on 9, delay 1 <3>[55185.576043][T25353] [check_for_regulator_get]sensor_idx:1 regulator_idx: 2 <3>[55185.576335][T25353] debugfs: Directory 'kd_camera_hw1@1a004000-cam1_vcamio' with parent 'vcamio' already present! <3>[55185.576363][T25353] vcamio: unsupportable voltage range: 2500000-1900000uV <3>[55185.576373][T25353] [regulator]fail to regulator_set_voltage, powertype:5 powerId:2500000 <3>[55185.576380][T25353] [imgsensor]set load success <6>[55185.579500][T25353] [Oplusimgsensor_ldo_powerset_23687] sensor_idx:1 pwr_status:1 pin:3 <6>[55185.579547][T25353] AW37004 ultra: aw37004 out put type is [3] <6>[55185.580054][T25353] AW37004 before set enable value = 0x0 <6>[55185.580083][T25353] AW37004 after set enable value = 0x8 <6>[55185.580228][T25353] AW37004 set OUT_AVDD2 success! <6>[55185.580236][T25353] AW37004 result = 0 <6>[55185.581255][T25353] [Oplusimgsensor_ldo_powerset_23687] sensor_idx:1 pwr_status:1 pin:4 <6>[55185.581262][T25353] AW37004 imx471: aw37004 out put type is [1] <6>[55185.581578][T25353] AW37004 before set enable value = 0x8 <6>[55185.581596][T25353] AW37004 after set enable value = 0xa <6>[55185.581750][T25353] AW37004 set OUT_DVDD2 success! <6>[55185.581756][T25353] AW37004 result = 0 <6>[55185.582772][T25353] [Oplusimgsensor_ldo_powerset_23687] sensor_idx:1 pwr_status:1 pin:15
最新发布
08-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值