randr12: fix dpms, detect, destroy, save and restore for multiple encoders per connector
[nouveau] / src / nv_proto.h
1 /* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h,v 1.11 2004/03/20 01:52:16 mvojkovi Exp $ */
2
3 #ifndef __NV_PROTO_H__
4 #define __NV_PROTO_H__
5
6 /* in nv_accel_common.c */
7 Bool NVAccelCommonInit(ScrnInfoPtr pScrn);
8 Bool NVAccelGetCtxSurf2DFormatFromPixmap(PixmapPtr pPix, int *fmt_ret);
9 Bool NVAccelGetCtxSurf2DFormatFromPicture(PicturePtr pPix, int *fmt_ret);
10 PixmapPtr NVGetDrawablePixmap(DrawablePtr pDraw);
11
12 /* in nv_driver.c */
13 Bool   NVI2CInit(ScrnInfoPtr pScrn);
14
15 /* in nv_dri.c */
16 Bool NVDRIScreenInit(ScrnInfoPtr pScrn);
17 Bool NVDRIFinishScreenInit(ScrnInfoPtr pScrn);
18 void NVDRICloseScreen(ScrnInfoPtr pScrn);
19 extern const char *drmSymbols[], *driSymbols[];
20 Bool NVDRIGetVersion(ScrnInfoPtr pScrn);
21
22 /* in nv_dac.c */
23 Bool   NVDACInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
24 void   NVDACSave(ScrnInfoPtr pScrn, vgaRegPtr vgaReg,
25                  NVRegPtr nvReg, Bool saveFonts);
26 void   NVDACRestore(ScrnInfoPtr pScrn, vgaRegPtr vgaReg,
27                     NVRegPtr nvReg, Bool restoreFonts);
28 void   NVDACLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
29                         LOCO *colors, VisualPtr pVisual );
30 Bool   NVDACi2cInit(ScrnInfoPtr pScrn);
31
32 /* in nv_video.c */
33 void NVInitVideo(ScreenPtr);
34 void NVWaitVSync(ScrnInfoPtr pScrn, int crtc);
35 void NVSetPortDefaults (ScrnInfoPtr pScrn, NVPortPrivPtr pPriv);
36 unsigned int nv_window_belongs_to_crtc(ScrnInfoPtr, int, int, int, int);
37
38 /* in nv_setup.c */
39 void   RivaEnterLeave(ScrnInfoPtr pScrn, Bool enter);
40 void   NVCommonSetup(ScrnInfoPtr pScrn);
41
42 /* in nv_cursor.c */
43 Bool   NVCursorInit(ScreenPtr pScreen);
44 Bool NVCursorInitRandr12(ScreenPtr pScreen);
45 void nv_crtc_show_cursor(xf86CrtcPtr crtc);
46 void nv_crtc_hide_cursor(xf86CrtcPtr crtc);
47 void nv_crtc_set_cursor_position(xf86CrtcPtr crtc, int x, int y);
48 void nv_crtc_set_cursor_colors(xf86CrtcPtr crtc, int bg, int fg);
49 void nv_crtc_load_cursor_image(xf86CrtcPtr crtc, CARD8 *image);
50 void nv_crtc_load_cursor_argb(xf86CrtcPtr crtc, CARD32 *image);
51 void nv_crtc_fix_nv40_hw_cursor(ScrnInfoPtr pScrn, uint8_t head);
52 void nv_crtc_show_hide_cursor(ScrnInfoPtr pScrn, uint8_t head, Bool show);
53
54 /* in nv_dma.c */
55 void  NVSync(ScrnInfoPtr pScrn);
56 Bool  NVInitDma(ScrnInfoPtr pScrn);
57
58 /* in nv_exa.c */
59 Bool NVExaInit(ScreenPtr pScreen);
60 Bool NVExaPixmapIsOnscreen(PixmapPtr pPixmap);
61
62 /* in nv_hw.c */
63 void NVCalcStateExt(NVPtr,struct _riva_hw_state *,int,int,int,int,int,int);
64 void NVLoadStateExt(ScrnInfoPtr pScrn,struct _riva_hw_state *);
65 void NVUnloadStateExt(NVPtr,struct _riva_hw_state *);
66 void NVSetStartAddress(NVPtr,CARD32);
67
68 /* in nv_shadow.c */
69 void NVRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
70
71 /* in nv_bios.c */
72 unsigned int NVParseBios(ScrnInfoPtr pScrn);
73 void call_lvds_script(ScrnInfoPtr pScrn, struct dcb_entry *dcbent, int head, enum LVDS_script script, int pxclk);
74 void parse_lvds_manufacturer_table(ScrnInfoPtr pScrn, bios_t *bios, int pxclk);
75 void run_tmds_table(ScrnInfoPtr pScrn, struct dcb_entry *dcbent, int head, int pxclk);
76 int getMNP_single(ScrnInfoPtr pScrn, struct pll_lims *pll_lim, int clk, int *NM, int *log2P);
77 int getMNP_double(ScrnInfoPtr pScrn, struct pll_lims *pll_lim, int clk, int *NM1, int *NM2, int *log2P);
78 bool get_pll_limits(ScrnInfoPtr pScrn, uint32_t limit_match, struct pll_lims *pll_lim);
79
80 /* nv_crtc.c */
81 void NVCrtcSetBase(xf86CrtcPtr crtc, int x, int y);
82 void nv_crtc_init(ScrnInfoPtr pScrn, int crtc_num);
83 void NVCrtcLockUnlock(xf86CrtcPtr crtc, Bool lock);
84
85 /* nv_output.c */
86 void nv_encoder_restore(ScrnInfoPtr pScrn, struct nouveau_encoder *nv_encoder);
87 void nv_encoder_save(ScrnInfoPtr pScrn, struct nouveau_encoder *nv_encoder);
88 void NvSetupOutputs(ScrnInfoPtr pScrn);
89
90 /* nv_hw.c */
91 uint32_t NVRead(NVPtr pNv, uint32_t reg);
92 void NVWrite(NVPtr pNv, uint32_t reg, uint32_t val);
93 uint32_t NVReadCRTC(NVPtr pNv, int head, uint32_t reg);
94 void NVWriteCRTC(NVPtr pNv, int head, uint32_t reg, uint32_t val);
95 uint32_t NVReadRAMDAC(NVPtr pNv, int head, uint32_t reg);
96 void NVWriteRAMDAC(NVPtr pNv, int head, uint32_t reg, uint32_t val);
97 uint8_t nv_read_tmds(NVPtr pNv, int or, int dl, uint8_t address);
98 int nv_get_digital_bound_head(NVPtr pNv, int or);
99 void nv_write_tmds(NVPtr pNv, int or, int dl, uint8_t address, uint8_t data);
100 void NVWriteVgaCrtc(NVPtr pNv, int head, uint8_t index, uint8_t value);
101 uint8_t NVReadVgaCrtc(NVPtr pNv, int head, uint8_t index);
102 void NVWriteVgaCrtc5758(NVPtr pNv, int head, uint8_t index, uint8_t value);
103 uint8_t NVReadVgaCrtc5758(NVPtr pNv, int head, uint8_t index);
104 uint8_t NVReadPVIO(NVPtr pNv, int head, uint16_t port);
105 void NVWritePVIO(NVPtr pNv, int head, uint16_t port, uint8_t value);
106 void NVWriteVgaSeq(NVPtr pNv, int head, uint8_t index, uint8_t value);
107 uint8_t NVReadVgaSeq(NVPtr pNv, int head, uint8_t index);
108 void NVWriteVgaGr(NVPtr pNv, int head, uint8_t index, uint8_t value);
109 uint8_t NVReadVgaGr(NVPtr pNv, int head, uint8_t index);
110 void NVSetEnablePalette(NVPtr pNv, int head, bool enable);
111 void NVWriteVgaAttr(NVPtr pNv, int head, uint8_t index, uint8_t value);
112 uint8_t NVReadVgaAttr(NVPtr pNv, int head, uint8_t index);
113 void NVVgaSeqReset(NVPtr pNv, int head, bool start);
114 void NVVgaProtect(NVPtr pNv, int head, bool protect);
115 void NVSetOwner(ScrnInfoPtr pScrn, int head);
116 void NVLockVgaCrtc(NVPtr pNv, int head, bool lock);
117 void NVBlankScreen(ScrnInfoPtr pScrn, int head, bool blank);
118 int nv_decode_pll_highregs(NVPtr pNv, uint32_t pll1, uint32_t pll2, bool force_single, int refclk);
119 void nForceUpdateArbitrationSettings (unsigned VClk, unsigned pixelDepth,
120                                       unsigned     *burst, unsigned     *lwm,
121                                       NVPtr        pNv);
122 void nv30UpdateArbitrationSettings (NVPtr        pNv,
123                                     unsigned     *burst,
124                                     unsigned     *lwm);
125 void nv10UpdateArbitrationSettings (unsigned      VClk, 
126                                     unsigned      pixelDepth, 
127                                     unsigned     *burst,
128                                     unsigned     *lwm,
129                                     NVPtr        pNv);
130 void nv4UpdateArbitrationSettings (unsigned      VClk, 
131                                    unsigned      pixelDepth, 
132                                    unsigned     *burst,
133                                    unsigned     *lwm,
134                                    NVPtr        pNv);
135 uint32_t nv_pitch_align(NVPtr pNv, uint32_t width, int bpp);
136 void nv_save_restore_vga_fonts(ScrnInfoPtr pScrn, bool save);
137
138 /* in nv_i2c.c */
139 Bool NV_I2CInit(ScrnInfoPtr pScrn, I2CBusPtr *bus_ptr, int i2c_reg, char *name);
140
141 /* in nv04_video_overlay.c */
142 void NV04PutOverlayImage(ScrnInfoPtr, struct nouveau_bo *, int, int, int,
143                          BoxPtr, int, int, int, int, short, short, short,
144                          short, short, short, RegionPtr clipBoxes);
145 int NV04SetOverlayPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
146 int NV04GetOverlayPortAttribute(ScrnInfoPtr, Atom, INT32 *, pointer);
147 void NV04StopOverlay(ScrnInfoPtr);
148
149 /* in nv04_video_blitter.c */
150 void NVPutBlitImage(ScrnInfoPtr, struct nouveau_bo *, int, int, int, BoxPtr,
151                     int, int, int, int, short, short, short, short, short,
152                     short, RegionPtr, PixmapPtr);
153 int NVSetBlitPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
154 int NVGetBlitPortAttribute(ScrnInfoPtr, Atom, INT32 *, pointer);
155 void NVStopBlitVideo(ScrnInfoPtr, pointer, Bool);
156
157 /* in nv10_exa.c */
158 Bool NVAccelInitNV10TCL(ScrnInfoPtr pScrn);
159 Bool NV10CheckComposite(int, PicturePtr, PicturePtr, PicturePtr);
160 Bool NV10PrepareComposite(int, PicturePtr, PicturePtr, PicturePtr,
161                                   PixmapPtr, PixmapPtr, PixmapPtr);
162 void NV10Composite(PixmapPtr, int, int, int, int, int, int, int, int);
163 void NV10DoneComposite(PixmapPtr);
164
165 /* in nv10_video_overlay.c */
166 void NV10PutOverlayImage(ScrnInfoPtr, struct nouveau_bo *, int, int, int, int,
167                          BoxPtr, int, int, int, int, short, short, short,
168                          short, short, short, RegionPtr clipBoxes);
169 int NV10SetOverlayPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
170 int NV10GetOverlayPortAttribute(ScrnInfoPtr, Atom, INT32 *, pointer);
171 void NV10StopOverlay(ScrnInfoPtr);
172 void NV10WriteOverlayParameters(ScrnInfoPtr);
173
174 /* in nv30_exa.c */
175 Bool NVAccelInitNV30TCL(ScrnInfoPtr pScrn);
176 Bool NV30EXACheckComposite(int, PicturePtr, PicturePtr, PicturePtr);
177 Bool NV30EXAPrepareComposite(int, PicturePtr, PicturePtr, PicturePtr,
178                                   PixmapPtr, PixmapPtr, PixmapPtr);
179 void NV30EXAComposite(PixmapPtr, int, int, int, int, int, int, int, int);
180 void NV30EXADoneComposite(PixmapPtr);
181
182 /* in nv30_video_texture.c */
183 int NV30PutTextureImage(ScrnInfoPtr, struct nouveau_bo *, int, int, int, int,
184                         BoxPtr, int, int, int, int, uint16_t, uint16_t,
185                         uint16_t, uint16_t, uint16_t, uint16_t,
186                         RegionPtr, PixmapPtr, NVPortPrivPtr);
187 void NV30StopTexturedVideo(ScrnInfoPtr, pointer, Bool);
188 int NV30GetTexturePortAttribute(ScrnInfoPtr, Atom, INT32 *, pointer);
189 int NV30SetTexturePortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
190
191 /* in nv40_exa.c */
192 Bool NVAccelInitNV40TCL(ScrnInfoPtr pScrn);
193 Bool NV40EXACheckComposite(int, PicturePtr, PicturePtr, PicturePtr);
194 Bool NV40EXAPrepareComposite(int, PicturePtr, PicturePtr, PicturePtr,
195                                   PixmapPtr, PixmapPtr, PixmapPtr);
196 void NV40EXAComposite(PixmapPtr, int, int, int, int, int, int, int, int);
197 void NV40EXADoneComposite(PixmapPtr);
198
199 /* in nv40_video_texture.c */
200 int NV40PutTextureImage(ScrnInfoPtr, struct nouveau_bo *, int, int, int, int,
201                         BoxPtr, int, int, int, int, uint16_t, uint16_t,
202                         uint16_t, uint16_t, uint16_t, uint16_t,
203                         RegionPtr, PixmapPtr, NVPortPrivPtr);
204 void NV40StopTexturedVideo(ScrnInfoPtr, pointer, Bool);
205 int NV40GetTexturePortAttribute(ScrnInfoPtr, Atom, INT32 *, pointer);
206 int NV40SetTexturePortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
207
208 /* in nv50_accel.c */
209 Bool NVAccelInitNV50TCL(ScrnInfoPtr pScrn);
210
211 /* in nv50_exa.c */
212 Bool NV50EXAPrepareSolid(PixmapPtr, int, Pixel, Pixel);
213 void NV50EXASolid(PixmapPtr, int, int, int, int);
214 void NV50EXADoneSolid(PixmapPtr);
215 Bool NV50EXAPrepareCopy(PixmapPtr, PixmapPtr, int, int, int, Pixel);
216 void NV50EXACopy(PixmapPtr, int, int, int, int, int, int);
217 void NV50EXADoneCopy(PixmapPtr);
218 Bool NV50EXACheckComposite(int, PicturePtr, PicturePtr, PicturePtr);
219 Bool NV50EXAPrepareComposite(int, PicturePtr, PicturePtr, PicturePtr,
220                                   PixmapPtr, PixmapPtr, PixmapPtr);
221 void NV50EXAComposite(PixmapPtr, int, int, int, int, int, int, int, int);
222 void NV50EXADoneComposite(PixmapPtr);
223 Bool NV50EXAUploadSIFC(const char *src, int src_pitch,
224                        PixmapPtr pdPix, int x, int y, int w, int h, int cpp);
225
226 /* in nv50_display.c */
227 Bool NV50DispPreInit(ScrnInfoPtr);
228 Bool NV50DispInit(ScrnInfoPtr);
229 void NV50DispShutdown(ScrnInfoPtr);
230
231 /* in nv50_cursor.c */
232 Bool NV50CursorInit(ScreenPtr);
233 Bool NV50CursorAcquire(ScrnInfoPtr);
234 void NV50CursorRelease(ScrnInfoPtr);
235
236 /* in nv50_crtc.c */
237 void NV50DisplayCommand(ScrnInfoPtr pScrn, uint32_t addr, uint32_t value);
238 void NV50CrtcCommand(nouveauCrtcPtr crtc, uint32_t addr, uint32_t value);
239 void NV50CrtcInit(ScrnInfoPtr pScrn);
240 void NV50CrtcDestroy(ScrnInfoPtr pScrn);
241
242 /* in nv50_output.c */
243 int NV50OrOffset(nouveauOutputPtr output);
244 void NV50OutputSetup(ScrnInfoPtr pScrn);
245 void NV50OutputDestroy(ScrnInfoPtr pScrn);
246
247 /* nv50_dac.c */
248 void NV50DacSetFunctionPointers(nouveauOutputPtr output);
249
250 /* nv50_sor.c */
251 void NV50SorSetFunctionPointers(nouveauOutputPtr output);
252 DisplayModePtr GetLVDSNativeMode(ScrnInfoPtr pScrn);
253
254 /* nv50_connector.c */
255 void NV50ConnectorInit(ScrnInfoPtr pScrn);
256 void NV50ConnectorDestroy(ScrnInfoPtr pScrn);
257
258 /* nv50_randr.c */
259 void nv50_crtc_init(ScrnInfoPtr pScrn, int crtc_num);
260 void nv50_output_create(ScrnInfoPtr pScrn);
261 int nv_scaling_mode_lookup(char *name, int size);
262
263 /* nv50_xv.c */
264 int nv50_xv_image_put(ScrnInfoPtr, struct nouveau_bo *, int, int, int, int,
265                       BoxPtr, int, int, int, int, uint16_t, uint16_t,
266                       uint16_t, uint16_t, uint16_t, uint16_t,
267                       RegionPtr, PixmapPtr, NVPortPrivPtr);
268 void nv50_xv_video_stop(ScrnInfoPtr, pointer, Bool);
269 int nv50_xv_port_attribute_set(ScrnInfoPtr, Atom, INT32, pointer);
270 int nv50_xv_port_attribute_get(ScrnInfoPtr, Atom, INT32 *, pointer);
271
272 /* To support EXA 2.0, 2.1 has this in the header */
273 #ifndef exaMoveInPixmap
274 extern void exaMoveInPixmap(PixmapPtr pPixmap);
275 #endif
276
277 #endif /* __NV_PROTO_H__ */
278