coreboot/mainboard/Kconfig
Ronald G. Minnich 28ecbeab88 The K8 is one example, but there are other devices (e.g. I2C) that also have
multiple links. The way this was done in v2 was a big confusing; this way is 
less so. 

The changes are easy. Getting them right has been hard :-)

First, for a k8 north that has three links, you can name each one as follows:
pci0@18,0
pci1@18,0
pci2@18,0

We have to have the same pcidevfn on these because that is how the k8 works. 
But the unit numbers (pci0, pci1, etc.) distinguish them. 

The dts will properly generate a "v3 device code" 
compatible static tree that puts the links in the right place in the 
data structure. 

The changes to dts are trivial. 
As before, dts nodes with children are understood to be a bridge. 
But what if there is a dts entry like this:
pci1@18,0 {/config/("northbridge/amd/k8/pci");};


This entry has no children in the dts. 
How does dt compiler know it is a bridge? It can not know unless 
we add information to the dts for that northbridge part. 
To ensure that all bridge devices are detected, we support the following: 
if a dts node for a device has a bridge property, e.g.: 
 {
        device_operations = "k8_ops";
       bridge;
 };

The dt compiler will treat it as a bridge whether it has children or not. 

Why would a device not have children? Because it might be attached to a
pci or other socket, and we don't know at build time if the socket is empty, 
or what might be in the socket. 

This code has been tested on dbe62 and k8 simnow, and works on each. 
It is minimal in size and it does what we need. I hope it resolves our 
discussion for now. We might want to improve or change the device code
later but, at this point, forward motion is important -- I'm on a deadline for
a very important demo Oct. 22!

Also included in this patch are new debug prints in k8 north. 

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>

Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>


git-svn-id: svn://coreboot.org/repository/coreboot-v3@865 f3766cd6-281f-0410-b1cd-43a5c92072e9
2008-09-17 16:36:20 +00:00

118 lines
3 KiB
Text

##
## This file is part of the coreboot project.
##
## Copyright (C) 2006 Segher Boessenkool <segher@kernel.crashing.org>
## Copyright (C) 2006-2007 coresystems GmbH
## (Written by Stefan Reinauer <stepan@coresystems.de> for coresystems GmbH)
## Copyright (C) 2007 Uwe Hermann <uwe@hermann-uwe.de>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; version 2 of the License.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##
menu "Mainboard"
choice
prompt "Mainboard vendor"
default VENDOR_EMULATION
config VENDOR_ADL
bool "Advanced Digital Logic"
help
Select this option for various systems from Advanced Digital Logic.
config VENDOR_AMD
bool "AMD"
help
Select this option for various systems from
Advanced Micro Devices, Inc.
config VENDOR_AMP
bool "AMP"
help
Select this option for various systems from
Advanced Micro Devices, Inc.
config VENDOR_ARTECGROUP
bool "Artec Group"
help
Select this option for various systems from the Artec Group.
config VENDOR_GIGABYTE
bool "Gigabyte"
help
Select this option for various systems from Gigabyte
config VENDOR_EMULATION
bool "Emulated systems"
help
Select this option for various system emulators, such as QEMU.
config VENDOR_PCENGINES
bool "PC Engines"
help
Select this option for PC Engines systems.
endchoice
source "mainboard/adl/Kconfig"
source "mainboard/amd/Kconfig"
source "mainboard/amp/Kconfig"
source "mainboard/artecgroup/Kconfig"
source "mainboard/emulation/Kconfig"
source "mainboard/gigabyte/Kconfig"
source "mainboard/pcengines/Kconfig"
choice
prompt "ROM chip size"
default COREBOOT_ROMSIZE_KB_256
config COREBOOT_ROMSIZE_KB_128
bool "128 KB"
help
Choose this option if you have a 128 KB ROM chip.
config COREBOOT_ROMSIZE_KB_256
bool "256 KB"
help
Choose this option if you have a 256 KB ROM chip.
config COREBOOT_ROMSIZE_KB_512
bool "512 KB"
help
Choose this option if you have a 512 KB ROM chip.
config COREBOOT_ROMSIZE_KB_1024
bool "1024 KB (1 MB)"
help
Choose this option if you have a 1024 KB (1 MB) ROM chip.
config COREBOOT_ROMSIZE_KB_2048
bool "2048 KB (2 MB)"
help
Choose this option if you have a 2048 KB (2 MB) ROM chip.
endchoice
config COREBOOT_ROMSIZE_KB
int
default 128 if COREBOOT_ROMSIZE_KB_128
default 256 if COREBOOT_ROMSIZE_KB_256
default 512 if COREBOOT_ROMSIZE_KB_512
default 1024 if COREBOOT_ROMSIZE_KB_1024
default 2048 if COREBOOT_ROMSIZE_KB_2048
help
Map the config names to an integer.
endmenu