Home | History | Annotate | Line # | Download | only in pci
tgavar.h revision 1.2
      1  1.2       eeh /* $NetBSD: tgavar.h,v 1.2 1998/08/13 02:10:55 eeh Exp $ */
      2  1.1  drochner 
      3  1.1  drochner /*
      4  1.1  drochner  * Copyright (c) 1995, 1996 Carnegie-Mellon University.
      5  1.1  drochner  * All rights reserved.
      6  1.1  drochner  *
      7  1.1  drochner  * Author: Chris G. Demetriou
      8  1.1  drochner  *
      9  1.1  drochner  * Permission to use, copy, modify and distribute this software and
     10  1.1  drochner  * its documentation is hereby granted, provided that both the copyright
     11  1.1  drochner  * notice and this permission notice appear in all copies of the
     12  1.1  drochner  * software, derivative works or modified versions, and any portions
     13  1.1  drochner  * thereof, and that both notices appear in supporting documentation.
     14  1.1  drochner  *
     15  1.1  drochner  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
     16  1.1  drochner  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
     17  1.1  drochner  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
     18  1.1  drochner  *
     19  1.1  drochner  * Carnegie Mellon requests users of this software to return to
     20  1.1  drochner  *
     21  1.1  drochner  *  Software Distribution Coordinator  or  Software.Distribution (at) CS.CMU.EDU
     22  1.1  drochner  *  School of Computer Science
     23  1.1  drochner  *  Carnegie Mellon University
     24  1.1  drochner  *  Pittsburgh PA 15213-3890
     25  1.1  drochner  *
     26  1.1  drochner  * any improvements or extensions that they make and grant Carnegie the
     27  1.1  drochner  * rights to redistribute these changes.
     28  1.1  drochner  */
     29  1.1  drochner 
     30  1.1  drochner #include <dev/pci/tgareg.h>
     31  1.1  drochner #include <dev/rcons/raster.h>
     32  1.1  drochner #include <dev/wscons/wsconsio.h>
     33  1.1  drochner #include <dev/wscons/wscons_raster.h>
     34  1.1  drochner 
     35  1.1  drochner struct tga_devconfig;
     36  1.1  drochner struct fbcmap;
     37  1.1  drochner struct fbcursor;
     38  1.1  drochner struct fbcurpos;
     39  1.1  drochner 
     40  1.1  drochner struct tga_ramdac_conf {
     41  1.1  drochner 	char	*tgar_name;
     42  1.1  drochner 	void	(*tgar_init) __P((struct tga_devconfig *, int));
     43  1.1  drochner 	int	(*tgar_intr) __P((void *));
     44  1.1  drochner 	int	(*tgar_set_cmap) __P((struct tga_devconfig *,
     45  1.1  drochner 		    struct wsdisplay_cmap *));
     46  1.1  drochner 	int	(*tgar_get_cmap) __P((struct tga_devconfig *,
     47  1.1  drochner 		    struct wsdisplay_cmap *));
     48  1.1  drochner 	int	(*tgar_set_cursor) __P((struct tga_devconfig *,
     49  1.1  drochner 		    struct wsdisplay_cursor *));
     50  1.1  drochner 	int	(*tgar_get_cursor) __P((struct tga_devconfig *,
     51  1.1  drochner 		    struct wsdisplay_cursor *));
     52  1.1  drochner 	int	(*tgar_set_curpos) __P((struct tga_devconfig *,
     53  1.1  drochner 		    struct wsdisplay_curpos *));
     54  1.1  drochner 	int	(*tgar_get_curpos) __P((struct tga_devconfig *,
     55  1.1  drochner 		    struct wsdisplay_curpos *));
     56  1.1  drochner 	int	(*tgar_get_curmax) __P((struct tga_devconfig *,
     57  1.1  drochner 		    struct wsdisplay_curpos *));
     58  1.1  drochner };
     59  1.1  drochner 
     60  1.1  drochner struct tga_conf {
     61  1.1  drochner 	char	    *tgac_name;		/* name for this board type */
     62  1.1  drochner 
     63  1.1  drochner 	const struct tga_ramdac_conf
     64  1.1  drochner 		    *tgac_ramdac;	/* the RAMDAC type; see above */
     65  1.1  drochner 	int	    tgac_phys_depth;	/* physical frame buffer depth */
     66  1.2       eeh 	vsize_t   tgac_cspace_size;	/* core space size */
     67  1.2       eeh 	vsize_t   tgac_vvbr_units;	/* what '1' in the VVBR means */
     68  1.1  drochner 
     69  1.1  drochner 	int	    tgac_ndbuf;		/* number of display buffers */
     70  1.2       eeh 	vaddr_t tgac_dbuf[2];	/* display buffer offsets/addresses */
     71  1.2       eeh 	vsize_t   tgac_dbufsz[2];	/* display buffer sizes */
     72  1.1  drochner 
     73  1.1  drochner 	int	    tgac_nbbuf;		/* number of display buffers */
     74  1.2       eeh 	vaddr_t tgac_bbuf[2];	/* back buffer offsets/addresses */
     75  1.2       eeh 	vsize_t   tgac_bbufsz[2];	/* back buffer sizes */
     76  1.1  drochner };
     77  1.1  drochner 
     78  1.1  drochner struct tga_devconfig {
     79  1.1  drochner 	bus_space_tag_t dc_memt;
     80  1.1  drochner 	pci_chipset_tag_t dc_pc;
     81  1.1  drochner 
     82  1.1  drochner 	pcitag_t   	 dc_pcitag;	/* PCI tag */
     83  1.1  drochner 	bus_addr_t	 dc_pcipaddr;	/* PCI phys addr. */
     84  1.1  drochner 
     85  1.1  drochner 	tga_reg_t   *dc_regs;		/* registers; XXX: need aliases */
     86  1.1  drochner 
     87  1.1  drochner 	int	    dc_tga_type;	/* the device type; see below */
     88  1.1  drochner 	const struct tga_conf *dc_tgaconf; /* device buffer configuration */
     89  1.1  drochner 
     90  1.2       eeh 	vaddr_t dc_vaddr;		/* memory space virtual base address */
     91  1.2       eeh 	paddr_t dc_paddr;		/* memory space physical base address */
     92  1.1  drochner 
     93  1.1  drochner 	int	    dc_wid;		/* width of frame buffer */
     94  1.1  drochner 	int	    dc_ht;		/* height of frame buffer */
     95  1.1  drochner 	int	    dc_rowbytes;	/* bytes in a FB scan line */
     96  1.1  drochner 
     97  1.2       eeh 	vaddr_t dc_videobase;	/* base of flat frame buffer */
     98  1.1  drochner 
     99  1.1  drochner 	struct raster	dc_raster;	/* raster description */
    100  1.1  drochner 	struct rcons	dc_rcons;	/* raster blitter control info */
    101  1.1  drochner 
    102  1.1  drochner 	int	    dc_blanked;		/* currently had video disabled */
    103  1.1  drochner 	void	    *dc_ramdac_private; /* RAMDAC private storage */
    104  1.1  drochner };
    105  1.1  drochner 
    106  1.1  drochner struct tga_softc {
    107  1.1  drochner 	struct	device sc_dev;
    108  1.1  drochner 
    109  1.1  drochner 	struct	tga_devconfig *sc_dc;	/* device configuration */
    110  1.1  drochner 	void	*sc_intr;		/* interrupt handler info */
    111  1.1  drochner 	/* XXX should record intr fns/arg */
    112  1.1  drochner 
    113  1.1  drochner 	int nscreens;
    114  1.1  drochner };
    115  1.1  drochner 
    116  1.1  drochner #define	TGA_TYPE_T8_01		0	/* 8bpp, 1MB */
    117  1.1  drochner #define	TGA_TYPE_T8_02		1	/* 8bpp, 2MB */
    118  1.1  drochner #define	TGA_TYPE_T8_22		2	/* 8bpp, 4MB */
    119  1.1  drochner #define	TGA_TYPE_T8_44		3	/* 8bpp, 8MB */
    120  1.1  drochner #define	TGA_TYPE_T32_04		4	/* 32bpp, 4MB */
    121  1.1  drochner #define	TGA_TYPE_T32_08		5	/* 32bpp, 8MB */
    122  1.1  drochner #define	TGA_TYPE_T32_88		6	/* 32bpp, 16MB */
    123  1.1  drochner #define	TGA_TYPE_UNKNOWN	7	/* unknown */
    124  1.1  drochner 
    125  1.1  drochner #define	DEVICE_IS_TGA(class, id)					\
    126  1.1  drochner 	    ((PCI_VENDOR(id) == PCI_VENDOR_DEC &&			\
    127  1.1  drochner 	     PCI_PRODUCT(id) == PCI_PRODUCT_DEC_21030) ? 10 : 0)
    128  1.1  drochner 
    129  1.1  drochner int tga_cnattach __P((bus_space_tag_t, bus_space_tag_t, pci_chipset_tag_t,
    130  1.1  drochner 		      int, int, int));
    131  1.1  drochner 
    132  1.1  drochner int	tga_identify __P((tga_reg_t *));
    133  1.1  drochner const struct tga_conf *tga_getconf __P((int));
    134  1.1  drochner 
    135  1.1  drochner extern const struct tga_ramdac_conf tga_ramdac_bt463;
    136  1.1  drochner extern const struct tga_ramdac_conf tga_ramdac_bt485;
    137  1.1  drochner 
    138  1.1  drochner int     tga_builtin_set_cursor __P((struct tga_devconfig *,
    139  1.1  drochner 	    struct wsdisplay_cursor *));
    140  1.1  drochner int     tga_builtin_get_cursor __P((struct tga_devconfig *,
    141  1.1  drochner 	    struct wsdisplay_cursor *));
    142  1.1  drochner int     tga_builtin_set_curpos __P((struct tga_devconfig *,
    143  1.1  drochner 	    struct wsdisplay_curpos *));
    144  1.1  drochner int     tga_builtin_get_curpos __P((struct tga_devconfig *,
    145  1.1  drochner 	    struct wsdisplay_curpos *));
    146  1.1  drochner int     tga_builtin_get_curmax __P((struct tga_devconfig *,
    147  1.1  drochner 	    struct wsdisplay_curpos *));
    148