1 | /* |
2 | * linux/include/video/neo_reg.h -- NeoMagic Framebuffer Driver |
3 | * |
4 | * Copyright (c) 2001 Denis Oliver Kropp <dok@convergence.de> |
5 | * |
6 | * This file is subject to the terms and conditions of the GNU General |
7 | * Public License. See the file COPYING in the main directory of this |
8 | * archive for more details. |
9 | */ |
10 | |
11 | #define NEO_BS0_BLT_BUSY 0x00000001 |
12 | #define NEO_BS0_FIFO_AVAIL 0x00000002 |
13 | #define NEO_BS0_FIFO_PEND 0x00000004 |
14 | |
15 | #define NEO_BC0_DST_Y_DEC 0x00000001 |
16 | #define NEO_BC0_X_DEC 0x00000002 |
17 | #define NEO_BC0_SRC_TRANS 0x00000004 |
18 | #define NEO_BC0_SRC_IS_FG 0x00000008 |
19 | #define NEO_BC0_SRC_Y_DEC 0x00000010 |
20 | #define NEO_BC0_FILL_PAT 0x00000020 |
21 | #define NEO_BC0_SRC_MONO 0x00000040 |
22 | #define NEO_BC0_SYS_TO_VID 0x00000080 |
23 | |
24 | #define NEO_BC1_DEPTH8 0x00000100 |
25 | #define NEO_BC1_DEPTH16 0x00000200 |
26 | #define NEO_BC1_X_320 0x00000400 |
27 | #define NEO_BC1_X_640 0x00000800 |
28 | #define NEO_BC1_X_800 0x00000c00 |
29 | #define NEO_BC1_X_1024 0x00001000 |
30 | #define NEO_BC1_X_1152 0x00001400 |
31 | #define NEO_BC1_X_1280 0x00001800 |
32 | #define NEO_BC1_X_1600 0x00001c00 |
33 | #define NEO_BC1_DST_TRANS 0x00002000 |
34 | #define NEO_BC1_MSTR_BLT 0x00004000 |
35 | #define NEO_BC1_FILTER_Z 0x00008000 |
36 | |
37 | #define NEO_BC2_WR_TR_DST 0x00800000 |
38 | |
39 | #define NEO_BC3_SRC_XY_ADDR 0x01000000 |
40 | #define NEO_BC3_DST_XY_ADDR 0x02000000 |
41 | #define NEO_BC3_CLIP_ON 0x04000000 |
42 | #define NEO_BC3_FIFO_EN 0x08000000 |
43 | #define NEO_BC3_BLT_ON_ADDR 0x10000000 |
44 | #define NEO_BC3_SKIP_MAPPING 0x80000000 |
45 | |
46 | #define NEO_MODE1_DEPTH8 0x0100 |
47 | #define NEO_MODE1_DEPTH16 0x0200 |
48 | #define NEO_MODE1_DEPTH24 0x0300 |
49 | #define NEO_MODE1_X_320 0x0400 |
50 | #define NEO_MODE1_X_640 0x0800 |
51 | #define NEO_MODE1_X_800 0x0c00 |
52 | #define NEO_MODE1_X_1024 0x1000 |
53 | #define NEO_MODE1_X_1152 0x1400 |
54 | #define NEO_MODE1_X_1280 0x1800 |
55 | #define NEO_MODE1_X_1600 0x1c00 |
56 | #define NEO_MODE1_BLT_ON_ADDR 0x2000 |
57 | |
58 | /* These are offseted in MMIO space by par->CursorOff */ |
59 | #define NEOREG_CURSCNTL 0x00 |
60 | #define NEOREG_CURSX 0x04 |
61 | #define NEOREG_CURSY 0x08 |
62 | #define NEOREG_CURSBGCOLOR 0x0C |
63 | #define NEOREG_CURSFGCOLOR 0x10 |
64 | #define NEOREG_CURSMEMPOS 0x14 |
65 | |
66 | #define NEO_CURS_DISABLE 0x00000000 |
67 | #define NEO_CURS_ENABLE 0x00000001 |
68 | #define NEO_ICON64_ENABLE 0x00000008 |
69 | #define NEO_ICON128_ENABLE 0x0000000C |
70 | #define NEO_ICON_BLANK 0x00000010 |
71 | |
72 | #define NEO_GR01_SUPPRESS_VSYNC 0x10 |
73 | #define NEO_GR01_SUPPRESS_HSYNC 0x20 |
74 | |
75 | #ifdef __KERNEL__ |
76 | |
77 | #ifdef NEOFB_DEBUG |
78 | # define DBG(x) printk (KERN_DEBUG "neofb: %s\n", (x)); |
79 | #else |
80 | # define DBG(x) |
81 | #endif |
82 | |
83 | #define PCI_CHIP_NM2070 0x0001 |
84 | #define PCI_CHIP_NM2090 0x0002 |
85 | #define PCI_CHIP_NM2093 0x0003 |
86 | #define PCI_CHIP_NM2097 0x0083 |
87 | #define PCI_CHIP_NM2160 0x0004 |
88 | #define PCI_CHIP_NM2200 0x0005 |
89 | #define PCI_CHIP_NM2230 0x0025 |
90 | #define PCI_CHIP_NM2360 0x0006 |
91 | #define PCI_CHIP_NM2380 0x0016 |
92 | |
93 | /* --------------------------------------------------------------------- */ |
94 | |
95 | typedef volatile struct { |
96 | __u32 bltStat; |
97 | __u32 bltCntl; |
98 | __u32 xpColor; |
99 | __u32 fgColor; |
100 | __u32 bgColor; |
101 | __u32 pitch; |
102 | __u32 clipLT; |
103 | __u32 clipRB; |
104 | __u32 srcBitOffset; |
105 | __u32 srcStart; |
106 | __u32 reserved0; |
107 | __u32 dstStart; |
108 | __u32 xyExt; |
109 | |
110 | __u32 reserved1[19]; |
111 | |
112 | __u32 pageCntl; |
113 | __u32 pageBase; |
114 | __u32 postBase; |
115 | __u32 postPtr; |
116 | __u32 dataPtr; |
117 | } Neo2200; |
118 | |
119 | #define MMIO_SIZE 0x200000 |
120 | |
121 | #define NEO_EXT_CR_MAX 0x85 |
122 | #define NEO_EXT_GR_MAX 0xC7 |
123 | |
124 | struct neofb_par { |
125 | struct vgastate state; |
126 | unsigned int ref_count; |
127 | |
128 | unsigned char MiscOutReg; /* Misc */ |
129 | unsigned char CRTC[25]; /* Crtc Controller */ |
130 | unsigned char Sequencer[5]; /* Video Sequencer */ |
131 | unsigned char Graphics[9]; /* Video Graphics */ |
132 | unsigned char Attribute[21]; /* Video Attribute */ |
133 | |
134 | unsigned char GeneralLockReg; |
135 | unsigned char ExtCRTDispAddr; |
136 | unsigned char ExtCRTOffset; |
137 | unsigned char SysIfaceCntl1; |
138 | unsigned char SysIfaceCntl2; |
139 | unsigned char ExtColorModeSelect; |
140 | unsigned char biosMode; |
141 | |
142 | unsigned char PanelDispCntlReg1; |
143 | unsigned char PanelDispCntlReg2; |
144 | unsigned char PanelDispCntlReg3; |
145 | unsigned char PanelDispCntlRegRead; |
146 | unsigned char PanelVertCenterReg1; |
147 | unsigned char PanelVertCenterReg2; |
148 | unsigned char PanelVertCenterReg3; |
149 | unsigned char PanelVertCenterReg4; |
150 | unsigned char PanelVertCenterReg5; |
151 | unsigned char PanelHorizCenterReg1; |
152 | unsigned char PanelHorizCenterReg2; |
153 | unsigned char PanelHorizCenterReg3; |
154 | unsigned char PanelHorizCenterReg4; |
155 | unsigned char PanelHorizCenterReg5; |
156 | |
157 | int ProgramVCLK; |
158 | unsigned char VCLK3NumeratorLow; |
159 | unsigned char VCLK3NumeratorHigh; |
160 | unsigned char VCLK3Denominator; |
161 | unsigned char VerticalExt; |
162 | int wc_cookie; |
163 | u8 __iomem *mmio_vbase; |
164 | u8 cursorOff; |
165 | u8 *cursorPad; /* Must die !! */ |
166 | |
167 | Neo2200 __iomem *neo2200; |
168 | |
169 | /* Panels size */ |
170 | int NeoPanelWidth; |
171 | int NeoPanelHeight; |
172 | |
173 | int maxClock; |
174 | |
175 | int pci_burst; |
176 | int lcd_stretch; |
177 | int internal_display; |
178 | int external_display; |
179 | int libretto; |
180 | u32 palette[16]; |
181 | }; |
182 | |
183 | typedef struct { |
184 | int x_res; |
185 | int y_res; |
186 | int mode; |
187 | } biosMode; |
188 | |
189 | #endif |
190 | |