Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/pci/pci.c
Show All 40 Lines | |||||
#include <sys/eventhandler.h> | #include <sys/eventhandler.h> | ||||
#include <sys/fcntl.h> | #include <sys/fcntl.h> | ||||
#include <sys/kernel.h> | #include <sys/kernel.h> | ||||
#include <sys/limits.h> | #include <sys/limits.h> | ||||
#include <sys/linker.h> | #include <sys/linker.h> | ||||
#include <sys/malloc.h> | #include <sys/malloc.h> | ||||
#include <sys/module.h> | #include <sys/module.h> | ||||
#include <sys/queue.h> | #include <sys/queue.h> | ||||
#include <sys/sbuf.h> | |||||
#include <sys/sysctl.h> | #include <sys/sysctl.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <sys/taskqueue.h> | #include <sys/taskqueue.h> | ||||
#include <sys/tree.h> | #include <sys/tree.h> | ||||
#include <vm/vm.h> | #include <vm/vm.h> | ||||
#include <vm/pmap.h> | #include <vm/pmap.h> | ||||
#include <vm/vm_extern.h> | #include <vm/vm_extern.h> | ||||
▲ Show 20 Lines • Show All 112 Lines • ▼ Show 20 Lines | static device_method_t pci_methods[] = { | ||||
DEVMETHOD(bus_delete_resource, pci_delete_resource), | DEVMETHOD(bus_delete_resource, pci_delete_resource), | ||||
DEVMETHOD(bus_alloc_resource, pci_alloc_resource), | DEVMETHOD(bus_alloc_resource, pci_alloc_resource), | ||||
DEVMETHOD(bus_adjust_resource, bus_generic_adjust_resource), | DEVMETHOD(bus_adjust_resource, bus_generic_adjust_resource), | ||||
DEVMETHOD(bus_release_resource, pci_release_resource), | DEVMETHOD(bus_release_resource, pci_release_resource), | ||||
DEVMETHOD(bus_activate_resource, pci_activate_resource), | DEVMETHOD(bus_activate_resource, pci_activate_resource), | ||||
DEVMETHOD(bus_deactivate_resource, pci_deactivate_resource), | DEVMETHOD(bus_deactivate_resource, pci_deactivate_resource), | ||||
DEVMETHOD(bus_child_deleted, pci_child_deleted), | DEVMETHOD(bus_child_deleted, pci_child_deleted), | ||||
DEVMETHOD(bus_child_detached, pci_child_detached), | DEVMETHOD(bus_child_detached, pci_child_detached), | ||||
DEVMETHOD(bus_child_pnpinfo_str, pci_child_pnpinfo_str_method), | DEVMETHOD(bus_child_pnpinfo, pci_child_pnpinfo_method), | ||||
DEVMETHOD(bus_child_location_str, pci_child_location_str_method), | DEVMETHOD(bus_child_location, pci_child_location_method), | ||||
DEVMETHOD(bus_hint_device_unit, pci_hint_device_unit), | DEVMETHOD(bus_hint_device_unit, pci_hint_device_unit), | ||||
DEVMETHOD(bus_remap_intr, pci_remap_intr_method), | DEVMETHOD(bus_remap_intr, pci_remap_intr_method), | ||||
DEVMETHOD(bus_suspend_child, pci_suspend_child), | DEVMETHOD(bus_suspend_child, pci_suspend_child), | ||||
DEVMETHOD(bus_resume_child, pci_resume_child), | DEVMETHOD(bus_resume_child, pci_resume_child), | ||||
DEVMETHOD(bus_rescan, pci_rescan_method), | DEVMETHOD(bus_rescan, pci_rescan_method), | ||||
/* PCI interface */ | /* PCI interface */ | ||||
DEVMETHOD(pci_read_config, pci_read_config_method), | DEVMETHOD(pci_read_config, pci_read_config_method), | ||||
▲ Show 20 Lines • Show All 5,655 Lines • ▼ Show 20 Lines | pci_write_config_method(device_t dev, device_t child, int reg, | ||||
struct pci_devinfo *dinfo = device_get_ivars(child); | struct pci_devinfo *dinfo = device_get_ivars(child); | ||||
pcicfgregs *cfg = &dinfo->cfg; | pcicfgregs *cfg = &dinfo->cfg; | ||||
PCIB_WRITE_CONFIG(device_get_parent(dev), | PCIB_WRITE_CONFIG(device_get_parent(dev), | ||||
cfg->bus, cfg->slot, cfg->func, reg, val, width); | cfg->bus, cfg->slot, cfg->func, reg, val, width); | ||||
} | } | ||||
int | int | ||||
pci_child_location_str_method(device_t dev, device_t child, char *buf, | pci_child_location_method(device_t dev, device_t child, struct sbuf *sb) | ||||
size_t buflen) | |||||
{ | { | ||||
snprintf(buf, buflen, "slot=%d function=%d dbsf=pci%d:%d:%d:%d", | sbuf_printf(sb, "slot=%d function=%d dbsf=pci%d:%d:%d:%d", | ||||
pci_get_slot(child), pci_get_function(child), pci_get_domain(child), | pci_get_slot(child), pci_get_function(child), pci_get_domain(child), | ||||
pci_get_bus(child), pci_get_slot(child), pci_get_function(child)); | pci_get_bus(child), pci_get_slot(child), pci_get_function(child)); | ||||
return (0); | return (0); | ||||
} | } | ||||
int | int | ||||
pci_child_pnpinfo_str_method(device_t dev, device_t child, char *buf, | pci_child_pnpinfo_method(device_t dev, device_t child, struct sbuf *sb) | ||||
size_t buflen) | |||||
{ | { | ||||
struct pci_devinfo *dinfo; | struct pci_devinfo *dinfo; | ||||
pcicfgregs *cfg; | pcicfgregs *cfg; | ||||
dinfo = device_get_ivars(child); | dinfo = device_get_ivars(child); | ||||
cfg = &dinfo->cfg; | cfg = &dinfo->cfg; | ||||
snprintf(buf, buflen, "vendor=0x%04x device=0x%04x subvendor=0x%04x " | sbuf_printf(sb, "vendor=0x%04x device=0x%04x subvendor=0x%04x " | ||||
"subdevice=0x%04x class=0x%02x%02x%02x", cfg->vendor, cfg->device, | "subdevice=0x%04x class=0x%02x%02x%02x", cfg->vendor, cfg->device, | ||||
cfg->subvendor, cfg->subdevice, cfg->baseclass, cfg->subclass, | cfg->subvendor, cfg->subdevice, cfg->baseclass, cfg->subclass, | ||||
cfg->progif); | cfg->progif); | ||||
return (0); | return (0); | ||||
} | } | ||||
int | int | ||||
pci_assign_interrupt_method(device_t dev, device_t child) | pci_assign_interrupt_method(device_t dev, device_t child) | ||||
▲ Show 20 Lines • Show All 894 Lines • Show Last 20 Lines |