[coreboot] Patch set updated for coreboot: b68f2bc libpayload: CMOS access was implemented in a backward way

Patrick Georgi (patrick@georgi-clan.de) gerrit at coreboot.org
Sun Oct 7 15:13:38 CEST 2012


Patrick Georgi (patrick at georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1539

-gerrit

commit b68f2bc158d91dbc60305c3d9375dff53a7ff4f4
Author: Patrick Georgi <patrick.georgi at secunet.com>
Date:   Mon Sep 24 20:47:03 2012 +0200

    libpayload: CMOS access was implemented in a backward way
    
    Instead of having the highlevel functions make use of the lowlevel
    functions, it implemented the lowlevel stuff in terms of highlevel.
    
    Change-Id: I530bfe3cbc6f57a6294d86fbf1739e06467a2318
    Signed-off-by: Patrick Georgi <patrick.georgi at secunet.com>
---
 payloads/libpayload/drivers/options.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/payloads/libpayload/drivers/options.c b/payloads/libpayload/drivers/options.c
index 7122464..d3ec137 100644
--- a/payloads/libpayload/drivers/options.c
+++ b/payloads/libpayload/drivers/options.c
@@ -158,13 +158,11 @@ static struct cb_cmos_entries *lookup_cmos_entry(struct cb_cmos_option_table *op
 	int len = name ? strnlen(name, CMOS_MAX_NAME_LENGTH) : 0;
 
 	/* cmos entries are located right after the option table */
-
-	for (   cmos_entry = (struct cb_cmos_entries*)((unsigned char *)option_table + option_table->header_length);
-		cmos_entry->tag == CB_TAG_OPTION;
-		cmos_entry = (struct cb_cmos_entries*)((unsigned char *)cmos_entry + cmos_entry->size)) {
-		if (memcmp((const char*)cmos_entry->name, name, len))
-			continue;
-		return cmos_entry;
+	cmos_entry = first_cmos_entry(option_table);
+	while (cmos_entry) {
+		if (memcmp((const char*)cmos_entry->name, name, len) == 0)
+			return cmos_entry;
+		cmos_entry = next_cmos_entry(cmos_entry);
 	}
 
 	printf("ERROR: No such CMOS option (%s)\n", name);
@@ -173,7 +171,7 @@ static struct cb_cmos_entries *lookup_cmos_entry(struct cb_cmos_option_table *op
 
 struct cb_cmos_entries *first_cmos_entry(struct cb_cmos_option_table *option_table)
 {
-	return lookup_cmos_entry(option_table, NULL);
+	return (struct cb_cmos_entries*)((unsigned char *)option_table + option_table->header_length);
 }
 
 struct cb_cmos_entries *next_cmos_entry(struct cb_cmos_entries *cmos_entry)




More information about the coreboot mailing list