1*4882a593SmuzhiyunFrom 5216cb0f14414b5451f58df48a36c1c62c035276 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Otavio Salvador <otavio@ossystems.com.br>
3*4882a593SmuzhiyunDate: Sat, 29 Dec 2012 18:02:11 -0200
4*4882a593SmuzhiyunSubject: [PATCH] Make video API forward and backward compatible
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunThis updates the video API in a forward and backward compatible way
7*4882a593Smuzhiyunusing the "compat-api.h" as used in Xorg maintained drivers.
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunUpstream-Status: Pending
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunSigned-off-by: Otavio Salvador <otavio@ossystems.com.br>
12*4882a593Smuzhiyun---
13*4882a593Smuzhiyun src/compat-api.h        |  106 +++++++++++++++++++++++++++++++++++++++++++++++
14*4882a593Smuzhiyun src/imx_display.c       |   22 +++++-----
15*4882a593Smuzhiyun src/imx_display.h       |    8 ++--
16*4882a593Smuzhiyun src/imx_driver.c        |   60 ++++++++++++++-------------
17*4882a593Smuzhiyun src/imx_exa_offscreen.c |   12 +++---
18*4882a593Smuzhiyun src/imx_exa_z160.c      |   53 ++++++++++++------------
19*4882a593Smuzhiyun src/imx_xv_ipu.c        |    4 +-
20*4882a593Smuzhiyun 7 files changed, 188 insertions(+), 77 deletions(-)
21*4882a593Smuzhiyun create mode 100644 src/compat-api.h
22*4882a593Smuzhiyun
23*4882a593Smuzhiyundiff --git a/src/compat-api.h b/src/compat-api.h
24*4882a593Smuzhiyunnew file mode 100644
25*4882a593Smuzhiyunindex 0000000..73ac8a2
26*4882a593Smuzhiyun--- /dev/null
27*4882a593Smuzhiyun+++ b/src/compat-api.h
28*4882a593Smuzhiyun@@ -0,0 +1,106 @@
29*4882a593Smuzhiyun+/*
30*4882a593Smuzhiyun+ * Copyright 2012 Red Hat, Inc.
31*4882a593Smuzhiyun+ *
32*4882a593Smuzhiyun+ * Permission is hereby granted, free of charge, to any person obtaining a
33*4882a593Smuzhiyun+ * copy of this software and associated documentation files (the "Software"),
34*4882a593Smuzhiyun+ * to deal in the Software without restriction, including without limitation
35*4882a593Smuzhiyun+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
36*4882a593Smuzhiyun+ * and/or sell copies of the Software, and to permit persons to whom the
37*4882a593Smuzhiyun+ * Software is furnished to do so, subject to the following conditions:
38*4882a593Smuzhiyun+ *
39*4882a593Smuzhiyun+ * The above copyright notice and this permission notice (including the next
40*4882a593Smuzhiyun+ * paragraph) shall be included in all copies or substantial portions of the
41*4882a593Smuzhiyun+ * Software.
42*4882a593Smuzhiyun+ *
43*4882a593Smuzhiyun+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
44*4882a593Smuzhiyun+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
45*4882a593Smuzhiyun+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
46*4882a593Smuzhiyun+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
47*4882a593Smuzhiyun+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
48*4882a593Smuzhiyun+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
49*4882a593Smuzhiyun+ * DEALINGS IN THE SOFTWARE.
50*4882a593Smuzhiyun+ *
51*4882a593Smuzhiyun+ * Author: Dave Airlie <airlied@redhat.com>
52*4882a593Smuzhiyun+ */
53*4882a593Smuzhiyun+
54*4882a593Smuzhiyun+/* this file provides API compat between server post 1.13 and pre it,
55*4882a593Smuzhiyun+   it should be reused inside as many drivers as possible */
56*4882a593Smuzhiyun+#ifndef COMPAT_API_H
57*4882a593Smuzhiyun+#define COMPAT_API_H
58*4882a593Smuzhiyun+
59*4882a593Smuzhiyun+#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
60*4882a593Smuzhiyun+#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
61*4882a593Smuzhiyun+#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
62*4882a593Smuzhiyun+#endif
63*4882a593Smuzhiyun+
64*4882a593Smuzhiyun+#ifndef XF86_HAS_SCRN_CONV
65*4882a593Smuzhiyun+#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
66*4882a593Smuzhiyun+#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
67*4882a593Smuzhiyun+#endif
68*4882a593Smuzhiyun+
69*4882a593Smuzhiyun+#ifndef XF86_SCRN_INTERFACE
70*4882a593Smuzhiyun+
71*4882a593Smuzhiyun+#define SCRN_ARG_TYPE int
72*4882a593Smuzhiyun+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
73*4882a593Smuzhiyun+
74*4882a593Smuzhiyun+#define SCREEN_ARG_TYPE int
75*4882a593Smuzhiyun+#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
76*4882a593Smuzhiyun+
77*4882a593Smuzhiyun+#define SCREEN_INIT_ARGS_DECL int index, ScreenPtr pScreen, int argc, char **argv
78*4882a593Smuzhiyun+
79*4882a593Smuzhiyun+#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
80*4882a593Smuzhiyun+#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
81*4882a593Smuzhiyun+
82*4882a593Smuzhiyun+#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
83*4882a593Smuzhiyun+#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
84*4882a593Smuzhiyun+#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
85*4882a593Smuzhiyun+
86*4882a593Smuzhiyun+#define FBDEVHWADJUSTFRAME_ARGS(x, y) scrnIndex, (x), (y), 0
87*4882a593Smuzhiyun+
88*4882a593Smuzhiyun+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
89*4882a593Smuzhiyun+
90*4882a593Smuzhiyun+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
91*4882a593Smuzhiyun+
92*4882a593Smuzhiyun+#define FREE_SCREEN_ARGS_DECL int arg, int flags
93*4882a593Smuzhiyun+#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0
94*4882a593Smuzhiyun+
95*4882a593Smuzhiyun+#define VT_FUNC_ARGS_DECL int arg, int flags
96*4882a593Smuzhiyun+#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)
97*4882a593Smuzhiyun+
98*4882a593Smuzhiyun+#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn->scrnIndex, b
99*4882a593Smuzhiyun+
100*4882a593Smuzhiyun+#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex)
101*4882a593Smuzhiyun+#else
102*4882a593Smuzhiyun+#define SCRN_ARG_TYPE ScrnInfoPtr
103*4882a593Smuzhiyun+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
104*4882a593Smuzhiyun+
105*4882a593Smuzhiyun+#define SCREEN_ARG_TYPE ScreenPtr
106*4882a593Smuzhiyun+#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
107*4882a593Smuzhiyun+
108*4882a593Smuzhiyun+#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
109*4882a593Smuzhiyun+
110*4882a593Smuzhiyun+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
111*4882a593Smuzhiyun+#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
112*4882a593Smuzhiyun+
113*4882a593Smuzhiyun+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
114*4882a593Smuzhiyun+#define CLOSE_SCREEN_ARGS pScreen
115*4882a593Smuzhiyun+#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
116*4882a593Smuzhiyun+
117*4882a593Smuzhiyun+#define FBDEVHWADJUSTFRAME_ARGS(x, y) pScrn, (x), (y)
118*4882a593Smuzhiyun+
119*4882a593Smuzhiyun+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
120*4882a593Smuzhiyun+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
121*4882a593Smuzhiyun+
122*4882a593Smuzhiyun+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
123*4882a593Smuzhiyun+#define FREE_SCREEN_ARGS(x) (x)
124*4882a593Smuzhiyun+
125*4882a593Smuzhiyun+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
126*4882a593Smuzhiyun+#define VT_FUNC_ARGS(flags) pScrn
127*4882a593Smuzhiyun+
128*4882a593Smuzhiyun+#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn, b
129*4882a593Smuzhiyun+
130*4882a593Smuzhiyun+#define XF86_ENABLEDISABLEFB_ARG(x) (x)
131*4882a593Smuzhiyun+
132*4882a593Smuzhiyun+#endif
133*4882a593Smuzhiyun+
134*4882a593Smuzhiyun+#endif
135*4882a593Smuzhiyundiff --git a/src/imx_display.c b/src/imx_display.c
136*4882a593Smuzhiyunindex fcb8195..e2dc36a 100644
137*4882a593Smuzhiyun--- a/src/imx_display.c
138*4882a593Smuzhiyun+++ b/src/imx_display.c
139*4882a593Smuzhiyun@@ -42,6 +42,8 @@
140*4882a593Smuzhiyun #include "imx.h"
141*4882a593Smuzhiyun #include "imx_display.h"
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun+#include "compat-api.h"
144*4882a593Smuzhiyun+
145*4882a593Smuzhiyun #include <X11/Xatom.h>
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,7,6,0,0)
148*4882a593Smuzhiyun@@ -1373,19 +1375,19 @@ imxDisplayPreInit(ScrnInfoPtr pScrn)
149*4882a593Smuzhiyun Bool
150*4882a593Smuzhiyun imxDisplayStartScreenInit(int scrnIndex, ScreenPtr pScreen)
151*4882a593Smuzhiyun {
152*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
153*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
154*4882a593Smuzhiyun 	ImxPtr fPtr = IMXPTR(pScrn);
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun 	if (!xf86SetDesiredModes(pScrn)) {
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR, "mode initialization failed\n");
159*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "mode initialization failed\n");
160*4882a593Smuzhiyun 		return FALSE;
161*4882a593Smuzhiyun 	}
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun #if 0
164*4882a593Smuzhiyun 	if (!fbdevHWModeInit(pScrn, pScrn->currentMode)) {
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR, "mode initialization failed\n");
167*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "mode initialization failed\n");
168*4882a593Smuzhiyun 		return FALSE;
169*4882a593Smuzhiyun 	}
170*4882a593Smuzhiyun 	pScrn->displayWidth =
171*4882a593Smuzhiyun@@ -1463,29 +1465,29 @@ imxDisplayFinishScreenInit(int scrnIndex, ScreenPtr pScreen)
172*4882a593Smuzhiyun /* -------------------------------------------------------------------- */
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun Bool
175*4882a593Smuzhiyun-imxDisplaySwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
176*4882a593Smuzhiyun+imxDisplaySwitchMode(SWITCH_MODE_ARGS_DECL)
177*4882a593Smuzhiyun {
178*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
179*4882a593Smuzhiyun+	SCRN_INFO_PTR(arg);
180*4882a593Smuzhiyun
181*4882a593Smuzhiyun 	return xf86SetSingleMode(pScrn, mode, RR_Rotate_0);
182*4882a593Smuzhiyun }
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun void
185*4882a593Smuzhiyun-imxDisplayAdjustFrame(int scrnIndex, int x, int y, int flags)
186*4882a593Smuzhiyun+imxDisplayAdjustFrame(ADJUST_FRAME_ARGS_DECL)
187*4882a593Smuzhiyun {
188*4882a593Smuzhiyun-//	fbdevHWAdjustFrame(scrnIndex, x, y, flags);
189*4882a593Smuzhiyun+//	fbdevHWAdjustFrame(pScrn->scrnIndex, x, y, flags);
190*4882a593Smuzhiyun }
191*4882a593Smuzhiyun
192*4882a593Smuzhiyun Bool
193*4882a593Smuzhiyun-imxDisplayEnterVT(int scrnIndex, int flags)
194*4882a593Smuzhiyun+imxDisplayEnterVT(VT_FUNC_ARGS_DECL)
195*4882a593Smuzhiyun {
196*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
197*4882a593Smuzhiyun+	SCRN_INFO_PTR(arg);
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun 	return xf86SetDesiredModes(pScrn);
200*4882a593Smuzhiyun }
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun void
203*4882a593Smuzhiyun-imxDisplayLeaveVT(int scrnIndex, int flags)
204*4882a593Smuzhiyun+imxDisplayLeaveVT(VT_FUNC_ARGS_DECL)
205*4882a593Smuzhiyun {
206*4882a593Smuzhiyun }
207*4882a593Smuzhiyun
208*4882a593Smuzhiyundiff --git a/src/imx_display.h b/src/imx_display.h
209*4882a593Smuzhiyunindex 4a5d5aa..3a3d43a 100644
210*4882a593Smuzhiyun--- a/src/imx_display.h
211*4882a593Smuzhiyun+++ b/src/imx_display.h
212*4882a593Smuzhiyun@@ -59,16 +59,16 @@ imxDisplayValidMode(int scrnIndex, DisplayModePtr mode,
213*4882a593Smuzhiyun 			Bool verbose, int flags);
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun extern Bool
216*4882a593Smuzhiyun-imxDisplaySwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
217*4882a593Smuzhiyun+imxDisplaySwitchMode(SWITCH_MODE_ARGS_DECL);
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun extern void
220*4882a593Smuzhiyun-imxDisplayAdjustFrame(int scrnIndex, int x, int y, int flags);
221*4882a593Smuzhiyun+imxDisplayAdjustFrame(ADJUST_FRAME_ARGS_DECL);
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun extern Bool
224*4882a593Smuzhiyun-imxDisplayEnterVT(int scrnIndex, int flags);
225*4882a593Smuzhiyun+imxDisplayEnterVT(VT_FUNC_ARGS_DECL);
226*4882a593Smuzhiyun
227*4882a593Smuzhiyun extern void
228*4882a593Smuzhiyun-imxDisplayLeaveVT(int scrnIndex, int flags);
229*4882a593Smuzhiyun+imxDisplayLeaveVT(VT_FUNC_ARGS_DECL);
230*4882a593Smuzhiyun
231*4882a593Smuzhiyun extern Bool
232*4882a593Smuzhiyun imxDisplayChangeFrameBufferRotateEPDC(int scrnIndex, int fbRotate);
233*4882a593Smuzhiyundiff --git a/src/imx_driver.c b/src/imx_driver.c
234*4882a593Smuzhiyunindex 178e36e..f4b3e38 100644
235*4882a593Smuzhiyun--- a/src/imx_driver.c
236*4882a593Smuzhiyun+++ b/src/imx_driver.c
237*4882a593Smuzhiyun@@ -46,6 +46,8 @@
238*4882a593Smuzhiyun #include "fb.h"
239*4882a593Smuzhiyun #include "fbdevhw.h"
240*4882a593Smuzhiyun
241*4882a593Smuzhiyun+#include "compat-api.h"
242*4882a593Smuzhiyun+
243*4882a593Smuzhiyun #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
244*4882a593Smuzhiyun #include "xf86Resources.h"
245*4882a593Smuzhiyun #include "xf86RAC.h"
246*4882a593Smuzhiyun@@ -435,17 +437,17 @@ errorPreInit:
247*4882a593Smuzhiyun }
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun static void
250*4882a593Smuzhiyun-imxFreeScreen(int scrnIndex, int flags)
251*4882a593Smuzhiyun+imxFreeScreen(FREE_SCREEN_ARGS_DECL)
252*4882a593Smuzhiyun {
253*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
254*4882a593Smuzhiyun+	SCRN_INFO_PTR(arg);
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun 	imxFreeRec(pScrn);
257*4882a593Smuzhiyun }
258*4882a593Smuzhiyun
259*4882a593Smuzhiyun static Bool
260*4882a593Smuzhiyun-imxCloseScreen(int scrnIndex, ScreenPtr pScreen)
261*4882a593Smuzhiyun+imxCloseScreen(CLOSE_SCREEN_ARGS_DECL)
262*4882a593Smuzhiyun {
263*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
264*4882a593Smuzhiyun+	CLOSE_SCREEN_DECL_ScrnInfoPtr;
265*4882a593Smuzhiyun 	ImxPtr fPtr = IMXPTR(pScrn);
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun 	fbdevHWRestore(pScrn);
268*4882a593Smuzhiyun@@ -453,7 +455,7 @@ imxCloseScreen(int scrnIndex, ScreenPtr pScreen)
269*4882a593Smuzhiyun 	pScrn->vtSema = FALSE;
270*4882a593Smuzhiyun
271*4882a593Smuzhiyun 	pScreen->CloseScreen = fPtr->saveCloseScreen;
272*4882a593Smuzhiyun-	return (*pScreen->CloseScreen)(scrnIndex, pScreen);
273*4882a593Smuzhiyun+	return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
274*4882a593Smuzhiyun }
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun static int
277*4882a593Smuzhiyun@@ -488,9 +490,9 @@ LCM(a, b)
278*4882a593Smuzhiyun }
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun static Bool
281*4882a593Smuzhiyun-imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
282*4882a593Smuzhiyun+imxScreenInit(SCREEN_INIT_ARGS_DECL)
283*4882a593Smuzhiyun {
284*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
285*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
286*4882a593Smuzhiyun 	ImxPtr fPtr = IMXPTR(pScrn);
287*4882a593Smuzhiyun 	VisualPtr visual;
288*4882a593Smuzhiyun 	int init_picture = 0;
289*4882a593Smuzhiyun@@ -514,7 +516,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
290*4882a593Smuzhiyun 	/* Map frame buffer memory */
291*4882a593Smuzhiyun 	fPtr->fbMemoryBase = fbdevHWMapVidmem(pScrn);
292*4882a593Smuzhiyun 	if (NULL == fPtr->fbMemoryBase) {
293*4882a593Smuzhiyun-	        xf86DrvMsg(scrnIndex,X_ERROR,"mapping of video memory"
294*4882a593Smuzhiyun+	        xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"mapping of video memory"
295*4882a593Smuzhiyun 			   " failed\n");
296*4882a593Smuzhiyun 		return FALSE;
297*4882a593Smuzhiyun 	}
298*4882a593Smuzhiyun@@ -558,7 +560,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
299*4882a593Smuzhiyun 	const int fbOffsetScreen2 =
300*4882a593Smuzhiyun 		IMX_ALIGN(fbMaxScreenSize, fbMaxAlignOffset);
301*4882a593Smuzhiyun 	fPtr->fbMemoryScreenReserve = fbMaxScreenSize;
302*4882a593Smuzhiyun-	xf86DrvMsg(scrnIndex, X_INFO,
303*4882a593Smuzhiyun+	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
304*4882a593Smuzhiyun 		"reserve %d bytes of frame buffer for screen\n",
305*4882a593Smuzhiyun 		fPtr->fbMemoryScreenReserve);
306*4882a593Smuzhiyun 	fPtr->fbMemoryStart2 = NULL;
307*4882a593Smuzhiyun@@ -568,12 +570,12 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun 		fPtr->fbMemoryScreenReserve += fbOffsetScreen2;
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_INFO,
312*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_INFO,
313*4882a593Smuzhiyun 			"reserve same number of bytes for XRandR rotated screen at offset %d\n",
314*4882a593Smuzhiyun 			fbOffsetScreen2);
315*4882a593Smuzhiyun 	}
316*4882a593Smuzhiyun
317*4882a593Smuzhiyun-	if (!imxDisplayStartScreenInit(scrnIndex, pScreen)) {
318*4882a593Smuzhiyun+	if (!imxDisplayStartScreenInit(pScrn->scrnIndex, pScreen)) {
319*4882a593Smuzhiyun
320*4882a593Smuzhiyun 		return FALSE;
321*4882a593Smuzhiyun 	}
322*4882a593Smuzhiyun@@ -582,7 +584,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
323*4882a593Smuzhiyun 	miClearVisualTypes();
324*4882a593Smuzhiyun 	if (pScrn->bitsPerPixel > 8) {
325*4882a593Smuzhiyun 		if (!miSetVisualTypes(pScrn->depth, TrueColorMask, pScrn->rgbBits, TrueColor)) {
326*4882a593Smuzhiyun-			xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed"
327*4882a593Smuzhiyun+			xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"visual type setup failed"
328*4882a593Smuzhiyun 				   " for %d bits per pixel [1]\n",
329*4882a593Smuzhiyun 				   pScrn->bitsPerPixel);
330*4882a593Smuzhiyun 			return FALSE;
331*4882a593Smuzhiyun@@ -591,14 +593,14 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
332*4882a593Smuzhiyun 		if (!miSetVisualTypes(pScrn->depth,
333*4882a593Smuzhiyun 				      miGetDefaultVisualMask(pScrn->depth),
334*4882a593Smuzhiyun 				      pScrn->rgbBits, pScrn->defaultVisual)) {
335*4882a593Smuzhiyun-			xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed"
336*4882a593Smuzhiyun+			xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"visual type setup failed"
337*4882a593Smuzhiyun 				   " for %d bits per pixel [2]\n",
338*4882a593Smuzhiyun 				   pScrn->bitsPerPixel);
339*4882a593Smuzhiyun 			return FALSE;
340*4882a593Smuzhiyun 		}
341*4882a593Smuzhiyun 	}
342*4882a593Smuzhiyun 	if (!miSetPixmapDepths()) {
343*4882a593Smuzhiyun-	  xf86DrvMsg(scrnIndex,X_ERROR,"pixmap depth setup failed\n");
344*4882a593Smuzhiyun+	  xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"pixmap depth setup failed\n");
345*4882a593Smuzhiyun 	  return FALSE;
346*4882a593Smuzhiyun 	}
347*4882a593Smuzhiyun
348*4882a593Smuzhiyun@@ -607,10 +609,10 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
349*4882a593Smuzhiyun 		has a padding which is independent from the depth (controlfb) */
350*4882a593Smuzhiyun 	pScrn->displayWidth = fbdevHWGetLineLength(pScrn) /
351*4882a593Smuzhiyun 			      (pScrn->bitsPerPixel / 8);
352*4882a593Smuzhiyun-	xf86DrvMsg(scrnIndex, X_INFO, "displayWidth = %d\n", pScrn->displayWidth);
353*4882a593Smuzhiyun+	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "displayWidth = %d\n", pScrn->displayWidth);
354*4882a593Smuzhiyun
355*4882a593Smuzhiyun 	if (pScrn->displayWidth != pScrn->virtualX) {
356*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_INFO,
357*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_INFO,
358*4882a593Smuzhiyun 			   "Pitch updated to %d after ModeInit\n",
359*4882a593Smuzhiyun 			   pScrn->displayWidth);
360*4882a593Smuzhiyun 	}
361*4882a593Smuzhiyun@@ -633,7 +635,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
362*4882a593Smuzhiyun 			init_picture = 1;
363*4882a593Smuzhiyun 			break;
364*4882a593Smuzhiyun 	 	default:
365*4882a593Smuzhiyun-			xf86DrvMsg(scrnIndex, X_ERROR,
366*4882a593Smuzhiyun+			xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
367*4882a593Smuzhiyun 				   "internal error: invalid number of bits per"
368*4882a593Smuzhiyun 				   " pixel (%d) encountered in"
369*4882a593Smuzhiyun 				   " imxScreenInit()\n", pScrn->bitsPerPixel);
370*4882a593Smuzhiyun@@ -644,7 +646,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
371*4882a593Smuzhiyun 	case FBDEVHW_INTERLEAVED_PLANES:
372*4882a593Smuzhiyun 		/* This should never happen ...
373*4882a593Smuzhiyun 		* we should check for this much much earlier ... */
374*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR,
375*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
376*4882a593Smuzhiyun 		           "internal error: interleaved planes are not yet "
377*4882a593Smuzhiyun 			   "supported by the imx driver\n");
378*4882a593Smuzhiyun 		ret = FALSE;
379*4882a593Smuzhiyun@@ -652,20 +654,20 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
380*4882a593Smuzhiyun 	case FBDEVHW_TEXT:
381*4882a593Smuzhiyun 		/* This should never happen ...
382*4882a593Smuzhiyun 		* we should check for this much much earlier ... */
383*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR,
384*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
385*4882a593Smuzhiyun 		           "internal error: text mode is not supported by the "
386*4882a593Smuzhiyun 			   "imx driver\n");
387*4882a593Smuzhiyun 		ret = FALSE;
388*4882a593Smuzhiyun 		break;
389*4882a593Smuzhiyun 	case FBDEVHW_VGA_PLANES:
390*4882a593Smuzhiyun 		/* Not supported yet */
391*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR,
392*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
393*4882a593Smuzhiyun 		           "internal error: EGA/VGA Planes are not yet "
394*4882a593Smuzhiyun 			   "supported by the imx driver\n");
395*4882a593Smuzhiyun 		ret = FALSE;
396*4882a593Smuzhiyun 		break;
397*4882a593Smuzhiyun 	default:
398*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR,
399*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
400*4882a593Smuzhiyun 		           "internal error: unrecognised hardware type (%d) "
401*4882a593Smuzhiyun 			   "encountered in imxScreenInit()\n", type);
402*4882a593Smuzhiyun 		ret = FALSE;
403*4882a593Smuzhiyun@@ -699,7 +701,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
404*4882a593Smuzhiyun 	/* INIT ACCELERATION BEFORE INIT FOR BACKING STORE & SOFTWARE CURSOR */
405*4882a593Smuzhiyun 	if (fPtr->useAccel) {
406*4882a593Smuzhiyun
407*4882a593Smuzhiyun-		if (!imxExaZ160Setup(scrnIndex, pScreen)) {
408*4882a593Smuzhiyun+		if (!imxExaZ160Setup(pScrn->scrnIndex, pScreen)) {
409*4882a593Smuzhiyun
410*4882a593Smuzhiyun 			fPtr->useAccel = FALSE;
411*4882a593Smuzhiyun 		}
412*4882a593Smuzhiyun@@ -731,29 +733,29 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
413*4882a593Smuzhiyun 	/* XXX It would be simpler to use miCreateDefColormap() in all cases. */
414*4882a593Smuzhiyun 	case FBDEVHW_PACKED_PIXELS:
415*4882a593Smuzhiyun 		if (!miCreateDefColormap(pScreen)) {
416*4882a593Smuzhiyun-			xf86DrvMsg(scrnIndex, X_ERROR,
417*4882a593Smuzhiyun+			xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
418*4882a593Smuzhiyun                                    "internal error: miCreateDefColormap failed "
419*4882a593Smuzhiyun 				   "in imxScreenInit()\n");
420*4882a593Smuzhiyun 			return FALSE;
421*4882a593Smuzhiyun 		}
422*4882a593Smuzhiyun 		break;
423*4882a593Smuzhiyun 	case FBDEVHW_INTERLEAVED_PLANES:
424*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR,
425*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
426*4882a593Smuzhiyun 		           "internal error: interleaved planes are not yet "
427*4882a593Smuzhiyun 			   "supported by the imx driver\n");
428*4882a593Smuzhiyun 		return FALSE;
429*4882a593Smuzhiyun 	case FBDEVHW_TEXT:
430*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR,
431*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
432*4882a593Smuzhiyun 		           "internal error: text mode is not supported by "
433*4882a593Smuzhiyun 			   "the imx driver\n");
434*4882a593Smuzhiyun 		return FALSE;
435*4882a593Smuzhiyun 	case FBDEVHW_VGA_PLANES:
436*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR,
437*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
438*4882a593Smuzhiyun 		           "internal error: EGA/VGA planes are not yet "
439*4882a593Smuzhiyun 			   "supported by the imx driver\n");
440*4882a593Smuzhiyun 		return FALSE;
441*4882a593Smuzhiyun 	default:
442*4882a593Smuzhiyun-		xf86DrvMsg(scrnIndex, X_ERROR,
443*4882a593Smuzhiyun+		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
444*4882a593Smuzhiyun 		           "internal error: unrecognised imx hardware type "
445*4882a593Smuzhiyun 			   "(%d) encountered in imxScreenInit()\n", type);
446*4882a593Smuzhiyun 		return FALSE;
447*4882a593Smuzhiyun@@ -782,7 +784,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
448*4882a593Smuzhiyun 	}
449*4882a593Smuzhiyun #endif
450*4882a593Smuzhiyun
451*4882a593Smuzhiyun-	if (!imxDisplayFinishScreenInit(scrnIndex, pScreen)) {
452*4882a593Smuzhiyun+	if (!imxDisplayFinishScreenInit(pScrn->scrnIndex, pScreen)) {
453*4882a593Smuzhiyun 		return FALSE;
454*4882a593Smuzhiyun 	}
455*4882a593Smuzhiyun
456*4882a593Smuzhiyun@@ -810,7 +812,7 @@ IMXGetPixmapProperties(
457*4882a593Smuzhiyun 	}
458*4882a593Smuzhiyun
459*4882a593Smuzhiyun 	/* Access screen associated with this pixmap. */
460*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
461*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
462*4882a593Smuzhiyun
463*4882a593Smuzhiyun 	/* Check if the screen associated with this pixmap has IMX driver. */
464*4882a593Smuzhiyun 	if (0 != strcmp(IMX_DRIVER_NAME, pScrn->driverName)) {
465*4882a593Smuzhiyundiff --git a/src/imx_exa_offscreen.c b/src/imx_exa_offscreen.c
466*4882a593Smuzhiyunindex 3a5c24d..0fbe2fc 100644
467*4882a593Smuzhiyun--- a/src/imx_exa_offscreen.c
468*4882a593Smuzhiyun+++ b/src/imx_exa_offscreen.c
469*4882a593Smuzhiyun@@ -79,7 +79,7 @@ static void
470*4882a593Smuzhiyun imxExaOffscreenValidate (ScreenPtr pScreen)
471*4882a593Smuzhiyun {
472*4882a593Smuzhiyun     /* Access the driver specific data. */
473*4882a593Smuzhiyun-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
474*4882a593Smuzhiyun+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
475*4882a593Smuzhiyun     ImxPtr imxPtr = IMXPTR(pScrn);
476*4882a593Smuzhiyun     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);
477*4882a593Smuzhiyun     ExaOffscreenArea *prev = 0, *area;
478*4882a593Smuzhiyun@@ -135,7 +135,7 @@ imxExaOffscreenMerge (ImxExaPtr imxExaPtr, ExaOffscreenArea *area)
479*4882a593Smuzhiyun ExaOffscreenArea *
480*4882a593Smuzhiyun imxExaOffscreenFree (ScreenPtr pScreen, ExaOffscreenArea *area)
481*4882a593Smuzhiyun {
482*4882a593Smuzhiyun-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
483*4882a593Smuzhiyun+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
484*4882a593Smuzhiyun     ImxPtr imxPtr = IMXPTR(pScrn);
485*4882a593Smuzhiyun     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);
486*4882a593Smuzhiyun     ExaOffscreenArea	*next = area->next;
487*4882a593Smuzhiyun@@ -281,7 +281,7 @@ imxExaOffscreenAlloc (ScreenPtr pScreen, int size, int align,
488*4882a593Smuzhiyun                    pointer privData)
489*4882a593Smuzhiyun {
490*4882a593Smuzhiyun     ExaOffscreenArea *area;
491*4882a593Smuzhiyun-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
492*4882a593Smuzhiyun+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
493*4882a593Smuzhiyun     ImxPtr imxPtr = IMXPTR(pScrn);
494*4882a593Smuzhiyun     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);
495*4882a593Smuzhiyun     int real_size = 0, largest_avail = 0;
496*4882a593Smuzhiyun@@ -418,7 +418,7 @@ imxExaOffscreenSwapIn (ScreenPtr pScreen)
497*4882a593Smuzhiyun Bool
498*4882a593Smuzhiyun imxExaOffscreenInit (ScreenPtr pScreen)
499*4882a593Smuzhiyun {
500*4882a593Smuzhiyun-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
501*4882a593Smuzhiyun+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
502*4882a593Smuzhiyun     ImxPtr imxPtr = IMXPTR(pScrn);
503*4882a593Smuzhiyun     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);
504*4882a593Smuzhiyun     ExaOffscreenArea *area;
505*4882a593Smuzhiyun@@ -453,7 +453,7 @@ imxExaOffscreenInit (ScreenPtr pScreen)
506*4882a593Smuzhiyun void
507*4882a593Smuzhiyun imxExaOffscreenFini (ScreenPtr pScreen)
508*4882a593Smuzhiyun {
509*4882a593Smuzhiyun-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
510*4882a593Smuzhiyun+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
511*4882a593Smuzhiyun     ImxPtr imxPtr = IMXPTR(pScrn);
512*4882a593Smuzhiyun     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);
513*4882a593Smuzhiyun     ExaOffscreenArea *area;
514*4882a593Smuzhiyun@@ -472,7 +472,7 @@ imxExaOffscreenFini (ScreenPtr pScreen)
515*4882a593Smuzhiyun void
516*4882a593Smuzhiyun imxExaOffscreenSwapOut (ScreenPtr pScreen)
517*4882a593Smuzhiyun {
518*4882a593Smuzhiyun-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
519*4882a593Smuzhiyun+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
520*4882a593Smuzhiyun     ImxPtr imxPtr = IMXPTR(pScrn);
521*4882a593Smuzhiyun     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);
522*4882a593Smuzhiyun
523*4882a593Smuzhiyundiff --git a/src/imx_exa_z160.c b/src/imx_exa_z160.c
524*4882a593Smuzhiyunindex fb718e0..3d0bc96 100644
525*4882a593Smuzhiyun--- a/src/imx_exa_z160.c
526*4882a593Smuzhiyun+++ b/src/imx_exa_z160.c
527*4882a593Smuzhiyun@@ -32,6 +32,7 @@
528*4882a593Smuzhiyun #include <errno.h>
529*4882a593Smuzhiyun #include <fcntl.h>
530*4882a593Smuzhiyun
531*4882a593Smuzhiyun+#include "compat-api.h"
532*4882a593Smuzhiyun
533*4882a593Smuzhiyun /* Set if handles pixmap allocation and migration, i.e, EXA_HANDLES_PIXMAPS */
534*4882a593Smuzhiyun #define	IMX_EXA_ENABLE_HANDLES_PIXMAPS	\
535*4882a593Smuzhiyun@@ -299,7 +300,7 @@ imxExaZ160GetPixmapAddress(PixmapPtr pPixmap)
536*4882a593Smuzhiyun 	return fPixmapPtr->ptr;
537*4882a593Smuzhiyun #else
538*4882a593Smuzhiyun 	/* Access screen associated with this pixmap. */
539*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
540*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
541*4882a593Smuzhiyun
542*4882a593Smuzhiyun 	/* Access driver specific data */
543*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
544*4882a593Smuzhiyun@@ -344,7 +345,7 @@ imxExaZ160GetPixmapProperties(
545*4882a593Smuzhiyun #else
546*4882a593Smuzhiyun
547*4882a593Smuzhiyun 	/* Access screen associated with this pixmap. */
548*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
549*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
550*4882a593Smuzhiyun
551*4882a593Smuzhiyun 	/* Make sure pixmap is in framebuffer */
552*4882a593Smuzhiyun 	if (!exaDrawableIsOffscreen(&(pPixmap->drawable))) {
553*4882a593Smuzhiyun@@ -856,7 +857,7 @@ imxExaZ160SyncIfBusyPixmap(PixmapPtr pPixmap)
554*4882a593Smuzhiyun {
555*4882a593Smuzhiyun 	/* Access screen associated with this pixmap. */
556*4882a593Smuzhiyun 	ScreenPtr pScreen = pPixmap->drawable.pScreen;
557*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
558*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
559*4882a593Smuzhiyun
560*4882a593Smuzhiyun 	/* Access driver specific data for screen. */
561*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
562*4882a593Smuzhiyun@@ -924,7 +925,7 @@ imxExaZ160CreatePixmap2(ScreenPtr pScreen, int width, int height,
563*4882a593Smuzhiyun 	}
564*4882a593Smuzhiyun
565*4882a593Smuzhiyun 	/* Access the driver specific data. */
566*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
567*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
568*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
569*4882a593Smuzhiyun 	ImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr);
570*4882a593Smuzhiyun
571*4882a593Smuzhiyun@@ -1028,7 +1029,7 @@ imxExaZ160DestroyPixmap(ScreenPtr pScreen, void *driverPriv)
572*4882a593Smuzhiyun 	ImxExaPixmapPtr fPixmapPtr = (ImxExaPixmapPtr)driverPriv;
573*4882a593Smuzhiyun
574*4882a593Smuzhiyun 	/* Access the driver specific data. */
575*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
576*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
577*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
578*4882a593Smuzhiyun 	ImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr);
579*4882a593Smuzhiyun
580*4882a593Smuzhiyun@@ -1068,7 +1069,7 @@ imxExaZ160ModifyPixmapHeader(PixmapPtr pPixmap, int width, int height,
581*4882a593Smuzhiyun 	}
582*4882a593Smuzhiyun
583*4882a593Smuzhiyun 	/* Access screen associated with this pixmap */
584*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
585*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
586*4882a593Smuzhiyun
587*4882a593Smuzhiyun 	/* Access driver specific data */
588*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
589*4882a593Smuzhiyun@@ -1194,7 +1195,7 @@ imxExaZ160TrackBusyPixmap(ImxExaZ160Ptr fPtr, PixmapPtr pPixmap)
590*4882a593Smuzhiyun static void
591*4882a593Smuzhiyun imxExaZ160WaitMarker(ScreenPtr pScreen, int marker)
592*4882a593Smuzhiyun {
593*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
594*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
595*4882a593Smuzhiyun
596*4882a593Smuzhiyun 	/* Access driver specific data associated with the screen. */
597*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
598*4882a593Smuzhiyun@@ -1249,7 +1250,7 @@ imxExaZ160PrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg)
599*4882a593Smuzhiyun 	}
600*4882a593Smuzhiyun
601*4882a593Smuzhiyun 	/* Access screen associated with this pixmap */
602*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
603*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
604*4882a593Smuzhiyun
605*4882a593Smuzhiyun 	/* Access driver specific data */
606*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
607*4882a593Smuzhiyun@@ -1352,7 +1353,7 @@ static void
608*4882a593Smuzhiyun imxExaZ160Solid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2)
609*4882a593Smuzhiyun {
610*4882a593Smuzhiyun 	/* Access screen associated with this pixmap */
611*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
612*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
613*4882a593Smuzhiyun
614*4882a593Smuzhiyun 	/* Access driver specific data */
615*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
616*4882a593Smuzhiyun@@ -1423,7 +1424,7 @@ static void
617*4882a593Smuzhiyun imxExaZ160DoneSolid(PixmapPtr pPixmap)
618*4882a593Smuzhiyun {
619*4882a593Smuzhiyun 	/* Access screen associated with this pixmap */
620*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];
621*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);
622*4882a593Smuzhiyun
623*4882a593Smuzhiyun 	/* Access driver specific data */
624*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
625*4882a593Smuzhiyun@@ -1485,7 +1486,7 @@ imxExaZ160PrepareCopy(
626*4882a593Smuzhiyun 	}
627*4882a593Smuzhiyun
628*4882a593Smuzhiyun 	/* Access the screen associated with this pixmap. */
629*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];
630*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);
631*4882a593Smuzhiyun
632*4882a593Smuzhiyun 	/* Access driver specific data */
633*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
634*4882a593Smuzhiyun@@ -1599,7 +1600,7 @@ static void
635*4882a593Smuzhiyun imxExaZ160Copy(PixmapPtr pPixmapDst, int srcX, int srcY, int dstX, int dstY, int width, int height)
636*4882a593Smuzhiyun {
637*4882a593Smuzhiyun 	/* Access screen associated with dst pixmap */
638*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];
639*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);
640*4882a593Smuzhiyun
641*4882a593Smuzhiyun 	/* Access driver specific data */
642*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
643*4882a593Smuzhiyun@@ -1661,7 +1662,7 @@ static void
644*4882a593Smuzhiyun imxExaZ160DoneCopy(PixmapPtr pPixmapDst)
645*4882a593Smuzhiyun {
646*4882a593Smuzhiyun 	/* Access screen associated with this pixmap */
647*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];
648*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);
649*4882a593Smuzhiyun
650*4882a593Smuzhiyun 	/* Access driver specific data */
651*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
652*4882a593Smuzhiyun@@ -1770,7 +1771,7 @@ imxExaZ160CheckComposite(int op, PicturePtr pPictureSrc, PicturePtr pPictureMask
653*4882a593Smuzhiyun 	}
654*4882a593Smuzhiyun
655*4882a593Smuzhiyun 	/* Access screen associated with dst pixmap (same screen as for src pixmap). */
656*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];
657*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);
658*4882a593Smuzhiyun
659*4882a593Smuzhiyun 	/* Check the number of entities, and fail if it isn't one. */
660*4882a593Smuzhiyun 	if (pScrn->numEntities != 1) {
661*4882a593Smuzhiyun@@ -1987,7 +1988,7 @@ imxExaZ160PrepareComposite(
662*4882a593Smuzhiyun {
663*4882a593Smuzhiyun 	/* Access screen associated with dst pixmap. */
664*4882a593Smuzhiyun 	/* Should be same screen as for src pixmap. */
665*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];
666*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);
667*4882a593Smuzhiyun
668*4882a593Smuzhiyun 	/* NOTE - many preconditions already verified in CheckComposite. */
669*4882a593Smuzhiyun
670*4882a593Smuzhiyun@@ -2196,7 +2197,7 @@ imxExaZ160Composite(
671*4882a593Smuzhiyun 	int height)
672*4882a593Smuzhiyun {
673*4882a593Smuzhiyun 	/* Access screen associated with dst pixmap */
674*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];
675*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);
676*4882a593Smuzhiyun
677*4882a593Smuzhiyun 	/* Access driver specific data */
678*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
679*4882a593Smuzhiyun@@ -2275,7 +2276,7 @@ static void
680*4882a593Smuzhiyun imxExaZ160DoneComposite(PixmapPtr pPixmapDst)
681*4882a593Smuzhiyun {
682*4882a593Smuzhiyun 	/* Access screen associated with this pixmap */
683*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];
684*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);
685*4882a593Smuzhiyun
686*4882a593Smuzhiyun 	/* Access driver specific data */
687*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
688*4882a593Smuzhiyun@@ -2323,7 +2324,7 @@ imxExaZ160UploadToScreen(
689*4882a593Smuzhiyun
690*4882a593Smuzhiyun 	/* Access screen associated with this pixmap */
691*4882a593Smuzhiyun 	ScreenPtr pScreen = pPixmapDst->drawable.pScreen;
692*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
693*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
694*4882a593Smuzhiyun
695*4882a593Smuzhiyun 	/* Access driver specific data */
696*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
697*4882a593Smuzhiyun@@ -2381,7 +2382,7 @@ imxExaZ160DownloadFromScreen(
698*4882a593Smuzhiyun
699*4882a593Smuzhiyun 	/* Access screen associated with this pixmap */
700*4882a593Smuzhiyun 	ScreenPtr pScreen = pPixmapSrc->drawable.pScreen;
701*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
702*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
703*4882a593Smuzhiyun
704*4882a593Smuzhiyun 	/* Access driver specific data */
705*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
706*4882a593Smuzhiyun@@ -2412,9 +2413,9 @@ imxExaZ160DownloadFromScreen(
707*4882a593Smuzhiyun }
708*4882a593Smuzhiyun
709*4882a593Smuzhiyun Bool
710*4882a593Smuzhiyun-imxExaZ160CloseScreen(int scrnIndex, ScreenPtr pScreen)
711*4882a593Smuzhiyun+imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS_DECL)
712*4882a593Smuzhiyun {
713*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
714*4882a593Smuzhiyun+	CLOSE_SCREEN_DECL_ScrnInfoPtr;
715*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
716*4882a593Smuzhiyun
717*4882a593Smuzhiyun 	ImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr);
718*4882a593Smuzhiyun@@ -2504,7 +2505,7 @@ imxExaZ160CloseScreen(int scrnIndex, ScreenPtr pScreen)
719*4882a593Smuzhiyun 	/* Install our CloseScreen function so that it gets called. */
720*4882a593Smuzhiyun 	if (NULL != pScreen->CloseScreen) {
721*4882a593Smuzhiyun
722*4882a593Smuzhiyun-		return (*pScreen->CloseScreen)(scrnIndex, pScreen);
723*4882a593Smuzhiyun+		return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
724*4882a593Smuzhiyun 	}
725*4882a593Smuzhiyun
726*4882a593Smuzhiyun 	return TRUE;
727*4882a593Smuzhiyun@@ -2514,7 +2515,7 @@ Bool
728*4882a593Smuzhiyun imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen)
729*4882a593Smuzhiyun {
730*4882a593Smuzhiyun 	/* Access the screen info and then private data structures. */
731*4882a593Smuzhiyun-	ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
732*4882a593Smuzhiyun+	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
733*4882a593Smuzhiyun 	ImxPtr imxPtr = IMXPTR(pScrn);
734*4882a593Smuzhiyun
735*4882a593Smuzhiyun 	/* Private data structure must not already be in use. */
736*4882a593Smuzhiyun@@ -2582,7 +2583,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen)
737*4882a593Smuzhiyun
738*4882a593Smuzhiyun 		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
739*4882a593Smuzhiyun 			"Initialize Z160 interfaces failed.\n");
740*4882a593Smuzhiyun-		imxExaZ160CloseScreen(scrnIndex, pScreen);
741*4882a593Smuzhiyun+		imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS);
742*4882a593Smuzhiyun 		return FALSE;
743*4882a593Smuzhiyun 	}
744*4882a593Smuzhiyun
745*4882a593Smuzhiyun@@ -2592,7 +2593,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen)
746*4882a593Smuzhiyun
747*4882a593Smuzhiyun 		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
748*4882a593Smuzhiyun 			"Allocate EXA driver structure.\n");
749*4882a593Smuzhiyun-		imxExaZ160CloseScreen(scrnIndex, pScreen);
750*4882a593Smuzhiyun+		imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS);
751*4882a593Smuzhiyun 		return FALSE;
752*4882a593Smuzhiyun 	}
753*4882a593Smuzhiyun
754*4882a593Smuzhiyun@@ -2657,7 +2658,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen)
755*4882a593Smuzhiyun 	if (!exaDriverInit(pScreen, exaDriverPtr)) {
756*4882a593Smuzhiyun
757*4882a593Smuzhiyun 		xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "EXA initialization failed.\n");
758*4882a593Smuzhiyun-		imxExaZ160CloseScreen(scrnIndex, pScreen);
759*4882a593Smuzhiyun+		imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS);
760*4882a593Smuzhiyun 		return FALSE;
761*4882a593Smuzhiyun 	}
762*4882a593Smuzhiyun 	fPtr->imxExaRec.exaDriverPtr = exaDriverPtr;
763*4882a593Smuzhiyundiff --git a/src/imx_xv_ipu.c b/src/imx_xv_ipu.c
764*4882a593Smuzhiyunindex a517742..fc8a827 100644
765*4882a593Smuzhiyun--- a/src/imx_xv_ipu.c
766*4882a593Smuzhiyun+++ b/src/imx_xv_ipu.c
767*4882a593Smuzhiyun@@ -398,7 +398,7 @@ xf86XVFillKeyHelper1 (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes)
768*4882a593Smuzhiyun 	xRectangle *rects;
769*4882a593Smuzhiyun 	GCPtr gc;
770*4882a593Smuzhiyun
771*4882a593Smuzhiyun-	if(!xf86Screens[pScreen->myNum]->vtSema) return;
772*4882a593Smuzhiyun+	if(!xf86ScreenToScrn(pScreen)->vtSema) return;
773*4882a593Smuzhiyun
774*4882a593Smuzhiyun 	gc = GetScratchGC(root->depth, pScreen);
775*4882a593Smuzhiyun 	pval[0] = key;
776*4882a593Smuzhiyun@@ -771,7 +771,7 @@ MXXVInitializeAdaptor
777*4882a593Smuzhiyun 	XF86VideoAdaptorPtr **pppAdaptor
778*4882a593Smuzhiyun )
779*4882a593Smuzhiyun {
780*4882a593Smuzhiyun-	ScreenPtr           pScreen    = screenInfo.screens[pScreenInfo->scrnIndex];
781*4882a593Smuzhiyun+	ScreenPtr           pScreen    = xf86ScrnToScreen(pScreenInfo);
782*4882a593Smuzhiyun 	XF86VideoAdaptorPtr *ppAdaptor = NULL;
783*4882a593Smuzhiyun 	IMXPtr fPtr = IMXPTR(pScreenInfo);
784*4882a593Smuzhiyun 	int                 nAdaptor;
785*4882a593Smuzhiyun--
786*4882a593Smuzhiyun1.7.10.4
787*4882a593Smuzhiyun
788