diff options
author | Stefan Reinauer <stepan@openbios.org> | 2003-09-23 18:50:35 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2003-09-23 18:50:35 +0000 |
commit | 9719cce5a3ba47fabeb7f8e0897c89cfd679e04f (patch) | |
tree | f13837e7f9517e3123d0d891f07e76114d2e68fe /src | |
parent | dcdbdfb46e7075515fef5be386e14c42463f7a5e (diff) |
make coherent ht setup capable of non-standard link configurations
(i.e. with CPU1 not connected to ACROSS link of CPU0)
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1122 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src')
-rw-r--r-- | src/northbridge/amd/amdk8/coherent_ht.c | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/src/northbridge/amd/amdk8/coherent_ht.c b/src/northbridge/amd/amdk8/coherent_ht.c index 9145a42a29..b2839159c7 100644 --- a/src/northbridge/amd/amdk8/coherent_ht.c +++ b/src/northbridge/amd/amdk8/coherent_ht.c @@ -17,9 +17,32 @@ #include "arch/romcc_io.h" /* - * + * Until we have a completely dynamic setup we want + * to be able to map different cpu graphs. */ +#define UP 0x00 +#define ACROSS 0x20 +#define DOWN 0x40 + +/* + * set some default values. These are used if they are not + * differently defined in the motherboard's auto.c file. + * See src/mainboard/amd/quartet/auto.c for an example. + */ + +#ifndef CONNECTION_0_1 +#define CONNECTION_0_1 ACROSS +#endif + +#ifndef CONNECTION_0_2 +#define CONNECTION_0_2 UP +#endif + +#ifndef CONNECTION_1_3 +#define CONNECTION_1_3 UP +#endif + /* when generating a temporary row configuration we * don't want broadcast to be enabled for that node. */ @@ -187,10 +210,6 @@ static bool check_connection(u8 src, u8 dest, u8 link) * remote node's vendor/device id */ -#define UP 0x00 -#define ACROSS 0x20 -#define DOWN 0x40 - u32 val; /* 1) */ @@ -319,7 +338,7 @@ static u8 setup_smp(void) /* Setup and check a temporary connection to node 1 */ setup_temp_row(0,1,cpus); - if (!check_connection(0, 7, ACROSS)) { // Link: ACROSS + if (!check_connection(0, 7, CONNECTION_0_1)) { print_debug("No connection to Node 1.\r\n"); clear_temp_row(0); /* delete temp connection */ setup_uniprocessor(); /* and get up working */ @@ -340,7 +359,7 @@ static u8 setup_smp(void) /* Setup and check temporary connection from Node 0 to Node 2 */ setup_temp_row(0,2,cpus); - if (!check_connection(0, 7, UP)) { // Link: UP + if (!check_connection(0, 7, CONNECTION_0_2)) { print_debug("No connection to Node 2.\r\n"); clear_temp_row(0); /* delete temp connection */ return 2; @@ -353,7 +372,7 @@ static u8 setup_smp(void) setup_temp_row(0,1,cpus); /* temp. link between nodes 0 and 1 */ setup_temp_row(1,3,cpus); /* temp. link between nodes 1 and 3 */ - if (!check_connection(1, 7, UP)) { // Link: UP + if (!check_connection(1, 7, CONNECTION_1_3)) { print_debug("No connection to Node 3.\r\n"); clear_temp_row(0); /* delete temp connection */ clear_temp_row(1); /* delete temp connection */ |