coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
speedstep.h File Reference
#include <stdint.h>
Include dependency graph for speedstep.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  sst_state_t
 
struct  sst_params_t
 
struct  sst_table_t
 

Macros

#define SPEEDSTEP_APIC_MAGIC   0xACAC
 
#define PMB0_BASE   0x510
 
#define PMB1_BASE   0x800
 
#define MSR_THERM2_CTL   0x19D
 
#define MSR_EBC_FREQUENCY_ID   0x2c
 
#define MSR_FSB_FREQ   0xcd
 
#define MSR_FSB_CLOCK_VCC   0xce
 
#define MSR_PKG_CST_CONFIG_CONTROL   0xe2
 
#define MSR_PMG_IO_BASE_ADDR   0xe3
 
#define MSR_PMG_IO_CAPTURE_ADDR   0xe4
 
#define MSR_EXTENDED_CONFIG   0xee
 
#define FREQ_LIMIT_RATIO   0x1AD
 
#define SPEEDSTEP_RATIO_SHIFT   8
 
#define SPEEDSTEP_RATIO_DYNFSB_SHIFT   (7 + SPEEDSTEP_RATIO_SHIFT)
 
#define SPEEDSTEP_RATIO_DYNFSB   (1 << SPEEDSTEP_RATIO_DYNFSB_SHIFT)
 
#define SPEEDSTEP_RATIO_NONINT_SHIFT   (6 + SPEEDSTEP_RATIO_SHIFT)
 
#define SPEEDSTEP_RATIO_NONINT   (1 << SPEEDSTEP_RATIO_NONINT_SHIFT)
 
#define SPEEDSTEP_RATIO_VALUE_MASK   (0x1f << SPEEDSTEP_RATIO_SHIFT)
 
#define SPEEDSTEP_VID_MASK   0x3f
 
#define SPEEDSTEP_STATE_FROM_MSR(val, mask)
 
#define SPEEDSTEP_ENCODE_STATE(state)
 
#define SPEEDSTEP_DOUBLE_RATIO(state)
 
#define SPEEDSTEP_MAX_NORMAL_STATES   5
 
#define SPEEDSTEP_MAX_STATES   (SPEEDSTEP_MAX_NORMAL_STATES + 2)
 
#define SPEEDSTEP_MAX_POWER_YONAH   31000
 
#define SPEEDSTEP_MIN_POWER_YONAH   13100
 
#define SPEEDSTEP_MAX_POWER_MEROM   35000
 
#define SPEEDSTEP_MIN_POWER_MEROM   25000
 
#define SPEEDSTEP_SLFM_POWER_MEROM   12000
 
#define SPEEDSTEP_MAX_POWER_PENRYN   35000
 
#define SPEEDSTEP_MIN_POWER_PENRYN   15000
 
#define SPEEDSTEP_SLFM_POWER_PENRYN   12000
 

Functions

void speedstep_gen_pstates (sst_table_t *)
 Generate full p-states table from processor parameters. More...
 

Macro Definition Documentation

◆ FREQ_LIMIT_RATIO

#define FREQ_LIMIT_RATIO   0x1AD

Definition at line 30 of file speedstep.h.

◆ MSR_EBC_FREQUENCY_ID

#define MSR_EBC_FREQUENCY_ID   0x2c

Definition at line 23 of file speedstep.h.

◆ MSR_EXTENDED_CONFIG

#define MSR_EXTENDED_CONFIG   0xee

Definition at line 29 of file speedstep.h.

◆ MSR_FSB_CLOCK_VCC

#define MSR_FSB_CLOCK_VCC   0xce

Definition at line 25 of file speedstep.h.

◆ MSR_FSB_FREQ

#define MSR_FSB_FREQ   0xcd

Definition at line 24 of file speedstep.h.

◆ MSR_PKG_CST_CONFIG_CONTROL

#define MSR_PKG_CST_CONFIG_CONTROL   0xe2

Definition at line 26 of file speedstep.h.

◆ MSR_PMG_IO_BASE_ADDR

#define MSR_PMG_IO_BASE_ADDR   0xe3

Definition at line 27 of file speedstep.h.

◆ MSR_PMG_IO_CAPTURE_ADDR

#define MSR_PMG_IO_CAPTURE_ADDR   0xe4

Definition at line 28 of file speedstep.h.

◆ MSR_THERM2_CTL

#define MSR_THERM2_CTL   0x19D

Definition at line 22 of file speedstep.h.

◆ PMB0_BASE

#define PMB0_BASE   0x510

Definition at line 14 of file speedstep.h.

◆ PMB1_BASE

#define PMB1_BASE   0x800

Definition at line 19 of file speedstep.h.

◆ SPEEDSTEP_APIC_MAGIC

#define SPEEDSTEP_APIC_MAGIC   0xACAC

Definition at line 9 of file speedstep.h.

◆ SPEEDSTEP_DOUBLE_RATIO

#define SPEEDSTEP_DOUBLE_RATIO (   state)
Value:
( \
((uint8_t)(state).ratio * 2) + (state).nonint)
state
Definition: raminit.c:1787
unsigned char uint8_t
Definition: stdint.h:8

Definition at line 63 of file speedstep.h.

◆ SPEEDSTEP_ENCODE_STATE

#define SPEEDSTEP_ENCODE_STATE (   state)
Value:
( \
uint16_t vid
Definition: tis.c:15
#define SPEEDSTEP_RATIO_SHIFT
Definition: speedstep.h:41
#define SPEEDSTEP_RATIO_NONINT_SHIFT
Definition: speedstep.h:44
#define SPEEDSTEP_RATIO_DYNFSB_SHIFT
Definition: speedstep.h:42
#define SPEEDSTEP_VID_MASK
Definition: speedstep.h:47
unsigned short uint16_t
Definition: stdint.h:11

Definition at line 58 of file speedstep.h.

◆ SPEEDSTEP_MAX_NORMAL_STATES

#define SPEEDSTEP_MAX_NORMAL_STATES   5

Definition at line 76 of file speedstep.h.

◆ SPEEDSTEP_MAX_POWER_MEROM

#define SPEEDSTEP_MAX_POWER_MEROM   35000

Definition at line 88 of file speedstep.h.

◆ SPEEDSTEP_MAX_POWER_PENRYN

#define SPEEDSTEP_MAX_POWER_PENRYN   35000

Definition at line 91 of file speedstep.h.

◆ SPEEDSTEP_MAX_POWER_YONAH

#define SPEEDSTEP_MAX_POWER_YONAH   31000

Definition at line 86 of file speedstep.h.

◆ SPEEDSTEP_MAX_STATES

#define SPEEDSTEP_MAX_STATES   (SPEEDSTEP_MAX_NORMAL_STATES + 2)

Definition at line 77 of file speedstep.h.

◆ SPEEDSTEP_MIN_POWER_MEROM

#define SPEEDSTEP_MIN_POWER_MEROM   25000

Definition at line 89 of file speedstep.h.

◆ SPEEDSTEP_MIN_POWER_PENRYN

#define SPEEDSTEP_MIN_POWER_PENRYN   15000

Definition at line 92 of file speedstep.h.

◆ SPEEDSTEP_MIN_POWER_YONAH

#define SPEEDSTEP_MIN_POWER_YONAH   13100

Definition at line 87 of file speedstep.h.

◆ SPEEDSTEP_RATIO_DYNFSB

#define SPEEDSTEP_RATIO_DYNFSB   (1 << SPEEDSTEP_RATIO_DYNFSB_SHIFT)

Definition at line 43 of file speedstep.h.

◆ SPEEDSTEP_RATIO_DYNFSB_SHIFT

#define SPEEDSTEP_RATIO_DYNFSB_SHIFT   (7 + SPEEDSTEP_RATIO_SHIFT)

Definition at line 42 of file speedstep.h.

◆ SPEEDSTEP_RATIO_NONINT

#define SPEEDSTEP_RATIO_NONINT   (1 << SPEEDSTEP_RATIO_NONINT_SHIFT)

Definition at line 45 of file speedstep.h.

◆ SPEEDSTEP_RATIO_NONINT_SHIFT

#define SPEEDSTEP_RATIO_NONINT_SHIFT   (6 + SPEEDSTEP_RATIO_SHIFT)

Definition at line 44 of file speedstep.h.

◆ SPEEDSTEP_RATIO_SHIFT

#define SPEEDSTEP_RATIO_SHIFT   8

Definition at line 41 of file speedstep.h.

◆ SPEEDSTEP_RATIO_VALUE_MASK

#define SPEEDSTEP_RATIO_VALUE_MASK   (0x1f << SPEEDSTEP_RATIO_SHIFT)

Definition at line 46 of file speedstep.h.

◆ SPEEDSTEP_SLFM_POWER_MEROM

#define SPEEDSTEP_SLFM_POWER_MEROM   12000

Definition at line 90 of file speedstep.h.

◆ SPEEDSTEP_SLFM_POWER_PENRYN

#define SPEEDSTEP_SLFM_POWER_PENRYN   12000

Definition at line 93 of file speedstep.h.

◆ SPEEDSTEP_STATE_FROM_MSR

#define SPEEDSTEP_STATE_FROM_MSR (   val,
  mask 
)
Value:
0, /* dynfsb won't be read. */ \
((val & mask) & SPEEDSTEP_RATIO_NONINT) ? 1 : 0, \
0, /* not turbo by default */ \
0, /* not slfm by default */ \
0 /* power is hardcoded in software. */ \
})
static const int mask[4]
Definition: gpio.c:308
#define SPEEDSTEP_RATIO_NONINT
Definition: speedstep.h:45
#define SPEEDSTEP_RATIO_VALUE_MASK
Definition: speedstep.h:46
u8 val
Definition: sys.c:300

Definition at line 48 of file speedstep.h.

◆ SPEEDSTEP_VID_MASK

#define SPEEDSTEP_VID_MASK   0x3f

Definition at line 47 of file speedstep.h.

Function Documentation

◆ speedstep_gen_pstates()

void speedstep_gen_pstates ( sst_table_t *const  table)

Generate full p-states table from processor parameters.

This is generic code and should work at least for Merom and Penryn processors. It is used to generate ACPI tables and configure EMTTM.

Definition at line 101 of file speedstep.c.

References BIOS_INFO, sst_table_t::num_states, params, power, printk, SPEEDSTEP_DOUBLE_RATIO, speedstep_get_limits(), SPEEDSTEP_MAX_NORMAL_STATES, sst_table_t::states, vid, and sst_state_t::vid.

Referenced by configure_emttm_tables(), and generate_cpu_entries().

Here is the call graph for this function:
Here is the caller graph for this function: