haswell: use #defines for constants in udelay.c

Change the hard coded values in udelay.c to use the #defines
for MSRs and BCLK.

Change-Id: I2bbeb0b478d2e3ca155e8f82006df86c29a4f018
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/2629
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Aaron Durbin 2012-11-12 10:14:55 -06:00 committed by Ronald G. Minnich
parent f6933a6f56
commit b9adf7ba4b
1 changed files with 4 additions and 7 deletions

View File

@ -21,10 +21,7 @@
#include <stdint.h> #include <stdint.h>
#include <cpu/x86/tsc.h> #include <cpu/x86/tsc.h>
#include <cpu/x86/msr.h> #include <cpu/x86/msr.h>
#include "cpu/intel/haswell/haswell.h"
/**
* Intel SandyBridge/IvyBridge CPUs always run the TSC at BCLK=100MHz
*/
/* Simple 32- to 64-bit multiplication. Uses 16-bit words to avoid overflow. */ /* Simple 32- to 64-bit multiplication. Uses 16-bit words to avoid overflow. */
static inline void multiply_to_tsc(tsc_t *const tsc, const u32 a, const u32 b) static inline void multiply_to_tsc(tsc_t *const tsc, const u32 a, const u32 b)
@ -42,13 +39,13 @@ void udelay(u32 us)
u32 dword; u32 dword;
tsc_t tsc, tsc1, tscd; tsc_t tsc, tsc1, tscd;
msr_t msr; msr_t msr;
u32 fsb = 100, divisor; u32 divisor;
u32 d; /* ticks per us */ u32 d; /* ticks per us */
msr = rdmsr(0xce); msr = rdmsr(MSR_PLATFORM_INFO);
divisor = (msr.lo >> 8) & 0xff; divisor = (msr.lo >> 8) & 0xff;
d = fsb * divisor; /* On Core/Core2 this is divided by 4 */ d = HASWELL_BCLK * divisor;
multiply_to_tsc(&tscd, us, d); multiply_to_tsc(&tscd, us, d);
tsc1 = rdtsc(); tsc1 = rdtsc();