Hi, On Fri, Apr 10, 2009 at 04:31:40PM +0200, Stefan Reinauer wrote: > Add VIA CX700 support, plus VIA vt8454c reference board support.
Nice work! Quick review below. With the few issues in the code fixed it's Acked-by: Uwe Hermann <[email protected]> > Index: src/include/pc80/i8259.h > =================================================================== > --- src/include/pc80/i8259.h (revision 4087) > +++ src/include/pc80/i8259.h (working copy) > @@ -1 +1,6 @@ > +#ifndef PC80_I8259_H > +#define PC80_I8259_H > + > void setup_i8259(void); > + > +#endif /* PC80_I8259_H */ Please add the usual license header. The file is trivial, just use (C) coresystems. > Index: src/mainboard/via/vt8454c/failover.c > =================================================================== > --- src/mainboard/via/vt8454c/failover.c (revision 0) > +++ src/mainboard/via/vt8454c/failover.c (revision 0) > @@ -0,0 +1,49 @@ > +#define ASSEMBLY 1 > +#include <arch/io.h> > +#include "arch/romcc_io.h" > +#include "pc80/mc146818rtc_early.c" > + > +static unsigned long main(unsigned long bist) > +{ > + if (do_normal_boot()) { > + goto normal_image; > + } else { > + goto fallback_image; > + } > + > +normal_image: > + asm volatile ("jmp __normal_image": /* outputs */ > + :"a" (bist) /* inputs */ > + : /* clobbers */ > + ); > + > +cpu_reset: > + asm volatile ("jmp __cpu_reset": /* outputs */ > + :"a" (bist) /* inputs */ > + : /* clobbers */ > + ); > + > +fallback_image: > + return bist; > +} This file is equivalent to the global src/arch/i386/lib/failover.c, please use that one (and drop this file here) by using something like depends "$(MAINBOARD)/../../../arch/i386/lib/failover.c ../romcc" action "../romcc -E -O2 -mcpu=p2 --label-prefix=failover -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/../../../arch/i386/lib/failover.c -o $@" etc. in the board's Config.lb. > Index: src/mainboard/via/vt8454c/auto.c > =================================================================== > --- src/mainboard/via/vt8454c/auto.c (revision 0) > +++ src/mainboard/via/vt8454c/auto.c (revision 0) > @@ -0,0 +1,134 @@ > +void udelay(unsigned usecs) > +{ > + int i; > + for (i = 0; i < usecs; i++) > + outb(0xff, 0x80); > +} #include "pc80/udelay_io.c" provides this already. > +#include "lib/delay.c" Oh, we should unify delay.c and udelay_io.c at some point btw, but that's for another patch. > Index: src/mainboard/via/vt8454c/dmi.h > =================================================================== > --- src/mainboard/via/vt8454c/dmi.h (revision 0) > +++ src/mainboard/via/vt8454c/dmi.h (revision 0) > @@ -0,0 +1,31 @@ > +#define DMI_TABLE_SIZE 0x55 > + > +static u8 dmi_table[DMI_TABLE_SIZE] = { > + 0x5f, 0x53, 0x4d, 0x5f, 0x2d, 0x1f, 0x02, 0x03, 0x51, 0x00, 0x00, 0x00, > 0x00, 0x00, 0x00, 0x00, > + 0x5f, 0x44, 0x4d, 0x49, 0x5f, 0xeb, 0xa8, 0x03, 0xa0, 0xff, 0x0f, 0x00, > 0x01, 0x00, 0x23, 0x00, > + 0x00, 0x14, 0x00, 0x00, 0x01, 0x02, 0x00, 0xe0, 0x03, 0x07, 0x90, 0xde, > 0xcb, 0x7f, 0x00, 0x00, > + 0x00, 0x00, 0x37, 0x01, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x79, 0x73, 0x74, > 0x65, 0x6d, 0x73, 0x20, > + 0x47, 0x6d, 0x62, 0x48, 0x00, 0x32, 0x2e, 0x30, 0x00, 0x30, 0x33, 0x2f, > 0x31, 0x33, 0x2f, 0x32, > + 0x30, 0x30, 0x38, 0x00, 0x00 > +}; Hm, interesting, I guess this is the first board where we use DMI in coreboot? Is this a hard requirement for the board? What is DMI used for here? Not knowing much about DMI myself, what are all those hex numbers? > Index: src/mainboard/via/vt8454c/Config.lb > =================================================================== > --- src/mainboard/via/vt8454c/Config.lb (revision 0) > +++ src/mainboard/via/vt8454c/Config.lb (revision 0) > @@ -0,0 +1,196 @@ > +makerule ./auto.inc > + depends "$(MAINBOARD)/auto.c option_table.h" > + action "$(CC) $(DISTRO_CFLAGS) -I$(TOP)/src -I. $(CPPFLAGS) > $(MAINBOARD)/auto.c -Os -nostdinc -nostdlib -fno-builtin -g -dA -fverbose-asm > -Wall -c -S -o $@" Might need small fixes to make it similar to what Carl-Daniel changed the other Config.lb files to (can be done after the commit though). > +## > +## Build our 16 bit and 32 bit linuxBIOS entry code ^^^^^^^^^ coreboot > +## > +mainboardinit cpu/x86/16bit/entry16.inc > +mainboardinit cpu/x86/32bit/entry32.inc > +ldscript /cpu/x86/16bit/entry16.lds > +ldscript /cpu/x86/32bit/entry32.lds > + > +## > +## Build our reset vector (This is where linuxBIOS is entered) coreboot > + chip drivers/pci/onboard > + device pci 0.0 on end > + register "rom_address" = "0xfff80000" #512k > image Please also add comments for 256K and 1MB images to make it easier for users to switch when using different ROM sizes. > Index: src/mainboard/via/vt8454c/irq_tables.c > =================================================================== > --- src/mainboard/via/vt8454c/irq_tables.c (revision 0) > +++ src/mainboard/via/vt8454c/irq_tables.c (revision 0) > @@ -0,0 +1,65 @@ > +/* > + * Documentation at: http://www.microsoft.com/whdc/archive/pciirq.mspx > + */ Drop this comment please (we did in most other boards). The link is in the wiki, we don't need it in all irq_table.c files. > Index: src/mainboard/via/vt8454c/debug.c > =================================================================== > --- src/mainboard/via/vt8454c/debug.c (revision 0) > +++ src/mainboard/via/vt8454c/debug.c (revision 0) > @@ -0,0 +1,108 @@ This is equivalent to the global src/lib/debug.c, except for the dump_io_resources() function. Please add that one to src/lib/debug.c, use the global file then, and drop this one. Feel free to add the (C) coresystems + GPL2 header to that global debug.c, it doesn't yet have a header. > Index: src/northbridge/via/cx700/cx700_vga.c > =================================================================== > --- src/northbridge/via/cx700/cx700_vga.c (revision 0) > +++ src/northbridge/via/cx700/cx700_vga.c (revision 0) > @@ -0,0 +1,119 @@ > +static void vga_init(device_t dev) > +{ > + u8 reg8; > + > + printk_debug("Initiailizing VGA...\n"); Typo. > Index: src/northbridge/via/cx700/raminit.c > =================================================================== > --- src/northbridge/via/cx700/raminit.c (revision 0) > +++ src/northbridge/via/cx700/raminit.c (revision 0) > @@ -0,0 +1,1480 @@ > +#define GET_SPD(i, val, tmp, reg) > \ > + do{ > \ > + val = 0; > \ > + tmp = 0; > \ > + for(i = 0; i < 2; i++) { > \ > + if(pci_read_config8(PCI_DEV(0, 0, 4), (SCRATCH_REG_BASE > + (i << 1)))) { \ > + tmp = get_spd_data(ctrl, i, reg); > \ > + if(tmp > val) > \ > + val = tmp; > \ > + } > \ > + } > \ > + } while ( 0 ) Hm, this is a bit ugly, why not make it a function instead of a #define? > +// TODO factor out to another file > +static void c7_cpu_setup(const struct mem_controller *ctrl) > +{ > + u8 size, i; > + size = sizeof(Reg_Val) / sizeof(Reg_Val[0]); > + for (i = 0; i < size; i += 2) Please use ARRAY_SIZE here. > + pci_write_config8(HOSTCTRL, Reg_Val[i], Reg_Val[i + 1]); > +} > + > Index: targets/via/vt8454c/Config-abuild.lb > =================================================================== > --- targets/via/vt8454c/Config-abuild.lb (revision 0) > +++ targets/via/vt8454c/Config-abuild.lb (revision 0) > @@ -0,0 +1,24 @@ Add the usual GPL header please. > Index: targets/via/vt8454c/Config.lb > =================================================================== > --- targets/via/vt8454c/Config.lb (revision 0) > +++ targets/via/vt8454c/Config.lb (revision 0) Add the usual GPL header please. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org -- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

