Index: src/mainboard/getac/p470/Kconfig
===================================================================
--- src/mainboard/getac/p470/Kconfig	(Revision 5887)
+++ src/mainboard/getac/p470/Kconfig	(Arbeitskopie)
@@ -43,6 +43,8 @@
 	select CACHE_AS_RAM
 	select GFXUMA
 	select TINY_BOOTBLOCK
+	select I945GM
+	select CHANNEL_XOR_RANDOMIZATION
 
 config MAINBOARD_DIR
 	string
Index: src/mainboard/getac/p470/romstage.c
===================================================================
--- src/mainboard/getac/p470/romstage.c	(Revision 5887)
+++ src/mainboard/getac/p470/romstage.c	(Arbeitskopie)
@@ -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>
Index: src/mainboard/kontron/986lcd-m/Kconfig
===================================================================
--- src/mainboard/kontron/986lcd-m/Kconfig	(Revision 5887)
+++ src/mainboard/kontron/986lcd-m/Kconfig	(Arbeitskopie)
@@ -20,6 +20,9 @@
 	select CACHE_AS_RAM
 	select GFXUMA
 	select TINY_BOOTBLOCK
+	select CHANNEL_XOR_RANDOMIZATION
+	select I945GM
+	select OVERRIDE_CLOCK_DISABLE
 
 config MAINBOARD_DIR
 	string
Index: src/mainboard/kontron/986lcd-m/romstage.c
===================================================================
--- src/mainboard/kontron/986lcd-m/romstage.c	(Revision 5887)
+++ src/mainboard/kontron/986lcd-m/romstage.c	(Arbeitskopie)
@@ -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>
Index: src/mainboard/ibase/mb899/Kconfig
===================================================================
--- src/mainboard/ibase/mb899/Kconfig	(Revision 5887)
+++ src/mainboard/ibase/mb899/Kconfig	(Arbeitskopie)
@@ -20,6 +20,8 @@
 	select CACHE_AS_RAM
 	select GFXUMA
 	select TINY_BOOTBLOCK
+	select I945GM
+	select CHANNEL_XOR_RANDOMIZATION
 
 config MAINBOARD_DIR
 	string
Index: src/mainboard/ibase/mb899/romstage.c
===================================================================
--- src/mainboard/ibase/mb899/romstage.c	(Revision 5887)
+++ src/mainboard/ibase/mb899/romstage.c	(Arbeitskopie)
@@ -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>
Index: src/mainboard/roda/rk886ex/Kconfig
===================================================================
--- src/mainboard/roda/rk886ex/Kconfig	(Revision 5887)
+++ src/mainboard/roda/rk886ex/Kconfig	(Arbeitskopie)
@@ -19,6 +19,8 @@
 	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 @@
 	hex
 	default 0x6886
 
+config MAXIMUM_SUPPORTED_FREQUENCY
+	int
+	default 400
+
 endif # BOARD_RODA_RK886EX
Index: src/mainboard/roda/rk886ex/romstage.c
===================================================================
--- src/mainboard/roda/rk886ex/romstage.c	(Revision 5887)
+++ src/mainboard/roda/rk886ex/romstage.c	(Arbeitskopie)
@@ -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>
Index: src/mainboard/intel/d945gclf/Kconfig
===================================================================
--- src/mainboard/intel/d945gclf/Kconfig	(Revision 5887)
+++ src/mainboard/intel/d945gclf/Kconfig	(Arbeitskopie)
@@ -40,6 +40,8 @@
 	select BOARD_ROMSIZE_KB_512
 	select GFXUMA
 	select TINY_BOOTBLOCK
+	select I945GC
+	select CHANNEL_XOR_RANDOMIZATION
 
 config MAINBOARD_DIR
 	string
Index: src/mainboard/intel/d945gclf/romstage.c
===================================================================
--- src/mainboard/intel/d945gclf/romstage.c	(Revision 5887)
+++ src/mainboard/intel/d945gclf/romstage.c	(Arbeitskopie)
@@ -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>
Index: src/northbridge/intel/i945/Kconfig
===================================================================
--- src/northbridge/intel/i945/Kconfig	(Revision 5887)
+++ src/northbridge/intel/i945/Kconfig	(Arbeitskopie)
@@ -26,3 +26,43 @@
 	default "8086,27a2"
 	depends on NORTHBRIDGE_INTEL_I945
 
+choice
+	prompt "Chipset variant"
+	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, 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.
+
+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.
Index: src/northbridge/intel/i945/raminit.c
===================================================================
--- src/northbridge/intel/i945/raminit.c	(Revision 5887)
+++ src/northbridge/intel/i945/raminit.c	(Arbeitskopie)
@@ -90,7 +90,7 @@
 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 @@
 	return -1;
 }
 
-#ifdef CHIPSET_I945GM
+#if CONFIG_I945GM
 static int fsbclk(void)
 {
 	switch (MCHBAR32(CLKCFG) & 7) {
@@ -114,7 +114,7 @@
 	return -1;
 }
 #endif
-#ifdef CHIPSET_I945GC
+#if CONFIG_I945GC
 static int fsbclk(void)
 {
 	switch (MCHBAR32(CLKCFG) & 7) {
@@ -131,8 +131,8 @@
 {
 	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 @@
 	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 @@
 	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 @@
 	/**
 	 * 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 @@
 	};
 
 #endif
-#ifdef CHIPSET_I945GC
+#if CONFIG_I945GC
 	/* i945 G/P */
 	static const u32 data_clock_crossing[] = {
 		0xffffffff, 0xffffffff, /*  nonexistant  */
@@ -2420,7 +2420,7 @@
 	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 @@
 {
 	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 @@
 	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 */
