* Latest pciutils.
svn path=/nixpkgs/trunk/; revision=7914
This commit is contained in:
parent
5ddcfd16e0
commit
b8057ff11a
@ -1,11 +0,0 @@
|
|||||||
{stdenv, fetchurl}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "pciutils-2.2.1";
|
|
||||||
builder = ./builder.sh;
|
|
||||||
src = fetchurl {
|
|
||||||
url = http://nix.cs.uu.nl/dist/tarballs/pciutils-2.2.1.tar.bz2;
|
|
||||||
md5 = "483a08dc864ec42497ad95310bb1a8ee";
|
|
||||||
};
|
|
||||||
patches = [./pciutils-path.patch ./pciutils-devicetype.patch];
|
|
||||||
}
|
|
@ -1,136 +0,0 @@
|
|||||||
--- pciutils-2.2.1/lib/sysfs.c.devicetype 2005-09-21 07:51:00.000000000 -0400
|
|
||||||
+++ pciutils-2.2.1/lib/sysfs.c 2005-12-13 17:02:12.000000000 -0500
|
|
||||||
@@ -164,7 +164,6 @@
|
|
||||||
sysfs_get_resources(d);
|
|
||||||
d->irq = sysfs_get_value(d, "irq");
|
|
||||||
d->known_fields = PCI_FILL_IRQ | PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES;
|
|
||||||
-#if 0
|
|
||||||
/*
|
|
||||||
* We prefer reading these from the config registers, it's faster.
|
|
||||||
* However, it would be possible and maybe even useful to hack the kernel
|
|
||||||
@@ -173,8 +172,8 @@
|
|
||||||
*/
|
|
||||||
d->vendor_id = sysfs_get_value(d, "vendor");
|
|
||||||
d->device_id = sysfs_get_value(d, "device");
|
|
||||||
- d->known_fields |= PCI_FILL_IDENT;
|
|
||||||
-#endif
|
|
||||||
+ d->device_class = sysfs_get_value(d, "class") >> 8;
|
|
||||||
+ d->known_fields |= PCI_FILL_IDENT | PCI_FILL_CLASS;
|
|
||||||
}
|
|
||||||
pci_link_dev(a, d);
|
|
||||||
}
|
|
||||||
--- pciutils-2.2.1/lib/pci.h.devicetype 2005-09-10 08:10:54.000000000 -0400
|
|
||||||
+++ pciutils-2.2.1/lib/pci.h 2005-12-13 17:02:12.000000000 -0500
|
|
||||||
@@ -84,6 +84,7 @@
|
|
||||||
/* These fields are set by pci_fill_info() */
|
|
||||||
int known_fields; /* Set of info fields already known */
|
|
||||||
u16 vendor_id, device_id; /* Identity of the device */
|
|
||||||
+ u16 device_class; /* PCI device class */
|
|
||||||
int irq; /* IRQ number */
|
|
||||||
pciaddr_t base_addr[6]; /* Base addresses */
|
|
||||||
pciaddr_t size[6]; /* Region sizes */
|
|
||||||
@@ -118,6 +119,7 @@
|
|
||||||
#define PCI_FILL_BASES 4
|
|
||||||
#define PCI_FILL_ROM_BASE 8
|
|
||||||
#define PCI_FILL_SIZES 16
|
|
||||||
+#define PCI_FILL_CLASS 32
|
|
||||||
#define PCI_FILL_RESCAN 0x10000
|
|
||||||
|
|
||||||
void pci_setup_cache(struct pci_dev *, u8 *cache, int len);
|
|
||||||
--- pciutils-2.2.1/lib/generic.c.devicetype 2004-08-13 16:15:23.000000000 -0400
|
|
||||||
+++ pciutils-2.2.1/lib/generic.c 2005-12-13 17:02:12.000000000 -0500
|
|
||||||
@@ -46,7 +46,8 @@
|
|
||||||
d->func = t->func;
|
|
||||||
d->vendor_id = vd & 0xffff;
|
|
||||||
d->device_id = vd >> 16U;
|
|
||||||
- d->known_fields = PCI_FILL_IDENT;
|
|
||||||
+ d->device_class = pci_read_byte(t,PCI_CLASS_DEVICE+1) << 8 | pci_read_byte(t, PCI_CLASS_DEVICE);
|
|
||||||
+ d->known_fields = PCI_FILL_IDENT | PCI_FILL_CLASS;
|
|
||||||
d->hdrtype = ht;
|
|
||||||
pci_link_dev(a, d);
|
|
||||||
switch (ht)
|
|
||||||
@@ -86,6 +87,8 @@
|
|
||||||
d->vendor_id = pci_read_word(d, PCI_VENDOR_ID);
|
|
||||||
d->device_id = pci_read_word(d, PCI_DEVICE_ID);
|
|
||||||
}
|
|
||||||
+ if (flags & PCI_FILL_CLASS)
|
|
||||||
+ d->device_class = pci_read_byte(d, PCI_CLASS_DEVICE+1) << 8 | pci_read_byte(d, PCI_CLASS_DEVICE);
|
|
||||||
if (flags & PCI_FILL_IRQ)
|
|
||||||
d->irq = pci_read_byte(d, PCI_INTERRUPT_LINE);
|
|
||||||
if (flags & PCI_FILL_BASES)
|
|
||||||
--- pciutils-2.2.1/lib/example.c.devicetype 2000-03-09 03:38:33.000000000 -0500
|
|
||||||
+++ pciutils-2.2.1/lib/example.c 2005-12-13 17:02:12.000000000 -0500
|
|
||||||
@@ -21,7 +21,7 @@
|
|
||||||
pci_scan_bus(pacc); /* We want to get the list of devices */
|
|
||||||
for(dev=pacc->devices; dev; dev=dev->next) /* Iterate over all devices */
|
|
||||||
{
|
|
||||||
- pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES); /* Fill in header info we need */
|
|
||||||
+ pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES | PCI_FILL_CLASS); /* Fill in header info we need */
|
|
||||||
c = pci_read_word(dev, PCI_CLASS_DEVICE); /* Read config register directly */
|
|
||||||
printf("%02x:%02x.%d vendor=%04x device=%04x class=%04x irq=%d base0=%lx\n",
|
|
||||||
dev->bus, dev->dev, dev->func, dev->vendor_id, dev->device_id,
|
|
||||||
--- pciutils-2.2.1/lspci.c.devicetype 2005-11-26 06:48:29.000000000 -0500
|
|
||||||
+++ pciutils-2.2.1/lspci.c 2005-12-13 17:04:39.000000000 -0500
|
|
||||||
@@ -123,7 +123,7 @@
|
|
||||||
d->config_cached += 64;
|
|
||||||
}
|
|
||||||
pci_setup_cache(p, d->config, d->config_cached);
|
|
||||||
- pci_fill_info(p, PCI_FILL_IDENT | PCI_FILL_IRQ | PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES);
|
|
||||||
+ pci_fill_info(p, PCI_FILL_IDENT | PCI_FILL_CLASS | PCI_FILL_IRQ | PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES);
|
|
||||||
return d;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@
|
|
||||||
printf(" %s: %s",
|
|
||||||
pci_lookup_name(pacc, classbuf, sizeof(classbuf),
|
|
||||||
PCI_LOOKUP_CLASS,
|
|
||||||
- get_conf_word(d, PCI_CLASS_DEVICE)),
|
|
||||||
+ p->device_class),
|
|
||||||
pci_lookup_name(pacc, devbuf, sizeof(devbuf),
|
|
||||||
PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE,
|
|
||||||
p->vendor_id, p->device_id));
|
|
||||||
@@ -267,7 +267,7 @@
|
|
||||||
c = get_conf_byte(d, PCI_CLASS_PROG);
|
|
||||||
x = pci_lookup_name(pacc, devbuf, sizeof(devbuf),
|
|
||||||
PCI_LOOKUP_PROGIF | PCI_LOOKUP_NO_NUMBERS,
|
|
||||||
- get_conf_word(d, PCI_CLASS_DEVICE), c);
|
|
||||||
+ p->device_class, c);
|
|
||||||
if (c || x)
|
|
||||||
{
|
|
||||||
printf(" (prog-if %02x", c);
|
|
||||||
@@ -1585,7 +1585,7 @@
|
|
||||||
struct pci_dev *p = d->dev;
|
|
||||||
word status = get_conf_word(d, PCI_STATUS);
|
|
||||||
word cmd = get_conf_word(d, PCI_COMMAND);
|
|
||||||
- word class = get_conf_word(d, PCI_CLASS_DEVICE);
|
|
||||||
+ word class = p->device_class;
|
|
||||||
byte bist = get_conf_byte(d, PCI_BIST);
|
|
||||||
byte htype = get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f;
|
|
||||||
byte latency = get_conf_byte(d, PCI_LATENCY_TIMER);
|
|
||||||
@@ -1783,7 +1783,7 @@
|
|
||||||
show_slot_name(d);
|
|
||||||
putchar('\n');
|
|
||||||
printf("Class:\t%s\n",
|
|
||||||
- pci_lookup_name(pacc, classbuf, sizeof(classbuf), PCI_LOOKUP_CLASS, get_conf_word(d, PCI_CLASS_DEVICE)));
|
|
||||||
+ pci_lookup_name(pacc, classbuf, sizeof(classbuf), PCI_LOOKUP_CLASS, p->device_class));
|
|
||||||
printf("Vendor:\t%s\n",
|
|
||||||
pci_lookup_name(pacc, vendbuf, sizeof(vendbuf), PCI_LOOKUP_VENDOR, p->vendor_id, p->device_id));
|
|
||||||
printf("Device:\t%s\n",
|
|
||||||
@@ -1805,7 +1805,7 @@
|
|
||||||
show_slot_name(d);
|
|
||||||
printf(" \"%s\" \"%s\" \"%s\"",
|
|
||||||
pci_lookup_name(pacc, classbuf, sizeof(classbuf), PCI_LOOKUP_CLASS,
|
|
||||||
- get_conf_word(d, PCI_CLASS_DEVICE)),
|
|
||||||
+ p->device_class),
|
|
||||||
pci_lookup_name(pacc, vendbuf, sizeof(vendbuf), PCI_LOOKUP_VENDOR,
|
|
||||||
p->vendor_id, p->device_id),
|
|
||||||
pci_lookup_name(pacc, devbuf, sizeof(devbuf), PCI_LOOKUP_DEVICE,
|
|
||||||
@@ -1929,7 +1929,7 @@
|
|
||||||
last_br = &host_bridge.chain;
|
|
||||||
for(d=first_dev; d; d=d->next)
|
|
||||||
{
|
|
||||||
- word class = get_conf_word(d, PCI_CLASS_DEVICE);
|
|
||||||
+ word class = d->dev->device_class;
|
|
||||||
byte ht = get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f;
|
|
||||||
if (class == PCI_CLASS_BRIDGE_PCI &&
|
|
||||||
(ht == PCI_HEADER_TYPE_BRIDGE || ht == PCI_HEADER_TYPE_CARDBUS))
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -ruN pciutils-2.2.1/Makefile pciutils-2.2.1.new/Makefile
|
|
||||||
--- pciutils-2.2.1/Makefile 2005-11-26 14:00:57.000000000 +0100
|
|
||||||
+++ pciutils-2.2.1.new/Makefile 2005-12-23 15:24:14.000000000 +0100
|
|
||||||
@@ -7,7 +7,7 @@
|
|
||||||
VERSION=2.2.1
|
|
||||||
DATE=2005-11-26
|
|
||||||
|
|
||||||
-PREFIX=/usr/local
|
|
||||||
+PREFIX=$(out)
|
|
||||||
SBINDIR=$(PREFIX)/sbin
|
|
||||||
SHAREDIR=$(PREFIX)/share
|
|
||||||
IDSDIR=$(SHAREDIR)
|
|
@ -1,5 +1,6 @@
|
|||||||
source $stdenv/setup
|
source $stdenv/setup
|
||||||
|
|
||||||
|
postInstall=postInstall
|
||||||
postInstall() {
|
postInstall() {
|
||||||
ensureDir $out/lib
|
ensureDir $out/lib
|
||||||
ensureDir $out/include/pci
|
ensureDir $out/include/pci
|
||||||
@ -7,6 +8,6 @@ postInstall() {
|
|||||||
cp lib/libpci.a $out/lib
|
cp lib/libpci.a $out/lib
|
||||||
}
|
}
|
||||||
|
|
||||||
postInstall=postInstall
|
makeFlags="PREFIX=$out"
|
||||||
|
|
||||||
genericBuild
|
genericBuild
|
11
pkgs/tools/system/pciutils/default.nix
Normal file
11
pkgs/tools/system/pciutils/default.nix
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{stdenv, fetchurl, zlib}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "pciutils-2.2.4";
|
||||||
|
builder = ./builder.sh;
|
||||||
|
src = fetchurl {
|
||||||
|
url = ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/pciutils-2.2.4.tar.gz;
|
||||||
|
sha256 = "17vaa1rij0q2xj8z8b8c6qq7a4g65gj419dsz067zlf6i3v0gz32";
|
||||||
|
};
|
||||||
|
buildInputs = [zlib];
|
||||||
|
}
|
@ -457,6 +457,10 @@ rec {
|
|||||||
|
|
||||||
patch = useFromStdenv (stdenv ? patch) stdenv.patch gnupatch;
|
patch = useFromStdenv (stdenv ? patch) stdenv.patch gnupatch;
|
||||||
|
|
||||||
|
pciutils = import ../tools/system/pciutils {
|
||||||
|
inherit fetchurl stdenv zlib;
|
||||||
|
};
|
||||||
|
|
||||||
ploticus = import ../tools/graphics/ploticus {
|
ploticus = import ../tools/graphics/ploticus {
|
||||||
inherit fetchurl stdenv zlib libpng;
|
inherit fetchurl stdenv zlib libpng;
|
||||||
inherit (xlibs) libX11;
|
inherit (xlibs) libX11;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user