mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 20:32:04 +09:00
ANDROID: thermal: Add vendor thermal_pm_notify_suspend function
Currently, most of the thermal_zones are IRQ capable and they do not need to be updated while resuming. To improve the system performance and reduce the resume time. Add a vendor function to check if the thermal_zone is not IRQ capable and needs to be updated. Bug: 170905417 Test: boot and vendor function worked properly. Change-Id: I9389985bba29b551a7a20b55e1ed26b6c4da9b3d Signed-off-by: David Chao <davidchao@google.com>
This commit is contained in:
@@ -182,6 +182,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cma_alloc_finish);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_pagecache_get_page);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_pagecache_get_page);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_pm_notify_suspend);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs);
|
||||||
|
|||||||
@@ -23,6 +23,8 @@
|
|||||||
|
|
||||||
#define CREATE_TRACE_POINTS
|
#define CREATE_TRACE_POINTS
|
||||||
#include <trace/events/thermal.h>
|
#include <trace/events/thermal.h>
|
||||||
|
#undef CREATE_TRACE_POINTS
|
||||||
|
#include <trace/hooks/thermal.h>
|
||||||
|
|
||||||
#include "thermal_core.h"
|
#include "thermal_core.h"
|
||||||
#include "thermal_hwmon.h"
|
#include "thermal_hwmon.h"
|
||||||
@@ -1613,6 +1615,7 @@ static int thermal_pm_notify(struct notifier_block *nb,
|
|||||||
unsigned long mode, void *_unused)
|
unsigned long mode, void *_unused)
|
||||||
{
|
{
|
||||||
struct thermal_zone_device *tz;
|
struct thermal_zone_device *tz;
|
||||||
|
int irq_wakeable = 0;
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case PM_HIBERNATION_PREPARE:
|
case PM_HIBERNATION_PREPARE:
|
||||||
@@ -1628,6 +1631,10 @@ static int thermal_pm_notify(struct notifier_block *nb,
|
|||||||
if (!thermal_zone_device_is_enabled(tz))
|
if (!thermal_zone_device_is_enabled(tz))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
trace_android_vh_thermal_pm_notify_suspend(tz, &irq_wakeable);
|
||||||
|
if (irq_wakeable)
|
||||||
|
continue;
|
||||||
|
|
||||||
thermal_zone_device_init(tz);
|
thermal_zone_device_init(tz);
|
||||||
thermal_zone_device_update(tz,
|
thermal_zone_device_update(tz,
|
||||||
THERMAL_EVENT_UNSPECIFIED);
|
THERMAL_EVENT_UNSPECIFIED);
|
||||||
|
|||||||
@@ -14,6 +14,11 @@ DECLARE_HOOK(android_vh_enable_thermal_genl_check,
|
|||||||
TP_PROTO(int event, int tz_id, int *enable_thermal_genl),
|
TP_PROTO(int event, int tz_id, int *enable_thermal_genl),
|
||||||
TP_ARGS(event, tz_id, enable_thermal_genl));
|
TP_ARGS(event, tz_id, enable_thermal_genl));
|
||||||
|
|
||||||
|
struct thermal_zone_device;
|
||||||
|
DECLARE_HOOK(android_vh_thermal_pm_notify_suspend,
|
||||||
|
TP_PROTO(struct thermal_zone_device *tz, int *irq_wakeable),
|
||||||
|
TP_ARGS(tz, irq_wakeable));
|
||||||
|
|
||||||
#endif /* _TRACE_HOOK_THERMAL_H */
|
#endif /* _TRACE_HOOK_THERMAL_H */
|
||||||
/* This part must be outside protection */
|
/* This part must be outside protection */
|
||||||
#include <trace/define_trace.h>
|
#include <trace/define_trace.h>
|
||||||
|
|||||||
Reference in New Issue
Block a user