Module Name: src
Committed By: nisimura
Date: Thu Feb 10 13:38:08 UTC 2011
Modified Files:
src/sys/arch/sandpoint/stand/altboot: brdsetup.c dsk.c globals.h main.c
nif.c pci.c
Log Message:
- some rework for PCI device enumeration.
- allow dual IDE/SATA devices.
- fix a typo of D-Link #define.
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/sandpoint/stand/altboot/brdsetup.c \
src/sys/arch/sandpoint/stand/altboot/dsk.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/sandpoint/stand/altboot/globals.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/sandpoint/stand/altboot/main.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sandpoint/stand/altboot/nif.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/sandpoint/stand/altboot/pci.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/sandpoint/stand/altboot/brdsetup.c
diff -u src/sys/arch/sandpoint/stand/altboot/brdsetup.c:1.3 src/sys/arch/sandpoint/stand/altboot/brdsetup.c:1.4
--- src/sys/arch/sandpoint/stand/altboot/brdsetup.c:1.3 Tue Feb 8 00:33:05 2011
+++ src/sys/arch/sandpoint/stand/altboot/brdsetup.c Thu Feb 10 13:38:08 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: brdsetup.c,v 1.3 2011/02/08 00:33:05 nisimura Exp $ */
+/* $NetBSD: brdsetup.c,v 1.4 2011/02/10 13:38:08 nisimura Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -101,8 +101,8 @@
NULL, iomegabrdfix, iomegapcifix },
{
"dlink",
- "D-Link GSM-G600",
- BRD_DLINKGSM,
+ "D-Link DSM-G600",
+ BRD_DLINKDSM,
0,
"eumb", 0x4500, 9600,
NULL, dlinkbrdfix, dlinkpcifix },
@@ -215,7 +215,7 @@
}
else if (PCI_VENDOR(pcicfgread(pcimaketag(0, 16, 0), PCI_ID_REG)) ==
0x1191) { /* PCI_VENDOR_ACARD */
- brdtype = BRD_DLINKGSM;
+ brdtype = BRD_DLINKDSM;
}
brdprop = brd_lookup(brdtype);
@@ -406,12 +406,12 @@
void
motpcifix(struct brdprop *brd)
{
- unsigned ide, nic, pcib, steer, val;
+ unsigned ide, net, pcib, steer, val;
int line;
pcib = pcimaketag(0, 11, 0);
ide = pcimaketag(0, 11, 1);
- nic = pcimaketag(0, 15, 0);
+ net = pcimaketag(0, 15, 0);
/*
* //// WinBond PIRQ ////
@@ -492,21 +492,21 @@
* //// fxp fixup ////
* - use PCI pin A line 15 (fxp 0x3d/3c)
*/
- val = pcicfgread(nic, 0x3c) & 0xffff0000;
- pcidecomposetag(nic, NULL, &line, NULL);
+ val = pcicfgread(net, 0x3c) & 0xffff0000;
+ pcidecomposetag(net, NULL, &line, NULL);
val |= (('A' - '@') << 8) | line;
- pcicfgwrite(nic, 0x3c, val);
+ pcicfgwrite(net, 0x3c, val);
}
void
encpcifix(struct brdprop *brd)
{
- unsigned ide, irq, nic, pcib, steer, val;
+ unsigned ide, irq, net, pcib, steer, val;
#define STEER(v, b) (((v) & (b)) ? "edge" : "level")
pcib = pcimaketag(0, 22, 0);
ide = pcimaketag(0, 22, 1);
- nic = pcimaketag(0, 25, 0);
+ net = pcimaketag(0, 25, 0);
/*
* //// VIA PIRQ ////
@@ -603,9 +603,9 @@
* - use PCI pin A line 25 (fxp 0x3d/3c)
*/
/* 0x3d/3c - PCI pin/line */
- val = pcicfgread(nic, 0x3c) & 0xffff0000;
+ val = pcicfgread(net, 0x3c) & 0xffff0000;
val |= (('A' - '@') << 8) | 25;
- pcicfgwrite(nic, 0x3c, val);
+ pcicfgwrite(net, 0x3c, val);
}
void
@@ -630,17 +630,17 @@
void
kuropcifix(struct brdprop *brd)
{
- unsigned ide, nic, usb, val;
+ unsigned dsk, net, usb, val;
- nic = pcimaketag(0, 11, 0);
- val = pcicfgread(nic, 0x3c) & 0xffffff00;
+ net = pcimaketag(0, 11, 0);
+ val = pcicfgread(net, 0x3c) & 0xffffff00;
val |= 11;
- pcicfgwrite(nic, 0x3c, val);
+ pcicfgwrite(net, 0x3c, val);
- ide = pcimaketag(0, 12, 0);
- val = pcicfgread(ide, 0x3c) & 0xffffff00;
+ dsk = pcimaketag(0, 12, 0);
+ val = pcicfgread(dsk, 0x3c) & 0xffffff00;
val |= 12;
- pcicfgwrite(ide, 0x3c, val);
+ pcicfgwrite(dsk, 0x3c, val);
usb = pcimaketag(0, 14, 0);
val = pcicfgread(usb, 0x3c) & 0xffffff00;
@@ -677,12 +677,12 @@
void
synopcifix(struct brdprop *brd)
{
- unsigned ide, nic, usb, val;
+ unsigned dsk, net, usb, val;
- ide = pcimaketag(0, 13, 0);
- val = pcicfgread(ide, 0x3c) & 0xffffff00;
+ dsk = pcimaketag(0, 13, 0);
+ val = pcicfgread(dsk, 0x3c) & 0xffffff00;
val |= 13;
- pcicfgwrite(ide, 0x3c, val);
+ pcicfgwrite(dsk, 0x3c, val);
usb = pcimaketag(0, 14, 0);
val = pcicfgread(usb, 0x3c) & 0xffffff00;
@@ -699,10 +699,10 @@
val |= 14;
pcicfgwrite(usb, 0x3c, val);
- nic = pcimaketag(0, 15, 0);
- val = pcicfgread(nic, 0x3c) & 0xffffff00;
+ net = pcimaketag(0, 15, 0);
+ val = pcicfgread(net, 0x3c) & 0xffffff00;
val |= 15;
- pcicfgwrite(nic, 0x3c, val);
+ pcicfgwrite(net, 0x3c, val);
}
void
@@ -716,12 +716,12 @@
void
qnappcifix(struct brdprop *brd)
{
- unsigned ide, nic, usb, val;
+ unsigned dsk, net, usb, val;
- ide = pcimaketag(0, 13, 0);
- val = pcicfgread(ide, 0x3c) & 0xffffff00;
+ dsk = pcimaketag(0, 13, 0);
+ val = pcicfgread(dsk, 0x3c) & 0xffffff00;
val |= 13;
- pcicfgwrite(ide, 0x3c, val);
+ pcicfgwrite(dsk, 0x3c, val);
usb = pcimaketag(0, 14, 0);
val = pcicfgread(usb, 0x3c) & 0xffffff00;
@@ -738,10 +738,10 @@
val |= 14;
pcicfgwrite(usb, 0x3c, val);
- nic = pcimaketag(0, 15, 0);
- val = pcicfgread(nic, 0x3c) & 0xffffff00;
+ net = pcimaketag(0, 15, 0);
+ val = pcicfgread(net, 0x3c) & 0xffffff00;
val |= 15;
- pcicfgwrite(nic, 0x3c, val);
+ pcicfgwrite(net, 0x3c, val);
}
void
@@ -754,12 +754,12 @@
void
iomegapcifix(struct brdprop *brd)
{
- unsigned ide, nic, usb, val;
+ unsigned dsk, net, usb, val;
- ide = pcimaketag(0, 13, 0);
- val = pcicfgread(ide, 0x3c) & 0xffffff00;
+ dsk = pcimaketag(0, 13, 0);
+ val = pcicfgread(dsk, 0x3c) & 0xffffff00;
val |= 13;
- pcicfgwrite(ide, 0x3c, val);
+ pcicfgwrite(dsk, 0x3c, val);
usb = pcimaketag(0, 14, 0);
val = pcicfgread(usb, 0x3c) & 0xffffff00;
@@ -776,10 +776,10 @@
val |= 14;
pcicfgwrite(usb, 0x3c, val);
- nic = pcimaketag(0, 15, 0);
- val = pcicfgread(nic, 0x3c) & 0xffffff00;
+ net = pcimaketag(0, 15, 0);
+ val = pcicfgread(net, 0x3c) & 0xffffff00;
val |= 15;
- pcicfgwrite(nic, 0x3c, val);
+ pcicfgwrite(net, 0x3c, val);
}
void
@@ -792,7 +792,7 @@
void
dlinkpcifix(struct brdprop *brd)
{
- unsigned usb, nic, ide, val;
+ unsigned usb, net, dsk, val;
usb = pcimaketag(0, 14, 0);
val = pcicfgread(usb, 0x3c) & 0xffffff00;
@@ -809,15 +809,15 @@
val |= 14;
pcicfgwrite(usb, 0x3c, val);
- nic = pcimaketag(0, 15, 0);
- val = pcicfgread(nic, 0x3c) & 0xffffff00;
+ net = pcimaketag(0, 15, 0);
+ val = pcicfgread(net, 0x3c) & 0xffffff00;
val |= 15;
- pcicfgwrite(nic, 0x3c, val);
+ pcicfgwrite(net, 0x3c, val);
- ide = pcimaketag(0, 16, 0);
- val = pcicfgread(ide, 0x3c) & 0xffffff00;
+ dsk = pcimaketag(0, 16, 0);
+ val = pcicfgread(dsk, 0x3c) & 0xffffff00;
val |= 16;
- pcicfgwrite(ide, 0x3c, val);
+ pcicfgwrite(dsk, 0x3c, val);
}
void
Index: src/sys/arch/sandpoint/stand/altboot/dsk.c
diff -u src/sys/arch/sandpoint/stand/altboot/dsk.c:1.3 src/sys/arch/sandpoint/stand/altboot/dsk.c:1.4
--- src/sys/arch/sandpoint/stand/altboot/dsk.c:1.3 Thu Jan 27 17:38:04 2011
+++ src/sys/arch/sandpoint/stand/altboot/dsk.c Thu Feb 10 13:38:08 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: dsk.c,v 1.3 2011/01/27 17:38:04 phx Exp $ */
+/* $NetBSD: dsk.c,v 1.4 2011/02/10 13:38:08 nisimura Exp $ */
/*-
* Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -68,15 +68,15 @@
char *name;
int (*match)(unsigned, void *);
void *(*init)(unsigned, void *);
- void *priv;
};
static struct dskdv ldskdv[] = {
- { "pciide", pciide_match, pciide_init, },
- { "siisata", siisata_match, siisata_init, },
+ { "pciide", pciide_match, pciide_init },
+ { "siisata", siisata_match, siisata_init },
};
static int ndskdv = sizeof(ldskdv)/sizeof(ldskdv[0]);
+static int disk_scan(void *);
static int probe_drive(struct dkdev_ata *, int);
static void drive_ident(struct disk *, char *);
static char *mkident(char *, int);
@@ -90,11 +90,14 @@
static struct disk ldisk[4];
int
-dskdv_init(unsigned tag, void **cookie)
+dskdv_init(void *self)
{
+ struct pcidev *pci = self;
struct dskdv *dv;
+ unsigned tag;
int n;
+ tag = pci->bdf;
for (n = 0; n < ndskdv; n++) {
dv = &ldskdv[n];
if ((*dv->match)(tag, NULL) > 0)
@@ -102,16 +105,15 @@
}
return 0;
found:
- dv->priv = (*dv->init)(tag, NULL);
- *cookie = dv;
+ pci->drv = (*dv->init)(tag, NULL);
+ disk_scan(pci->drv);
return 1;
}
-int
-disk_scan(void *cookie)
+static int
+disk_scan(void *drv)
{
- struct dskdv *dv = cookie;
- struct dkdev_ata *l = dv->priv;
+ struct dkdev_ata *l = drv;
struct disk *d;
int n, ndrive;
Index: src/sys/arch/sandpoint/stand/altboot/globals.h
diff -u src/sys/arch/sandpoint/stand/altboot/globals.h:1.4 src/sys/arch/sandpoint/stand/altboot/globals.h:1.5
--- src/sys/arch/sandpoint/stand/altboot/globals.h:1.4 Tue Feb 8 00:33:05 2011
+++ src/sys/arch/sandpoint/stand/altboot/globals.h Thu Feb 10 13:38:08 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: globals.h,v 1.4 2011/02/08 00:33:05 nisimura Exp $ */
+/* $NetBSD: globals.h,v 1.5 2011/02/10 13:38:08 nisimura Exp $ */
#ifdef DEBUG
#define DPRINTF(x) printf x
@@ -20,7 +20,7 @@
#define BRD_QNAPTS101 101
#define BRD_SYNOLOGY 102
#define BRD_STORCENTER 103
-#define BRD_DLINKGSM 104
+#define BRD_DLINKDSM 104
#define BRD_UNKNOWN -1
struct brdprop {
@@ -64,12 +64,17 @@
void delay(unsigned);
/* PCI stuff */
+struct pcidev {
+ unsigned bdf; /* bus.dev.func */
+ unsigned pvd; /* device ID */
+ void *drv; /* driver */
+};
void pcisetup(void);
void pcifixup(void);
unsigned pcimaketag(int, int, int);
void pcidecomposetag(unsigned, int *, int *, int *);
int pcifinddev(unsigned, unsigned, unsigned *);
-int pcilookup(unsigned, unsigned [][2], int);
+int pcilookup(unsigned, struct pcidev *, int);
unsigned pcicfgread(unsigned, int);
void pcicfgwrite(unsigned, int, unsigned);
@@ -86,6 +91,7 @@
#define PCI_CLASS_RAID 0x0104
#define PCI_CLASS_SATA 0x0106
#define PCI_CLASS_MISCSTORAGE 0x0180
+#define PCI_CLASS_USB 0x0c03
#define PCI_BHLC_REG 0x0c
#define PCI_HDRTYPE_TYPE(r) (((r) >> 16) & 0x7f)
#define PCI_HDRTYPE_MULTIFN(r) ((r) & (0x80 << 16))
@@ -117,7 +123,7 @@
int net_close(struct open_file *);
int net_strategy(void *, int, daddr_t, size_t, void *, size_t *);
-int netif_init(unsigned);
+int netif_init(void *);
int netif_open(void *);
int netif_close(int);
@@ -133,8 +139,7 @@
NIF_DECL(skg);
/* DSK support */
-int dskdv_init(unsigned, void **);
-int disk_scan(void *);
+int dskdv_init(void *);
int dsk_open(struct open_file *, ...);
int dsk_close(struct open_file *);
Index: src/sys/arch/sandpoint/stand/altboot/main.c
diff -u src/sys/arch/sandpoint/stand/altboot/main.c:1.5 src/sys/arch/sandpoint/stand/altboot/main.c:1.6
--- src/sys/arch/sandpoint/stand/altboot/main.c:1.5 Thu Jan 27 17:38:04 2011
+++ src/sys/arch/sandpoint/stand/altboot/main.c Thu Feb 10 13:38:08 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.5 2011/01/27 17:38:04 phx Exp $ */
+/* $NetBSD: main.c,v 1.6 2011/02/10 13:38:08 nisimura Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -91,6 +91,11 @@
void main(int, char **);
extern char bootprog_name[], bootprog_rev[];
+struct pcidev lata[2];
+struct pcidev lnif[1];
+struct pcidev lusb[3];
+int nata, nnif, nusb;
+
int brdtype;
uint32_t busclock, cpuclock;
@@ -102,11 +107,8 @@
{
struct brdprop *brdprop;
unsigned long marks[MARK_MAX];
- unsigned lata[1][2], lnif[1][2];
- unsigned tag, dsk;
- int b, d, f, fd, howto, i, n;
+ int n, i, fd, howto;
char *bname;
- void *dev;
printf("\n");
printf(">> %s altboot, revision %s\n", bootprog_name, bootprog_rev);
@@ -115,43 +117,54 @@
printf(">> %s, cpu %u MHz, bus %u MHz, %dMB SDRAM\n", brdprop->verbose,
cpuclock / 1000000, busclock / 1000000, bi_mem.memsize >> 20);
- n = pcilookup(PCI_CLASS_IDE, lata, sizeof(lata)/sizeof(lata[0]));
- if (n == 0)
- n = pcilookup(PCI_CLASS_MISCSTORAGE, lata,
- sizeof(lata)/sizeof(lata[0]));
- if (n == 0) {
- dsk = ~0;
- DPRINTF(("No IDE found!\n"));
- }
- else {
- dsk = lata[0][1];
- pcidecomposetag(dsk, &b, &d, &f);
- DPRINTF(("%04x.%04x IDE %02d:%02d:%02d\n",
- PCI_VENDOR(lata[0][0]), PCI_PRODUCT(lata[0][0]),
- b, d, f));
- }
-
- n = pcilookup(PCI_CLASS_ETH, lnif, sizeof(lnif)/sizeof(lnif[0]));
- if (n == 0) {
- tag = ~0;
- DPRINTF(("no NIC found\n"));
+ nata = pcilookup(PCI_CLASS_IDE, lata, 2);
+ if (nata == 0)
+ nata = pcilookup(PCI_CLASS_MISCSTORAGE, lata, 2);
+ nnif = pcilookup(PCI_CLASS_ETH, lnif, 1);
+ nusb = pcilookup(PCI_CLASS_USB, lusb, 3);
+
+#ifdef DEBUG
+ if (nata == 0)
+ printf("No IDE/SATA found\n");
+ else for (n = 0; n < nata; n++) {
+ int b, d, f, bdf, pvd;
+ bdf = lata[n].bdf;
+ pvd = lata[n].pvd;
+ pcidecomposetag(bdf, &b, &d, &f);
+ printf("%04x.%04x DSK %02d:%02d:%02d\n",
+ PCI_VENDOR(pvd), PCI_PRODUCT(pvd), b, d, f);
}
+ if (nnif == 0)
+ printf("no NET found\n");
else {
- tag = lnif[0][1];
- pcidecomposetag(tag, &b, &d, &f);
- DPRINTF(("%04x.%04x NIC %02d:%02d:%02d\n",
- PCI_VENDOR(lnif[0][0]), PCI_PRODUCT(lnif[0][0]),
- b, d, f));
+ int b, d, f, bdf, pvd;
+ bdf = lnif[0].bdf;
+ pvd = lnif[0].pvd;
+ pcidecomposetag(bdf, &b, &d, &f);
+ printf("%04x.%04x NET %02d:%02d:%02d\n",
+ PCI_VENDOR(pvd), PCI_PRODUCT(pvd), b, d, f);
+ }
+ if (nusb == 0)
+ printf("no USB found\n");
+ else for (n = 0; n < nusb; n++) {
+ int b, d, f, bdf, pvd;
+ bdf = lusb[0].bdf;
+ pvd = lusb[0].pvd;
+ pcidecomposetag(bdf, &b, &d, &f);
+ printf("%04x.%04x USB %02d:%02d:%02d\n",
+ PCI_VENDOR(pvd), PCI_PRODUCT(pvd), b, d, f);
}
+#endif
pcisetup();
pcifixup();
- if (dskdv_init(dsk, &dev) == 0 || disk_scan(dev) == 0)
- printf("no IDE/SATA device driver was found\n");
+ if (dskdv_init(&lata[0]) == 0
+ || (nata == 2 && dskdv_init(&lata[1]) == 0))
+ printf("IDE/SATA device driver was not found\n");
- if (netif_init(tag) == 0)
- printf("no NIC device driver was found\n");
+ if (netif_init(&lnif[0]) == 0)
+ printf("no NET device driver was found\n");
howto = RB_AUTOBOOT; /* default is autoboot = 0 */
Index: src/sys/arch/sandpoint/stand/altboot/nif.c
diff -u src/sys/arch/sandpoint/stand/altboot/nif.c:1.1 src/sys/arch/sandpoint/stand/altboot/nif.c:1.2
--- src/sys/arch/sandpoint/stand/altboot/nif.c:1.1 Sun Jan 23 01:05:30 2011
+++ src/sys/arch/sandpoint/stand/altboot/nif.c Thu Feb 10 13:38:08 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: nif.c,v 1.1 2011/01/23 01:05:30 nisimura Exp $ */
+/* $NetBSD: nif.c,v 1.2 2011/02/10 13:38:08 nisimura Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -62,15 +62,18 @@
static int nnifdv = sizeof(lnifdv)/sizeof(lnifdv[0]);
int
-netif_init(unsigned tag)
+netif_init(void *self)
{
+ struct pcidev *pci = self;
struct iodesc *s;
struct nifdv *dv;
+ unsigned tag;
int n;
uint8_t enaddr[6];
extern struct btinfo_net bi_net;
extern struct btinfo_rootdevice bi_rdev;
+ tag = pci->bdf;
for (n = 0; n < nnifdv; n++) {
dv = &lnifdv[n];
if ((*dv->match)(tag, NULL) > 0)
@@ -78,11 +81,10 @@
}
return 0;
found:
- dv->priv = (*dv->init)(tag, enaddr);
+ pci->drv = dv->priv = (*dv->init)(tag, enaddr);
s = &netdesc;
s->io_netif = dv;
memcpy(s->myea, enaddr, sizeof(s->myea));
-
/* build btinfo to identify NIF device */
snprintf(bi_net.devname, sizeof(bi_net.devname), dv->name);
memcpy(bi_net.mac_address, enaddr, sizeof(bi_net.mac_address));
Index: src/sys/arch/sandpoint/stand/altboot/pci.c
diff -u src/sys/arch/sandpoint/stand/altboot/pci.c:1.2 src/sys/arch/sandpoint/stand/altboot/pci.c:1.3
--- src/sys/arch/sandpoint/stand/altboot/pci.c:1.2 Thu Jan 27 17:38:04 2011
+++ src/sys/arch/sandpoint/stand/altboot/pci.c Thu Feb 10 13:38:08 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: pci.c,v 1.2 2011/01/27 17:38:04 phx Exp $ */
+/* $NetBSD: pci.c,v 1.3 2011/02/10 13:38:08 nisimura Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -44,7 +44,7 @@
int (*)(int, int, int, unsigned long), unsigned long);
static int _pcilookup(int,
int (*)(int, int, int, unsigned long), unsigned long,
- unsigned [][2], int, int);
+ struct pcidev *, int, int);
static int deviceinit(int, int, int, unsigned long);
static void memassign(int, int, int);
static int devmatch(int, int, int, unsigned long);
@@ -70,11 +70,12 @@
int
pcifinddev(unsigned vend, unsigned prod, unsigned *tag)
{
- unsigned pciid, target[1][2];
+ unsigned pciid;
+ struct pcidev target;
pciid = PCI_DEVICE(vend, prod);
- if (_pcilookup(0, devmatch, pciid, target, 0, 1)) {
- *tag = target[0][1];
+ if (_pcilookup(0, devmatch, pciid, &target, 0, 1)) {
+ *tag = target.bdf;
return 0;
}
*tag = ~0;
@@ -84,7 +85,7 @@
int
pcilookup(type, list, max)
unsigned type;
- unsigned list[][2];
+ struct pcidev *list;
int max;
{
@@ -334,7 +335,7 @@
}
static int
-_pcilookup(int bus, int (*match)(int, int, int, unsigned long), unsigned long data, unsigned list[][2], int index, int limit)
+_pcilookup(int bus, int (*match)(int, int, int, unsigned long), unsigned long data, struct pcidev *list, int index, int limit)
{
int device, function, nfuncs;
unsigned pciid, bhlcr, class;
@@ -363,8 +364,8 @@
if (PCI_VENDOR(pciid) == 0)
continue;
if ((*match)(bus, device, function, data)) {
- list[index][0] = pciid;
- list[index][1] =
+ list[index].pvd = pciid;
+ list[index].bdf =
pcimaketag(bus, device, function);
index += 1;
if (index >= limit)