1119381Sjake/*-
2146480Smarius * Copyright (C) 2000 David S. Miller (davem@redhat.com)
3146480Smarius *
4146480Smarius * Permission is hereby granted, free of charge, to any person obtaining a copy
5146480Smarius * of this software and associated documentation files (the "Software"), to deal
6146480Smarius * in the Software without restriction, including without limitation the rights
7146480Smarius * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8146480Smarius * copies of the Software, and to permit persons to whom the Software is
9146480Smarius * furnished to do so, subject to the following conditions:
10146480Smarius *
11146480Smarius * The above copyright notice and this permission notice shall be included in
12146480Smarius * all copies or substantial portions of the Software.
13146480Smarius *
14146480Smarius * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15146480Smarius * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16146480Smarius * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17146480Smarius * DAVID MILLER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18146480Smarius * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19146480Smarius * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20146480Smarius *
21146480Smarius *	from: XFree86: ffb_dac.h,v 1.1 2000/05/23 04:47:44 dawes Exp
22146480Smarius */
23146480Smarius/*-
24119381Sjake * Copyright (c) 2003 Jake Burkholder.
25119381Sjake * All rights reserved.
26119381Sjake *
27119381Sjake * Redistribution and use in source and binary forms, with or without
28119381Sjake * modification, are permitted provided that the following conditions
29119381Sjake * are met:
30119381Sjake * 1. Redistributions of source code must retain the above copyright
31119381Sjake *    notice, this list of conditions and the following disclaimer.
32119381Sjake * 2. Redistributions in binary form must reproduce the above copyright
33119381Sjake *    notice, this list of conditions and the following disclaimer in the
34119381Sjake *    documentation and/or other materials provided with the distribution.
35119381Sjake *
36119381Sjake * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
37119381Sjake * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38119381Sjake * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
39119381Sjake * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
40119381Sjake * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
41119381Sjake * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
42119381Sjake * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
43119381Sjake * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
44119381Sjake * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
45119381Sjake * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46119381Sjake * SUCH DAMAGE.
47119381Sjake *
48119381Sjake * $FreeBSD$
49119381Sjake */
50119381Sjake
51166059Smarius#ifndef _DEV_FB_CREATORREG_H_
52166059Smarius#define	_DEV_FB_CREATORREG_H_
53119381Sjake
54119381Sjake#define	FFB_NREG		24
55119381Sjake
56166059Smarius#define	FFB_PROM		0
57119381Sjake#define	FFB_DAC			1
58166059Smarius#define	FFB_FBC			2
59166059Smarius#define	FFB_DFB8R		3
60166059Smarius#define	FFB_DFB8G		4
61166059Smarius#define	FFB_DFB8B		5
62166059Smarius#define	FFB_DFB8X		6
63166059Smarius#define	FFB_DFB24		7
64166059Smarius#define	FFB_DFB32		8
65166059Smarius#define	FFB_SFB8R		9
66166059Smarius#define	FFB_SFB8G		10
67166059Smarius#define	FFB_SFB8B		11
68166059Smarius#define	FFB_SFB8X		12
69166059Smarius#define	FFB_SFB32		13
70166059Smarius#define	FFB_SFB64		14
71166059Smarius#define	FFB_DFB422A		15
72166059Smarius
73119381Sjake#define	FFB_DAC_TYPE		0x0
74119381Sjake#define	FFB_DAC_VALUE		0x4
75119381Sjake#define	FFB_DAC_TYPE2		0x8
76119381Sjake#define	FFB_DAC_VALUE2		0xc
77119381Sjake
78146480Smarius/* FFB_DAC_TYPE configuration and palette register addresses */
79146480Smarius#define	FFB_DAC_CFG_UCTRL	0x1001		/* User Control */
80146480Smarius#define	FFB_DAC_CFG_TGEN	0x6000		/* Timing Generator Control */
81146480Smarius#define	FFB_DAC_CFG_DID		0x8000		/* Device Identification */
82146480Smarius
83146480Smarius/* FFB_DAC_CFG_UCTRL register */
84146480Smarius#define	FFB_DAC_UCTRL_IPDISAB	0x0001		/* Input Pullup Resistor Dis. */
85146480Smarius#define	FFB_DAC_UCTRL_ABLANK	0x0002		/* Asynchronous Blank */
86146480Smarius#define	FFB_DAC_UCTRL_DBENAB	0x0004		/* Double-Buffer Enable */
87146480Smarius#define	FFB_DAC_UCTRL_OVENAB	0x0008		/* Overlay Enable */
88146480Smarius#define	FFB_DAC_UCTRL_WMODE	0x0030		/* Window Mode */
89146480Smarius#define	FFB_DAC_UCTRL_WM_COMB	0x0000		/* Window Mode Combined */
90146480Smarius#define	FFB_DAC_UCTRL_WM_S4	0x0010		/* Window Mode Separate 4 */
91146480Smarius#define	FFB_DAC_UCTRL_WM_S8	0x0020		/* Window Mode Separate 8 */
92146480Smarius#define	FFB_DAC_UCTRL_WM_RESV	0x0030		/* Window Mode Reserved */
93146480Smarius#define	FFB_DAC_UCTRL_MANREV	0x0f00		/* Manufacturing Revision */
94146480Smarius
95146480Smarius/* FFB_DAC_CFG_TGEN register */
96146480Smarius#define	FFB_DAC_CFG_TGEN_VIDE	0x01		/* Video Enable */
97146480Smarius#define	FFB_DAC_CFG_TGEN_TGE	0x02		/* Timing Generator Enable */
98146480Smarius#define	FFB_DAC_CFG_TGEN_HSD	0x04		/* HSYNC* Disable */
99146480Smarius#define	FFB_DAC_CFG_TGEN_VSD	0x08		/* VSYNC* Disable */
100146480Smarius#define	FFB_DAC_CFG_TGEN_EQD	0x10		/* Equalization Disable */
101146480Smarius#define	FFB_DAC_CFG_TGEN_MM	0x20		/* 0 = Slave, 1 = Master */
102146480Smarius#define	FFB_DAC_CFG_TGEN_IM	0x40		/* 1 = Interlaced Mode */
103146480Smarius
104146480Smarius/* FFB_DAC_CFG_DID register */
105146480Smarius#define	FFB_DAC_CFG_DID_ONE	0x00000001	/* Always Set */
106146480Smarius#define	FFB_DAC_CFG_DID_MANUF	0x00000ffe	/* DAC Manufacturer ID */
107146480Smarius#define	FFB_DAC_CFG_DID_PNUM	0x0ffff000	/* DAC Part Number */
108146480Smarius#define	FFB_DAC_CFG_DID_REV	0xf0000000	/* DAC Revision */
109146480Smarius
110146480Smarius/* FFB_DAC_TYPE2 cursor register addresses */
111146480Smarius#define	FFB_DAC_CUR_BITMAP_P0	0x0		/* Plane 0 Cursor Bitmap */
112146480Smarius#define	FFB_DAC_CUR_BITMAP_P1	0x80		/* Plane 1 Cursor Bitmap */
113146480Smarius#define	FFB_DAC_CUR_CTRL	0x100		/* Cursor Control */
114146480Smarius#define	FFB_DAC_CUR_COLOR0	0x101		/* Cursor Color 0 */
115146480Smarius#define	FFB_DAC_CUR_COLOR1	0x102		/* Cursor Color 1 (bg) */
116146480Smarius#define	FFB_DAC_CUR_COLOR2	0x103		/* Cursor Color 2 (fg) */
117146480Smarius#define	FFB_DAC_CUR_POS		0x104		/* Active Cursor Position */
118146480Smarius
119146480Smarius/* FFB_DAC_CUR_CTRL register (might be inverted on PAC1 DACs) */
120146480Smarius#define	FFB_DAC_CUR_CTRL_P0	0x1		/* Plane0 Display Disable */
121146480Smarius#define	FFB_DAC_CUR_CTRL_P1	0x2		/* Plane1 Display Disable */
122146480Smarius
123119381Sjake#define	FFB_FBC_BY		0x60
124119381Sjake#define	FFB_FBC_BX		0x64
125119381Sjake#define	FFB_FBC_DY		0x68
126119381Sjake#define	FFB_FBC_DX		0x6c
127119381Sjake#define	FFB_FBC_BH		0x70
128119381Sjake#define	FFB_FBC_BW		0x74
129119381Sjake#define	FFB_FBC_PPC		0x200		/* Pixel Processor Control */
130119381Sjake#define	FFB_FBC_FG		0x208		/* Foreground */
131119381Sjake#define	FFB_FBC_BG		0x20c		/* Background */
132119381Sjake#define	FFB_FBC_FBC		0x254		/* Frame Buffer Control */
133119381Sjake#define	FFB_FBC_ROP		0x258		/* Raster Operation */
134119381Sjake#define	FFB_FBC_PMASK		0x290		/* Pixel Mask */
135119381Sjake#define	FFB_FBC_DRAWOP		0x300		/* Draw Operation */
136119381Sjake#define	FFB_FBC_FONTXY		0x314		/* Font X/Y */
137119381Sjake#define	FFB_FBC_FONTW		0x318		/* Font Width */
138119381Sjake#define	FFB_FBC_FONTINC		0x31c		/* Font Increment */
139119381Sjake#define	FFB_FBC_FONT		0x320		/* Font Data */
140119381Sjake#define	FFB_FBC_UCSR		0x900		/* User Control & Status */
141119381Sjake
142119381Sjake#define	FBC_PPC_VCE_DIS		0x00001000
143119381Sjake#define	FBC_PPC_APE_DIS		0x00000800
144119381Sjake#define	FBC_PPC_TBE_OPAQUE	0x00000200
145119381Sjake#define	FBC_PPC_CS_CONST	0x00000003
146119381Sjake
147119381Sjake#define	FFB_FBC_WB_A		0x20000000
148119381Sjake#define	FFB_FBC_RB_A		0x00004000
149119381Sjake#define	FFB_FBC_SB_BOTH		0x00003000
150119381Sjake#define	FFB_FBC_XE_OFF		0x00000040
151119381Sjake#define	FFB_FBC_RGBE_MASK	0x0000003f
152119381Sjake
153119381Sjake#define	FBC_ROP_NEW		0x83
154119381Sjake
155119381Sjake#define	FBC_DRAWOP_RECTANGLE	0x08
156119381Sjake
157119381Sjake#define	FBC_UCSR_FIFO_OVFL	0x80000000
158119381Sjake#define	FBC_UCSR_READ_ERR	0x40000000
159119381Sjake#define	FBC_UCSR_RP_BUSY	0x02000000
160119381Sjake#define	FBC_UCSR_FB_BUSY	0x01000000
161119381Sjake#define	FBC_UCSR_FIFO_MASK	0x00000fff
162119381Sjake
163119381Sjake#define	FFB_VIRT_SFB8R		0x00000000
164119381Sjake#define	FFB_VIRT_SFB8G		0x00400000
165119381Sjake#define	FFB_VIRT_SFB8B		0x00800000
166119381Sjake#define	FFB_VIRT_SFB8X		0x00c00000
167119381Sjake#define	FFB_VIRT_SFB32		0x01000000
168119381Sjake#define	FFB_VIRT_SFB64		0x02000000
169119381Sjake#define	FFB_VIRT_FBC		0x04000000
170119381Sjake#define	FFB_VIRT_FBC_BM		0x04002000
171119381Sjake#define	FFB_VIRT_DFB8R		0x04004000
172119381Sjake#define	FFB_VIRT_DFB8G		0x04404000
173119381Sjake#define	FFB_VIRT_DFB8B		0x04804000
174119381Sjake#define	FFB_VIRT_DFB8X		0x04c04000
175119381Sjake#define	FFB_VIRT_DFB24		0x05004000
176119381Sjake#define	FFB_VIRT_DFB32		0x06004000
177119381Sjake#define	FFB_VIRT_DFB422A	0x07004000
178119381Sjake#define	FFB_VIRT_DFB422AD	0x07804000
179119381Sjake#define	FFB_VIRT_DFB24B		0x08004000
180119381Sjake#define	FFB_VIRT_DFB422B	0x09004000
181119381Sjake#define	FFB_VIRT_DFB422BD	0x09804000
182119381Sjake#define	FFB_VIRT_SFB16Z		0x0a004000
183119381Sjake#define	FFB_VIRT_SFB8Z		0x0a404000
184119381Sjake#define	FFB_VIRT_SFB422		0x0ac04000
185119381Sjake#define	FFB_VIRT_SFB422D	0x0b404000
186119381Sjake#define	FFB_VIRT_FBC_KREG	0x0bc04000
187119381Sjake#define	FFB_VIRT_DAC		0x0bc06000
188119381Sjake#define	FFB_VIRT_PROM		0x0bc08000
189119381Sjake#define	FFB_VIRT_EXP		0x0bc18000
190119381Sjake
191119381Sjake#define	FFB_PHYS_SFB8R		0x04000000
192119381Sjake#define	FFB_PHYS_SFB8G		0x04400000
193119381Sjake#define	FFB_PHYS_SFB8B		0x04800000
194119381Sjake#define	FFB_PHYS_SFB8X		0x04c00000
195119381Sjake#define	FFB_PHYS_SFB32		0x05000000
196119381Sjake#define	FFB_PHYS_SFB64		0x06000000
197119381Sjake#define	FFB_PHYS_FBC		0x00600000
198119381Sjake#define	FFB_PHYS_FBC_BM		0x00600000
199119381Sjake#define	FFB_PHYS_DFB8R		0x01000000
200119381Sjake#define	FFB_PHYS_DFB8G		0x01400000
201119381Sjake#define	FFB_PHYS_DFB8B		0x01800000
202119381Sjake#define	FFB_PHYS_DFB8X		0x01c00000
203119381Sjake#define	FFB_PHYS_DFB24		0x02000000
204119381Sjake#define	FFB_PHYS_DFB32		0x03000000
205119381Sjake#define	FFB_PHYS_DFB422A	0x09000000
206119381Sjake#define	FFB_PHYS_DFB422AD	0x09800000
207119381Sjake#define	FFB_PHYS_DFB24B		0x0a000000
208119381Sjake#define	FFB_PHYS_DFB422B	0x0b000000
209119381Sjake#define	FFB_PHYS_DFB422BD	0x0b800000
210119381Sjake#define	FFB_PHYS_SFB16Z		0x0c800000
211119381Sjake#define	FFB_PHYS_SFB8Z		0x0c000000
212119381Sjake#define	FFB_PHYS_SFB422		0x0d000000
213119381Sjake#define	FFB_PHYS_SFB422D	0x0d800000
214119381Sjake#define	FFB_PHYS_FBC_KREG	0x00610000
215119381Sjake#define	FFB_PHYS_DAC		0x00400000
216119381Sjake#define	FFB_PHYS_PROM		0x00000000
217119381Sjake#define	FFB_PHYS_EXP		0x00200000
218119381Sjake
219166059Smarius#define	FFB_SIZE_SFB8R		0x00400000
220166059Smarius#define	FFB_SIZE_SFB8G		0x00400000
221166059Smarius#define	FFB_SIZE_SFB8B		0x00400000
222166059Smarius#define	FFB_SIZE_SFB8X		0x00400000
223166059Smarius#define	FFB_SIZE_SFB32		0x01000000
224166059Smarius#define	FFB_SIZE_SFB64		0x02000000
225166059Smarius#define	FFB_SIZE_FBC		0x00002000
226166059Smarius#define	FFB_SIZE_FBC_BM		0x00002000
227166059Smarius#define	FFB_SIZE_DFB8R		0x00400000
228166059Smarius#define	FFB_SIZE_DFB8G		0x00400000
229166059Smarius#define	FFB_SIZE_DFB8B		0x00400000
230166059Smarius#define	FFB_SIZE_DFB8X		0x00400000
231166059Smarius#define	FFB_SIZE_DFB24		0x01000000
232166059Smarius#define	FFB_SIZE_DFB32		0x01000000
233166059Smarius#define	FFB_SIZE_DFB422A	0x00800000
234166059Smarius#define	FFB_SIZE_DFB422AD	0x00800000
235166059Smarius#define	FFB_SIZE_DFB24B		0x01000000
236166059Smarius#define	FFB_SIZE_DFB422B	0x00800000
237166059Smarius#define	FFB_SIZE_DFB422BD	0x00800000
238166059Smarius#define	FFB_SIZE_SFB16Z		0x00800000
239166059Smarius#define	FFB_SIZE_SFB8Z		0x00800000
240166059Smarius#define	FFB_SIZE_SFB422		0x00800000
241166059Smarius#define	FFB_SIZE_SFB422D	0x00800000
242166059Smarius#define	FFB_SIZE_FBC_KREG	0x00002000
243166059Smarius#define	FFB_SIZE_DAC		0x00002000
244166059Smarius#define	FFB_SIZE_PROM		0x00010000
245166059Smarius#define	FFB_SIZE_EXP		0x00002000
246119381Sjake
247166059Smarius#endif /* !_DEV_FB_CREATORREG_H_ */
248