Annotation of sys/dev/pci/vga_pcivar.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: vga_pcivar.h,v 1.7 2006/11/27 18:04:28 gwk Exp $ */
2: /* $NetBSD: vga_pcivar.h,v 1.1 1998/03/22 15:16:19 drochner 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: #ifndef _PCI_VGA_PCIVAR_H_
32: #define _PCI_VGA_PCIVAR_H_
33:
34: #define DEVICE_IS_VGA_PCI(class, id) \
35: (((PCI_CLASS(class) == PCI_CLASS_DISPLAY && \
36: PCI_SUBCLASS(class) == PCI_SUBCLASS_DISPLAY_VGA) || \
37: (PCI_CLASS(class) == PCI_CLASS_PREHISTORIC && \
38: PCI_SUBCLASS(class) == PCI_SUBCLASS_PREHISTORIC_VGA)) ? 1 : 0)
39:
40: enum agp_acquire_state {
41: AGP_ACQUIRE_FREE,
42: AGP_ACQUIRE_USER,
43: AGP_ACQUIRE_KERNEL
44: };
45:
46: /*
47: * Data structure to describe an AGP memory allocation.
48: */
49: TAILQ_HEAD(agp_memory_list, agp_memory);
50: struct agp_memory {
51: TAILQ_ENTRY(agp_memory) am_link; /* wiring for the tailq */
52: int am_id; /* unique id for block */
53: vsize_t am_size; /* number of bytes allocated */
54: int am_type; /* chipset specific type */
55: off_t am_offset; /* page offset if bound */
56: int am_is_bound; /* non-zero if bound */
57: bus_addr_t am_physical;
58: caddr_t am_virtual;
59: bus_dmamap_t am_dmamap;
60: int am_nseg;
61: bus_dma_segment_t *am_dmaseg;
62: };
63:
64: struct vga_pci_softc {
65: struct device sc_dev;
66:
67: #if 0
68: struct vga_config *sc_vc; /* VGA configuration */
69: #endif
70: #ifdef VESAFB
71: int sc_width;
72: int sc_height;
73: int sc_depth;
74: int sc_linebytes;
75: u_int32_t sc_base;
76: int sc_mode; /* WSDISPLAY_MODE_EMUL or _DUMBFB */
77: int sc_textmode; /* original VESA text mode */
78: int sc_gfxmode; /* VESA graphics mode */
79: u_char sc_cmap_red[256]; /* saved color map */
80: u_char sc_cmap_green[256];
81: u_char sc_cmap_blue[256];
82:
83: #endif
84: #ifdef PCIAGP
85: /* agp stuff */
86: bus_space_tag_t sc_bt, sc_memt;
87: bus_space_handle_t sc_bh;
88: bus_addr_t sc_apaddr;
89: bus_size_t sc_apsize;
90: bus_dma_tag_t sc_dmat;
91: struct lock sc_lock; /* lock for access to GATT */
92: pcitag_t sc_pcitag; /* PCI tag, in case we need it. */
93: pcireg_t sc_id;
94: pci_chipset_tag_t sc_pc;
95:
96: struct agp_methods *sc_methods;
97: void *sc_chipc; /* chipset-dependent state */
98:
99: int sc_opened;
100: int sc_capoff;
101: int sc_apflags;
102: int sc_nextid; /* next memory block id */
103:
104: u_int32_t sc_maxmem; /* allocation upper bound */
105: u_int32_t sc_allocated; /* amount allocated */
106: enum agp_acquire_state sc_state;
107: struct agp_memory_list sc_memory; /* list of allocated memory */
108: #endif
109: };
110:
111: #ifdef PCIAGP
112: struct agp_product {
113: int ap_vendor;
114: int ap_product;
115: int (*ap_attach)(struct vga_pci_softc *,
116: struct pci_attach_args *, struct pci_attach_args *);
117: };
118: /* MD-defined */
119: extern const struct agp_product agp_products[];
120:
121: void agp_attach(struct device *, struct device *, void *);
122: paddr_t agp_mmap(void *, off_t, int);
123: int agp_ioctl(void *, u_long, caddr_t, int, struct proc *);
124: #endif /* PCIAGP */
125:
126: int vga_pci_cnattach(bus_space_tag_t, bus_space_tag_t,
127: pci_chipset_tag_t, int, int, int);
128:
129: #ifdef VESAFB
130: int vesafb_find_mode(struct vga_pci_softc *, int, int, int);
131: void vesafb_set_mode(struct vga_pci_softc *, int);
132: int vesafb_get_mode(struct vga_pci_softc *);
133: int vesafb_get_supported_depth(struct vga_pci_softc *);
134: #endif
135:
136: #endif /* _PCI_VGA_PCIVAR_H_ */
CVSweb