95 return msr.
lo & 0xffff;
118 for (
int i = 0; i <
ARRAY_SIZE(acpi_cstates); i++) {
129 { 100, 1000, 0, 0x00, 0 },
130 { 94, 940, 0, 0x1f, 0 },
131 { 88, 880, 0, 0x1e, 0 },
132 { 82, 820, 0, 0x1d, 0 },
133 { 75, 760, 0, 0x1c, 0 },
134 { 69, 700, 0, 0x1b, 0 },
135 { 63, 640, 0, 0x1a, 0 },
136 { 57, 580, 0, 0x19, 0 },
137 { 50, 520, 0, 0x18, 0 },
138 { 44, 460, 0, 0x17, 0 },
139 { 38, 400, 0, 0x16, 0 },
140 { 32, 340, 0, 0x15, 0 },
141 { 25, 280, 0, 0x14, 0 },
142 { 19, 220, 0, 0x13, 0 },
143 { 13, 160, 0, 0x12, 0 },
147 { 100, 1000, 0, 0x00, 0 },
148 { 88, 875, 0, 0x1f, 0 },
149 { 75, 750, 0, 0x1e, 0 },
150 { 63, 625, 0, 0x1d, 0 },
151 { 50, 500, 0, 0x1c, 0 },
152 { 38, 375, 0, 0x1b, 0 },
153 { 25, 250, 0, 0x1a, 0 },
154 { 13, 125, 0, 0x19, 0 },
191 m = (110000 - ((p1_ratio - ratio) * 625)) / 11;
194 power = ((ratio * 100000 / p1_ratio) / 100);
195 power *= (
m / 100) * (tdp / 1000);
203 int ratio_min, ratio_max, ratio_turbo, ratio_step;
204 int coord_type, power_max, power_unit, num_entries;
205 int ratio,
power, clock, clock_max;
217 ratio_min = (msr.
hi >> (40-32)) & 0xff;
223 ratio_max = msr.
lo & 0xff;
226 ratio_max = (msr.
lo >> 8) & 0xff;
232 power_unit = 2 << ((msr.
lo & 0xf) - 1);
234 power_max = ((msr.
lo & 0x7fff) / power_unit) * 1000;
250 num_entries = (ratio_max - ratio_min) / ratio_step;
262 ratio_turbo = msr.
lo & 0xff;
287 for (ratio = ratio_min + ((num_entries - 1) * ratio_step);
288 ratio >= ratio_min; ratio -= ratio_step) {
312 int numcpus = totalcores/cores_per_package;
315 numcpus, cores_per_package);
317 for (cpuID = 1; cpuID <= numcpus; cpuID++) {
318 for (coreID = 1; coreID <= cores_per_package; coreID++) {
321 (cpuID-1)*cores_per_package+coreID-1, 0, 0);
325 cpuID-1, cores_per_package);
332 cpuID-1, cores_per_package);
347 CHIP_NAME(
"Intel SandyBridge/IvyBridge CPU")
void acpigen_pop_len(void)
void acpigen_write_TSS_package(int entries, acpi_tstate_t *tstate_list)
void acpigen_write_empty_PTC(void)
void acpigen_write_PPC_NVS(void)
void acpigen_write_CST_package(const acpi_cstate_t *cstate, int nentries)
void acpigen_write_PSS_package(u32 coreFreq, u32 power, u32 transLat, u32 busmLat, u32 control, u32 status)
void acpigen_write_TPC(const char *gnvs_tpc_limit)
void acpigen_write_empty_PCT(void)
void acpigen_write_processor(u8 cpuindex, u32 pblock_addr, u8 pblock_len)
char * acpigen_write_package(int nr_el)
void acpigen_write_processor_package(const char *const name, const unsigned int first_core, const unsigned int core_count)
void acpigen_write_processor_cnot(const unsigned int number_of_cores)
void acpigen_write_PSD_package(u32 domain, u32 numprocs, PSD_coord coordtype)
void acpigen_write_TSD_package(u32 domain, u32 numprocs, PSD_coord coordtype)
void acpigen_write_name(const char *name)
static unsigned int cpuid_eax(unsigned int op)
#define printk(level,...)
void generate_cpu_entries(const struct device *device)
#define SPEEDSTEP_APIC_MAGIC
#define MSR_MISC_PWR_MGMT
#define PSS_LATENCY_BUSMASTER
#define MSR_PKG_POWER_SKU
#define MSR_TURBO_RATIO_LIMIT
#define MSR_CORE_THREAD_COUNT
#define MSR_PKG_POWER_SKU_UNIT
#define PSS_LATENCY_TRANSITION
int cpu_config_tdp_levels(void)
#define MSR_CONFIG_TDP_NOMINAL
#define MISC_PWR_MGMT_EIST_HW_DIS
struct chip_operations cpu_intel_model_206ax_ops
static int calculate_power(int tdp, int p1_ratio, int ratio)
static acpi_tstate_t tss_table_fine[]
static const acpi_cstate_t cstate_map[]
static void generate_C_state_entries(void)
static void generate_T_state_entries(int core, int cores_per_package)
static void generate_P_state_entries(int core, int cores_per_package)
static acpi_tstate_t tss_table_coarse[]
static int get_logical_cores_per_package(void)
struct device * dev_find_lapic(unsigned int apic_id)
Given a Local APIC ID, find the device structure.
#define MSR_PLATFORM_INFO
#define ACPI_FFIXEDHW_FLAG_HW_COORD
#define ACPI_FFIXEDHW_VENDOR_INTEL
#define ACPI_FFIXEDHW_CLASS_MWAIT
#define ACPI_ADDRESS_SPACE_FIXED
static __always_inline msr_t rdmsr(unsigned int index)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
static const struct pnpconfig power[]
DEVTREE_CONST void * chip_info
#define m(clkreg, src_bits, pmcreg, dst_bits)
int get_turbo_state(void)