PM_QOS_RESERVED = 0,
PM_QOS_CPU_DMA_LATENCY,
PM_QOS_NETWORK_LATENCY,
+ PM_QOS_CLUSTER0_FREQ_MIN,
+ PM_QOS_CLUSTER0_FREQ_MAX,
+ PM_QOS_CLUSTER1_FREQ_MIN,
+ PM_QOS_CLUSTER1_FREQ_MAX,
+ PM_QOS_CPU_ONLINE_MIN,
+ PM_QOS_CPU_ONLINE_MAX,
PM_QOS_DEVICE_THROUGHPUT,
PM_QOS_INTCAM_THROUGHPUT,
#ifdef CONFIG_ARM_EXYNOS_DEVFREQ_DEBUG
#define PM_QOS_LATENCY_TOLERANCE_DEFAULT_VALUE 0
#define PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT (-1)
#define PM_QOS_LATENCY_ANY ((s32)(~(__u32)0 >> 1))
+#define PM_QOS_CPU_FREQ_MIN_DEFAULT_VALUE 0
+#define PM_QOS_CPU_FREQ_MAX_DEFAULT_VALUE INT_MAX
+#define PM_QOS_CPU_ONLINE_MIN_DEFAULT_VALUE 1
+#define PM_QOS_CPU_ONLINE_MAX_DEFAULT_VALUE NR_CPUS
#define PM_QOS_FLAG_NO_POWER_OFF (1 << 0)
#define PM_QOS_FLAG_REMOTE_WAKEUP (1 << 1)
.name = "network_latency",
};
-
static BLOCKING_NOTIFIER_HEAD(device_throughput_notifier);
static struct pm_qos_constraints device_tput_constraints = {
.list = PLIST_HEAD_INIT(device_tput_constraints.list),
.name = "memory_bandwidth",
};
+static BLOCKING_NOTIFIER_HEAD(cluster1_freq_min_notifier);
+static struct pm_qos_constraints cluster1_freq_min_constraints = {
+ .list = PLIST_HEAD_INIT(cluster1_freq_min_constraints.list),
+ .target_value = PM_QOS_CPU_FREQ_MIN_DEFAULT_VALUE,
+ .default_value = PM_QOS_CPU_FREQ_MIN_DEFAULT_VALUE,
+ .type = PM_QOS_MAX,
+ .notifiers = &cluster1_freq_min_notifier,
+};
+static struct pm_qos_object cluster1_freq_min_pm_qos = {
+ .constraints = &cluster1_freq_min_constraints,
+ .name = "cluster1_freq_min",
+};
+
+static BLOCKING_NOTIFIER_HEAD(cluster1_freq_max_notifier);
+static struct pm_qos_constraints cluster1_freq_max_constraints = {
+ .list = PLIST_HEAD_INIT(cluster1_freq_max_constraints.list),
+ .target_value = PM_QOS_CPU_FREQ_MAX_DEFAULT_VALUE,
+ .default_value = PM_QOS_CPU_FREQ_MAX_DEFAULT_VALUE,
+ .type = PM_QOS_MIN,
+ .notifiers = &cluster1_freq_max_notifier,
+};
+static struct pm_qos_object cluster1_freq_max_pm_qos = {
+ .constraints = &cluster1_freq_max_constraints,
+ .name = "cluster1_freq_max",
+};
+
+static BLOCKING_NOTIFIER_HEAD(cluster0_freq_min_notifier);
+static struct pm_qos_constraints cluster0_freq_min_constraints = {
+ .list = PLIST_HEAD_INIT(cluster0_freq_min_constraints.list),
+ .target_value = PM_QOS_CPU_FREQ_MIN_DEFAULT_VALUE,
+ .default_value = PM_QOS_CPU_FREQ_MIN_DEFAULT_VALUE,
+ .type = PM_QOS_MAX,
+ .notifiers = &cluster0_freq_min_notifier,
+};
+static struct pm_qos_object cluster0_freq_min_pm_qos = {
+ .constraints = &cluster0_freq_min_constraints,
+ .name = "cluster0_freq_min",
+};
+
+static BLOCKING_NOTIFIER_HEAD(cluster0_freq_max_notifier);
+static struct pm_qos_constraints cluster0_freq_max_constraints = {
+ .list = PLIST_HEAD_INIT(cluster0_freq_max_constraints.list),
+ .target_value = PM_QOS_CPU_FREQ_MAX_DEFAULT_VALUE,
+ .default_value = PM_QOS_CPU_FREQ_MAX_DEFAULT_VALUE,
+ .type = PM_QOS_MIN,
+ .notifiers = &cluster0_freq_max_notifier,
+};
+static struct pm_qos_object cluster0_freq_max_pm_qos = {
+ .constraints = &cluster0_freq_max_constraints,
+ .name = "cluster0_freq_max",
+};
+
+static BLOCKING_NOTIFIER_HEAD(cpu_online_min_notifier);
+static struct pm_qos_constraints cpu_online_min_constraints = {
+ .list = PLIST_HEAD_INIT(cpu_online_min_constraints.list),
+ .target_value = PM_QOS_CPU_ONLINE_MIN_DEFAULT_VALUE,
+ .default_value = PM_QOS_CPU_ONLINE_MIN_DEFAULT_VALUE,
+ .type = PM_QOS_MAX,
+ .notifiers = &cpu_online_min_notifier,
+};
+static struct pm_qos_object cpu_online_min_pm_qos = {
+ .constraints = &cpu_online_min_constraints,
+ .name = "cpu_online_min",
+};
+
+static BLOCKING_NOTIFIER_HEAD(cpu_online_max_notifier);
+static struct pm_qos_constraints cpu_online_max_constraints = {
+ .list = PLIST_HEAD_INIT(cpu_online_max_constraints.list),
+ .target_value = PM_QOS_CPU_ONLINE_MAX_DEFAULT_VALUE,
+ .default_value = PM_QOS_CPU_ONLINE_MAX_DEFAULT_VALUE,
+ .type = PM_QOS_MIN,
+ .notifiers = &cpu_online_max_notifier,
+};
+static struct pm_qos_object cpu_online_max_pm_qos = {
+ .constraints = &cpu_online_max_constraints,
+ .name = "cpu_online_max",
+};
static BLOCKING_NOTIFIER_HEAD(display_throughput_notifier);
static struct pm_qos_constraints display_tput_constraints = {
&null_pm_qos,
&cpu_dma_pm_qos,
&network_lat_pm_qos,
+ &cluster0_freq_min_pm_qos,
+ &cluster0_freq_max_pm_qos,
+ &cluster1_freq_min_pm_qos,
+ &cluster1_freq_max_pm_qos,
+ &cpu_online_min_pm_qos,
+ &cpu_online_max_pm_qos,
&device_throughput_pm_qos,
&intcam_throughput_pm_qos,
#ifdef CONFIG_ARM_EXYNOS_DEVFREQ_DEBUG