pci_setup_intr(device_t dev, device_t child, struct resource *irq, int flags,
driver_intr_t *intr, void *arg, void **cookiep, lwkt_serialize_t serializer)
{
-#ifdef MSI
struct pci_devinfo *dinfo;
struct msix_table_entry *mte;
struct msix_vector *mv;
uint64_t addr;
uint32_t data;
- int rid;
-#endif
- int error;
+ int rid, error;
void *cookie;
+
error = bus_generic_setup_intr(dev, child, irq, flags, intr,
arg, &cookie, serializer);
if (error)
return(0);
}
- pci_clear_command_bit(dev, child, PCIM_CMD_INTxDIS);
-#ifdef MSI
rid = rman_get_rid(irq);
if (rid == 0) {
/* Make sure that INTx is enabled */
return (error);
}
}
-#endif
*cookiep = cookie;
return (0);
}
pci_teardown_intr(device_t dev, device_t child, struct resource *irq,
void *cookie)
{
-#ifdef MSI
struct msix_table_entry *mte;
struct resource_list_entry *rle;
struct pci_devinfo *dinfo;
- int rid;
-#endif
- int error;
+ int rid, error;
if (irq == NULL || !(rman_get_flags(irq) & RF_ACTIVE))
return (EINVAL);
if (device_get_parent(child) != dev)
return(bus_generic_teardown_intr(dev, child, irq, cookie));
- pci_set_command_bit(dev, child, PCIM_CMD_INTxDIS);
-#ifdef MSI
rid = rman_get_rid(irq);
if (rid == 0) {
/* Mask INTx */
if (rid > 0)
KASSERT(error == 0,
("%s: generic teardown failed for MSI/MSI-X", __func__));
-#endif
error = bus_generic_teardown_intr(dev, child, irq, cookie);
return (error);
}
* Can't alloc legacy interrupt once MSI messages
* have been allocated.
*/
-#ifdef MSI
if (*rid == 0 && (cfg->msi.msi_alloc > 0 ||
cfg->msix.msix_alloc > 0))
return (NULL);
-#endif
/*
* If the child device doesn't have an
* interrupt routed and is deserving of an
int func, int reg, uint32_t data, int bytes);
static int acpi_pcib_acpi_route_interrupt(device_t pcib,
device_t dev, int pin);
-#ifdef MSI
static int acpi_pcib_alloc_msi(device_t pcib, device_t dev,
int count, int maxcount, int *irqs);
static int acpi_pcib_map_msi(device_t pcib, device_t dev,
int irq, uint64_t *addr, uint32_t *data);
static int acpi_pcib_alloc_msix(device_t pcib, device_t dev,
int *irq);
-#endif
static struct resource *acpi_pcib_acpi_alloc_resource(device_t dev,
device_t child, int type, int *rid,
u_long start, u_long end, u_long count,
DEVMETHOD(pcib_read_config, acpi_pcib_read_config),
DEVMETHOD(pcib_write_config, acpi_pcib_write_config),
DEVMETHOD(pcib_route_interrupt, acpi_pcib_acpi_route_interrupt),
-#ifdef MSI
DEVMETHOD(pcib_alloc_msi, acpi_pcib_alloc_msi),
DEVMETHOD(pcib_release_msi, pcib_release_msi),
DEVMETHOD(pcib_alloc_msix, acpi_pcib_alloc_msix),
DEVMETHOD(pcib_release_msix, pcib_release_msix),
DEVMETHOD(pcib_map_msi, acpi_pcib_map_msi),
-#endif
{0, 0}
};
return (acpi_pcib_route_interrupt(pcib, dev, pin, &sc->ap_prt));
}
-#ifdef MSI
+
static int
acpi_pcib_alloc_msi(device_t pcib, device_t dev, int count, int maxcount,
int *irqs)
bus = device_get_parent(pcib);
return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data));
}
-#endif
+
static u_long acpi_host_mem_start = 0x80000000;
TUNABLE_ULONG("hw.acpi.host_mem_start", &acpi_host_mem_start);