the following patch was just integrated into master:
commit 6aa45c090bf8f52fd531f24d3347fdbf70f3b7a8
Author: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Date: Fri Jun 24 16:37:05 2016 +0300
AGESA boards: Fix split to romstage and ramstage
Boards broken with commit:
062ef1c AGESA boards: Split dispatcher to romstage and ramstage
Boot failure with asus/f2a85-m witnessed around MemMS3Save() call,
message "Save memory S3 data in heap" in verbose agesa logs was
replaced by a system reset.
Default stubs for MemS3ResumeConstructNBBlock() returned TRUE
without initializing the block contents. This would not work for case
with multiple NB support built into same firmware.
MemMCreateS3NbBlock() then returned with S3NBPtr!=NULL with uninitialized
data and MemMContextSave() referenced those as invalid pointers.
There is no reason to prevent booting in the case S3 resume data is not
passed to ramstage, so remove the ASSERT(). It only affects builds with
IDSOPT_IDS_ENABLED=TRUE anyways.
Change-Id: I8fd1e308ceab2b6f4b4c90f0f712934c2918d92d
Signed-off-by: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Reviewed-on: https://review.coreboot.org/15344
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
Reviewed-by: Idwer Vollering <vidwer(a)gmail.com>
See https://review.coreboot.org/15344 for details.
-gerrit
HARSHAPRIYA N (harshapriya.n(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15528
-gerrit
commit 82e4fa14a5a9f9266486a838a6bf647d400490ca
Author: Harsha Priya <harshapriya.n(a)intel.com>
Date: Fri Jul 1 11:53:05 2016 -0700
apollolake: Add Audio DSP device
Add the Audio DSP device for apollolake as a PCI driver with a static
scan_bus handler so generic devices can be declared under it.
This is for devices like the Maxim 98357A which is connected on the
I2S bus for data but has no control channel bus and instead just has
a GPIO for channel selection and power down control and needs to
describe that GPIO connection to the OS via ACPI.
Change-Id: Icb97ccf7d6a9034877614d49166bc9e4fe659b12
---
src/soc/intel/apollolake/Makefile.inc | 1 +
src/soc/intel/apollolake/dsp.c | 33 +++++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/src/soc/intel/apollolake/Makefile.inc b/src/soc/intel/apollolake/Makefile.inc
index 7326f14..ae12b08 100644
--- a/src/soc/intel/apollolake/Makefile.inc
+++ b/src/soc/intel/apollolake/Makefile.inc
@@ -43,6 +43,7 @@ smm-y += uart_early.c
ramstage-$(CONFIG_HAVE_ACPI_TABLES) += acpi.c
ramstage-y += cpu.c
ramstage-y += chip.c
+ramstage-y += dsp.c
ramstage-y += gpio.c
ramstage-y += graphics.c
ramstage-$(CONFIG_SOC_UART_DEBUG) += uart_early.c
diff --git a/src/soc/intel/apollolake/dsp.c b/src/soc/intel/apollolake/dsp.c
new file mode 100644
index 0000000..ae4723b
--- /dev/null
+++ b/src/soc/intel/apollolake/dsp.c
@@ -0,0 +1,33 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2016 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.
+ */
+
+#include <device/device.h>
+#include <device/pci.h>
+#include <device/pci_ids.h>
+
+static struct device_operations dsp_dev_ops = {
+ .read_resources = &pci_dev_read_resources,
+ .set_resources = &pci_dev_set_resources,
+ .enable_resources = &pci_dev_enable_resources,
+ .scan_bus = &scan_static_bus,
+};
+
+static const struct pci_driver apollolake_dsp __pci_driver = {
+ .ops = &dsp_dev_ops,
+ .vendor = PCI_VENDOR_ID_INTEL,
+ .device = 0x5a98
+};
+
+
HARSHAPRIYA N (harshapriya.n(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15434
-gerrit
commit d3ea0deab9b65a152fd18d92596adea06fb4c823
Author: Sathyanarayana Nujella <sathyanarayana.nujella(a)intel.com>
Date: Thu Jun 16 14:40:17 2016 -0700
google/reef: Make the device address more readable
Using central header file to include device address and interrupt
line to avoid confusion.
Change-Id: Ie0eae6e88db29ab9dc628f8c3fc0178b085b5536
Signed-off-by: Sathyanarayana Nujella <sathyanarayana.nujella(a)intel.com>
---
src/mainboard/google/reef/on_board.h | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/src/mainboard/google/reef/on_board.h b/src/mainboard/google/reef/on_board.h
new file mode 100644
index 0000000..3c2af96
--- /dev/null
+++ b/src/mainboard/google/reef/on_board.h
@@ -0,0 +1,21 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2016 Intel Corp.
+ * (Written by Lance Zhao <lijian.zhao(a)intel.com> for Intel Corp.)
+ *
+ * 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.
+ */
+
+#ifndef _ON_BOARD_H_
+#define _ON_BOARD_H_
+
+#include <soc/gpio_defs.h>
+
+#define BOARD_HP_MIC_CODEC_I2C_ADDR 0x1a
+#define BOARD_HP_MIC_CODEC_IRQ 0x5b
+
+#endif /* _ON_BOARD_H_ */
Julius Werner (jwerner(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15524
-gerrit
commit af4a9748381fe282c0b9c01bfaad49676a6b221a
Author: Julius Werner <jwerner(a)chromium.org>
Date: Thu Jun 30 22:34:57 2016 -0700
cbgfx: Use memset() for faster screen clearing if possible
cbgfx currently makes a separate function call (recomputing some values)
for every single pixel it draws. While we mostly don't care that much
about display speed, this can become an issue if you're trying to paint
the whole screen white on a lowly-clocked Cortex-A53. As a simple
solution for these extreme cases, we can build a fast path into
clear_screen() that just memset()s the whole framebuffer if the color
and pixel format allow it.
BUG=chrome-os-partner:54416
TEST=Screen drawing speed on Kevin visibly improves (from 2.5s to 3ms).
Change-Id: I22f032afbb86b96fa5a0cbbdce8526a905c67b58
Signed-off-by: Julius Werner <jwerner(a)chromium.org>
---
payloads/libpayload/drivers/video/graphics.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/payloads/libpayload/drivers/video/graphics.c b/payloads/libpayload/drivers/video/graphics.c
index 01e3565..943f8ed 100644
--- a/payloads/libpayload/drivers/video/graphics.c
+++ b/payloads/libpayload/drivers/video/graphics.c
@@ -223,16 +223,24 @@ int clear_canvas(const struct rgb_color *rgb)
int clear_screen(const struct rgb_color *rgb)
{
- uint32_t color;
- struct vector p;
-
if (cbgfx_init())
return CBGFX_ERROR_INIT;
- color = calculate_color(rgb);
- for (p.y = 0; p.y < screen.size.height; p.y++)
- for (p.x = 0; p.x < screen.size.width; p.x++)
- set_pixel(&p, color);
+ struct vector p;
+ uint32_t color = calculate_color(rgb);
+ const int bpp = fbinfo->bits_per_pixel;
+ const int bpl = fbinfo->bytes_per_line;
+
+ /* If all significant bytes in color are equal, fastpath through memset.
+ * We assume that for 32bpp the high byte gets ignored anyway. */
+ if ((((color >> 8) & 0xff) == (color & 0xff)) && (bpp == 16 ||
+ (((color >> 16) & 0xff) == (color & 0xff)))) {
+ memset(fbaddr, color & 0xff, screen.size.height * bpl);
+ } else {
+ for (p.y = 0; p.y < screen.size.height; p.y++)
+ for (p.x = 0; p.x < screen.size.width; p.x++)
+ set_pixel(&p, color);
+ }
return CBGFX_SUCCESS;
}
Duncan Laurie (dlaurie(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15521
-gerrit
commit 1f540a06d8184636e4ccb0c847e6db91b79855f0
Author: Duncan Laurie <dlaurie(a)chromium.org>
Date: Thu Jun 30 14:37:37 2016 -0700
acpi_device: Have acpi_device_scope() use a separate buffer
Have the different acpi_device_ path functions use a different static
buffer so they can be called interchangeably.
Change-Id: I270a80f66880861d5847bd586a16a73f8f1e2511
Signed-off-by: Duncan Laurie <dlaurie(a)chromium.org>
---
src/arch/x86/acpi_device.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/arch/x86/acpi_device.c b/src/arch/x86/acpi_device.c
index 69d44f3..1f0ab37 100644
--- a/src/arch/x86/acpi_device.c
+++ b/src/arch/x86/acpi_device.c
@@ -121,10 +121,15 @@ const char *acpi_device_path(struct device *dev)
/* Return the path of the parent device as the ACPI Scope for this device */
const char *acpi_device_scope(struct device *dev)
{
+ static char buf[DEVICE_PATH_MAX] = {};
+
if (!dev || !dev->bus || !dev->bus->dev)
return NULL;
- return acpi_device_path(dev->bus->dev);
+ if (acpi_device_path_fill(dev->bus->dev, buf, sizeof(buf), 0) <= 0)
+ return NULL;
+
+ return buf;
}
/* Concatentate the device path and provided name suffix */