Re: [coreboot] [PATCH] New Socket370 and Model 68x for CAR
This should be FCPGA370 or mFCPGA370 No, m means mobile chip. Socket 370 is not a mobile chip. Afaik the m in mfcpga means micro FYI, after a little reading it looks like the Tualatin was actually the first unofficial micro cpu. The first official micro cpu's started with the mobile PIII and Celerons. That is probably why I got the two confused :-) -- Thanks, Joseph Smith Set-Top-Linux www.settoplinux.org -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] [RFC] Network console for coreboot
Hi, I have done a ROMCC version too. Stay tuned. Btw this means that SerialICE over Ethernet is closer too. Thanks, Rudolf -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] [RFC] Network console for coreboot
On 06/22/2010 04:49 AM, Rudolf Marek wrote: Hi, I have done a ROMCC version too. Stay tuned. Btw this means that SerialICE over Ethernet is closer too. YAHOO! This is great news for serialice Rudolf :-) -- Thanks, Joseph Smith Set-Top-Linux www.settoplinux.org -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
[coreboot] [PATCH]libpayload: add defines to lpgcc
Hi, attached patch tells lpgcc to add two defines to the compiler it invokes: __LIBPAYLOAD__ and an architecture specific one (__i386__ or __powerpc__) Signed-off-by: Patrick Georgi patrick.geo...@coresystems.de Index: bin/lpgcc === --- bin/lpgcc (Revision 5638) +++ bin/lpgcc (Arbeitskopie) @@ -103,14 +103,16 @@ if [ $CONFIG_TARGET_I386 = y ]; then _ARCHINCDIR=$_INCDIR/i386 _ARCHLIBDIR=$_LIBDIR/i386 + _TARGETCFLAGS=-D__i386__=1 fi if [ $CONFIG_TARGET_POWERPC = y ]; then _ARCHINCDIR=$_INCDIR/powerpc _ARCHLIBDIR=$_LIBDIR/powerpc + _TARGETCFLAGS=-D__powerpc__=1 fi -_CFLAGS=-m32 -nostdinc -nostdlib -I$_INCDIR -I$_ARCHINCDIR +_CFLAGS=-m32 -nostdinc -nostdlib -I$_INCDIR -I$_ARCHINCDIR -D__LIBPAYLOAD__=1 $_TARGETCFLAGS # Check for the -fno-stack-protector silliness -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
[coreboot] [PATCH]libpayload: implement libpci interface
Hi, attached patch provides a libpci implementation sufficient to get flashrom to compile. It should work but is untested beyond what flashrom does. It's also incomplete: libpci has many more capabilities than exposed in this variant. No pciutils code was harmed in its production - this code was written by looking at flashrom's expectations, so licensing is clean. Signed-off-by: Patrick Georgi patrick.geo...@coresystems.de Index: Makefile === --- Makefile(Revision 5638) +++ Makefile(Arbeitskopie) @@ -77,7 +77,7 @@ PLATFORM-y += arch/$(ARCHDIR-y)/Makefile.inc TARGETS-y := -BUILD-y := crypto/Makefile.inc libc/Makefile.inc drivers/Makefile.inc +BUILD-y := crypto/Makefile.inc libc/Makefile.inc drivers/Makefile.inc libpci/Makefile.inc BUILD-$(CONFIG_TINYCURSES) += curses/Makefile.inc # The primary target needs to be here before we include the @@ -145,7 +145,7 @@ $(Q)mkdir -p $(obj)/util/kconfig/lxdialog $(Q)mkdir -p $(obj)/crypto $(obj)/curses $(obj)/drivers/video $(Q)mkdir -p $(obj)/drivers/usb - $(Q)mkdir -p $(obj)/arch/$(ARCHDIR-y) $(obj)/lib/$(ARCHDIR-y) $(obj)/libc + $(Q)mkdir -p $(obj)/arch/$(ARCHDIR-y) $(obj)/lib/$(ARCHDIR-y) $(obj)/libc $(obj)/libpci $(Q)mkdir -p $(obj)/lib/$(ARCHDIR-y) $(Q)mkdir -p $(obj)/include Index: libpci/libpci.c === --- libpci/libpci.c (Revision 0) +++ libpci/libpci.c (Revision 0) @@ -0,0 +1,212 @@ +/* + * This file is part of the libpayload project. + * + * Copyright (C) 2010 coresystems GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + *derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include libpayload.h +#include pci.h +#include pci/pci.h + +/* libpci shim */ +static pcidev_t libpci_to_lb(struct pci_dev *dev) +{ + return PCI_DEV(dev-bus, dev-dev, dev-func); +} + +/* libpci interface */ +u8 pci_read_byte(struct pci_dev *dev, int pos) +{ + return pci_read_config8(libpci_to_lb(dev), pos); +} + +u16 pci_read_word(struct pci_dev *dev, int pos) +{ + return pci_read_config16(libpci_to_lb(dev), pos); +} + +u32 pci_read_long(struct pci_dev *dev, int pos) +{ + return pci_read_config32(libpci_to_lb(dev), pos); +} + +int pci_write_byte(struct pci_dev *dev, int pos, u8 data) +{ + pci_write_config8(libpci_to_lb(dev), pos, data); + return 1; /* success */ +} + +int pci_write_word(struct pci_dev *dev, int pos, u16 data) +{ + pci_write_config16(libpci_to_lb(dev), pos, data); + return 1; /* success */ +} + +int pci_write_long(struct pci_dev *dev, int pos, u32 data) +{ + pci_write_config32(libpci_to_lb(dev), pos, data); + return 1; /* success */ +} + +struct pci_access *pci_alloc(void) +{ + struct pci_access *pacc = malloc(sizeof(*pacc)); + return pacc; +} + +void pci_init(struct pci_access* pacc) +{ + memset(pacc, 0, sizeof(*pacc)); +} + +void pci_filter_init(struct pci_access* pacc, struct pci_filter* pf) +{ + pf-domain = -1; + pf-bus = -1; + pf-dev = -1; + pf-func = -1; + pf-vendor = -1; + pf-device = -1; +} + +/* parse domain:bus:dev.func (with all components but dev optional) + * into filter. + * Returns NULL on success, a string pointer to the error message otherwise. + */ +char *pci_filter_parse_slot(struct pci_filter* filter, const char* id) +{ + char *endptr; + + filter-func = filter-dev = filter-bus = filter-domain = -1; + + char *funcp = strrchr(id, '.'); + if (funcp) { +
[coreboot] [PATCH]libpayload: more libc support
Hi, I updated last week's patch to take Carl-Daniel's review into account. Attached patch moves functions out of the huge libpayload.h into headers according to libc/posix traditions, to simplify porting applications to payloads. It also adds a couple of functions: strcasecmp, strncasecmp, strcat, strtol, strspn, strcspn, strtok_r, strtok, perror, exit, getpagesize Signed-off-by: Patrick Georgi patrick.geo...@coresystems.de Index: arch/powerpc/virtual.c === --- arch/powerpc/virtual.c (Revision 5638) +++ arch/powerpc/virtual.c (Arbeitskopie) @@ -30,3 +30,7 @@ unsigned long virtual_offset = 0; +int getpagesize(void) +{ + return 4096; +} Index: arch/i386/virtual.c === --- arch/i386/virtual.c (Revision 5638) +++ arch/i386/virtual.c (Arbeitskopie) @@ -30,3 +30,8 @@ unsigned long virtual_offset = 0; + +int getpagesize(void) +{ + return 4096; +} Index: libc/printf.c === --- libc/printf.c (Revision 5638) +++ libc/printf.c (Arbeitskopie) @@ -34,6 +34,7 @@ */ #include libpayload.h +#include ctype.h /** Structure for specifying output methods for different printf clones. */ struct printf_spec { Index: libc/lib.c === --- libc/lib.c (Revision 5638) +++ libc/lib.c (Arbeitskopie) @@ -113,3 +113,9 @@ halt(); } +void exit(int status) +{ + printf(exited with status %d\n, status); + halt(); +} + Index: libc/string.c === --- libc/string.c (Revision 5638) +++ libc/string.c (Arbeitskopie) @@ -3,6 +3,7 @@ * * Copyright (C) 2007 Uwe Hermann u...@hermann-uwe.de * Copyright (C) 2008 Advanced Micro Devices, Inc. + * Copyright (C) 2010 coresystems GmbH * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -29,6 +30,8 @@ */ #include libpayload.h +#include string.h +#include ctype.h /** * Calculate the length of a fixed-size string. @@ -83,32 +86,60 @@ *zero, if s1 equals s2. Returns a value greater than zero, if *s1 is longer than s2. */ -int strcmp(const char *s1, const char *s2) +int strcasecmp(const char *s1, const char *s2) { - char c1, c2; + int i; - /* Set c1 == c2, so that we can enter the while loop. */ - c1 = 0; - c2 = 0; + for (i = 0; 1; i++) { + if (tolower(s1[i]) != tolower(s2[i])) + return s1[i] - s2[i]; + } - /* Compare characters until they differ, or one of the strings ends. */ - while (c1 == c2) { - /* Read the next character from each string. */ - c1 = *s1++; - c2 = *s2++; + return 0; +} - /* Return something negative (if s1 is shorter than s2), or - zero (if s1 equals s2). */ - if (c1 == '\0') - return c1 - c2; +/** + * Compare two strings with fixed length. + * + * @param s1 The first string. + * @param s2 The second string. + * @param maxlen Return at most maxlen characters as length of the string. + * @return A non-zero value if s1 and s2 differ, or zero if s1 equals s2. + */ +int strncasecmp(const char *s1, const char *s2, size_t maxlen) +{ + int i; + + for (i = 0; i maxlen; i++) { + if (tolower(s1[i]) != tolower(s2[i])) + return s1[i] - s2[i]; } - /* Return something positive (if s1 is longer than s2), or zero (if s1 - and s2 are equal). */ - return c1 - c2; + return 0; } /** + * Compare two strings. + * + * @param s1 The first string. + * @param s2 The second string. + * @return Returns a value less than zero, if s1 is shorter than s2. Returns + *zero, if s1 equals s2. Returns a value greater than zero, if + *s1 is longer than s2. + */ +int strcmp(const char *s1, const char *s2) +{ + int i; + + for (i = 0; 1; i++) { + if (s1[i] != s2[i]) + return s1[i] - s2[i]; + } + + return 0; +} + +/** * Compare two strings with fixed length. * * @param s1 The first string. @@ -161,6 +192,26 @@ } /** + * Concatenates two strings + * + * @param d The destination string. + * @param s The source string. + * @return A pointer to the destination string. + */ +char *strcat(char *d, const char *s) +{ + char *p = d + strlen(d); + int sl = strlen(s); + int i; + + for (i = 0; i sl; i++) + p[i] = s[i]; + + p[i] = '\0'; + return d; +} + +/** * Concatenates two strings with a maximum length. * * @param d The destination string. @@ -353,6 +404,69 @@ } /** + *
[coreboot] [commit] r5639 - trunk/payloads/libpayload
Author: mjones Date: Tue Jun 22 19:24:11 2010 New Revision: 5639 URL: https://tracker.coreboot.org/trac/coreboot/changeset/5639 Log: Change the libpayload make install default destination to be the source directory. Libpayload is not a runtime library and has many different configurations for different payloads, so doesn't really belong in /opt. Signed-off-by: Cai Bai Yin caibaiyin@gmail.com Acked-By: Marc Jones marcj...@gmail.com Modified: trunk/payloads/libpayload/Makefile Modified: trunk/payloads/libpayload/Makefile == --- trunk/payloads/libpayload/Makefile Tue Jun 22 01:27:15 2010(r5638) +++ trunk/payloads/libpayload/Makefile Tue Jun 22 19:24:11 2010(r5639) @@ -58,7 +58,7 @@ HOSTCFLAGS := -I$(srck) -I$(objk) -pipe HOSTCXXFLAGS := -I$(srck) -I$(objk) -pipe -DESTDIR = /opt +DESTDIR = $(src)/install DOXYGEN := doxygen DOXYGEN_OUTPUT_DIR := doxygen -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] Geode GX2 CAR.
Hi Marc, Op maandag 21 juni 2010 21:35:04 schreef u: Nils, I don't think that the GX2 has that bug and the register bit definitions are completely different. I would leave it out. Marc Ok i understand that it is a LX silicon bug and i wil leave it out. Thanks for the advice. Nils. -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
[coreboot] [commit] r5640 - trunk/payloads/libpayload/util/xcompile
Author: mjones Date: Tue Jun 22 21:12:58 2010 New Revision: 5640 URL: https://tracker.coreboot.org/trac/coreboot/changeset/5640 Log: Fix libpayload xconfig script to find coreboot utils xgcc. Signed-off-by: Cai Bai Yin caibaiyin@gmail.com Acked-By: Marc Jones marcj...@gmail.com Modified: trunk/payloads/libpayload/util/xcompile/xcompile Modified: trunk/payloads/libpayload/util/xcompile/xcompile == --- trunk/payloads/libpayload/util/xcompile/xcompileTue Jun 22 19:24:11 2010(r5639) +++ trunk/payloads/libpayload/util/xcompile/xcompileTue Jun 22 21:12:58 2010(r5640) @@ -41,7 +41,7 @@ # This should be a loop over all supported architectures TARCH=i386 TWIDTH=32 -for gccprefixes in `pwd`/util/crossgcc/xgcc/bin/${TARCH}-elf- ${TARCH}-elf- ; do +for gccprefixes in `pwd`/../../util/crossgcc/xgcc/bin/${TARCH}-elf- ${TARCH}-elf- ; do if ! which ${gccprefixes}as 2/dev/null /dev/null; then continue fi -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] two pathes about libpayload
Hi Bai Yin, These changes look good. These patches are small and easy to understand, but in the future, please send the patches in separate emails so that they can be commented on more easily. Acked-By: Marc Jones marcj...@gmail.com r5639 r5640 On Mon, Jun 21, 2010 at 7:48 PM, baiyin cai caibaiyin@gmail.com wrote: hi all, the first one lib.patch make libpayload install itself into its own directory which instead of /opt. xcompile.patch which fix the libpayload xcompile script load the wrong path of coreboot/util. Signed-off by: Cai Bai Yin caibaiyin@gmail.com -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot -- http://se-eng.com -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] [PATCH] Simplify device enabling and initialization
The ADM1027 doesn't expect to have children, so it has no scan_bus method. I had thought that the ADM1027 was some kind of a controller for the ADT4763, but it looks like the same type of device. Is there really an ADM1027 on your board? I don't see it in your sensors output. So... the first two patches are the same as before. The third patch adds a scan_bus method to the ADM1027 so that the ADT4763 can be initialized, and the fourth patch replaces the ADM1027 with the ADT4763 in the device tree, and removes the third patch. I'd be interested in head + 1 + 2 + 3, and head + 1 + 2 + 3 + 4. See http://ward.vandewege.net/coreboot/s2881/20100621-myles/ Thanks for testing Ward! As far as I can see, both worked, but 1+2+3+4 is cleaner. It doesn't look like there is an ADM1027 on your board. Is there something missing before an Ack commit? Thanks, Myles -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] [PATCH] Simplify device enabling and initialization
On Tue, Jun 22, 2010 at 01:30:45PM -0600, Myles Watson wrote: The ADM1027 doesn't expect to have children, so it has no scan_bus method. I had thought that the ADM1027 was some kind of a controller for the ADT4763, but it looks like the same type of device. Is there really an ADM1027 on your board? I don't see it in your sensors output. So... the first two patches are the same as before. The third patch adds a scan_bus method to the ADM1027 so that the ADT4763 can be initialized, and the fourth patch replaces the ADM1027 with the ADT4763 in the device tree, and removes the third patch. I'd be interested in head + 1 + 2 + 3, and head + 1 + 2 + 3 + 4. See http://ward.vandewege.net/coreboot/s2881/20100621-myles/ Thanks for testing Ward! As far as I can see, both worked, but 1+2+3+4 is cleaner. It doesn't look like there is an ADM1027 on your board. Is there something missing before an Ack commit? I think it's good. Thanks for writing the patches! Acked-by: Ward Vandewege w...@gnu.org Thanks, Ward. -- Ward Vandewege w...@gnu.org -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
[coreboot] [commit] r5641 - in trunk/src: drivers/i2c/adt7463 mainboard/tyan/s2881
Author: myles Date: Tue Jun 22 22:36:52 2010 New Revision: 5641 URL: https://tracker.coreboot.org/trac/coreboot/changeset/5641 Log: Finish fixing Tyan s2881. Simplify ADT7463 initialization code. Signed-off-by: Myles Watson myle...@gmail.com Acked-by: Ward Vandewege w...@gnu.org Modified: trunk/src/drivers/i2c/adt7463/adt7463.c trunk/src/mainboard/tyan/s2881/Makefile.inc trunk/src/mainboard/tyan/s2881/devicetree.cb Modified: trunk/src/drivers/i2c/adt7463/adt7463.c == --- trunk/src/drivers/i2c/adt7463/adt7463.c Tue Jun 22 21:12:58 2010 (r5640) +++ trunk/src/drivers/i2c/adt7463/adt7463.c Tue Jun 22 22:36:52 2010 (r5641) @@ -33,25 +33,11 @@ * See Analog Devices ADT7463 datasheet, Rev C (2004): * http://www.analog.com/en/prod/0,,766_825_ADT7463,00.html */ -static void adt7463_init(device_t dev) +static void adt7463_init(device_t adt7463) { - device_t smbus_dev, adt7463; - struct device_path path; int result; - /* Find the SMBus controller (AMD-8111). */ - smbus_dev = dev_find_device(0x1022, 0x746b, 0); - if (!smbus_dev) - die(SMBus controller not found\n); - printk(BIOS_DEBUG, SMBus controller found\n); - - /* Find the ADT7463 device. */ - path.type = DEVICE_PATH_I2C; - path.i2c.device = 0x2d; - adt7463 = find_dev_path(smbus_dev-link_list, path); - if (!adt7463) - die(ADT7463 not found\n); - printk(BIOS_DEBUG, ADT7463 found\n); + printk(BIOS_DEBUG, ADT7463 is %s\n, dev_path(adt7463)); /* Set all fans to 'Fastest Speed Calculated by All 3 Temperature * Channels Controls PWMx'. @@ -116,7 +102,7 @@ dev-ops = adt7463_operations; } -struct chip_operations mainboard_ops = { +struct chip_operations drivers_i2c_adt7463_ops = { CHIP_NAME(adt7463) .enable_dev = enable_dev, }; Modified: trunk/src/mainboard/tyan/s2881/Makefile.inc == --- trunk/src/mainboard/tyan/s2881/Makefile.inc Tue Jun 22 21:12:58 2010 (r5640) +++ trunk/src/mainboard/tyan/s2881/Makefile.inc Tue Jun 22 22:36:52 2010 (r5641) @@ -1 +1 @@ -obj-y += ../../../drivers/i2c/adm1027/adm1027.o +obj-y += ../../../drivers/i2c/adt7463/adt7463.o Modified: trunk/src/mainboard/tyan/s2881/devicetree.cb == --- trunk/src/mainboard/tyan/s2881/devicetree.cbTue Jun 22 21:12:58 2010(r5640) +++ trunk/src/mainboard/tyan/s2881/devicetree.cbTue Jun 22 22:36:52 2010(r5641) @@ -102,7 +102,7 @@ chip drivers/generic/generic #dimm 1-1-1 device i2c 57 on end end -chip drivers/i2c/adm1027 # ADT7463A CPU0/1 temp, CPU1 vid, SYS FAN 1/2/3 +chip drivers/i2c/adt7463 # CPU0/1 temp, CPU1 vid, SYS FAN 1/2/3 device i2c 2d on end end chip drivers/generic/generic # Winbond HWM 0x54 CPU0/1 VRM temp, SYSFAN 4,CPU0 vid, CPU0/1 FAN -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] [PATCH] Simplify device enabling and initialization
I think it's good. Thanks for writing the patches! No problem. I've wanted the initialization order to be fixed for a long time. It's good to have it done. Acked-by: Ward Vandewege w...@gnu.org Rev 5641. Thanks, Myles -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] [PATCH]libpayload: add defines to lpgcc
Patrick Georgi wrote: attached patch tells lpgcc to add two defines to the compiler it invokes: __LIBPAYLOAD__ and an architecture specific one (__i386__ or __powerpc__) Signed-off-by: Patrick Georgi patrick.geo...@coresystems.de Acked-by: Peter Stuge pe...@stuge.se -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] [PATCH]libpayload: implement libpci interface
Patrick Georgi wrote: attached patch provides a libpci implementation sufficient to get flashrom to compile. It should work but is untested beyond what flashrom does. It's also incomplete: libpci has many more capabilities than exposed in this variant. No pciutils code was harmed in its production - this code was written by looking at flashrom's expectations, so licensing is clean. Signed-off-by: Patrick Georgi patrick.geo...@coresystems.de With one important comment and one about style, this is: Acked-by: Peter Stuge pe...@stuge.se +++ libpci/libpci.c (Revision 0) .. +int pci_filter_match(struct pci_filter* pf, struct pci_dev* dev) +{ + int match = 1; + if ((pf-domain -1) (pf-domain != dev-domain)) match = 0; + if ((pf-bus -1) (pf-bus != dev-bus)) match = 0; + if ((pf-dev -1) (pf-dev != dev-dev)) match = 0; + if ((pf-func -1) (pf-func != dev-func)) match = 0; + if ((pf-vendor -1) (pf-vendor != dev-vendor_id)) match = 0; + if ((pf-device -1) (pf-device != dev-device_id)) match = 0; + return match; +} Maybe skip the variable and return directly? I'd also like the return to be on it's own line. +struct pci_dev *pci_get_dev(struct pci_access* pacc, u16 domain, u8 bus, u8 dev, u8 func) +{ + struct pci_dev *cur; + for (cur = pacc-devices; cur != NULL; cur = cur-next) { + if ((cur-domain == domain) (cur-bus == bus) (cur-dev == dev) (cur-func == func)) break; + cur = cur-next; + } + /* FIXME: is NULL the right answer if device not found? */ + return cur; +} This function doesn't search, it creates a struct pci_dev using pci_alloc() + PCI_DEV(), so it may even be possible to remove libpci_to_lb(). //Peter -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] [commit] r5641 - in trunk/src: drivers/i2c/adt7463 mainboard/tyan/s2881
repository service wrote: Log: Finish fixing Tyan s2881. Simplify ADT7463 initialization code. Very nice!! //Peter -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot