/* * CPPC (Collaborative Processor Performance Control) methods used * by CPUfreq drivers. * * (C) Copyright 2014, 2015 Linaro Ltd. * Author: Ashwin Chaugule <ashwin.chaugule@linaro.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. */ #ifndef _CPPC_ACPI_H #define _CPPC_ACPI_H #include <linux/acpi.h> #include <linux/types.h> #include <acpi/pcc.h> #include <acpi/processor.h> /* Only support CPPCv2 for now. */ #define CPPC_NUM_ENT 21 #define CPPC_REV 2 #define PCC_CMD_COMPLETE_MASK (1 << 0) #define PCC_ERROR_MASK (1 << 2) #define MAX_CPC_REG_ENT 19 /* CPPC specific PCC commands. */ #define CMD_READ 0 #define CMD_WRITE 1 /* Each register has the folowing format. */ struct cpc_reg { u8 descriptor; u16 length; u8 space_id; u8 bit_width; u8 bit_offset; u8 access_width; u64 __iomem address; } __packed; /* * Each entry in the CPC table is either * of type ACPI_TYPE_BUFFER or * ACPI_TYPE_INTEGER. */ struct cpc_register_resource { acpi_object_type type; u64 __iomem *sys_mem_vaddr; union { struct cpc_reg reg; u64 int_value; } cpc_entry; }; /* Container to hold the CPC details for each CPU */ struct cpc_desc { int num_entries; int version; int cpu_id; int write_cmd_status; int write_cmd_id; struct cpc_register_resource cpc_regs[MAX_CPC_REG_ENT]; struct acpi_psd_package domain_info; struct kobject kobj; }; /* These are indexes into the per-cpu cpc_regs[]. Order is important. */ enum cppc_regs { HIGHEST_PERF, NOMINAL_PERF, LOW_NON_LINEAR_PERF, LOWEST_PERF, GUARANTEED_PERF, DESIRED_PERF, MIN_PERF, MAX_PERF, PERF_REDUC_TOLERANCE, TIME_WINDOW, CTR_WRAP_TIME, REFERENCE_CTR, DELIVERED_CTR, PERF_LIMITED, ENABLE, AUTO_SEL_ENABLE, AUTO_ACT_WINDOW, ENERGY_PERF, REFERENCE_PERF, }; /* * Categorization of registers as described * in the ACPI v.5.1 spec. * XXX: Only filling up ones which are used by governors * today. */ struct cppc_perf_caps { u32 highest_perf; u32 nominal_perf; u32 lowest_perf; u32 lowest_nonlinear_perf; }; struct cppc_perf_ctrls { u32 max_perf; u32 min_perf; u32 desired_perf; }; struct cppc_perf_fb_ctrs { u64 reference; u64 delivered; u64 reference_perf; u64 wraparound_time; }; /* Per CPU container for runtime CPPC management. */ struct cppc_cpudata { int cpu; struct cppc_perf_caps perf_caps; struct cppc_perf_ctrls perf_ctrls; struct cppc_perf_fb_ctrs perf_fb_ctrs; struct cpufreq_policy *cur_policy; unsigned int shared_type; cpumask_var_t shared_cpu_map; }; extern int cppc_get_perf_ctrs(int cpu, struct cppc_perf_fb_ctrs *perf_fb_ctrs); extern int cppc_set_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls); extern int cppc_get_perf_caps(int cpu, struct cppc_perf_caps *caps); extern int acpi_get_psd_map(struct cppc_cpudata **); extern unsigned int cppc_get_transition_latency(int cpu); #endif /* _CPPC_ACPI_H*/
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
platform | Folder | 0755 |
|
|
acbuffer.h | File | 10.36 KB | 0644 |
|
acconfig.h | File | 8.69 KB | 0644 |
|
acexcep.h | File | 17.79 KB | 0644 |
|
acnames.h | File | 3.78 KB | 0644 |
|
acoutput.h | File | 17.69 KB | 0644 |
|
acpi.h | File | 3.07 KB | 0644 |
|
acpi_bus.h | File | 18.99 KB | 0644 |
|
acpi_drivers.h | File | 4.08 KB | 0644 |
|
acpi_io.h | File | 713 B | 0644 |
|
acpi_lpat.h | File | 1.55 KB | 0644 |
|
acpi_numa.h | File | 623 B | 0644 |
|
acpiosxf.h | File | 12.4 KB | 0644 |
|
acpixf.h | File | 31.5 KB | 0644 |
|
acrestyp.h | File | 20.57 KB | 0644 |
|
actbl.h | File | 20 KB | 0644 |
|
actbl1.h | File | 44.48 KB | 0644 |
|
actbl2.h | File | 42.98 KB | 0644 |
|
actbl3.h | File | 21.63 KB | 0644 |
|
actypes.h | File | 42.59 KB | 0644 |
|
acuuid.h | File | 4.17 KB | 0644 |
|
apei.h | File | 1.34 KB | 0644 |
|
button.h | File | 621 B | 0644 |
|
cppc_acpi.h | File | 2.93 KB | 0644 |
|
ghes.h | File | 2.88 KB | 0644 |
|
hed.h | File | 371 B | 0644 |
|
pcc.h | File | 816 B | 0644 |
|
pdc_intel.h | File | 1.02 KB | 0644 |
|
processor.h | File | 11.11 KB | 0644 |
|
reboot.h | File | 201 B | 0644 |
|
video.h | File | 2.8 KB | 0644 |
|