From a7072c894c25ca03b4b5962ef0be3cbc6eaa506a Mon Sep 17 00:00:00 2001 From: stefanct Date: Thu, 27 Dec 2012 18:40:26 +0000 Subject: Refactor PCI and USB device status printing. To be able to get rid of lots of #ifdefs and centralize programmer-specific data more... - introduce two new fields to struct programmer_entry, namely enum type (OTHER, USB, PCI) and union devs (pcidev_status, usbdev_status or char *note). - use those fields to generate device listings in print.c and print_wiki.c. Bonus: add printing of USB devices to print_wiki.c and count supported PCI and USB devices. Signed-off-by: Stefan Tauner Acked-by: Carl-Daniel Hailfinger git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@1631 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- programmer.h | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) (limited to 'programmer.h') diff --git a/programmer.h b/programmer.h index 1510e2f..e2bb3d8 100644 --- a/programmer.h +++ b/programmer.h @@ -90,8 +90,20 @@ enum programmer { PROGRAMMER_INVALID /* This must always be the last entry. */ }; +enum programmer_type { + PCI = 1, /* to detect uninitialized values */ + USB, + OTHER, +}; + struct programmer_entry { const char *name; + const enum programmer_type type; + union { + const struct pcidev_status *const pci; + const struct usbdev_status *const usb; + const char *const note; + } devs; int (*init) (void); @@ -219,13 +231,6 @@ void internal_delay(int usecs); extern uint32_t io_base_addr; extern struct pci_access *pacc; extern struct pci_dev *pcidev_dev; -struct pcidev_status { - uint16_t vendor_id; - uint16_t device_id; - const enum test_state status; - const char *vendor_name; - const char *device_name; -}; uintptr_t pcidev_readbar(struct pci_dev *dev, int bar); uintptr_t pcidev_init(int bar, const struct pcidev_status *devs); /* rpci_write_* are reversible writes. The original PCI config space register @@ -242,6 +247,21 @@ int rpci_write_long(struct pci_dev *dev, int reg, uint32_t data); void print_supported_pcidevs(const struct pcidev_status *devs); #endif +struct usbdev_status { + uint16_t vendor_id; + uint16_t device_id; + const enum test_state status; + const char *vendor_name; + const char *device_name; +}; +struct pcidev_status { + uint16_t vendor_id; + uint16_t device_id; + const enum test_state status; + const char *vendor_name; + const char *device_name; +}; + #if CONFIG_INTERNAL == 1 /* board_enable.c */ int board_parse_parameter(const char *boardstring, const char **vendor, const char **model); @@ -420,13 +440,6 @@ extern const struct pcidev_status ata_hpt[]; /* ft2232_spi.c */ #if CONFIG_FT2232_SPI == 1 -struct usbdev_status { - uint16_t vendor_id; - uint16_t device_id; - const enum test_state status; - const char *vendor_name; - const char *device_name; -}; int ft2232_spi_init(void); extern const struct usbdev_status devs_ft2232spi[]; void print_supported_usbdevs(const struct usbdev_status *devs); -- cgit v1.2.1