#include <dev/ic/ramdac.h>
#include <dev/pci/tgareg.h>
#include <dev/wscons/wsconsio.h>
#include <dev/wscons/wsdisplayvar.h>
#include <dev/rasops/rasops.h>
struct tga_devconfig;
struct fbcmap;
struct fbcursor;
struct fbcurpos;
struct tga_conf {
char *tgac_name;
struct ramdac_funcs *(*ramdac_funcs)(void);
int tgac_phys_depth;
vsize_t tgac_cspace_size;
vsize_t tgac_vvbr_units;
int tgac_ndbuf;
vaddr_t tgac_dbuf[2];
vsize_t tgac_dbufsz[2];
int tgac_nbbuf;
vaddr_t tgac_bbuf[2];
vsize_t tgac_bbufsz[2];
};
struct tga_devconfig {
bus_space_tag_t dc_memt;
bus_space_handle_t dc_memh;
pcitag_t dc_pcitag;
bus_addr_t dc_pcipaddr;
bus_space_handle_t dc_regs;
int dc_tga_type;
int dc_tga2;
const struct tga_conf *dc_tgaconf;
struct ramdac_funcs
*dc_ramdac_funcs;
struct ramdac_cookie
*dc_ramdac_cookie;
vaddr_t dc_vaddr;
paddr_t dc_paddr;
int dc_wid;
int dc_ht;
int dc_rowbytes;
vaddr_t dc_videobase;
struct rasops_info dc_rinfo;
int dc_blanked;
void *dc_ramdac_private;
void (*dc_ramdac_intr)(void *);
int dc_intrenabled;
};
struct tga_softc {
struct device sc_dev;
struct tga_devconfig *sc_dc;
void *sc_intr;
u_int sc_mode;
int nscreens;
};
#define TGA_TYPE_T8_01 0
#define TGA_TYPE_T8_02 1
#define TGA_TYPE_T8_22 2
#define TGA_TYPE_T8_44 3
#define TGA_TYPE_T32_04 4
#define TGA_TYPE_T32_08 5
#define TGA_TYPE_T32_88 6
#define TGA_TYPE_POWERSTORM_4D20 7
#define TGA_TYPE_UNKNOWN 8
#define DEVICE_IS_TGA(class, id) \
(((PCI_VENDOR(id) == PCI_VENDOR_DEC && \
PCI_PRODUCT(id) == PCI_PRODUCT_DEC_21030) || \
PCI_PRODUCT(id) == PCI_PRODUCT_DEC_PBXGB) ? 10 : 0)
int tga_cnattach(bus_space_tag_t, bus_space_tag_t, pci_chipset_tag_t,
int, int, int);
int tga_identify(struct tga_devconfig *);
const struct tga_conf *tga_getconf(int);
int tga_builtin_set_cursor(struct tga_devconfig *,
struct wsdisplay_cursor *);
int tga_builtin_get_cursor(struct tga_devconfig *,
struct wsdisplay_cursor *);
int tga_builtin_set_curpos(struct tga_devconfig *,
struct wsdisplay_curpos *);
int tga_builtin_get_curpos(struct tga_devconfig *,
struct wsdisplay_curpos *);
int tga_builtin_get_curmax(struct tga_devconfig *,
struct wsdisplay_curpos *);
#define TGARREG(dc,reg) (bus_space_read_4((dc)->dc_memt, (dc)->dc_regs, \
(reg) << 2))
#define TGAWREG(dc,reg,val) bus_space_write_4((dc)->dc_memt, (dc)->dc_regs, \
(reg) << 2, (val))
#define TGAWALREG(dc,reg,alias,val) bus_space_write_4( \
(dc)->dc_memt, (dc)->dc_regs, \
((alias) * TGA_CREGS_ALIAS) + ((reg) << 2), \
(val))
#define TGAREGWB(dc,reg, nregs) bus_space_barrier( \
(dc)->dc_memt, (dc)->dc_regs, \
((reg) << 2), 4 * (nregs), BUS_SPACE_BARRIER_WRITE)
#define TGAREGRB(dc,reg, nregs) bus_space_barrier( \
(dc)->dc_memt, (dc)->dc_regs, \
((reg) << 2), 4 * (nregs), BUS_SPACE_BARRIER_READ)
#define TGAREGRWB(dc,reg, nregs) bus_space_barrier( \
(dc)->dc_memt, (dc)->dc_regs, \
((reg) << 2), 4 * (nregs), \
BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE)