Loading Documentation/devicetree/bindings/gpu/adreno.txt +1 −0 Original line number Diff line number Diff line Loading @@ -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. Loading drivers/gpu/msm/adreno.c +17 −9 Original line number Diff line number Diff line Loading @@ -948,6 +948,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 @@ -1091,15 +1094,19 @@ static int adreno_probe(struct platform_device *pdev) adreno_dev->gpuhtw_llc_slice = NULL; } 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 @@ -1153,6 +1160,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 @@ -145,6 +145,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 @@ -200,6 +201,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 @@ -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. Loading
drivers/gpu/msm/adreno.c +17 −9 Original line number Diff line number Diff line Loading @@ -948,6 +948,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 @@ -1091,15 +1094,19 @@ static int adreno_probe(struct platform_device *pdev) adreno_dev->gpuhtw_llc_slice = NULL; } 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 @@ -1153,6 +1160,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 @@ -145,6 +145,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 @@ -200,6 +201,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