#include <sys/device.h>
struct pnpbios_attach_args {
isa_chipset_tag_t paa_ic;
};
int pnpbios_probe(void);
struct pnp_compatid {
char idstr[8];
struct pnp_compatid *next;
};
struct pnp_mem {
SIMPLEQ_ENTRY(pnp_mem) next;
uint32_t minbase, maxbase, align, len;
int flags;
};
struct pnp_io {
SIMPLEQ_ENTRY(pnp_io) next;
uint16_t minbase, maxbase, align, len;
int flags;
};
struct pnp_irq {
SIMPLEQ_ENTRY(pnp_irq) next;
uint16_t mask;
int flags;
};
struct pnp_dma {
SIMPLEQ_ENTRY(pnp_dma) next;
uint8_t mask;
int flags;
};
#define PNP_MAXMEM 4
#define PNP_MAXIOPORT 8
#define PNP_MAXIRQ 2
#define PNP_MAXDMA 2
struct pnpresources {
int nummem, numio, numirq, numdma;
SIMPLEQ_HEAD(, pnp_mem) mem;
SIMPLEQ_HEAD(, pnp_io) io;
SIMPLEQ_HEAD(, pnp_irq) irq;
SIMPLEQ_HEAD(, pnp_dma) dma;
struct pnpresources *dependent_link;
struct pnp_compatid *compatids;
char *longname;
};
typedef void *pnpbios_tag_t;
struct pnpbiosdev_attach_args {
pnpbios_tag_t pbt;
isa_chipset_tag_t ic;
int idx;
struct pnpresources *resc;
char *idstr;
char *primid;
};
int pnpbios_io_map(pnpbios_tag_t, struct pnpresources *, int,
bus_space_tag_t *, bus_space_handle_t *);
void pnpbios_io_unmap(pnpbios_tag_t, struct pnpresources *, int,
bus_space_tag_t, bus_space_handle_t);
void *pnpbios_intr_establish(pnpbios_tag_t, struct pnpresources *, int,
int, int (*)(void *), void *);
int pnpbios_getiobase(pnpbios_tag_t, struct pnpresources *, int,
bus_space_tag_t *, int *);
int pnpbios_getiosize(pnpbios_tag_t, struct pnpresources *, int, int *);
int pnpbios_getirqnum(pnpbios_tag_t, struct pnpresources *, int, int *, int *);
int pnpbios_getdmachan(pnpbios_tag_t, struct pnpresources *, int, int *);
void pnpbios_print_devres(device_t, struct pnpbiosdev_attach_args *);