On Thu, 31 Jul 2003, Stefan Reinauer wrote:
First, in cpu/k8, define a file, chip.h:
struct cpu_k8_config { struct chip *north, *south, *east, *west; };
I don't think we need both of east and west really. The Bios Developers Guide calls these links "UP", "DOWN" and "ACROSS", for LDT0-2. It might still be interesting to have a topological view on the hardware, but at least for hypertransport setup, east and west is equal.
OK. I also occured to me last night that we need this:
struct ht_link { struct chip *chip; unsigned int ht_width, ht_speed; };
then:
southbridge amd/amd8111 "amd8111" register "north" = "{.chip = &cpu0, .ht_width = 8, .ht_speed=200" end
and so on. Make sense? Or not? I don't have the data book so don't know if the 8111 has more than one link.
For the CPUs we then have
struct cpu_k8_config { struct ht_link up, down, across; };
dir /cpu/k8
^^^^^^^^^^^
can this not implicitly be generated from the below description?
yes, and it should be, I had the same thought.
# define the CPUs, their names, and their connections.
cpu k8 "cpu0"
register "down" = "{.chip = &amd8111, .ht_width=8, .ht_speed=200}" . . end
better?
ron
p.s. the chip-specific structure for the PCI bridge will, of course, have a pointer to the top of the PCI tree, and that becomes our link from the static to the dynamic devices.