Denis Carikli (GNUtoo(a)no-log.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3223
-gerrit
commit da9dfd48fb99f9908b5849ff71ffb4c3bed0ce24
Author: Denis 'GNUtoo' Carikli <GNUtoo(a)no-log.org>
Date: Tue May 28 13:46:12 2013 +0200
Provide sane Kconfig default for cmos.default.
Without that fix we have with CONFIG_USE_OPTION_TABLE:
OPTION cmos_layout.bin
build/util/nvramtool/nvramtool -y /home/gnutoo/x86/coreboot-alix/src/mainboard/pcengines/alix1c/cmos.layout -L build/cmos_layout.bin
make: *** No rule to make target `nvramtool', needed by `build/coreboot.pre1'. Stop.
rm build/util/sconfig/sconfig.tab.c build/cbfs/fallback/bootblock.elf build/util/sconfig/lex.yy.c
That log was captured with make V=1 but the error also appear with make.
This commit was tested on the PC Engines ALIX.1C with the following commit:
PC Engines ALIX.1C: Add CMOS defaults.
Change-Id: I548005a58f430ed7b6da5249a24bbdcae440a1e9
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo(a)no-log.org>
---
src/arch/x86/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index 5f46145..c7b2434 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -81,6 +81,7 @@ config HAVE_CMOS_DEFAULT
config CMOS_DEFAULT_FILE
string
+ default "src/mainboard/$(MAINBOARDDIR)/cmos.default"
depends on HAVE_CMOS_DEFAULT
config BOOTBLOCK_SOUTHBRIDGE_INIT
the following patch was just integrated into master:
commit 1a71f4c21f86fe058da9dee3be1d9db5448fe1b7
Author: Gerd Hoffmann <kraxel(a)redhat.com>
Date: Wed May 29 14:53:03 2013 +0200
qemu: remove vga hook
Extra care for the qemu vga should not be needed any more.
Since release 0.12 qemu loads the vgabios into the PCI ROM
bar, so everything works exactly like it does on real hardware.
Change-Id: I4b9bf1244cad437cbe5168600aeee52031456033
Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
Reviewed-on: http://review.coreboot.org/3333
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
Reviewed-by: Ronald G. Minnich <rminnich(a)gmail.com>
See http://review.coreboot.org/3333 for details.
-gerrit
Paul Menzel (paulepanter(a)users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3328
-gerrit
commit ecc77dbe909599373a999574d273726b2b9f98bd
Author: Gabe Black <gabeblack(a)chromium.org>
Date: Wed May 29 16:42:27 2013 +0200
beaglebone: Reduce the size of the "ROM" from 128K to 64K
The RAM internal to the SOC isn't quite 128K in size, and has some things in it
that would be best not to trample. The current model is to load the entire
image into this memory and then to seperately load the RAM stage into the
system memory when that gets set up.
Change-Id: I89dc658fb1d14457a657ce3ecd2fd4d6acfb893f
Signed-off-by: Gabe Black <gabeblack(a)chromium.org>
---
src/mainboard/ti/beaglebone/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/mainboard/ti/beaglebone/Kconfig b/src/mainboard/ti/beaglebone/Kconfig
index 97fdf48..9260a2f 100644
--- a/src/mainboard/ti/beaglebone/Kconfig
+++ b/src/mainboard/ti/beaglebone/Kconfig
@@ -25,7 +25,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select CPU_TI_AM335X
select HAVE_UART_MEMORY_MAPPED
# FIXME: This should be much smaller
- select BOARD_ROMSIZE_KB_128
+ select BOARD_ROMSIZE_KB_64
config MAINBOARD_DIR
string
Gerd Hoffmann (kraxel(a)redhat.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3334
-gerrit
commit b27c38c53d5a2653caa85d81e5c2979620d5a64d
Author: Gerd Hoffmann <kraxel(a)redhat.com>
Date: Wed May 29 14:59:36 2013 +0200
qemu: fix IRQ routing setup
Do it for all PCI slots, not only 3. Also remove the bogous message,
slot 3 may carry any device, not only NICs.
Change-Id: Ie96be39185f2f1cbde3c9fc50e29faff59c28493
Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
---
src/mainboard/emulation/qemu-x86/mainboard.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/src/mainboard/emulation/qemu-x86/mainboard.c b/src/mainboard/emulation/qemu-x86/mainboard.c
index ae92654..4f86e16 100644
--- a/src/mainboard/emulation/qemu-x86/mainboard.c
+++ b/src/mainboard/emulation/qemu-x86/mainboard.c
@@ -26,8 +26,7 @@
#include <pc80/keyboard.h>
#include <arch/io.h>
-/* not sure how these are routed in qemu */
-static const unsigned char enetIrqs[4] = { 11, 0, 0, 0 };
+static const unsigned char qemu_i440fx_irqs[4] = { 10, 10, 11, 11 };
static void qemu_nb_init(device_t dev)
{
@@ -44,11 +43,10 @@ static void qemu_nb_init(device_t dev)
*/
pc_keyboard_init(0);
- /* The PIRQ table is not working well for interrupt routing purposes.
- * so we'll just set the IRQ directly.
- */
- printk(BIOS_INFO, "Setting up ethernet...\n");
- pci_assign_irqs(0, 3, enetIrqs);
+ /* setup IRQ routing */
+ for (i = 0; i < 32; i++) {
+ pci_assign_irqs(0, i, qemu_i440fx_irqs);
+ }
}
static struct device_operations nb_operations = {
Gerd Hoffmann (kraxel(a)redhat.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3333
-gerrit
commit a942b9da56b9d9d369f03f89a9b8e857604c93b4
Author: Gerd Hoffmann <kraxel(a)redhat.com>
Date: Wed May 29 14:53:03 2013 +0200
qemu: remove vga hook
Extra care for the qemu vga should not be needed any more.
Since release 0.12 qemu loads the vgabios into the PCI ROM
bar, so everything works exactly like it does on real hardware.
Change-Id: I4b9bf1244cad437cbe5168600aeee52031456033
Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
---
src/mainboard/emulation/qemu-x86/mainboard.c | 26 --------------------------
1 file changed, 26 deletions(-)
diff --git a/src/mainboard/emulation/qemu-x86/mainboard.c b/src/mainboard/emulation/qemu-x86/mainboard.c
index 71bc893..ae92654 100644
--- a/src/mainboard/emulation/qemu-x86/mainboard.c
+++ b/src/mainboard/emulation/qemu-x86/mainboard.c
@@ -64,29 +64,3 @@ static const struct pci_driver nb_driver __pci_driver = {
.vendor = 0x8086,
.device = 0x1237,
};
-
-static void qemu_init(device_t dev)
-{
- /* The VGA OPROM already lives at 0xc0000,
- * force coreboot to use it.
- */
- dev->on_mainboard = 1;
-
- /* Now do the usual initialization */
- pci_dev_init(dev);
-}
-
-static struct device_operations vga_operations = {
- .read_resources = pci_dev_read_resources,
- .set_resources = pci_dev_set_resources,
- .enable_resources = pci_dev_enable_resources,
- .init = qemu_init,
- .ops_pci = 0,
-};
-
-static const struct pci_driver vga_driver __pci_driver = {
- .ops = &vga_operations,
- .vendor = 0x1013,
- .device = 0x00b8,
-};
-
Gabe Black (gabeblack(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3332
-gerrit
commit 31c0f55d90ec654224d58b3ae8909b529dd1d49b
Author: Gabe Black <gabeblack(a)chromium.org>
Date: Wed May 29 16:42:35 2013 +0200
am335x: Build an omap style header and an image with it at the front.
Loading on an OMAP SOC requires that the first sector of the image have a
configuration header, and, when not an execute in place image, an additional
header which describes how big the image is and where it should be loaded.
This change adds some infrastructure to statically build that header using C
code, and to paste the header onto the front of coreboot.rom in a new top
level target file called MLO.
The configuration header we're using is as inert as possible, in line with
what U-Boot is doing. I think it could be used to give additional
configuration parameters to the built-in ROM on the SOC, but we don't need to
do that, and there didn't seem to be any actual documnetation how to do that.
Because the header is built from C and is defined per CPU, it would be
possible to include extra settings in other CPUs if desired.
Adding a new top level build target is a bit disruptive, but should be
contained to the am335x directory and not interfere with other mainboards.
Change-Id: I06d346a4050c20963b3c7c6e8a152070bf2d145a
Signed-off-by: Gabe Black <gabeblack(a)chromium.org>
---
src/cpu/ti/am335x/Makefile.inc | 17 ++++++++++
src/cpu/ti/am335x/header.c | 72 ++++++++++++++++++++++++++++++++++++++++++
src/cpu/ti/am335x/header.h | 67 +++++++++++++++++++++++++++++++++++++++
src/cpu/ti/am335x/header.ld | 34 ++++++++++++++++++++
4 files changed, 190 insertions(+)
diff --git a/src/cpu/ti/am335x/Makefile.inc b/src/cpu/ti/am335x/Makefile.inc
index 8c4c663..c1bbcf6 100644
--- a/src/cpu/ti/am335x/Makefile.inc
+++ b/src/cpu/ti/am335x/Makefile.inc
@@ -10,3 +10,20 @@ ramstage-y += monotonic_timer.c
ramstage-y += nand.c
ramstage-y += timer.c
ramstage-y += uart.c
+
+$(call add-class,omap-header)
+
+real-target: $(obj)/MLO
+
+header_ld = $(src)/cpu/ti/am335x/header.ld
+
+$(obj)/omap-header.bin: $$(omap-header-objs) $$(header_ld)
+ @printf " CC $(subst $(obj)/,,$(@))\n"
+ $(CC) -nostdlib -nostartfiles -static -include $(obj)/config.h -o $@.tmp $< -T $(header_ld)
+ $(OBJCOPY) --only-section=".header" -O binary $@.tmp $@
+
+$(obj)/MLO: $(obj)/coreboot.rom $(obj)/omap-header.bin
+ @printf " HEADER $(subst $(obj)/,,$(@))\n"
+ $(Q)cat $(obj)/omap-header.bin $(obj)/coreboot.rom > $@
+
+omap-header-y += header.c
diff --git a/src/cpu/ti/am335x/header.c b/src/cpu/ti/am335x/header.c
new file mode 100644
index 0000000..bd2f344
--- /dev/null
+++ b/src/cpu/ti/am335x/header.c
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2013 Google Inc.
+ *
+ * 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; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * 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., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <config.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "header.h"
+
+struct config_headers {
+ // The table of contents.
+ struct configuration_header_toc_item toc_chsettings;
+ struct configuration_header_toc_item toc_end;
+
+ // An inert instance of chsettings.
+ struct configuration_header_settings chsettings;
+} __attribute__((packed));
+
+struct omap_image_headers {
+ union {
+ struct config_headers config_headers;
+ uint8_t bytes[512];
+ };
+ struct gp_device_header image_header;
+};
+
+struct omap_image_headers headers __attribute__((section(".header"))) = {
+ .config_headers = {
+ .toc_chsettings = {
+ .start = offsetof(struct omap_image_headers,
+ config_headers.chsettings),
+ .size = sizeof(struct configuration_header_settings),
+ .reserved = { 0, 0, 0 },
+ .filename = "CHSETTINGS\0"
+ },
+ .toc_end = {
+ .start = 0xffffffff,
+ .size = 0xffffffff,
+ .reserved = { 0xffffffff, 0xffffffff, 0xffffffff },
+ .filename = { 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff }
+ },
+ .chsettings = {
+ .key = 0xc0c0c0c1,
+ .valid = 0,
+ .version = 1,
+ .reserved = 0,
+ .flags = 0
+ }
+ },
+ .image_header = {
+ .size = CONFIG_ROM_SIZE,
+ .destination = CONFIG_BOOTBLOCK_BASE
+ }
+};
diff --git a/src/cpu/ti/am335x/header.h b/src/cpu/ti/am335x/header.h
new file mode 100644
index 0000000..84afd35
--- /dev/null
+++ b/src/cpu/ti/am335x/header.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013 Google Inc.
+ *
+ * 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; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * 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., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CPU_TI_AM335X_HEADER_H
+#define __CPU_TI_AM335X_HEADER_H
+
+#include <stdint.h>
+
+struct configuration_header_toc_item {
+ // Offset from the start address of the TOC to the actual address of
+ // a section.
+ uint32_t start;
+
+ // Size of a section.
+ uint32_t size;
+
+ // Reserved.
+ uint32_t reserved[3];
+
+ // 12-character name of a section, including the zero (\0) terminator.
+ char filename[12];
+} __attribute__((packed));
+
+struct configuration_header_settings {
+ // Key used for section verification.
+ uint32_t key;
+
+ // Enables or disables the section.
+ // 00h: Disable.
+ // Other: Enable.
+ uint8_t valid;
+
+ // Configuration header version.
+ uint8_t version;
+
+ // Reserved.
+ uint16_t reserved;
+
+ // Flags. It's not clear what this is used for.
+ uint32_t flags;
+} __attribute__((packed));
+
+struct gp_device_header {
+ // Size of the image.
+ uint32_t size;
+
+ // Address to store the image/code entry point.
+ uint32_t destination;
+} __attribute__((packed));
+
+#endif
diff --git a/src/cpu/ti/am335x/header.ld b/src/cpu/ti/am335x/header.ld
new file mode 100644
index 0000000..33c10e1
--- /dev/null
+++ b/src/cpu/ti/am335x/header.ld
@@ -0,0 +1,34 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2013 Google Inc.
+ *
+ * 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
+ */
+
+/* We use ELF as output format. So that we can debug the code in some form. */
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+
+TARGET(binary)
+SECTIONS
+{
+ .header : {
+ *(.header);
+ }
+
+ /DISCARD/ : {
+ *(*)
+ }
+}