From owner-freebsd-hackers@FreeBSD.ORG Mon Jul 13 14:32:41 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E8BF3106564A for ; Mon, 13 Jul 2009 14:32:41 +0000 (UTC) (envelope-from nkoch@demig.de) Received: from www61.your-server.de (www61.your-server.de [213.133.104.61]) by mx1.freebsd.org (Postfix) with ESMTP id A4E508FC13 for ; Mon, 13 Jul 2009 14:32:41 +0000 (UTC) (envelope-from nkoch@demig.de) Received: from [217.7.243.216] (helo=firewall.demig.intra) by www61.your-server.de with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1MQMAD-00056D-C9 for freebsd-hackers@freebsd.org; Mon, 13 Jul 2009 16:05:53 +0200 Received: from [192.168.148.72] (ws-pr-3.demig.intra [192.168.148.72]) by firewall.demig.intra (8.14.3/8.14.0) with ESMTP id n6DE5Gmf091520 for ; Mon, 13 Jul 2009 16:05:16 +0200 (CEST) (envelope-from nkoch@demig.de) Message-ID: <4A5B3F1B.3040207@demig.de> Date: Mon, 13 Jul 2009 14:05:15 +0000 From: Norbert Koch Organization: demig Prozessautomatisierung GmbH User-Agent: Thunderbird 2.0.0.22 (Windows/20090605) MIME-Version: 1.0 To: freebsd-hackers@freebsd.org Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.64 on 192.168.148.235 X-Authenticated-Sender: webmaster@demig.de X-Virus-Scanned: Clear (ClamAV 0.95.1/9559/Mon Jul 13 13:00:11 2009) Subject: bus device driver X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jul 2009 14:32:42 -0000 Hello. I just started to write a device driver for a multi-function pci card. This card replaces a number of independant isa hardware devices. This pci card contains memory, i/o and interrupt sources. I want my device driver to serve as a bus driver between the pci driver and the specific device drivers. Do I need more than the following (see below)? Do I have to do any bookkeeping for allocated resources? /*****************************************/ int mypci_probe (device_t dev) { if (pci_get_vendor (dev) == MYVENDOR && pci_get_devid (dev) == MYDEVID) { device_set_desc (dev, "MYPCI bus"); return 0; }; return ENXIO; } static devclass_t mypci_devclass; /* stolen from ISA/PCI brigde */ static device_method_t mypci_methods[] = { /* device */ DEVMETHOD (device_probe, mypci_probe), DEVMETHOD (device_attach, bus_generic_attach), DEVMETHOD (device_detach, bus_generic_detach), /* bus */ DEVMETHOD (bus_print_child, bus_generic_print_child), DEVMETHOD (bus_alloc_resource, bus_generic_alloc_resource), DEVMETHOD (bus_release_resource, bus_generic_release_resource), DEVMETHOD (bus_activate_resource, bus_generic_activate_resource), DEVMETHOD (bus_deactivate_resource, bus_generic_deactivate_resource), DEVMETHOD (bus_setup_intr, bus_generic_setup_intr), DEVMETHOD (bus_teardown_intr, bus_generic_teardown_intr), {0, 0} }; static driver_t mypci_driver = { "mypci", mypci_methods, 0 }; /*****************************************/ Thank you for any help. Norbert Koch