Date: Mon, 13 Jul 2009 14:05:15 +0000 From: Norbert Koch <nkoch@demig.de> To: freebsd-hackers@freebsd.org Subject: bus device driver Message-ID: <4A5B3F1B.3040207@demig.de>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A5B3F1B.3040207>