FreeBSD kernel usb device Code
xhci_pci.c File Reference
#include <sys/cdefs.h>
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/param.h>
#include <sys/queue.h>
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/bus.h>
#include <sys/module.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/condvar.h>
#include <sys/sysctl.h>
#include <sys/sx.h>
#include <sys/unistd.h>
#include <sys/callout.h>
#include <sys/malloc.h>
#include <sys/priv.h>
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usb_core.h>
#include <dev/usb/usb_busdma.h>
#include <dev/usb/usb_process.h>
#include <dev/usb/usb_util.h>
#include <dev/usb/usb_controller.h>
#include <dev/usb/usb_bus.h>
#include <dev/usb/usb_pci.h>
#include <dev/usb/controller/xhci.h>
#include <dev/usb/controller/xhcireg.h>
#include "usb_if.h"
Include dependency graph for xhci_pci.c:

Go to the source code of this file.

Macros

#define PCI_XHCI_VENDORID_AMD   0x1022
 
#define PCI_XHCI_VENDORID_INTEL   0x8086
 

Functions

 __FBSDID ("$FreeBSD$")
 
 DEFINE_CLASS_0 (xhci, xhci_pci_driver, xhci_device_methods, sizeof(struct xhci_softc))
 
 DRIVER_MODULE (xhci, pci, xhci_pci_driver, xhci_devclass, NULL, NULL)
 
 MODULE_DEPEND (xhci, usb, 1, 1, 1)
 
static const char * xhci_pci_match (device_t self)
 
static int xhci_pci_probe (device_t self)
 
 TUNABLE_INT ("hw.usb.xhci.msi", &xhci_use_msi)
 
 TUNABLE_INT ("hw.usb.xhci.msix", &xhci_use_msix)
 
static void xhci_interrupt_poll (void *_sc)
 
static int xhci_pci_port_route (device_t self, uint32_t set, uint32_t clear)
 
int xhci_pci_attach (device_t self)
 
static int xhci_pci_detach (device_t self)
 
static int xhci_pci_take_controller (device_t self)
 

Variables

static device_probe_t xhci_pci_probe
 
static device_detach_t xhci_pci_detach
 
static usb_take_controller_t xhci_pci_take_controller
 
static device_method_t xhci_device_methods []
 
static devclass_t xhci_devclass
 
static int xhci_use_msi = 1
 
static int xhci_use_msix = 1
 

Macro Definition Documentation

◆ PCI_XHCI_VENDORID_AMD

#define PCI_XHCI_VENDORID_AMD   0x1022

Definition at line 65 of file xhci_pci.c.

◆ PCI_XHCI_VENDORID_INTEL

#define PCI_XHCI_VENDORID_INTEL   0x8086

Definition at line 66 of file xhci_pci.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ DEFINE_CLASS_0()

DEFINE_CLASS_0 ( xhci  ,
xhci_pci_driver  ,
xhci_device_methods  ,
sizeof(struct xhci_softc  
)

◆ DRIVER_MODULE()

DRIVER_MODULE ( xhci  ,
pci  ,
xhci_pci_driver  ,
xhci_devclass  ,
NULL  ,
NULL   
)

◆ MODULE_DEPEND()

MODULE_DEPEND ( xhci  ,
usb  ,
,
,
 
)

◆ TUNABLE_INT() [1/2]

TUNABLE_INT ( "hw.usb.xhci.msi"  ,
xhci_use_msi 
)

◆ TUNABLE_INT() [2/2]

TUNABLE_INT ( "hw.usb.xhci.msix"  ,
xhci_use_msix 
)

◆ xhci_interrupt_poll()

static void xhci_interrupt_poll ( void *  _sc)
static

Definition at line 236 of file xhci_pci.c.

References xhci_softc::sc_bus, xhci_softc::sc_callout, USB_BUS_LOCK, USB_BUS_UNLOCK, usb_callout_reset, xhci_interrupt(), and xhci_interrupt_poll().

Referenced by xhci_interrupt_poll(), and xhci_pci_attach().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xhci_pci_attach()

◆ xhci_pci_detach()

static int xhci_pci_detach ( device_t  self)
static

◆ xhci_pci_match()

static const char * xhci_pci_match ( device_t  self)
static

Definition at line 94 of file xhci_pci.c.

References PCIC_SERIALBUS, PCIP_SERIALBUS_USB_XHCI, and PCIS_SERIALBUS_USB.

Referenced by xhci_pci_probe().

Here is the caller graph for this function:

◆ xhci_pci_port_route()

static int xhci_pci_port_route ( device_t  self,
uint32_t  set,
uint32_t  clear 
)
static

Definition at line 246 of file xhci_pci.c.

References PCI_XHCI_INTEL_USB2PRM, PCI_XHCI_INTEL_USB3_PSSEN, PCI_XHCI_INTEL_USB3PRM, and PCI_XHCI_INTEL_XUSB2PR.

Referenced by xhci_pci_attach().

Here is the caller graph for this function:

◆ xhci_pci_probe()

static int xhci_pci_probe ( device_t  self)
static

Definition at line 218 of file xhci_pci.c.

References desc, and xhci_pci_match().

Here is the call graph for this function:

◆ xhci_pci_take_controller()

static int xhci_pci_take_controller ( device_t  self)
static

Variable Documentation

◆ xhci_devclass

devclass_t xhci_devclass
static

Definition at line 88 of file xhci_pci.c.

◆ xhci_device_methods

device_method_t xhci_device_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, xhci_pci_probe),
DEVMETHOD(device_attach, xhci_pci_attach),
DEVMETHOD(device_detach, xhci_pci_detach),
DEVMETHOD(device_suspend, bus_generic_suspend),
DEVMETHOD(device_resume, bus_generic_resume),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
DEVMETHOD(usb_take_controller, xhci_pci_take_controller),
DEVMETHOD_END
}
int xhci_pci_attach(device_t self)
Definition: xhci_pci.c:271
static device_probe_t xhci_pci_probe
Definition: xhci_pci.c:68
static usb_take_controller_t xhci_pci_take_controller
Definition: xhci_pci.c:70
static device_detach_t xhci_pci_detach
Definition: xhci_pci.c:69

Definition at line 72 of file xhci_pci.c.

◆ xhci_pci_detach

device_detach_t xhci_pci_detach
static

Definition at line 69 of file xhci_pci.c.

Referenced by xhci_pci_attach().

◆ xhci_pci_probe

device_probe_t xhci_pci_probe
static

Definition at line 68 of file xhci_pci.c.

◆ xhci_pci_take_controller

usb_take_controller_t xhci_pci_take_controller
static

Definition at line 70 of file xhci_pci.c.

Referenced by xhci_pci_attach().

◆ xhci_use_msi

int xhci_use_msi = 1
static

Definition at line 230 of file xhci_pci.c.

Referenced by xhci_pci_attach().

◆ xhci_use_msix

int xhci_use_msix = 1
static

Definition at line 232 of file xhci_pci.c.

Referenced by xhci_pci_attach().