From 5e099349b54a909b10294118ef31be7a5e0aa4d9 Mon Sep 17 00:00:00 2001 From: Chungwoo Park Date: Tue, 29 May 2018 13:10:39 +0900 Subject: [PATCH] [COMMON] qos: Add MFC related qos. Change-Id: I27921a0d40a7b99d818bd1ee4aae0dcb76f2ce30 Signed-off-by: Chungwoo Park --- include/linux/pm_qos.h | 4 ++++ kernel/power/qos.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h index e226d58d79e9..7b319df28abb 100644 --- a/include/linux/pm_qos.h +++ b/include/linux/pm_qos.h @@ -44,6 +44,8 @@ enum { PM_QOS_SCORE_THROUGHPUT_MAX, PM_QOS_FSYS0_THROUGHPUT_MAX, #endif + PM_QOS_MFC_THROUGHPUT, + PM_QOS_MFC_THROUGHPUT_MAX, /* insert new class ID */ PM_QOS_NUM_CLASSES, }; @@ -84,6 +86,8 @@ enum pm_qos_flags_status { #define PM_QOS_SCORE_THROUGHPUT_MAX_DEFAULT_VALUE INT_MAX #define PM_QOS_FSYS0_THROUGHPUT_MAX_DEFAULT_VALUE INT_MAX #endif +#define PM_QOS_MFC_THROUGHPUT_DEFAULT_VALUE 0 +#define PM_QOS_MFC_THROUGHPUT_MAX_DEFAULT_VALUE INT_MAX #define PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE 0 #define PM_QOS_MEMORY_BANDWIDTH_DEFAULT_VALUE 0 diff --git a/kernel/power/qos.c b/kernel/power/qos.c index 67905f33509e..304159aadb24 100644 --- a/kernel/power/qos.c +++ b/kernel/power/qos.c @@ -436,6 +436,32 @@ static struct pm_qos_object fsys0_throughput_max_pm_qos = { }; #endif +static BLOCKING_NOTIFIER_HEAD(mfc_throughput_notifier); +static struct pm_qos_constraints mfc_tput_constraints = { + .list = PLIST_HEAD_INIT(mfc_tput_constraints.list), + .target_value = PM_QOS_MFC_THROUGHPUT_DEFAULT_VALUE, + .default_value = PM_QOS_MFC_THROUGHPUT_DEFAULT_VALUE, + .type = PM_QOS_MAX, + .notifiers = &mfc_throughput_notifier, +}; +static struct pm_qos_object mfc_throughput_pm_qos = { + .constraints = &mfc_tput_constraints, + .name = "mfc_throughput", +}; + +static BLOCKING_NOTIFIER_HEAD(mfc_throughput_max_notifier); +static struct pm_qos_constraints mfc_tput_max_constraints = { + .list = PLIST_HEAD_INIT(mfc_tput_max_constraints.list), + .target_value = PM_QOS_MFC_THROUGHPUT_MAX_DEFAULT_VALUE, + .default_value = PM_QOS_MFC_THROUGHPUT_MAX_DEFAULT_VALUE, + .type = PM_QOS_MIN, + .notifiers = &mfc_throughput_max_notifier, +}; +static struct pm_qos_object mfc_throughput_max_pm_qos = { + .constraints = &mfc_tput_max_constraints, + .name = "mfc_throughput_max", +}; + static struct pm_qos_object *pm_qos_array[] = { &null_pm_qos, &cpu_dma_pm_qos, @@ -470,6 +496,8 @@ static struct pm_qos_object *pm_qos_array[] = { &score_throughput_max_pm_qos, &fsys0_throughput_max_pm_qos, #endif + &mfc_throughput_pm_qos, + &mfc_throughput_max_pm_qos, }; static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf, -- 2.20.1