37 { 100, 1000, 0, 0x00, 0 },
38 { 94, 940, 0, 0x1f, 0 },
39 { 88, 880, 0, 0x1e, 0 },
40 { 82, 820, 0, 0x1d, 0 },
41 { 75, 760, 0, 0x1c, 0 },
42 { 69, 700, 0, 0x1b, 0 },
43 { 63, 640, 0, 0x1a, 0 },
44 { 57, 580, 0, 0x19, 0 },
45 { 50, 520, 0, 0x18, 0 },
46 { 44, 460, 0, 0x17, 0 },
47 { 38, 400, 0, 0x16, 0 },
48 { 32, 340, 0, 0x15, 0 },
49 { 25, 280, 0, 0x14, 0 },
50 { 19, 220, 0, 0x13, 0 },
51 { 13, 160, 0, 0x12, 0 },
55 { 100, 1000, 0, 0x00, 0 },
56 { 88, 875, 0, 0x1f, 0 },
57 { 75, 750, 0, 0x1e, 0 },
58 { 63, 625, 0, 0x1d, 0 },
59 { 50, 500, 0, 0x1c, 0 },
60 { 38, 375, 0, 0x1b, 0 },
61 { 25, 250, 0, 0x1a, 0 },
62 { 13, 125, 0, 0x19, 0 },
99 m = (110000 - ((p1_ratio - ratio) * 625)) / 11;
102 power = ((ratio * 100000 / p1_ratio) / 100);
103 power *= (
m / 100) * (tdp / 1000);
111 int ratio_min, ratio_max, ratio_turbo, ratio_step;
112 int coord_type, power_max, num_entries;
113 int ratio,
power, clock, clock_max;
125 ratio_min = (msr.
hi >> (40-32)) & 0xff;
128 ratio_max = (msr.
lo >> 8) & 0xff;
149 num_entries = (ratio_max - ratio_min) / ratio_step;
161 ratio_turbo = msr.
lo & 0xff;
186 for (ratio = ratio_min + ((num_entries - 1) * ratio_step);
187 ratio >= ratio_min; ratio -= ratio_step) {
211 int numcpus = totalcores/cores_per_package;
214 numcpus, cores_per_package);
216 for (cpuID = 1; cpuID <= numcpus; cpuID++) {
217 for (coreID = 1; coreID <= cores_per_package; coreID++) {
220 (cpuID-1)*cores_per_package+coreID-1, 0, 0);
224 cpuID-1, cores_per_package);
231 cpuID-1, cores_per_package);
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_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)
static struct cpuid_result cpuid_ext(int op, unsigned int ecx)
static void get_fms(struct cpuinfo_x86 *c, uint32_t tfms)
#define printk(level,...)
void generate_cpu_entries(const struct device *device)
#define MSR_MISC_PWR_MGMT
#define PSS_LATENCY_BUSMASTER
#define MSR_TURBO_RATIO_LIMIT
#define PSS_LATENCY_TRANSITION
#define MISC_PWR_MGMT_EIST_HW_DIS
static int calculate_power(int tdp, int p1_ratio, int ratio)
static acpi_tstate_t tss_table_fine[]
struct chip_operations cpu_intel_model_2065x_ops
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_cores_per_package(void)
#define MSR_PLATFORM_INFO
static __always_inline msr_t rdmsr(unsigned int index)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
static const struct pnpconfig power[]
#define m(clkreg, src_bits, pmcreg, dst_bits)
#define c(value, pmcreg, dst_bits)
int get_turbo_state(void)