u32 numps; /* number of p-states */
u32 batps; /* number of p-states supported on battery */
/* these values are constant when the PSB is used to determine *vid/fidpairings,butaremodifiedduringthe->target()call
* when ACPI is used */
u32 rvo; /* ramp voltage offset */
u32 irt; /* isochronous relief time */
u32 vidmvs; /* usable value calculated from mvs */
u32 vstable; /* voltage stabilization time, units 20 us */
u32 plllock; /* pll lock time, units 1 us */
u32 exttype; /* extended interface = 1 */
/* keep track of the current fid / vid or pstate */
u32 currvid;
u32 currfid;
/* the powernow_table includes all frequency and vid/fid pairings: *fidarethelower8bitsoftheindex,vidaretheupper8bits.
* frequency is in kHz */ struct cpufreq_frequency_table *powernow_table;
/* the acpi table needs to be kept. it's only available if ACPI was
* used to determine valid frequency/vid/fid states */ struct acpi_processor_performance acpi_data;
/* we need to keep track of associated cores, but let cpufreq *handlehotplugevents-sojustpointatcpufreqpol->cpus
* structure */ struct cpumask *available_cores;
};
/* Model Specific Registers for p-state transitions. MSRs are 64-bit. For */ /* writes (wrmsr - opcode 0f 30), the register number is placed in ecx, and */ /* the value to write is placed in edx:eax. For reads (rdmsr - opcode 0f 32), */ /* the register number is placed in ecx, and the data is returned in edx:eax. */
/* Field definitions within the FID VID Low Control MSR : */ #define MSR_C_LO_INIT_FID_VID 0x00010000 #define MSR_C_LO_NEW_VID 0x00003f00 #define MSR_C_LO_NEW_FID 0x0000003f #define MSR_C_LO_VID_SHIFT 8
/* Field definitions within the FID VID High Control MSR : */ #define MSR_C_HI_STP_GNT_TO 0x000fffff
/* Field definitions within the FID VID Low Status MSR : */ #define MSR_S_LO_CHANGE_PENDING 0x80000000 /* cleared when completed */ #define MSR_S_LO_MAX_RAMP_VID 0x3f000000 #define MSR_S_LO_MAX_FID 0x003f0000 #define MSR_S_LO_START_FID 0x00003f00 #define MSR_S_LO_CURRENT_FID 0x0000003f
/* Field definitions within the FID VID High Status MSR : */ #define MSR_S_HI_MIN_WORKING_VID 0x3f000000 #define MSR_S_HI_MAX_WORKING_VID 0x003f0000 #define MSR_S_HI_START_VID 0x00003f00 #define MSR_S_HI_CURRENT_VID 0x0000003f #define MSR_C_HI_STP_GNT_BENIGN 0x00000001
/* fids (frequency identifiers) are arranged in 2 tables - lo and hi */ #define LO_FID_TABLE_TOP 7/* fid values marking the boundary */ #define HI_FID_TABLE_BOTTOM 8/* between the low and high tables */
#define MIN_FREQ_RESOLUTION 200/* fids jump by 2 matching freq jumps by 200 */
#define MAX_FID 0x2a /* Spec only gives FID values as far as 5 GHz */ #define LEAST_VID 0x3e /* Lowest (numerically highest) useful vid value */
#define MIN_FREQ 800/* Min and max freqs, per spec */ #define MAX_FREQ 5000
#define INVALID_FID_MASK 0xffffffc0 /* not a valid fid if these bits are set */ #define INVALID_VID_MASK 0xffffffc0 /* not a valid vid if these bits are set */
#define VID_OFF 0x3f
#define STOP_GRANT_5NS 1/* min poss memory access latency for voltage change */
#define PLL_LOCK_CONVERSION (1000/5) /* ms to ns, then divide by clock period */
#define MAXIMUM_VID_STEPS 1/* Current cpus only allow a single step of 25mV */ #define VST_UNITS_20US 20/* Voltage Stabilization Time is in units of 20us */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.