summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/getac/p470/Kconfig2
-rw-r--r--src/mainboard/getac/p470/romstage.c4
-rw-r--r--src/mainboard/ibase/mb899/Kconfig2
-rw-r--r--src/mainboard/ibase/mb899/romstage.c5
-rw-r--r--src/mainboard/intel/d945gclf/Kconfig2
-rw-r--r--src/mainboard/intel/d945gclf/romstage.c4
-rw-r--r--src/mainboard/kontron/986lcd-m/Kconfig3
-rw-r--r--src/mainboard/kontron/986lcd-m/romstage.c13
-rw-r--r--src/mainboard/roda/rk886ex/Kconfig6
-rw-r--r--src/mainboard/roda/rk886ex/romstage.c6
-rw-r--r--src/northbridge/intel/i945/Kconfig38
-rw-r--r--src/northbridge/intel/i945/raminit.c30
12 files changed, 66 insertions, 49 deletions
diff --git a/src/mainboard/getac/p470/Kconfig b/src/mainboard/getac/p470/Kconfig
index 8085fd6241..f3a80cf8d2 100644
--- a/src/mainboard/getac/p470/Kconfig
+++ b/src/mainboard/getac/p470/Kconfig
@@ -43,6 +43,8 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select CACHE_AS_RAM
select GFXUMA
select TINY_BOOTBLOCK
+ select I945GM
+ select CHANNEL_XOR_RANDOMIZATION
config MAINBOARD_DIR
string
diff --git a/src/mainboard/getac/p470/romstage.c b/src/mainboard/getac/p470/romstage.c
index 0809926c70..8a39d997fa 100644
--- a/src/mainboard/getac/p470/romstage.c
+++ b/src/mainboard/getac/p470/romstage.c
@@ -19,10 +19,6 @@
* MA 02110-1301 USA
*/
-/* Configuration of the i945 driver */
-#define CHIPSET_I945GM 1
-#define CHANNEL_XOR_RANDOMIZATION 1
-
#include <stdint.h>
#include <string.h>
#include <arch/io.h>
diff --git a/src/mainboard/ibase/mb899/Kconfig b/src/mainboard/ibase/mb899/Kconfig
index e340d52ee4..26bd6c0b8f 100644
--- a/src/mainboard/ibase/mb899/Kconfig
+++ b/src/mainboard/ibase/mb899/Kconfig
@@ -20,6 +20,8 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select CACHE_AS_RAM
select GFXUMA
select TINY_BOOTBLOCK
+ select I945GM
+ select CHANNEL_XOR_RANDOMIZATION
config MAINBOARD_DIR
string
diff --git a/src/mainboard/ibase/mb899/romstage.c b/src/mainboard/ibase/mb899/romstage.c
index 4c953d7ab1..53750dfc08 100644
--- a/src/mainboard/ibase/mb899/romstage.c
+++ b/src/mainboard/ibase/mb899/romstage.c
@@ -19,11 +19,6 @@
// __PRE_RAM__ means: use "unsigned" for device, not a struct.
-/* Configuration of the i945 driver */
-#define CHIPSET_I945GM 1
-//#define OVERRIDE_CLOCK_DISABLE 1
-#define CHANNEL_XOR_RANDOMIZATION 1
-
#include <stdint.h>
#include <string.h>
#include <arch/io.h>
diff --git a/src/mainboard/intel/d945gclf/Kconfig b/src/mainboard/intel/d945gclf/Kconfig
index 6db4359017..f4f22a8b6e 100644
--- a/src/mainboard/intel/d945gclf/Kconfig
+++ b/src/mainboard/intel/d945gclf/Kconfig
@@ -40,6 +40,8 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select BOARD_ROMSIZE_KB_512
select GFXUMA
select TINY_BOOTBLOCK
+ select I945GC
+ select CHANNEL_XOR_RANDOMIZATION
config MAINBOARD_DIR
string
diff --git a/src/mainboard/intel/d945gclf/romstage.c b/src/mainboard/intel/d945gclf/romstage.c
index 337d856758..dd6f3836b8 100644
--- a/src/mainboard/intel/d945gclf/romstage.c
+++ b/src/mainboard/intel/d945gclf/romstage.c
@@ -19,10 +19,6 @@
// __PRE_RAM__ means: use "unsigned" for device, not a struct.
-/* Configuration of the i945 driver */
-#define CHIPSET_I945GC 1
-#define CHANNEL_XOR_RANDOMIZATION 1
-
#include <stdint.h>
#include <string.h>
#include <arch/io.h>
diff --git a/src/mainboard/kontron/986lcd-m/Kconfig b/src/mainboard/kontron/986lcd-m/Kconfig
index 5f745ebe9e..e3ca6a5265 100644
--- a/src/mainboard/kontron/986lcd-m/Kconfig
+++ b/src/mainboard/kontron/986lcd-m/Kconfig
@@ -20,6 +20,9 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select CACHE_AS_RAM
select GFXUMA
select TINY_BOOTBLOCK
+ select CHANNEL_XOR_RANDOMIZATION
+ select I945GM
+ select OVERRIDE_CLOCK_DISABLE
config MAINBOARD_DIR
string
diff --git a/src/mainboard/kontron/986lcd-m/romstage.c b/src/mainboard/kontron/986lcd-m/romstage.c
index e400feea47..c6ea1b10d6 100644
--- a/src/mainboard/kontron/986lcd-m/romstage.c
+++ b/src/mainboard/kontron/986lcd-m/romstage.c
@@ -19,19 +19,6 @@
// __PRE_RAM__ means: use "unsigned" for device, not a struct.
-/* Configuration of the i945 driver */
-#define CHIPSET_I945GM 1
-/* Usually system firmware turns off system memory clock signals to
- * unused SO-DIMM slots to reduce EMI and power consumption.
- * However, the Kontron 986LCD-M does not like unused clock signals to
- * be disabled. If other similar mainboard occur, it would make sense
- * to make this an entry in the sysinfo structure, and pre-initialize that
- * structure in the mainboard's romstage.c main() function. For now a
- * #define will do.
- */
-#define OVERRIDE_CLOCK_DISABLE 1
-#define CHANNEL_XOR_RANDOMIZATION 1
-
#include <stdint.h>
#include <string.h>
#include <arch/io.h>
diff --git a/src/mainboard/roda/rk886ex/Kconfig b/src/mainboard/roda/rk886ex/Kconfig
index 29ae5d036d..8c951ead9f 100644
--- a/src/mainboard/roda/rk886ex/Kconfig
+++ b/src/mainboard/roda/rk886ex/Kconfig
@@ -19,6 +19,8 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select HAVE_ACPI_TABLES
select HAVE_ACPI_RESUME
select BOARD_ROMSIZE_KB_1024
+ select I945GM
+ select CHANNEL_XOR_RANDOMIZATION
config MAINBOARD_DIR
string
@@ -56,4 +58,8 @@ config MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID
hex
default 0x6886
+config MAXIMUM_SUPPORTED_FREQUENCY
+ int
+ default 400
+
endif # BOARD_RODA_RK886EX
diff --git a/src/mainboard/roda/rk886ex/romstage.c b/src/mainboard/roda/rk886ex/romstage.c
index 1fdcd0b7ba..98ebadbc22 100644
--- a/src/mainboard/roda/rk886ex/romstage.c
+++ b/src/mainboard/roda/rk886ex/romstage.c
@@ -21,12 +21,6 @@
// __PRE_RAM__ means: use "unsigned" for device, not a struct.
-/* Configuration of the i945 driver */
-#define CHIPSET_I945GM 1
-#define CHANNEL_XOR_RANDOMIZATION 1
-// Rocky freezing temperature settings:
-#define MAXIMUM_SUPPORTED_FREQUENCY 400
-
#include <stdint.h>
#include <string.h>
#include <arch/io.h>
diff --git a/src/northbridge/intel/i945/Kconfig b/src/northbridge/intel/i945/Kconfig
index 952bd9ed68..cee1a8745d 100644
--- a/src/northbridge/intel/i945/Kconfig
+++ b/src/northbridge/intel/i945/Kconfig
@@ -26,3 +26,41 @@ config FALLBACK_VGA_BIOS_ID
default "8086,27a2"
depends on NORTHBRIDGE_INTEL_I945
+choice
+ default I945GM
+ depends on NORTHBRIDGE_INTEL_I945
+ help
+ Different i945 variants require slightly different setup.
+
+config I945GM
+ bool "i945GM (Mobile) chipset"
+
+config I945GC
+ bool "i945GC chipset"
+
+endchoice
+
+config CHANNEL_XOR_RANDOMIZATION
+ bool
+ default n
+ depends on NORTHBRIDGE_INTEL_I945
+
+config OVERRIDE_CLOCK_DISABLE
+ bool
+ default n
+ depends on NORTHBRIDGE_INTEL_I945
+ help
+ Usually system firmware turns off system memory clock
+ signals to unused SO-DIMM slots to reduce EMI and power
+ consumption.
+ However, some boards do not like unused clock signals to
+ be disabled.
+
+config MAXIMUM_SUPPORTED_FREQUENCY
+ int
+ default 0
+ depends on NORTHBRIDGE_INTEL_I945
+ help
+ If non-zero, this designates the maximum DDR frequency
+ the board supports, despite what the chipset should be
+ capable of.
diff --git a/src/northbridge/intel/i945/raminit.c b/src/northbridge/intel/i945/raminit.c
index 424fd2b6e9..50cab4929d 100644
--- a/src/northbridge/intel/i945/raminit.c
+++ b/src/northbridge/intel/i945/raminit.c
@@ -90,7 +90,7 @@ static void sdram_dump_mchbar_registers(void)
static int memclk(void)
{
int offset = 0;
-#ifdef CHIPSET_I945GM
+#if CONFIG_I945GM
offset++;
#endif
switch (((MCHBAR32(CLKCFG) >> 4) & 7) - offset) {
@@ -102,7 +102,7 @@ static int memclk(void)
return -1;
}
-#ifdef CHIPSET_I945GM
+#if CONFIG_I945GM
static int fsbclk(void)
{
switch (MCHBAR32(CLKCFG) & 7) {
@@ -114,7 +114,7 @@ static int fsbclk(void)
return -1;
}
#endif
-#ifdef CHIPSET_I945GC
+#if CONFIG_I945GC
static int fsbclk(void)
{
switch (MCHBAR32(CLKCFG) & 7) {
@@ -131,8 +131,8 @@ static int sdram_capabilities_max_supported_memory_frequency(void)
{
u32 reg32;
-#ifdef MAXIMUM_SUPPORTED_FREQUENCY
- return MAXIMUM_SUPPORTED_FREQUENCY;
+#if CONFIG_MAXIMUM_SUPPORTED_FREQUENCY
+ return CONFIG_MAXIMUM_SUPPORTED_FREQUENCY;
#endif
reg32 = pci_read_config32(PCI_DEV(0, 0x00, 0), 0xe4); /* CAPID0 + 4 */
@@ -1045,7 +1045,7 @@ static const u32 *slew_group_lookup(int dual_channel, int index)
return nc;
}
-#ifdef CHIPSET_I945GM
+#if CONFIG_I945GM
/* Strength multiplier tables */
static const u8 dual_channel_strength_multiplier[] = {
0x44, 0x11, 0x11, 0x11, 0x44, 0x44, 0x44, 0x11,
@@ -1101,7 +1101,7 @@ static const u8 single_channel_strength_multiplier[] = {
0x33, 0x00, 0x11, 0x00, 0x44, 0x44, 0x33, 0x11
};
#endif
-#ifdef CHIPSET_I945GC
+#if CONFIG_I945GC
static const u8 dual_channel_strength_multiplier[] = {
0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
0x44, 0x22, 0x00, 0x00, 0x44, 0x44, 0x44, 0x22,
@@ -2155,7 +2155,7 @@ static void sdram_program_clock_crossing(void)
/**
* We add the indices according to our clocks from CLKCFG.
*/
-#ifdef CHIPSET_I945GM
+#if CONFIG_I945GM
static const u32 data_clock_crossing[] = {
0x00100401, 0x00000000, /* DDR400 FSB400 */
0xffffffff, 0xffffffff, /* nonexistant */
@@ -2201,7 +2201,7 @@ static void sdram_program_clock_crossing(void)
};
#endif
-#ifdef CHIPSET_I945GC
+#if CONFIG_I945GC
/* i945 G/P */
static const u32 data_clock_crossing[] = {
0xffffffff, 0xffffffff, /* nonexistant */
@@ -2420,7 +2420,7 @@ static void sdram_post_jedec_initialization(struct sys_info *sysinfo)
if (sysinfo->interleaved) {
reg32 = MCHBAR32(DCC);
-#if CHANNEL_XOR_RANDOMIZATION
+#if CONFIG_CHANNEL_XOR_RANDOMIZATION
reg32 &= ~(1 << 10);
reg32 |= (1 << 9);
#else
@@ -2792,10 +2792,10 @@ static void sdram_enable_memory_clocks(struct sys_info *sysinfo)
{
u8 clocks[2] = { 0, 0 };
-#ifdef CHIPSET_I945GM
+#if CONFIG_I945GM
#define CLOCKS_WIDTH 2
#endif
-#ifdef CHIPSET_I945GC
+#if CONFIG_I945GC
#define CLOCKS_WIDTH 3
#endif
if (sysinfo->dimm[0] != SYSINFO_DIMM_NOT_POPULATED)
@@ -2810,15 +2810,11 @@ static void sdram_enable_memory_clocks(struct sys_info *sysinfo)
if (sysinfo->dimm[3] != SYSINFO_DIMM_NOT_POPULATED)
clocks[1] |= ((1 << CLOCKS_WIDTH)-1) << CLOCKS_WIDTH;
-#ifdef OVERRIDE_CLOCK_DISABLE
+#if CONFIG_OVERRIDE_CLOCK_DISABLE
/* Usually system firmware turns off system memory clock signals
* to unused SO-DIMM slots to reduce EMI and power consumption.
* However, the Kontron 986LCD-M does not like unused clock
* signals to be disabled.
- * If other similar mainboard occur, it would make sense to make
- * this an entry in the sysinfo structure, and pre-initialize that
- * structure in the mainboard's romstage.c main() function.
- * For now an #ifdef will do.
*/
clocks[0] = 0xf; /* force all clock gate pairs to enable */