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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[email protected]"

Reply via email to