Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e14331c authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "input: touchscreen: focaltech: queue touch suspend work on workqueue"

parents 22c40c49 453dc7ac
Loading
Loading
Loading
Loading
+20 −6
Original line number Original line Diff line number Diff line
@@ -2126,13 +2126,19 @@ static void fts_resume_work(struct work_struct *work)
	fts_ts_resume(ts_data->dev);
	fts_ts_resume(ts_data->dev);
}
}


static void fts_suspend_work(struct work_struct *work)
{
	struct fts_ts_data *ts_data = container_of(work, struct fts_ts_data,
					resume_work);

	fts_ts_suspend(ts_data->dev);
}

static int fb_notifier_callback(struct notifier_block *self,
static int fb_notifier_callback(struct notifier_block *self,
				unsigned long event, void *data)
				unsigned long event, void *data)
{
{
	struct drm_panel_notifier *evdata = data;
	struct drm_panel_notifier *evdata = data;
	int *blank = NULL;
	int *blank = NULL;
	struct fts_ts_data *ts_data = container_of(self, struct fts_ts_data,
			fb_notif);


	if (!evdata)
	if (!evdata)
		return 0;
		return 0;
@@ -2156,8 +2162,8 @@ static int fb_notifier_callback(struct notifier_block *self,


	case DRM_PANEL_BLANK_POWERDOWN:
	case DRM_PANEL_BLANK_POWERDOWN:
		if (event == DRM_PANEL_EARLY_EVENT_BLANK) {
		if (event == DRM_PANEL_EARLY_EVENT_BLANK) {
			cancel_work_sync(&fts_data->resume_work);
			queue_work(fts_data->ts_workqueue,
			fts_ts_suspend(ts_data->dev);
					&fts_data->suspend_work);
		} else if (event == DRM_PANEL_EVENT_BLANK) {
		} else if (event == DRM_PANEL_EVENT_BLANK) {
			FTS_DEBUG("suspend: event = %lu, not care\n", event);
			FTS_DEBUG("suspend: event = %lu, not care\n", event);
		}
		}
@@ -2180,13 +2186,19 @@ static void fts_resume_work(struct work_struct *work)
	fts_ts_resume(ts_data->dev);
	fts_ts_resume(ts_data->dev);
}
}


static void fts_suspend_work(struct work_struct *work)
{
	struct fts_ts_data *ts_data = container_of(work, struct fts_ts_data,
					resume_work);

	fts_ts_suspend(ts_data->dev);
}

static int fb_notifier_callback(struct notifier_block *self,
static int fb_notifier_callback(struct notifier_block *self,
				unsigned long event, void *data)
				unsigned long event, void *data)
{
{
	struct fb_event *evdata = data;
	struct fb_event *evdata = data;
	int *blank = NULL;
	int *blank = NULL;
	struct fts_ts_data *ts_data = container_of(self, struct fts_ts_data,
					fb_notif);


	if (!(event == FB_EARLY_EVENT_BLANK || event == FB_EVENT_BLANK)) {
	if (!(event == FB_EARLY_EVENT_BLANK || event == FB_EVENT_BLANK)) {
		FTS_INFO("event(%lu) do not need process\n", event);
		FTS_INFO("event(%lu) do not need process\n", event);
@@ -2413,6 +2425,7 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data)
#if defined(CONFIG_DRM)
#if defined(CONFIG_DRM)
	if (ts_data->ts_workqueue) {
	if (ts_data->ts_workqueue) {
		INIT_WORK(&ts_data->resume_work, fts_resume_work);
		INIT_WORK(&ts_data->resume_work, fts_resume_work);
		INIT_WORK(&ts_data->suspend_work, fts_suspend_work);
	}
	}
	ts_data->fb_notif.notifier_call = fb_notifier_callback;
	ts_data->fb_notif.notifier_call = fb_notifier_callback;


@@ -2424,6 +2437,7 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data)
#elif defined(CONFIG_FB)
#elif defined(CONFIG_FB)
	if (ts_data->ts_workqueue) {
	if (ts_data->ts_workqueue) {
		INIT_WORK(&ts_data->resume_work, fts_resume_work);
		INIT_WORK(&ts_data->resume_work, fts_resume_work);
		INIT_WORK(&ts_data->suspend_work, fts_suspend_work);
	}
	}
	ts_data->fb_notif.notifier_call = fb_notifier_callback;
	ts_data->fb_notif.notifier_call = fb_notifier_callback;
	ret = fb_register_client(&ts_data->fb_notif);
	ret = fb_register_client(&ts_data->fb_notif);
+1 −0
Original line number Original line Diff line number Diff line
@@ -178,6 +178,7 @@ struct fts_ts_data {
	struct delayed_work esdcheck_work;
	struct delayed_work esdcheck_work;
	struct delayed_work prc_work;
	struct delayed_work prc_work;
	struct work_struct resume_work;
	struct work_struct resume_work;
	struct work_struct suspend_work;
	struct ftxxxx_proc proc;
	struct ftxxxx_proc proc;
	spinlock_t irq_lock;
	spinlock_t irq_lock;
	struct mutex report_mutex;
	struct mutex report_mutex;