[BACK]Return to tgavar.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci

Annotation of sys/dev/pci/tgavar.h, Revision 1.1

1.1     ! nbrk        1: /* $OpenBSD: tgavar.h,v 1.9 2006/12/17 22:18:16 miod Exp $ */
        !             2: /* $NetBSD: tgavar.h,v 1.8 2000/04/02 19:01:11 nathanw Exp $ */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1995, 1996 Carnegie-Mellon University.
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * Author: Chris G. Demetriou
        !             9:  *
        !            10:  * Permission to use, copy, modify and distribute this software and
        !            11:  * its documentation is hereby granted, provided that both the copyright
        !            12:  * notice and this permission notice appear in all copies of the
        !            13:  * software, derivative works or modified versions, and any portions
        !            14:  * thereof, and that both notices appear in supporting documentation.
        !            15:  *
        !            16:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            17:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
        !            18:  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            19:  *
        !            20:  * Carnegie Mellon requests users of this software to return to
        !            21:  *
        !            22:  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
        !            23:  *  School of Computer Science
        !            24:  *  Carnegie Mellon University
        !            25:  *  Pittsburgh PA 15213-3890
        !            26:  *
        !            27:  * any improvements or extensions that they make and grant Carnegie the
        !            28:  * rights to redistribute these changes.
        !            29:  */
        !            30:
        !            31: #include <dev/ic/ramdac.h>
        !            32: #include <dev/pci/tgareg.h>
        !            33: #include <dev/wscons/wsconsio.h>
        !            34: #include <dev/wscons/wsdisplayvar.h>
        !            35: #include <dev/rasops/rasops.h>
        !            36:
        !            37: struct tga_devconfig;
        !            38: struct fbcmap;
        !            39: struct fbcursor;
        !            40: struct fbcurpos;
        !            41:
        !            42: struct tga_conf {
        !            43:        char        *tgac_name;         /* name for this board type */
        !            44:
        !            45:        struct ramdac_funcs *(*ramdac_funcs)(void);
        !            46:
        !            47:        int         tgac_phys_depth;    /* physical frame buffer depth */
        !            48:        vsize_t   tgac_cspace_size;     /* core space size */
        !            49:        vsize_t   tgac_vvbr_units;      /* what '1' in the VVBR means */
        !            50:
        !            51:        int         tgac_ndbuf;         /* number of display buffers */
        !            52:        vaddr_t tgac_dbuf[2];           /* display buffer offsets/addresses */
        !            53:        vsize_t   tgac_dbufsz[2];       /* display buffer sizes */
        !            54:
        !            55:        int         tgac_nbbuf;         /* number of display buffers */
        !            56:        vaddr_t tgac_bbuf[2];           /* back buffer offsets/addresses */
        !            57:        vsize_t   tgac_bbufsz[2];       /* back buffer sizes */
        !            58: };
        !            59:
        !            60: struct tga_devconfig {
        !            61:        bus_space_tag_t dc_memt;
        !            62:        bus_space_handle_t dc_memh;
        !            63:
        !            64:        pcitag_t         dc_pcitag;     /* PCI tag */
        !            65:        bus_addr_t       dc_pcipaddr;   /* PCI phys addr. */
        !            66:
        !            67:        bus_space_handle_t dc_regs;     /* registers; XXX: need aliases */
        !            68:
        !            69:        int         dc_tga_type;        /* the device type; see below */
        !            70:        int         dc_tga2;            /* True if it is a TGA2 */
        !            71:        const struct tga_conf *dc_tgaconf; /* device buffer configuration */
        !            72:
        !            73:        struct ramdac_funcs
        !            74:                    *dc_ramdac_funcs;   /* The RAMDAC functions */
        !            75:        struct ramdac_cookie
        !            76:                    *dc_ramdac_cookie;  /* the RAMDAC type; see above */
        !            77:
        !            78:        vaddr_t dc_vaddr;               /* memory space virtual base address */
        !            79:        paddr_t dc_paddr;               /* memory space physical base address */
        !            80:
        !            81:        int         dc_wid;             /* width of frame buffer */
        !            82:        int         dc_ht;              /* height of frame buffer */
        !            83:        int         dc_rowbytes;        /* bytes in a FB scan line */
        !            84:
        !            85:        vaddr_t dc_videobase;           /* base of flat frame buffer */
        !            86:
        !            87:        struct rasops_info dc_rinfo;    /* raster display data */
        !            88:
        !            89:        int         dc_blanked;         /* currently had video disabled */
        !            90:        void        *dc_ramdac_private; /* RAMDAC private storage */
        !            91:
        !            92:        void        (*dc_ramdac_intr)(void *);
        !            93:        int         dc_intrenabled;     /* can we depend on interrupts yet? */
        !            94: };
        !            95:
        !            96: struct tga_softc {
        !            97:        struct  device sc_dev;
        !            98:
        !            99:        struct  tga_devconfig *sc_dc;   /* device configuration */
        !           100:        void    *sc_intr;               /* interrupt handler info */
        !           101:        u_int   sc_mode;                /* wscons mode used */
        !           102:        /* XXX should record intr fns/arg */
        !           103:
        !           104:        int nscreens;
        !           105: };
        !           106:
        !           107: #define        TGA_TYPE_T8_01          0       /* 8bpp, 1MB */
        !           108: #define        TGA_TYPE_T8_02          1       /* 8bpp, 2MB */
        !           109: #define        TGA_TYPE_T8_22          2       /* 8bpp, 4MB */
        !           110: #define        TGA_TYPE_T8_44          3       /* 8bpp, 8MB */
        !           111: #define        TGA_TYPE_T32_04         4       /* 32bpp, 4MB */
        !           112: #define        TGA_TYPE_T32_08         5       /* 32bpp, 8MB */
        !           113: #define        TGA_TYPE_T32_88         6       /* 32bpp, 16MB */
        !           114: #define        TGA_TYPE_POWERSTORM_4D20        7       /* unknown */
        !           115: #define        TGA_TYPE_UNKNOWN        8       /* unknown */
        !           116:
        !           117: #define        DEVICE_IS_TGA(class, id)                                        \
        !           118:            (((PCI_VENDOR(id) == PCI_VENDOR_DEC &&                      \
        !           119:               PCI_PRODUCT(id) == PCI_PRODUCT_DEC_21030) ||             \
        !           120:               PCI_PRODUCT(id) == PCI_PRODUCT_DEC_PBXGB) ? 10 : 0)
        !           121:
        !           122: int tga_cnattach(bus_space_tag_t, bus_space_tag_t, pci_chipset_tag_t,
        !           123:                      int, int, int);
        !           124:
        !           125: int    tga_identify(struct tga_devconfig *);
        !           126: const struct tga_conf *tga_getconf(int);
        !           127:
        !           128: int     tga_builtin_set_cursor(struct tga_devconfig *,
        !           129:            struct wsdisplay_cursor *);
        !           130: int     tga_builtin_get_cursor(struct tga_devconfig *,
        !           131:            struct wsdisplay_cursor *);
        !           132: int     tga_builtin_set_curpos(struct tga_devconfig *,
        !           133:            struct wsdisplay_curpos *);
        !           134: int     tga_builtin_get_curpos(struct tga_devconfig *,
        !           135:            struct wsdisplay_curpos *);
        !           136: int     tga_builtin_get_curmax(struct tga_devconfig *,
        !           137:            struct wsdisplay_curpos *);
        !           138:
        !           139: /* Read a TGA register */
        !           140: #define TGARREG(dc,reg) (bus_space_read_4((dc)->dc_memt, (dc)->dc_regs, \
        !           141:        (reg) << 2))
        !           142:
        !           143: /* Write a TGA register */
        !           144: #define TGAWREG(dc,reg,val) bus_space_write_4((dc)->dc_memt, (dc)->dc_regs, \
        !           145:        (reg) << 2, (val))
        !           146:
        !           147: /* Write a TGA register at an alternate aliased location */
        !           148: #define TGAWALREG(dc,reg,alias,val) bus_space_write_4( \
        !           149:        (dc)->dc_memt, (dc)->dc_regs, \
        !           150:        ((alias) * TGA_CREGS_ALIAS) + ((reg) << 2), \
        !           151:        (val))
        !           152:
        !           153: /* Insert a write barrier */
        !           154: #define TGAREGWB(dc,reg, nregs) bus_space_barrier( \
        !           155:        (dc)->dc_memt, (dc)->dc_regs, \
        !           156:        ((reg) << 2), 4 * (nregs), BUS_SPACE_BARRIER_WRITE)
        !           157:
        !           158: /* Insert a read barrier */
        !           159: #define TGAREGRB(dc,reg, nregs) bus_space_barrier( \
        !           160:        (dc)->dc_memt, (dc)->dc_regs, \
        !           161:        ((reg) << 2), 4 * (nregs), BUS_SPACE_BARRIER_READ)
        !           162:
        !           163: /* Insert a read/write barrier */
        !           164: #define TGAREGRWB(dc,reg, nregs) bus_space_barrier( \
        !           165:        (dc)->dc_memt, (dc)->dc_regs, \
        !           166:        ((reg) << 2), 4 * (nregs), \
        !           167:        BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE)

CVSweb