Ben Gardner (gardner.ben(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12479
-gerrit
commit 90c60ff969c9a2b6b66b151369b406464d303ec9
Author: Ben Gardner <gardner.ben(a)gmail.com>
Date: Thu Nov 19 09:50:05 2015 -0600
console_init: Add ENV_SMM to the log
Looks better than UNKNOWN when SMM logging is turned on.
Change-Id: I577ddf2de4ef249a1a4ce627bb55608731a9f5ed
Signed-off-by: Ben Gardner <gardner.ben(a)gmail.com>
---
src/console/init.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/console/init.c b/src/console/init.c
index 7e7c5ac..6590f60 100644
--- a/src/console/init.c
+++ b/src/console/init.c
@@ -53,6 +53,8 @@ void console_init(void)
"ramstage"
#elif ENV_VERSTAGE
"verstage"
+#elif ENV_SMM
+ "smm"
#else
"UNKNOWN"
#endif
the following patch was just integrated into master:
commit 8fe681872b38c23a2a9172199d1e9c0edae12937
Author: Martin Roth <martinroth(a)google.com>
Date: Tue Oct 27 15:03:46 2015 -0600
crossgcc: Update makefile builds
- Only build IASL once for the 'all' targets instead of once for each.
- Change the control of what gets built from different targets to
variables on the build line.
- Clean up and correct the list of phony targets
- Don't keep the temporary files around while building all. This
takes up a lot of space. If it's desired behavior, add
BUILDGCC_OPTIONS=-t on the make command line.
- Add comments about CPU= and BUILDGCC_OPTIONS= variables
- Add KEEP_SOURCES option
Change-Id: I7752974e249f25717b42be25a841c69af84d5c69
Signed-off-by: Martin Roth <martinroth(a)google.com>
Reviewed-on: http://review.coreboot.org/12300
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi(a)google.com>
See http://review.coreboot.org/12300 for details.
-gerrit
Martin Roth (martinroth(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12461
-gerrit
commit 2dadcd120cdacff92c97ffbd0bff88c8a055016d
Author: Martin Roth <martinroth(a)google.com>
Date: Wed Nov 18 16:07:54 2015 -0700
fsp1_0: Update Kconfig for symbols not depending on FSP binary
There were several symbols that were inside the 'if HAVE_FSP_BIN' that
don't really depend on having the FSP binary. In theory, we should be
able to build a coreboot rom and add the FSP binary later. This doesn't
always work in practice, but this is a step in that direction.
This also fixes a Kconfig warning for Rangeley.
Change-Id: I327d8fe5231d7de25f2a74b8a193deb47e4c5ee1
Signed-off-by: Martin Roth <martinroth(a)google.com>
---
src/drivers/intel/fsp1_0/Kconfig | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/drivers/intel/fsp1_0/Kconfig b/src/drivers/intel/fsp1_0/Kconfig
index 36bfa7c..28df90e 100644
--- a/src/drivers/intel/fsp1_0/Kconfig
+++ b/src/drivers/intel/fsp1_0/Kconfig
@@ -41,6 +41,8 @@ config FSP_FILE
help
The path and filename of the Intel FSP binary for this platform.
+endif #HAVE_FSP_BIN
+
config FSP_LOC
hex "Intel FSP Binary location in CBFS"
help
@@ -92,8 +94,6 @@ config VIRTUAL_ROM_SIZE
the SPI ROMs are loaded with an 8 MB coreboot image, the virtual ROM
size is 16 MB.
-endif #HAVE_FSP_BIN
-
config CACHE_ROM_SIZE_OVERRIDE
hex "Cache ROM Size"
default CBFS_SIZE
the following patch was just integrated into master:
commit a791fbb0fa585befa91d12fe685cf1f4da8e579f
Author: Patrick Georgi <pgeorgi(a)chromium.org>
Date: Thu Nov 19 15:46:37 2015 +0100
lint: properly terminate junit report on error
Otherwise </testsuite> is missing and jenkins can't make sense of
things.
Change-Id: If11a6d2506efc9d7c915f50896b2714bc66e3b65
Signed-off-by: Patrick Georgi <pgeorgi(a)chromium.org>
Reviewed-on: http://review.coreboot.org/12478
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth(a)google.com>
See http://review.coreboot.org/12478 for details.
-gerrit
Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12444
-gerrit
commit e85643707c55be24225c5ec7ee4f6b93ab1c7a8e
Author: Douglas Anderson <dianders(a)chromium.org>
Date: Wed Oct 28 09:18:28 2015 -0700
edid: Don't half parse (and wrongly print) more detailed timings
The EDID parsing code continued to update _some_ fields of the output
edid but not others if "did_detailed_timing" was already set. It also
then went on to print out this halfway mix of modes each time, despite
the fact that it didn't really update everything.
Let's fix that. We'll reduce code changes by using a temporary copy of
data in detailed_block() and then we'll copy it back if we decide we
should update.
BRANCH=none
BUG=chrome-os-partner:46998
TEST=No more bogus printouts
Change-Id: Idbfa233e0997244c22ef21c892c4473a91621821
Signed-off-by: Patrick Georgi <pgeorgi(a)chromium.org>
Original-Commit-Id: 4d69999cdd7ce3cd2c9332ab3f22ea8eb4b6f2e9
Original-Change-Id: Ia72cac7fda2772f26477e43237678fa30feca584
Original-Signed-off-by: Douglas Anderson <dianders(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/309541
Original-Reviewed-on: https://chromium-review.googlesource.com/309609
Original-Commit-Ready: David Hendricks <dhendrix(a)chromium.org>
Original-Tested-by: David Hendricks <dhendrix(a)chromium.org>
Original-Reviewed-by: Julius Werner <jwerner(a)chromium.org>
---
src/lib/edid.c | 125 +++++++++++++++++++++++++++++++--------------------------
1 file changed, 67 insertions(+), 58 deletions(-)
diff --git a/src/lib/edid.c b/src/lib/edid.c
index 8c8ab6f..3aebc65 100644
--- a/src/lib/edid.c
+++ b/src/lib/edid.c
@@ -91,6 +91,8 @@ static struct {
const char *stereo;
} extra_info;
+static struct edid tmp_edid;
+
static int vbe_valid;
static struct lb_framebuffer edid_fb;
@@ -197,9 +199,10 @@ extract_string(unsigned char *x, int *valid_termination, int len)
/* 1 means valid data */
static int
-detailed_block(struct edid *out, unsigned char *x, int in_extension,
+detailed_block(struct edid *result_edid, unsigned char *x, int in_extension,
struct edid_context *c)
{
+ struct edid *out = &tmp_edid;
int i;
#if 1
printk(BIOS_SPEW, "Hex of detail: ");
@@ -208,6 +211,9 @@ detailed_block(struct edid *out, unsigned char *x, int in_extension,
printk(BIOS_SPEW, "\n");
#endif
+ /* Result might already have some valid fields like mode_is_supported */
+ *out = *result_edid;
+
if (x[0] == 0 && x[1] == 0) {
/* Monitor descriptor block, not detailed timing descriptor. */
if (x[2] != 0) {
@@ -443,63 +449,59 @@ detailed_block(struct edid *out, unsigned char *x, int in_extension,
c->has_valid_descriptor_ordering = 0;
}
- if (! c->did_detailed_timing){
- /* Edid contains pixel clock in terms of 10KHz */
- out->mode.pixel_clock = (x[0] + (x[1] << 8)) * 10;
- /*
- LVDS supports following pixel clocks
- 25000...112000 kHz: single channel
- 80000...224000 kHz: dual channel
- There is some overlap in theoretically supported
- pixel clock between single-channel and dual-channel.
- In practice with current panels all panels
- <= 75200 kHz: single channel
- >= 97750 kHz: dual channel
- We have no samples between those values, so put a
- threshold at 95000 kHz. If we get anything over
- 95000 kHz with single channel, we can make this
- more sofisticated but it's currently not needed.
- */
- out->mode.lvds_dual_channel = (out->mode.pixel_clock >= 95000);
- extra_info.x_mm = (x[12] + ((x[14] & 0xF0) << 4));
- extra_info.y_mm = (x[13] + ((x[14] & 0x0F) << 8));
- out->mode.ha = (x[2] + ((x[4] & 0xF0) << 4));
- out->mode.hbl = (x[3] + ((x[4] & 0x0F) << 8));
- out->mode.hso = (x[8] + ((x[11] & 0xC0) << 2));
- out->mode.hspw = (x[9] + ((x[11] & 0x30) << 4));
- out->mode.hborder = x[15];
- out->mode.va = (x[5] + ((x[7] & 0xF0) << 4));
- out->mode.vbl = (x[6] + ((x[7] & 0x0F) << 8));
- out->mode.vso = ((x[10] >> 4) + ((x[11] & 0x0C) << 2));
- out->mode.vspw = ((x[10] & 0x0F) + ((x[11] & 0x03) << 4));
- out->mode.vborder = x[16];
- /* set up some reasonable defaults for payloads.
- * We observe that most modern chipsets we work with
- * tend to support rgb888 without regard to the
- * panel bits per color or other settings. The rgb888
- * is a convenient layout for software because
- * it avoids the messy bit stuffing of rgb565 or rgb444.
- * It makes a reasonable trade of memory for speed.
- * So, set up the default for
- * 32 bits per pixel
- * rgb888 (i.e. no alpha, but pixels on 32-bit boundaries)
- * The mainboard can modify these if needed, though
- * we have yet to see a case where that will happen.
- * The existing ARM mainboards don't even call this function
- * so this will not affect them.
- */
- out->framebuffer_bits_per_pixel = 32;
-
- out->x_resolution = ALIGN(out->mode.ha *
- ((out->framebuffer_bits_per_pixel + 7) / 8),
- 64) / (out->framebuffer_bits_per_pixel/8);
- out->y_resolution = out->mode.va;
- out->bytes_per_line = ALIGN(out->mode.ha *
- ((out->framebuffer_bits_per_pixel + 7)/8),
- 64);
- printk(BIOS_SPEW, "Did detailed timing\n");
- }
- c->did_detailed_timing = 1;
+ /* Edid contains pixel clock in terms of 10KHz */
+ out->mode.pixel_clock = (x[0] + (x[1] << 8)) * 10;
+ /*
+ LVDS supports following pixel clocks
+ 25000...112000 kHz: single channel
+ 80000...224000 kHz: dual channel
+ There is some overlap in theoretically supported
+ pixel clock between single-channel and dual-channel.
+ In practice with current panels all panels
+ <= 75200 kHz: single channel
+ >= 97750 kHz: dual channel
+ We have no samples between those values, so put a
+ threshold at 95000 kHz. If we get anything over
+ 95000 kHz with single channel, we can make this
+ more sofisticated but it's currently not needed.
+ */
+ out->mode.lvds_dual_channel = (out->mode.pixel_clock >= 95000);
+ extra_info.x_mm = (x[12] + ((x[14] & 0xF0) << 4));
+ extra_info.y_mm = (x[13] + ((x[14] & 0x0F) << 8));
+ out->mode.ha = (x[2] + ((x[4] & 0xF0) << 4));
+ out->mode.hbl = (x[3] + ((x[4] & 0x0F) << 8));
+ out->mode.hso = (x[8] + ((x[11] & 0xC0) << 2));
+ out->mode.hspw = (x[9] + ((x[11] & 0x30) << 4));
+ out->mode.hborder = x[15];
+ out->mode.va = (x[5] + ((x[7] & 0xF0) << 4));
+ out->mode.vbl = (x[6] + ((x[7] & 0x0F) << 8));
+ out->mode.vso = ((x[10] >> 4) + ((x[11] & 0x0C) << 2));
+ out->mode.vspw = ((x[10] & 0x0F) + ((x[11] & 0x03) << 4));
+ out->mode.vborder = x[16];
+ /* set up some reasonable defaults for payloads.
+ * We observe that most modern chipsets we work with
+ * tend to support rgb888 without regard to the
+ * panel bits per color or other settings. The rgb888
+ * is a convenient layout for software because
+ * it avoids the messy bit stuffing of rgb565 or rgb444.
+ * It makes a reasonable trade of memory for speed.
+ * So, set up the default for
+ * 32 bits per pixel
+ * rgb888 (i.e. no alpha, but pixels on 32-bit boundaries)
+ * The mainboard can modify these if needed, though
+ * we have yet to see a case where that will happen.
+ * The existing ARM mainboards don't even call this function
+ * so this will not affect them.
+ */
+ out->framebuffer_bits_per_pixel = 32;
+
+ out->x_resolution = ALIGN(out->mode.ha *
+ ((out->framebuffer_bits_per_pixel + 7) / 8),
+ 64) / (out->framebuffer_bits_per_pixel/8);
+ out->y_resolution = out->mode.va;
+ out->bytes_per_line = ALIGN(out->mode.ha *
+ ((out->framebuffer_bits_per_pixel + 7)/8),
+ 64);
switch ((x[17] & 0x18) >> 3) {
case 0x00:
extra_info.syncmethod = " analog composite";
@@ -556,6 +558,13 @@ detailed_block(struct edid *out, unsigned char *x, int in_extension,
out->mode.phsync, out->mode.pvsync,
extra_info.syncmethod, x[17] & 0x80 ?" interlaced" : "",
extra_info.stereo);
+
+ if (! c->did_detailed_timing) {
+ printk(BIOS_SPEW, "Did detailed timing\n");
+ c->did_detailed_timing = 1;
+ *result_edid = *out;
+ }
+
return 1;
}
Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12441
-gerrit
commit e9d975a9516add75a34aa2dff4094514149cb39e
Author: Douglas Anderson <dianders(a)chromium.org>
Date: Wed Oct 28 11:19:57 2015 -0700
edid: Remove useless parameter from detailed_cvt_descriptor()
The detailed_cvt_descriptor() function takes a parameter "out" for no
good reason. Remove it.
BRANCH=none
BUG=chrome-os-partner:46998
TEST=Build and boot
Change-Id: I1042dba9ddf2b4b543bd07615013088be5055950
Signed-off-by: Patrick Georgi <pgeorgi(a)chromium.org>
Original-Commit-Id: 5c3474c9b1f9fb73f44d64d3a0592f92339da2df
Original-Change-Id: I4d695a6dba6606d2132578ce0ab4cb612c83d0f4
Original-Signed-off-by: Douglas Anderson <dianders(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/309598
Original-(cherry picked from commit 39122e242e808d71a4e274e8a23e9a63f4984388)
Original-Reviewed-on: https://chromium-review.googlesource.com/309496
Original-Commit-Ready: David Hendricks <dhendrix(a)chromium.org>
Original-Tested-by: David Hendricks <dhendrix(a)chromium.org>
Original-Reviewed-by: David Hendricks <dhendrix(a)chromium.org>
Original-Reviewed-by: Julius Werner <jwerner(a)chromium.org>
---
src/lib/edid.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lib/edid.c b/src/lib/edid.c
index 0f5643d..e94720e 100644
--- a/src/lib/edid.c
+++ b/src/lib/edid.c
@@ -110,7 +110,7 @@ static char *manufacturer_name(unsigned char *x)
}
static int
-detailed_cvt_descriptor(struct edid *out, unsigned char *x, int first)
+detailed_cvt_descriptor(unsigned char *x, int first)
{
const unsigned char empty[3] = { 0, 0, 0 };
const char *names[] = { "50", "60", "75", "85" };
@@ -253,7 +253,7 @@ detailed_block(struct edid *out, unsigned char *x, int in_extension,
return 0;
}
for (i = 0; i < 4; i++)
- valid_cvt &= detailed_cvt_descriptor(out, x + 6 + (i * 3), (i == 0));
+ valid_cvt &= detailed_cvt_descriptor(x + 6 + (i * 3), (i == 0));
c->has_valid_cvt &= valid_cvt;
return 1;
}
Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12442
-gerrit
commit 29e0bd926ecbff4fbe217ee17c03382a6354e9a9
Author: Douglas Anderson <dianders(a)chromium.org>
Date: Wed Oct 28 10:19:52 2015 -0700
edid: Don't set standard timings as supported if they're not
The set to say that a standard timing was supported was not properly in
the "if" test. That meant that even when standard timings weren't
supported, we thought that they were. That had the side effect of never
using the detailed mode.
BRANCH=none
BUG=chrome-os-partner:46998
TEST=Adafruit panel works now
Change-Id: Ide3ed6c5682840f808d854755dac58e9057e6bda
Signed-off-by: Patrick Georgi <pgeorgi(a)chromium.org>
Original-Commit-Id: c99d3ee8d163fc6be207c5a7df2a7aecd7af7849
Original-Change-Id: Ib67735219fd28516857d9b63f1ba156573f1bea3
Original-Signed-off-by: Douglas Anderson <dianders(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/309521
Original-(cherry picked from commit 4e4c2816e2239299bc02e3a57fb18056db62b56c)
Original-Reviewed-on: https://chromium-review.googlesource.com/309552
Original-Commit-Ready: David Hendricks <dhendrix(a)chromium.org>
Original-Tested-by: David Hendricks <dhendrix(a)chromium.org>
Original-Reviewed-by: David Hendricks <dhendrix(a)chromium.org>
Original-Reviewed-by: Julius Werner <jwerner(a)chromium.org>
---
src/lib/edid.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/lib/edid.c b/src/lib/edid.c
index e94720e..6663d1c 100644
--- a/src/lib/edid.c
+++ b/src/lib/edid.c
@@ -1272,13 +1272,13 @@ int decode_edid(unsigned char *edid, int size, struct edid *out)
if (edid[0x23 + i / 8] & (1 << (7 - i % 8))) {
printk(BIOS_SPEW, " %dx%d@%dHz\n", established_timings[i].x,
established_timings[i].y, established_timings[i].refresh);
- }
- for (j = 0; j < NUM_KNOWN_MODES; j++) {
- if (known_modes[j].ha == established_timings[i].x &&
- known_modes[j].va == established_timings[i].y &&
- known_modes[j].refresh == established_timings[i].refresh)
+ for (j = 0; j < NUM_KNOWN_MODES; j++) {
+ if (known_modes[j].ha == established_timings[i].x &&
+ known_modes[j].va == established_timings[i].y &&
+ known_modes[j].refresh == established_timings[i].refresh)
out->mode_is_supported[j] = 1;
+ }
}
}