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

Commit c204b4ee authored by Hareesh Gundu's avatar Hareesh Gundu Committed by Archana Obannagari
Browse files

msm: kgsl: Add disable-wake-on-touch devicetree property



Add a devicetree "disable-wake-on-touch" property support
to disable GPU wake up on touch input events. This will
help save power in case of unintended taps and swipes,
for example, when the screen is wet.

Change-Id: I35768dc78c473272472aaf9c0e09e66d75817b2c
Signed-off-by: default avatarHareesh Gundu <hareeshg@codeaurora.org>
parent 67c751e0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ Optional Properties:
			   This is used to override faulty hardware readings.
- qcom,strtstp-sleepwake:  Boolean. Enables use of GPU SLUMBER instead of SLEEP for power savings
- qcom,gx-retention:  	   Boolean. Enables use of GX rail RETENTION voltage
- qcom,disable-wake-on-touch:   Boolean. Disables the GPU power up on a touch input event.
- qcom,disable-busy-time-burst:
				Boolean. Disables the busy time burst to avoid switching
				of power level for large frames based on the busy time limit.
+17 −9
Original line number Diff line number Diff line
@@ -904,6 +904,9 @@ static int adreno_of_get_power(struct adreno_device *adreno_dev,
	device->pwrctrl.bus_control = of_property_read_bool(node,
		"qcom,bus-control");

	device->pwrctrl.input_disable = of_property_read_bool(node,
		"qcom,disable-wake-on-touch");

	return 0;
}

@@ -1018,15 +1021,19 @@ static int adreno_probe(struct platform_device *pdev)
	/* Initialize coresight for the target */
	adreno_coresight_init(adreno_dev);

	adreno_input_handler.private = device;

#ifdef CONFIG_INPUT
	if (!device->pwrctrl.input_disable) {
		adreno_input_handler.private = device;
		/*
		 * It isn't fatal if we cannot register the input handler.  Sad,
		 * perhaps, but not fatal
		 */
	if (input_register_handler(&adreno_input_handler))
		KGSL_DRV_ERR(device, "Unable to register the input handler\n");
		if (input_register_handler(&adreno_input_handler)) {
			adreno_input_handler.private = NULL;
			KGSL_DRV_ERR(device,
				"Unable to register the input handler\n");
		}
	}
#endif
out:
	if (status) {
@@ -1078,6 +1085,7 @@ static int adreno_remove(struct platform_device *pdev)
	_adreno_free_memories(adreno_dev);

#ifdef CONFIG_INPUT
	if (adreno_input_handler.private)
		input_unregister_handler(&adreno_input_handler);
#endif
	adreno_sysfs_close(adreno_dev);
+2 −0
Original line number Diff line number Diff line
@@ -133,6 +133,7 @@ struct kgsl_regulator {
 * @pm_qos_req_dma - the power management quality of service structure
 * @pm_qos_active_latency - allowed CPU latency in microseconds when active
 * @pm_qos_cpu_mask_latency - allowed CPU mask latency in microseconds
 * @input_disable - To disable GPU wakeup on touch input event
 * @pm_qos_wakeup_latency - allowed CPU latency in microseconds during wakeup
 * @bus_control - true if the bus calculation is independent
 * @bus_mod - modifier from the current power level for the bus vote
@@ -189,6 +190,7 @@ struct kgsl_pwrctrl {
	unsigned int pm_qos_active_latency;
	unsigned int pm_qos_cpu_mask_latency;
	unsigned int pm_qos_wakeup_latency;
	bool input_disable;
	bool bus_control;
	int bus_mod;
	unsigned int bus_percent_ab;