input: lge_touch_core: touchwake: initial support and code

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: possible fix touchwake reboot issue

Call touch_press in work_func instead of input_report

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: Use delayed work to handle powerkey

This may fix issues with watchdog reboots.

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: Fix checkpatch warnings

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: Remove unused code

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: Introduce LED trigger

It may be used when touchwake is enabled during the wakelock.

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: Handle touch suspend/resume only if touchwake is enabled

Refactor suspend/resume to handle touch earlysuspend only if
touchwake is enabled.
(for compatibility with TouchControl app)

Thanks @bponury for hints

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Revert "input: lge_touch_core: touchwake: Handle touch suspend/resume only if touchwake is enabled"

This reverts commit 2bc75c0a586113935fb28c621ff05c0f1254ee4d.
Revert "Revert "input: lge_touch_core: touchwake: Handle touch suspend/resume only if touchwake is enabled""

This reverts commit 588c097e4396290222b31ef8fad6fccce9a5061d.
input: lge_touch_core: touchwake: Send input to touchwake only if it's enabled

Thanks to Bponury.

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: Fix issue that touch remains unpowered after late_resume

Thanks to Bponury

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: Unlock the wakelock when disable the driver

When disable the driver and touchwake wakelock is active,
unlock the wakelock and disable touch.

This should prevent race conditions when the kernel resumes,
touchwake is active and touchwake is disabled from userspace.

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: Remove flush_scheduled_work

Instead use cancel_delayed_work_sync to avoid race conditions.

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: touchwake: Fix coding style issue

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: doubletap: implement dt2w functionality

If enabled, touchscreen is always powered and user may resume
the device with a double tap on the center of the screen.

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: doubletap: rework dt2w functionality

- Refactor the code
- Reduce the delay of i2c retry to 10ms
- Use a wake lock when there is a touch to prevent kernel to suspend
- Implement the pm runtime interface

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: doubletap: properly destroy wake lock on touch remove

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: doubletap: release all touch events when power on

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: doubletap: remove debug info

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
input: lge_touch_core: doubletap: reset touch screen on power on

When power on the device reset touch screen to avoid
unresponsive touch screen issues.

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>