FreeBSD kernel amd64 PCI device code
pci_n1sdp.c File Reference
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/malloc.h>
#include <sys/bus.h>
#include <sys/endian.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <sys/rman.h>
#include <vm/vm.h>
#include <vm/vm_extern.h>
#include <vm/vm_page.h>
#include <vm/vm_phys.h>
#include <contrib/dev/acpica/include/acpi.h>
#include <contrib/dev/acpica/include/accommon.h>
#include <dev/acpica/acpivar.h>
#include <dev/acpica/acpi_pcibvar.h>
#include <dev/pci/pcivar.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcib_private.h>
#include <dev/pci/pci_host_generic.h>
#include <dev/pci/pci_host_generic_acpi.h>
#include "pcib_if.h"
Include dependency graph for pci_n1sdp.c:

Go to the source code of this file.

Data Structures

struct  pcie_discovery_data
 
struct  generic_pcie_n1sdp_softc
 

Macros

#define AP_NS_SHARED_MEM_BASE   0x06000000
 
#define N1SDP_MAX_SEGMENTS   2 /* Two PCIe root complex devices. */
 
#define BDF_TABLE_SIZE   (16 * 1024)
 
#define PCI_CFG_SPACE_SIZE   0x1000
 

Functions

 __FBSDID ("$FreeBSD$")
 
 _Static_assert (BDF_TABLE_SIZE >=PAGE_SIZE, "pci_n1sdp.c assumes a 4k or 16k page size when mapping the shared data")
 
static int n1sdp_init (struct generic_pcie_n1sdp_softc *sc)
 
static int n1sdp_check_bdf (struct generic_pcie_n1sdp_softc *sc, u_int bus, u_int slot, u_int func)
 
static int n1sdp_pcie_acpi_probe (device_t dev)
 
static int n1sdp_pcie_acpi_attach (device_t dev)
 
static int n1sdp_get_bus_space (device_t dev, u_int bus, u_int slot, u_int func, u_int reg, bus_space_tag_t *bst, bus_space_handle_t *bsh, bus_size_t *offset)
 
static uint32_t n1sdp_pcie_read_config (device_t dev, u_int bus, u_int slot, u_int func, u_int reg, int bytes)
 
static void n1sdp_pcie_write_config (device_t dev, u_int bus, u_int slot, u_int func, u_int reg, uint32_t val, int bytes)
 
 DEFINE_CLASS_1 (pcib, n1sdp_pcie_acpi_driver, n1sdp_pcie_acpi_methods, sizeof(struct generic_pcie_n1sdp_softc), generic_pcie_acpi_driver)
 
 DRIVER_MODULE (n1sdp_pcib, acpi, n1sdp_pcie_acpi_driver, n1sdp_pcie_acpi_devclass, 0, 0)
 

Variables

static device_method_t n1sdp_pcie_acpi_methods []
 
static devclass_t n1sdp_pcie_acpi_devclass
 

Macro Definition Documentation

◆ AP_NS_SHARED_MEM_BASE

#define AP_NS_SHARED_MEM_BASE   0x06000000

Definition at line 65 of file pci_n1sdp.c.

◆ BDF_TABLE_SIZE

#define BDF_TABLE_SIZE   (16 * 1024)

Definition at line 67 of file pci_n1sdp.c.

◆ N1SDP_MAX_SEGMENTS

#define N1SDP_MAX_SEGMENTS   2 /* Two PCIe root complex devices. */

Definition at line 66 of file pci_n1sdp.c.

◆ PCI_CFG_SPACE_SIZE

#define PCI_CFG_SPACE_SIZE   0x1000

Definition at line 68 of file pci_n1sdp.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ _Static_assert()

_Static_assert ( BDF_TABLE_SIZE >=  PAGE_SIZE,
"pci_n1sdp.c assumes a 4k or 16k page size when mapping the shared data  
)

◆ DEFINE_CLASS_1()

DEFINE_CLASS_1 ( pcib  ,
n1sdp_pcie_acpi_driver  ,
n1sdp_pcie_acpi_methods  ,
sizeof(struct generic_pcie_n1sdp_softc ,
generic_pcie_acpi_driver   
)

◆ DRIVER_MODULE()

DRIVER_MODULE ( n1sdp_pcib  ,
acpi  ,
n1sdp_pcie_acpi_driver  ,
n1sdp_pcie_acpi_devclass  ,
,
 
)

◆ n1sdp_check_bdf()

static int n1sdp_check_bdf ( struct generic_pcie_n1sdp_softc sc,
u_int  bus,
u_int  slot,
u_int  func 
)
static

Definition at line 144 of file pci_n1sdp.c.

References bus, func, generic_pcie_n1sdp_softc::n1_discovery_data, pcie_discovery_data::nr_bdfs, PCIE_ADDR_OFFSET, slot, and pcie_discovery_data::valid_bdfs.

Referenced by n1sdp_get_bus_space().

Here is the caller graph for this function:

◆ n1sdp_get_bus_space()

static int n1sdp_get_bus_space ( device_t  dev,
u_int  bus,
u_int  slot,
u_int  func,
u_int  reg,
bus_space_tag_t *  bst,
bus_space_handle_t *  bsh,
bus_size_t *  offset 
)
static

◆ n1sdp_init()

◆ n1sdp_pcie_acpi_attach()

static int n1sdp_pcie_acpi_attach ( device_t  dev)
static

Definition at line 197 of file pci_n1sdp.c.

References generic_pcie_n1sdp_softc::acpi, dev, n1sdp_init(), N1SDP_MAX_SEGMENTS, pci_host_generic_acpi_init(), generic_pcie_acpi_softc::segment, and status.

Here is the call graph for this function:

◆ n1sdp_pcie_acpi_probe()

static int n1sdp_pcie_acpi_probe ( device_t  dev)
static

Definition at line 165 of file pci_n1sdp.c.

References dev, and status.

◆ n1sdp_pcie_read_config()

static uint32_t n1sdp_pcie_read_config ( device_t  dev,
u_int  bus,
u_int  slot,
u_int  func,
u_int  reg,
int  bytes 
)
static

◆ n1sdp_pcie_write_config()

static void n1sdp_pcie_write_config ( device_t  dev,
u_int  bus,
u_int  slot,
u_int  func,
u_int  reg,
uint32_t  val,
int  bytes 
)
static

Variable Documentation

◆ n1sdp_pcie_acpi_devclass

devclass_t n1sdp_pcie_acpi_devclass
static

Definition at line 364 of file pci_n1sdp.c.

◆ n1sdp_pcie_acpi_methods

device_method_t n1sdp_pcie_acpi_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, n1sdp_pcie_acpi_probe),
DEVMETHOD(device_attach, n1sdp_pcie_acpi_attach),
DEVMETHOD_END
}
static int n1sdp_pcie_acpi_attach(device_t dev)
Definition: pci_n1sdp.c:197
static uint32_t n1sdp_pcie_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, int bytes)
Definition: pci_n1sdp.c:259
static void n1sdp_pcie_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, uint32_t val, int bytes)
Definition: pci_n1sdp.c:305
static int n1sdp_pcie_acpi_probe(device_t dev)
Definition: pci_n1sdp.c:165
static uint32_t pcib_read_config(device_t dev, u_int b, u_int s, u_int f, u_int reg, int width)
Definition: pci_pci.c:2698
static void pcib_write_config(device_t dev, u_int b, u_int s, u_int f, u_int reg, uint32_t val, int width)
Definition: pci_pci.c:2721

Definition at line 350 of file pci_n1sdp.c.