From owner-freebsd-drivers@FreeBSD.ORG Sat Jul 6 13:19:50 2013 Return-Path: Delivered-To: freebsd-drivers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 5E1D1378 for ; Sat, 6 Jul 2013 13:19:50 +0000 (UTC) (envelope-from rj@cyclaero.com) Received: from mo6-p00-ob.rzone.de (mo6-p00-ob.rzone.de [IPv6:2a01:238:20a:202:5300::1]) by mx1.freebsd.org (Postfix) with ESMTP id E6EB617D7 for ; Sat, 6 Jul 2013 13:19:49 +0000 (UTC) X-RZG-AUTH: :PmYkdlmrd/5oFO+v3d3wrWNKA6HwNiCiTtCELX2wAf/wvCIJyDe4TyzpJbJ8 X-RZG-CLASS-ID: mo00 Received: from rolf.projectworld.net (b150f5ed.virtua.com.br [177.80.245.237]) by smtp.strato.de (jored mo37) (RZmta 31.29 DYNA|AUTH) with (AES128-SHA encrypted) ESMTPA id 400358p66BRo1B ; Sat, 6 Jul 2013 15:19:43 +0200 (CEST) Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: PCI Subdevice ID From: "Dr. Rolf Jansen" In-Reply-To: <001a01ce7a38$6ce642b0$46b2c810$@info> Date: Sat, 6 Jul 2013 10:19:40 -0300 Content-Transfer-Encoding: quoted-printable Message-Id: <67773F40-53B0-4572-8357-ADE11941C09B@cyclaero.com> References: <000c01ce7a34$ebd49a30$c37dce90$@info> <8982B63C-525E-4B3E-9DA1-F2535AFE4A22@cyclaero.com> <001a01ce7a38$6ce642b0$46b2c810$@info> To: "Cedric GROSS" X-Mailer: Apple Mail (2.1508) Cc: freebsd-drivers@freebsd.org X-BeenThere: freebsd-drivers@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Writing device drivers for FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Jul 2013 13:19:50 -0000 Am 06.07.2013 um 08:03 schrieb "Cedric GROSS" : > ... I'm looking for a kernel function like 'pci_get_device' but for = subdevice The pci_get_*** macros are defined in /usr/src/sys/dev/pci/pcivar.h = below line 220. The expanded macro for getting the sub-device number is: static __inline uint16_t pci_get_subdevice(device_t dev) { uintptr_t v; BUS_READ_IVAR(device_get_parent(dev), dev, PCI_IVAR_SUBDEVICE, = &v); return ((uint16_t) v); } Best regards Rolf=