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>
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 ) ) {
unsigned int retries;
uint16_t flag;
+ /* Fail if no VPD present */
+ if ( ! cap )
+ return -ENOTTY;
+
/* Invalidate cache */
pci_vpd_invalidate_cache ( 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
*