From fc135688befe7a11d4880474791a19079f736dd8 Mon Sep 17 00:00:00 2001 From: "Ronald G. Minnich" Date: Wed, 24 Oct 2001 19:13:21 +0000 Subject: [PATCH] Working changes for the technoloand sbc 710. MTRRs can now be configured as either ROM starting at 0xc0000 or starting at 0xf0000. For the 0xf0000 case, 0xc0000 to 0xeffff is configured as FB, i.e. non-cacheable. --- src/cpu/p6/mtrr.c | 42 ++++++++++++++++++++++++++ src/mainboard/technoland/sbc710/Config | 1 + 2 files changed, 43 insertions(+) diff --git a/src/cpu/p6/mtrr.c b/src/cpu/p6/mtrr.c index 46188a42b5..ae4db039a8 100644 --- a/src/cpu/p6/mtrr.c +++ b/src/cpu/p6/mtrr.c @@ -68,6 +68,47 @@ static unsigned int mtrr_msr[] = { #define ROM MTRR_TYPE_RAM #endif /* MEMORY_HOLE */ +#ifdef MTRR_ONLY_TOP_64K_FLASH + +// This is for boards that only support flash in low memory at 0xf0000 +// and above, such as the technoland sbc 710. This type of board +// is so common that we put it here instead of in the sbc710 mainboard.c + +static unsigned char fixed_mtrr_values[][4] = { + /* MTRRfix64K_00000_MSR, defines memory range from 0KB to 512 KB, each byte cover 64KB area */ + {RAM, RAM, RAM, RAM}, {RAM, RAM, RAM, RAM}, + + /* MTRRfix16K_80000_MSR, defines memory range from 512KB to 640KB, each byte cover 16KB area */ + {RAM, RAM, RAM, RAM}, {RAM, RAM, RAM, RAM}, + + /* MTRRfix16K_A0000_MSR, defines memory range from A0000 to C0000, each byte cover 16KB area */ + {FB, FB, FB, FB}, {FB, FB, FB, FB}, + + /* MTRRfix4K_C0000_MSR, defines memory range from C0000 to C8000, each byte cover 4KB area */ + {FB, FB, FB, FB}, {FB, FB, FB, FB}, + + /* MTRRfix4K_C8000_MSR, defines memory range from C8000 to D0000, each byte cover 4KB area */ + {FB, FB, FB, FB}, {FB, FB, FB, FB}, + + /* MTRRfix4K_D0000_MSR, defines memory range from D0000 to D8000, each byte cover 4KB area */ + {FB, FB, FB, FB}, {FB, FB, FB, FB}, + + /* MTRRfix4K_D8000_MSR, defines memory range from D8000 to E0000, each byte cover 4KB area */ + {FB, FB, FB, FB}, {FB, FB, FB, FB}, + + /* MTRRfix4K_E0000_MSR, defines memory range from E0000 to E8000, each byte cover 4KB area */ + {FB, FB, FB, FB}, {FB, FB, FB, FB}, + + /* MTRRfix4K_E8000_MSR, defines memory range from E8000 to F0000, each byte cover 4KB area */ + {FB, FB, FB, FB}, {FB, FB, FB, FB}, + + /* MTRRfix4K_F0000_MSR, defines memory range from F0000 to F8000, each byte cover 4KB area */ + {ROM, ROM, ROM, ROM}, {ROM, ROM, ROM, ROM}, + + /* MTRRfix4K_F8000_MSR, defines memory range from F8000 to 100000, each byte cover 4KB area */ + {ROM, ROM, ROM, ROM}, {ROM, ROM, ROM, ROM}, +}; +#else static unsigned char fixed_mtrr_values[][4] = { /* MTRRfix64K_00000_MSR, defines memory range from 0KB to 512 KB, each byte cover 64KB area */ {RAM, RAM, RAM, RAM}, {RAM, RAM, RAM, RAM}, @@ -102,6 +143,7 @@ static unsigned char fixed_mtrr_values[][4] = { /* MTRRfix4K_F8000_MSR, defines memory range from F8000 to 100000, each byte cover 4KB area */ {ROM, ROM, ROM, ROM}, {ROM, ROM, ROM, ROM}, }; +#endif #undef FB #undef RAM diff --git a/src/mainboard/technoland/sbc710/Config b/src/mainboard/technoland/sbc710/Config index 5d5e00dbec..a3148967ed 100644 --- a/src/mainboard/technoland/sbc710/Config +++ b/src/mainboard/technoland/sbc710/Config @@ -17,6 +17,7 @@ nsuperio winbond/w83977ef keyboard=1 nsuperio winbond/w83877tf option ENABLE_FIXED_AND_VARIABLE_MTRRS +option MTRR_ONLY_TOP_64K_FLASH option PIIX4_DEVFN=0x38 option NO_KEYBOARD option HAVE_PIRQ_TABLE