From 5d63d3f88439c35abf40b0a38bc7d54e4729b03e Mon Sep 17 00:00:00 2001 From: Edward O'Callaghan Date: Fri, 12 Aug 2022 15:25:39 +1000 Subject: tree: Fix drivers to pass programmer_cfg to pcidev_init() Allow for programmer_cfg plumbing in pcidev.c The pci drivers impacted are plumbed here as well. Change-Id: Ie0c9d1c0866d44f64d037c596f2e30547fcfd58f Signed-off-by: Edward O'Callaghan Reviewed-on: https://review.coreboot.org/c/flashrom/+/66671 Tested-by: build bot (Jenkins) Reviewed-by: Anastasia Klimchuk Reviewed-by: Felix Singer --- atahpt.c | 2 +- atapromise.c | 2 +- atavia.c | 2 +- drkaiser.c | 2 +- gfxnvidia.c | 2 +- include/programmer.h | 2 +- it8212.c | 2 +- nic3com.c | 2 +- nicintel.c | 2 +- nicintel_eeprom.c | 2 +- nicintel_spi.c | 2 +- nicnatsemi.c | 2 +- nicrealtek.c | 2 +- ogp_spi.c | 2 +- pcidev.c | 4 ++-- satamv.c | 2 +- satasii.c | 2 +- tests/tests.c | 2 +- tests/wraps.h | 4 +++- 19 files changed, 22 insertions(+), 20 deletions(-) diff --git a/atahpt.c b/atahpt.c index 2ab51a80..5c636d1b 100644 --- a/atahpt.c +++ b/atahpt.c @@ -92,7 +92,7 @@ static int atahpt_init(const struct programmer_cfg *cfg) if (rget_io_perms()) return 1; - dev = pcidev_init(ata_hpt, PCI_BASE_ADDRESS_4); + dev = pcidev_init(cfg, ata_hpt, PCI_BASE_ADDRESS_4); if (!dev) return 1; diff --git a/atapromise.c b/atapromise.c index 4be2f716..63463f57 100644 --- a/atapromise.c +++ b/atapromise.c @@ -140,7 +140,7 @@ static int atapromise_init(const struct programmer_cfg *cfg) if (rget_io_perms()) return 1; - dev = pcidev_init(ata_promise, PCI_BASE_ADDRESS_4); + dev = pcidev_init(cfg, ata_promise, PCI_BASE_ADDRESS_4); if (!dev) return 1; diff --git a/atavia.c b/atavia.c index 6e64bb45..51530a47 100644 --- a/atavia.c +++ b/atavia.c @@ -163,7 +163,7 @@ static int atavia_init(const struct programmer_cfg *cfg) } free(arg); - dev = pcidev_init(ata_via, PCI_ROM_ADDRESS); /* Actually no BAR setup needed at all. */ + dev = pcidev_init(cfg, ata_via, PCI_ROM_ADDRESS); /* Actually no BAR setup needed at all. */ if (!dev) return 1; diff --git a/drkaiser.c b/drkaiser.c index 2fb6b910..b121eec0 100644 --- a/drkaiser.c +++ b/drkaiser.c @@ -87,7 +87,7 @@ static int drkaiser_init(const struct programmer_cfg *cfg) uint32_t addr; uint8_t *bar; - dev = pcidev_init(drkaiser_pcidev, PCI_BASE_ADDRESS_2); + dev = pcidev_init(cfg, drkaiser_pcidev, PCI_BASE_ADDRESS_2); if (!dev) return 1; diff --git a/gfxnvidia.c b/gfxnvidia.c index 19fa2b66..941f0e8d 100644 --- a/gfxnvidia.c +++ b/gfxnvidia.c @@ -111,7 +111,7 @@ static int gfxnvidia_init(const struct programmer_cfg *cfg) uint32_t reg32; uint8_t *bar; - dev = pcidev_init(gfx_nvidia, PCI_BASE_ADDRESS_0); + dev = pcidev_init(cfg, gfx_nvidia, PCI_BASE_ADDRESS_0); if (!dev) return 1; diff --git a/include/programmer.h b/include/programmer.h index 4ed68da1..76da9f9d 100644 --- a/include/programmer.h +++ b/include/programmer.h @@ -124,7 +124,7 @@ struct pci_filter; extern struct pci_access *pacc; int pci_init_common(void); uintptr_t pcidev_readbar(struct pci_dev *dev, int bar); -struct pci_dev *pcidev_init(const struct dev_entry *devs, int bar); +struct pci_dev *pcidev_init(const struct programmer_cfg *cfg, const struct dev_entry *devs, int bar); struct pci_dev *pcidev_scandev(struct pci_filter *filter, struct pci_dev *start); struct pci_dev *pcidev_getdevfn(struct pci_dev *dev, const int func); struct pci_dev *pcidev_find_vendorclass(uint16_t vendor, uint16_t devclass); diff --git a/it8212.c b/it8212.c index 4d736659..18d1173b 100644 --- a/it8212.c +++ b/it8212.c @@ -78,7 +78,7 @@ static int it8212_init(const struct programmer_cfg *cfg) { uint8_t *bar; - struct pci_dev *dev = pcidev_init(devs_it8212, PCI_ROM_ADDRESS); + struct pci_dev *dev = pcidev_init(cfg, devs_it8212, PCI_ROM_ADDRESS); if (!dev) return 1; diff --git a/nic3com.c b/nic3com.c index fd4fe2b5..44710edb 100644 --- a/nic3com.c +++ b/nic3com.c @@ -111,7 +111,7 @@ static int nic3com_init(const struct programmer_cfg *cfg) if (rget_io_perms()) return 1; - dev = pcidev_init(nics_3com, PCI_BASE_ADDRESS_0); + dev = pcidev_init(cfg, nics_3com, PCI_BASE_ADDRESS_0); if (!dev) return 1; diff --git a/nicintel.c b/nicintel.c index 9ef03157..16cb5e45 100644 --- a/nicintel.c +++ b/nicintel.c @@ -85,7 +85,7 @@ static int nicintel_init(const struct programmer_cfg *cfg) uint8_t *control_bar; /* FIXME: BAR2 is not available if the device uses the CardBus function. */ - dev = pcidev_init(nics_intel, PCI_BASE_ADDRESS_2); + dev = pcidev_init(cfg, nics_intel, PCI_BASE_ADDRESS_2); if (!dev) return 1; diff --git a/nicintel_eeprom.c b/nicintel_eeprom.c index 8e59a458..4d3e7d58 100644 --- a/nicintel_eeprom.c +++ b/nicintel_eeprom.c @@ -485,7 +485,7 @@ static int nicintel_ee_init(const struct programmer_cfg *cfg) uint32_t eec = 0; uint8_t *eebar; - struct pci_dev *dev = pcidev_init(nics_intel_ee, PCI_BASE_ADDRESS_0); + struct pci_dev *dev = pcidev_init(cfg, nics_intel_ee, PCI_BASE_ADDRESS_0); if (!dev) return 1; diff --git a/nicintel_spi.c b/nicintel_spi.c index 74cb1223..851b5258 100644 --- a/nicintel_spi.c +++ b/nicintel_spi.c @@ -289,7 +289,7 @@ static int nicintel_spi_init(const struct programmer_cfg *cfg) { struct pci_dev *dev = NULL; - dev = pcidev_init(nics_intel_spi, PCI_BASE_ADDRESS_0); + dev = pcidev_init(cfg, nics_intel_spi, PCI_BASE_ADDRESS_0); if (!dev) return 1; diff --git a/nicnatsemi.c b/nicnatsemi.c index b9c58bc3..779fb33d 100644 --- a/nicnatsemi.c +++ b/nicnatsemi.c @@ -96,7 +96,7 @@ static int nicnatsemi_init(const struct programmer_cfg *cfg) if (rget_io_perms()) return 1; - dev = pcidev_init(nics_natsemi, PCI_BASE_ADDRESS_0); + dev = pcidev_init(cfg, nics_natsemi, PCI_BASE_ADDRESS_0); if (!dev) return 1; diff --git a/nicrealtek.c b/nicrealtek.c index 61eb38ba..7bf1ac9e 100644 --- a/nicrealtek.c +++ b/nicrealtek.c @@ -107,7 +107,7 @@ static int nicrealtek_init(const struct programmer_cfg *cfg) if (rget_io_perms()) return 1; - dev = pcidev_init(nics_realtek, PCI_BASE_ADDRESS_0); + dev = pcidev_init(cfg, nics_realtek, PCI_BASE_ADDRESS_0); if (!dev) return 1; diff --git a/ogp_spi.c b/ogp_spi.c index 47a3d807..94915a33 100644 --- a/ogp_spi.c +++ b/ogp_spi.c @@ -140,7 +140,7 @@ static int ogp_spi_init(const struct programmer_cfg *cfg) } free(type); - dev = pcidev_init(ogp_spi, PCI_BASE_ADDRESS_0); + dev = pcidev_init(cfg, ogp_spi, PCI_BASE_ADDRESS_0); if (!dev) return 1; diff --git a/pcidev.c b/pcidev.c index 72561f0e..0b35944a 100644 --- a/pcidev.c +++ b/pcidev.c @@ -257,7 +257,7 @@ int pci_init_common(void) * also matches the specified bus:device.function. * For convenience, this function also registers its own undo handlers. */ -struct pci_dev *pcidev_init(const struct dev_entry *devs, int bar) +struct pci_dev *pcidev_init(const struct programmer_cfg *cfg, const struct dev_entry *devs, int bar) { struct pci_dev *dev; struct pci_dev *found_dev = NULL; @@ -272,7 +272,7 @@ struct pci_dev *pcidev_init(const struct dev_entry *devs, int bar) pci_filter_init(pacc, &filter); /* Filter by bb:dd.f (if supplied by the user). */ - pcidev_bdf = extract_programmer_param_str(NULL, "pci"); /* TODO(quasisec): pass prog_param */ + pcidev_bdf = extract_programmer_param_str(cfg, "pci"); if (pcidev_bdf != NULL) { if ((msg = pci_filter_parse_slot(&filter, pcidev_bdf))) { msg_perr("Error: %s\n", msg); diff --git a/satamv.c b/satamv.c index 19ecf227..f8860764 100644 --- a/satamv.c +++ b/satamv.c @@ -126,7 +126,7 @@ static int satamv_init(const struct programmer_cfg *cfg) return 1; /* BAR0 has all internal registers memory mapped. */ - dev = pcidev_init(satas_mv, PCI_BASE_ADDRESS_0); + dev = pcidev_init(cfg, satas_mv, PCI_BASE_ADDRESS_0); if (!dev) return 1; diff --git a/satasii.c b/satasii.c index a56171b2..44b7331e 100644 --- a/satasii.c +++ b/satasii.c @@ -112,7 +112,7 @@ static int satasii_init(const struct programmer_cfg *cfg) uint16_t reg_offset, id; uint8_t *bar; - dev = pcidev_init(satas_sii, PCI_BASE_ADDRESS_0); + dev = pcidev_init(cfg, satas_sii, PCI_BASE_ADDRESS_0); if (!dev) return 1; diff --git a/tests/tests.c b/tests/tests.c index 11348b5a..7a448d4f 100644 --- a/tests/tests.c +++ b/tests/tests.c @@ -52,7 +52,7 @@ struct pci_dev mock_pci_dev = { .device_id = NON_ZERO, }; -struct pci_dev *__wrap_pcidev_init(void *devs, int bar) +struct pci_dev *__wrap_pcidev_init(const struct programmer_cfg *cfg, void *devs, int bar) { LOG_ME; return &mock_pci_dev; diff --git a/tests/wraps.h b/tests/wraps.h index bfa8a41f..f97eaba4 100644 --- a/tests/wraps.h +++ b/tests/wraps.h @@ -19,10 +19,12 @@ #include #include "flash.h" +struct programmer_cfg; /* defined in programmer.h */ + char *__wrap_strdup(const char *s); void __wrap_physunmap(void *virt_addr, size_t len); void *__wrap_physmap(const char *descr, uintptr_t phys_addr, size_t len); -struct pci_dev *__wrap_pcidev_init(void *devs, int bar); +struct pci_dev *__wrap_pcidev_init(const struct programmer_cfg *cfg, void *devs, int bar); uintptr_t __wrap_pcidev_readbar(void *dev, int bar); void __wrap_sio_write(uint16_t port, uint8_t reg, uint8_t data); uint8_t __wrap_sio_read(uint16_t port, uint8_t reg); -- cgit v1.2.3