Loading Documentation/devicetree/bindings/gpu/adreno.txt +1 −0 Original line number Diff line number Diff line Loading @@ -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. Loading drivers/gpu/msm/adreno.c +17 −9 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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) { Loading Loading @@ -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); Loading drivers/gpu/msm/kgsl_pwrctrl.h +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading Loading
Documentation/devicetree/bindings/gpu/adreno.txt +1 −0 Original line number Diff line number Diff line Loading @@ -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. Loading
drivers/gpu/msm/adreno.c +17 −9 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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) { Loading Loading @@ -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); Loading
drivers/gpu/msm/kgsl_pwrctrl.h +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading