From sam@willow.rfc1149.net  Thu Oct 30 04:27:34 2003
Return-Path: <sam@willow.rfc1149.net>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id BDF3616A4CF
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 30 Oct 2003 04:27:34 -0800 (PST)
Received: from willow.rfc1149.net (willow.rfc1149.net [213.41.154.244])
	by mx1.FreeBSD.org (Postfix) with ESMTP id C202943F93
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 30 Oct 2003 04:27:31 -0800 (PST)
	(envelope-from sam@willow.rfc1149.net)
Received: by willow.rfc1149.net (Postfix, from userid 1000)
	id B61CF3D61; Thu, 30 Oct 2003 13:27:29 +0100 (CET)
Message-Id: <20031030122729.B61CF3D61@willow.rfc1149.net>
Date: Thu, 30 Oct 2003 13:27:29 +0100 (CET)
From: Samuel Tardieu <sam@rfc1149.net>
Reply-To: Samuel Tardieu <sam@rfc1149.net>
To: FreeBSD-gnats-submit@freebsd.org
Cc: samy@kerneled.com
Subject: Installation of pci/pci.h
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         58721
>Category:       ports
>Synopsis:       devel/libpci: Installation of pci/pci.h
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Thu Oct 30 04:30:20 PST 2003
>Closed-Date:    Wed Nov 26 11:48:54 PST 2003
>Last-Modified:  Wed Nov 26 11:50:17 PST 2003
>Originator:     Samuel Tardieu
>Release:        FreeBSD 4.9-RC i386
>Organization:
>Environment:
System: FreeBSD willow 4.9-RC FreeBSD 4.9-RC #1: Sun Oct 12 22:38:04 CEST 2003 root@willow:/usr/obj/usr/src/sys/WILLOW i386

>Description:
devel/libpci does not install any header file, making the PCI library hard
to use.
>How-To-Repeat:
>Fix:
The following patch installs an appropriate and self-contained header file as
${PREFIX}/include/pci/pci.h.

The file is built by removing the local includes in upstream pci.h and
adding "#define OS_FREEBSD" in it.

Note to committer: files/pci.h must be added when applying this patch.


--- Makefile.orig	Thu Oct 30 13:19:38 2003
+++ Makefile	Thu Oct 30 13:25:15 2003
@@ -38,5 +38,7 @@
 	@(${CP} ${WRKSRC}/lib/libpci.so ${PREFIX}/lib/libpci.so.2)
 	@(${CP} ${WRKSRC}/lib/libpci.a  ${PREFIX}/lib/libpci.a)
 	@(${LN} -sf ${PREFIX}/lib/libpci.so.2.1 ${PREFIX}/lib/libpci.so)
+	@(${MKDIR} ${PREFIX}/include/pci)
+	@(${CP} ${FILESDIR}/pci.h ${PREFIX}/include/pci/pci.h)
 
 .include <bsd.port.mk>
--- pkg-plist.orig	Thu Oct 30 13:19:41 2003
+++ pkg-plist	Thu Oct 30 13:21:56 2003
@@ -1,3 +1,5 @@
 lib/libpci.a
 lib/libpci.so
 lib/libpci.so.2
+include/pci/pci.h
+@dirrm include/pci
--- /dev/null	Thu Oct 30 13:25:16 2003
+++ files/pci.h	Thu Oct 30 13:19:29 2003
@@ -0,0 +1,201 @@
+/*
+ *	$Id: pci.h,v 1.12 2003/01/04 11:04:39 mj Exp $
+ *
+ *	The PCI Library
+ *
+ *	Copyright (c) 1997--2002 Martin Mares <mj@ucw.cz>
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#ifndef _PCI_LIB_H
+#define _PCI_LIB_H
+
+#define OS_FREEBSD
+
+/*
+ *	Types
+ */
+
+#ifdef OS_LINUX
+#include <linux/types.h>
+
+typedef __u8 byte;
+typedef __u8 u8;
+typedef __u16 word;
+typedef __u16 u16;
+typedef __u32 u32;
+#endif
+
+#ifdef OS_FREEBSD
+#include <sys/types.h>
+
+typedef u_int8_t byte;
+typedef u_int8_t u8;
+typedef u_int16_t word;
+typedef u_int16_t u16;
+typedef u_int32_t u32;
+#endif
+
+#ifdef OS_NETBSD
+#include <sys/types.h>
+
+typedef u_int8_t byte;
+typedef u_int8_t u8;
+typedef u_int16_t word;
+typedef u_int16_t u16;
+typedef u_int32_t u32;
+#endif
+
+#ifdef OS_AIX
+#include <sys/param.h>
+
+typedef u_int8_t byte;
+typedef u_int8_t u8;
+typedef u_int16_t word;
+typedef u_int16_t u16;
+typedef u_int32_t u32;
+#endif
+
+#ifdef HAVE_LONG_ADDRESS
+typedef unsigned long long pciaddr_t;
+#else
+typedef unsigned long pciaddr_t;
+#endif
+
+/*
+ *	PCI Access Structure
+ */
+
+struct pci_methods;
+struct nl_entry;
+
+enum pci_access_type {
+  /* Known access methods, remember to update access.c as well */
+  PCI_ACCESS_AUTO,			/* Autodetection (params: none) */
+  PCI_ACCESS_PROC_BUS_PCI,		/* Linux /proc/bus/pci (params: path) */
+  PCI_ACCESS_I386_TYPE1,		/* i386 ports, type 1 (params: none) */
+  PCI_ACCESS_I386_TYPE2,		/* i386 ports, type 2 (params: none) */
+  PCI_ACCESS_FBSD_DEVICE,		/* FreeBSD /dev/pci (params: path) */
+  PCI_ACCESS_AIX_DEVICE,		/* /dev/pci0, /dev/bus0, etc. */
+  PCI_ACCESS_NBSD_LIBPCI,		/* NetBSD libpci */
+  PCI_ACCESS_DUMP,			/* Dump file (params: filename) */
+  PCI_ACCESS_MAX
+};
+
+struct pci_access {
+  /* Options you can change: */
+  unsigned int method;			/* Access method */
+  char *method_params[PCI_ACCESS_MAX];	/* Parameters for the methods */
+  int writeable;			/* Open in read/write mode */
+  int buscentric;			/* Bus-centric view of the world */
+  char *id_file_name;			/* Name of ID list file */
+  int numeric_ids;			/* Don't resolve device IDs to names */
+  int debugging;			/* Turn on debugging messages */
+
+  /* Functions you can override: */
+  void (*error)(char *msg, ...);	/* Write error message and quit */
+  void (*warning)(char *msg, ...);	/* Write a warning message */
+  void (*debug)(char *msg, ...);	/* Write a debugging message */
+
+  struct pci_dev *devices;		/* Devices found on this bus */
+
+  /* Fields used internally: */
+  struct pci_methods *methods;
+  char *nl_list;			/* Name list cache */
+  struct nl_entry **nl_hash;
+  int fd;				/* proc: fd */
+  int fd_rw;				/* proc: fd opened read-write */
+  struct pci_dev *cached_dev;		/* proc: device the fd is for */
+  int fd_pos;				/* proc: current position */
+};
+
+/* Initialize PCI access */
+struct pci_access *pci_alloc(void);
+void pci_init(struct pci_access *);
+void pci_cleanup(struct pci_access *);
+
+/* Scanning of devices */
+void pci_scan_bus(struct pci_access *acc);
+struct pci_dev *pci_get_dev(struct pci_access *acc, int bus, int dev, int func); /* Raw access to specified device */
+void pci_free_dev(struct pci_dev *);
+
+/*
+ *	Devices
+ */
+
+struct pci_dev {
+  struct pci_dev *next;			/* Next device in the chain */
+  word bus;				/* Higher byte can select host bridges */
+  byte dev, func;			/* Device and function */
+
+  /* These fields are set by pci_fill_info() */
+  int known_fields;			/* Set of info fields already known */
+  word vendor_id, device_id;		/* Identity of the device */
+  int irq;				/* IRQ number */
+  pciaddr_t base_addr[6];		/* Base addresses */
+  pciaddr_t size[6];			/* Region sizes */
+  pciaddr_t rom_base_addr;		/* Expansion ROM base address */
+  pciaddr_t rom_size;			/* Expansion ROM size */
+
+  /* Fields used internally: */
+  struct pci_access *access;
+  struct pci_methods *methods;
+  byte *cache;				/* Cached information */
+  int cache_len;
+  int hdrtype;				/* Direct methods: header type */
+  void *aux;				/* Auxillary data */
+};
+
+#define PCI_ADDR_IO_MASK (~(pciaddr_t) 0x3)
+#define PCI_ADDR_MEM_MASK (~(pciaddr_t) 0xf)
+
+byte pci_read_byte(struct pci_dev *, int pos); /* Access to configuration space */
+word pci_read_word(struct pci_dev *, int pos);
+u32  pci_read_long(struct pci_dev *, int pos);
+int pci_read_block(struct pci_dev *, int pos, byte *buf, int len);
+int pci_write_byte(struct pci_dev *, int pos, byte data);
+int pci_write_word(struct pci_dev *, int pos, word data);
+int pci_write_long(struct pci_dev *, int pos, u32 data);
+int pci_write_block(struct pci_dev *, int pos, byte *buf, int len);
+
+int pci_fill_info(struct pci_dev *, int flags); /* Fill in device information */
+
+#define PCI_FILL_IDENT		1
+#define PCI_FILL_IRQ		2
+#define PCI_FILL_BASES		4
+#define PCI_FILL_ROM_BASE	8
+#define PCI_FILL_SIZES		16
+#define PCI_FILL_RESCAN		0x10000
+
+void pci_setup_cache(struct pci_dev *, byte *cache, int len);
+
+/*
+ *	Filters
+ */
+
+struct pci_filter {
+  int bus, slot, func;			/* -1 = ANY */
+  int vendor, device;
+};
+
+void pci_filter_init(struct pci_access *, struct pci_filter *);
+char *pci_filter_parse_slot(struct pci_filter *, char *);
+char *pci_filter_parse_id(struct pci_filter *, char *);
+int pci_filter_match(struct pci_filter *, struct pci_dev *);
+
+/*
+ *	Device names
+ */
+
+char *pci_lookup_name(struct pci_access *a, char *buf, int size, int flags, u32 arg1, u32 arg2, u32 arg3, u32 arg4);
+void pci_free_name_list(struct pci_access *a);
+
+#define PCI_LOOKUP_VENDOR 1
+#define PCI_LOOKUP_DEVICE 2
+#define PCI_LOOKUP_CLASS 4
+#define PCI_LOOKUP_SUBSYSTEM 8
+#define PCI_LOOKUP_PROGIF 16
+#define PCI_LOOKUP_NUMERIC 0x10000
+
+#endif
>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->feedback 
State-Changed-By: mat 
State-Changed-When: Wed Nov 26 06:13:59 PST 2003 
State-Changed-Why:  
Maintainer advised 

http://www.freebsd.org/cgi/query-pr.cgi?pr=58721 

From: Mathieu Arnold <mat@FreeBSD.org>
To: samy@kerneled.com
Cc: freebsd-gnats-submit@FreeBSD.org
Subject: Re: ports/58721: devel/libpci: Installation of pci/pci.h
Date: Wed, 26 Nov 2003 15:22:43 +0100

 Dear maintainer, could you take a look at PR 58721,
  <http://www.freebsd.org/cgi/query-pr.cgi?pr=58721>
 And approve or disapprove it ?
 
 -- 
 Mathieu Arnold
State-Changed-From-To: feedback->closed 
State-Changed-By: pav 
State-Changed-When: Wed Nov 26 11:48:27 PST 2003 
State-Changed-Why:  
Committed by bland three weeks ago. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=58721 

From: Samy Al Bahra <samy@kerneled.com>
To: Mathieu Arnold <mat@FreeBSD.org>
Cc: freebsd-gnats-submit@FreeBSD.org
Subject: Re: ports/58721: devel/libpci: Installation of pci/pci.h
Date: Wed, 26 Nov 2003 22:49:16 +0300

 On Wed, 26 Nov 2003 15:22:43 +0100
 Mathieu Arnold <mat@FreeBSD.org> wrote:
 
 > Dear maintainer, could you take a look at PR 58721,
 >  <http://www.freebsd.org/cgi/query-pr.cgi?pr=58721>
 > And approve or disapprove it ?
 
 It seems someone (*g*) did not close the PR. A similar patch was
 committed Mathieu.
 
 Thanks.
 --
 +-----------------------------------+
 | Samy Al Bahra | samy@kerneled.com |
 |-----------------------------------|
 |     B3A7 F5BE B2AE 67B1 AC4B      |
 |     0983 956D 1F4A AA54 47CB      |
 |-----------------------------------|
 |     http://www.kerneled.com       |
 +-----------------------------------+
 
>Unformatted:
