david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[pci] Allow pci_vpd_init() return status to be ignored

Most xxx_init() functions are void functions with no failure cases.
Allow pci_vpd_init() to be used in the same way.  (Subsequent calls to
pci_vpd_read() etc. will fail if pci_vpd_init() fails.)

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2011-01-11 01:37:27 +00:00
parent 17d28f4877
commit 267ef31791
2 changed files with 19 additions and 0 deletions

View File

@ -73,6 +73,10 @@ static int pci_vpd_read_dword ( struct pci_vpd *vpd, int address,
unsigned int retries;
uint16_t flag;
/* Fail if no VPD present */
if ( ! cap )
return -ENOTTY;
/* Return cached value, if present */
if ( pci_vpd_cache_is_valid ( vpd ) &&
( vpd->cache.address == address ) ) {
@ -127,6 +131,10 @@ static int pci_vpd_write_dword ( struct pci_vpd *vpd, int address,
unsigned int retries;
uint16_t flag;
/* Fail if no VPD present */
if ( ! cap )
return -ENOTTY;
/* Invalidate cache */
pci_vpd_invalidate_cache ( vpd );

View File

@ -133,6 +133,17 @@ struct pci_vpd {
struct pci_vpd_cache cache;
};
/**
* Check for presence of PCI VPD
*
* @v vpd PCI VPD
* @ret is_present VPD is present
*/
static inline __attribute__ (( always_inline )) int
pci_vpd_is_present ( struct pci_vpd *vpd ) {
return ( vpd->cap != 0 );
}
/**
* Check if PCI VPD read cache is valid
*