Commit 4ba38ee3 authored by Even Xu's avatar Even Xu Committed by Jiri Kosina
Browse files

HID: intel-thc-hid: Intel-quickspi: Improve power management for touch devices



Enhance power management with two key improvements:
1. Hibernate support: Send POWER_OFF command when entering hibernate
   mode.
2. Conditional sleep commands: Only send POWER_SLEEP/POWER_ON commands
   during system suspend/resume when the touch device is not configured
   as a wake source, preserving Wake-on-Touch (WoT) functionality. This
   ensures proper power states while maintaining expected wake behavior.

Signed-off-by: default avatarEven Xu <even.xu@intel.com>
Tested-by: default avatarRui Zhang <rui1.zhang@intel.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.com>
parent f0caa1d4
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -749,9 +749,11 @@ static int quickspi_suspend(struct device *device)
	if (!qsdev)
		return -ENODEV;

	if (!device_may_wakeup(qsdev->dev)) {
		ret = quickspi_set_power(qsdev, HIDSPI_SLEEP);
		if (ret)
			return ret;
	}

	ret = thc_interrupt_quiesce(qsdev->thc_hw, true);
	if (ret)
@@ -790,9 +792,8 @@ static int quickspi_resume(struct device *device)
	if (ret)
		return ret;

	ret = quickspi_set_power(qsdev, HIDSPI_ON);
	if (ret)
		return ret;
	if (!device_may_wakeup(qsdev->dev))
		return quickspi_set_power(qsdev, HIDSPI_ON);

	return 0;
}
@@ -851,6 +852,9 @@ static int quickspi_poweroff(struct device *device)
	if (!qsdev)
		return -ENODEV;

	/* Ignore the return value as platform will be poweroff soon */
	quickspi_set_power(qsdev, HIDSPI_OFF);

	ret = thc_interrupt_quiesce(qsdev->thc_hw, true);
	if (ret)
		return ret;