freebsd_network: Cleanup bustag handling.
* Add an enum with general BUS_SPACE_TAG values for use across platforms. * Add proper entries for generic IRQs and MSIs and make use of them.
This commit is contained in:
parent
843a8ad7a7
commit
fc6ea2ef78
@ -77,10 +77,8 @@ bus_alloc_irq_resource(device_t dev, struct resource *res)
|
||||
if (irq == 0 || irq == 0xff)
|
||||
return -1;
|
||||
|
||||
/* TODO: IRQ resources! */
|
||||
res->r_bustag = 0;
|
||||
res->r_bustag = BUS_SPACE_TAG_IRQ;
|
||||
res->r_bushandle = irq;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -119,7 +117,7 @@ bus_alloc_mem_resource(device_t dev, struct resource *res, pci_info *info,
|
||||
if (res->r_mapped_area < B_OK)
|
||||
return -1;
|
||||
|
||||
res->r_bustag = X86_BUS_SPACE_MEM;
|
||||
res->r_bustag = BUS_SPACE_TAG_MEM;
|
||||
res->r_bushandle = (bus_space_handle_t)virtualAddr;
|
||||
return 0;
|
||||
}
|
||||
@ -144,7 +142,7 @@ bus_alloc_ioport_resource(device_t dev, struct resource *res, pci_info *info,
|
||||
if (pci_enable_io(dev, SYS_RES_IOPORT) != 0)
|
||||
return -1;
|
||||
|
||||
res->r_bustag = X86_BUS_SPACE_IO;
|
||||
res->r_bustag = BUS_SPACE_TAG_IO;
|
||||
res->r_bushandle = info->u.h0.base_registers[bar_index];
|
||||
return 0;
|
||||
}
|
||||
@ -193,7 +191,7 @@ bus_alloc_resource(device_t dev, int type, int *rid, unsigned long start,
|
||||
// msi or msi-x interrupt at index *rid - 1
|
||||
pci_info *info;
|
||||
info = &((struct root_device_softc *)dev->root->softc)->pci_info;
|
||||
res->r_bustag = 1;
|
||||
res->r_bustag = BUS_SPACE_TAG_MSI;
|
||||
res->r_bushandle = info->u.h0.interrupt_line + *rid - 1;
|
||||
result = 0;
|
||||
}
|
||||
@ -404,7 +402,7 @@ bus_setup_intr(device_t dev, struct resource *res, int flags,
|
||||
intr_wrapper, intr, 0);
|
||||
}
|
||||
|
||||
if (status == B_OK && res->r_bustag == 1 && gPCIx86 != NULL) {
|
||||
if (status == B_OK && res->r_bustag == BUS_SPACE_TAG_MSI && gPCIx86 != NULL) {
|
||||
// this is an msi, enable it
|
||||
pci_info *info
|
||||
= &((struct root_device_softc *)dev->root->softc)->pci_info;
|
||||
|
@ -13,24 +13,31 @@
|
||||
typedef phys_addr_t bus_addr_t;
|
||||
|
||||
|
||||
typedef int bus_space_tag_t;
|
||||
enum {
|
||||
BUS_SPACE_TAG_INVALID = 0,
|
||||
|
||||
BUS_SPACE_TAG_IO,
|
||||
BUS_SPACE_TAG_MEM,
|
||||
BUS_SPACE_TAG_IRQ,
|
||||
BUS_SPACE_TAG_MSI,
|
||||
};
|
||||
|
||||
|
||||
#ifdef B_HAIKU_64_BIT
|
||||
|
||||
typedef uint64_t bus_size_t;
|
||||
|
||||
typedef uint64_t bus_space_tag_t;
|
||||
typedef uint64_t bus_space_handle_t;
|
||||
|
||||
#else
|
||||
|
||||
typedef uint32_t bus_size_t;
|
||||
typedef unsigned int bus_space_handle_t;
|
||||
|
||||
#if defined(__HAIKU_ARCH_PHYSICAL_64_BIT) && defined(__i386__)
|
||||
#define PAE 1
|
||||
#endif
|
||||
|
||||
typedef uint32_t bus_size_t;
|
||||
|
||||
typedef int bus_space_tag_t;
|
||||
typedef unsigned int bus_space_handle_t;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -109,8 +109,8 @@
|
||||
/*
|
||||
* Values for the x86 bus space tag, not to be used directly by MI code.
|
||||
*/
|
||||
#define X86_BUS_SPACE_IO 0 /* space is i/o space */
|
||||
#define X86_BUS_SPACE_MEM 1 /* space is mem space */
|
||||
#define X86_BUS_SPACE_IO BUS_SPACE_TAG_IO /* space is i/o space */
|
||||
#define X86_BUS_SPACE_MEM BUS_SPACE_TAG_MEM /* space is mem space */
|
||||
|
||||
#define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFF
|
||||
#define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF
|
||||
|
Loading…
Reference in New Issue
Block a user