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: Hareesh Gundu <hareeshg@codeaurora.org>
This commit is contained in:
parent
d843c02a78
commit
8d2505b7de
3 changed files with 20 additions and 9 deletions
|
@ -93,6 +93,7 @@ Optional Properties:
|
|||
- qcom,chipid: If it exists this property is used to replace
|
||||
the chip identification read from the GPU hardware.
|
||||
This is used to override faulty hardware readings.
|
||||
- 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.
|
||||
|
|
|
@ -902,6 +902,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;
|
||||
}
|
||||
|
||||
|
@ -1016,15 +1019,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
|
||||
/*
|
||||
* 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 (!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)) {
|
||||
adreno_input_handler.private = NULL;
|
||||
KGSL_DRV_ERR(device,
|
||||
"Unable to register the input handler\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
out:
|
||||
if (status) {
|
||||
|
@ -1076,7 +1083,8 @@ static int adreno_remove(struct platform_device *pdev)
|
|||
_adreno_free_memories(adreno_dev);
|
||||
|
||||
#ifdef CONFIG_INPUT
|
||||
input_unregister_handler(&adreno_input_handler);
|
||||
if (adreno_input_handler.private)
|
||||
input_unregister_handler(&adreno_input_handler);
|
||||
#endif
|
||||
adreno_sysfs_close(adreno_dev);
|
||||
|
||||
|
|
|
@ -146,6 +146,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
|
||||
|
@ -203,6 +204,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;
|
||||
|
|
Loading…
Add table
Reference in a new issue