summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdward O'Callaghan <quasisec@google.com>2022-08-12 15:25:39 +1000
committerEdward O'Callaghan <quasisec@chromium.org>2022-09-07 02:45:15 +0000
commit5d63d3f88439c35abf40b0a38bc7d54e4729b03e (patch)
treed464a17919a146bc061785aa45020c66879f538a
parentea938173a40a6fae076f6fc0f37f940eae82d142 (diff)
downloadflashrom-5d63d3f88439c35abf40b0a38bc7d54e4729b03e.tar.gz
flashrom-5d63d3f88439c35abf40b0a38bc7d54e4729b03e.tar.bz2
flashrom-5d63d3f88439c35abf40b0a38bc7d54e4729b03e.zip
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 <quasisec@google.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/66671 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-by: Felix Singer <felixsinger@posteo.net>
-rw-r--r--atahpt.c2
-rw-r--r--atapromise.c2
-rw-r--r--atavia.c2
-rw-r--r--drkaiser.c2
-rw-r--r--gfxnvidia.c2
-rw-r--r--include/programmer.h2
-rw-r--r--it8212.c2
-rw-r--r--nic3com.c2
-rw-r--r--nicintel.c2
-rw-r--r--nicintel_eeprom.c2
-rw-r--r--nicintel_spi.c2
-rw-r--r--nicnatsemi.c2
-rw-r--r--nicrealtek.c2
-rw-r--r--ogp_spi.c2
-rw-r--r--pcidev.c4
-rw-r--r--satamv.c2
-rw-r--r--satasii.c2
-rw-r--r--tests/tests.c2
-rw-r--r--tests/wraps.h4
19 files changed, 22 insertions, 20 deletions
diff --git a/atahpt.c b/atahpt.c
index 2ab51a800..5c636d1b4 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 4be2f7164..63463f572 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 6e64bb458..51530a479 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 2fb6b910e..b121eec02 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 19fa2b664..941f0e8d4 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 4ed68da19..76da9f9d7 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 4d736659d..18d1173bf 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 fd4fe2b51..44710edb4 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 9ef031577..16cb5e452 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 8e59a4585..4d3e7d589 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 74cb1223f..851b52581 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 b9c58bc3c..779fb33d8 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 61eb38ba2..7bf1ac9ec 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 47a3d8077..94915a337 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 72561f0e8..0b35944aa 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 19ecf2275..f88607646 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 a56171b29..44b7331e3 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 11348b5a4..7a448d4fb 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 bfa8a41fb..f97eaba45 100644
--- a/tests/wraps.h
+++ b/tests/wraps.h
@@ -19,10 +19,12 @@
#include <stdio.h>
#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);