1 |
remi 08/09/30 09:55:11 |
2 |
|
3 |
Added: |
4 |
xf86-video-i810-2.4.2-0002-Disable-render-standby.patch |
5 |
xf86-video-i810-2.4.2-0001-Don-t-allocate-a-pipe-for-hotplug-detection.patch |
6 |
Removed: xf86-video-i810-2.4.2-fix-flicker.patch |
7 |
Log: |
8 |
x11-drivers/xf86-video-i810: add another patch from upstream's 2.4-branch |
9 |
(Portage version: 2.2_rc11/cvs/Linux 2.6.25-gentoo-r6 x86_64) |
10 |
|
11 |
Revision Changes Path |
12 |
1.1 x11-drivers/xf86-video-i810/files/xf86-video-i810-2.4.2-0002-Disable-render-standby.patch |
13 |
|
14 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-drivers/xf86-video-i810/files/xf86-video-i810-2.4.2-0002-Disable-render-standby.patch?rev=1.1&view=markup |
15 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-drivers/xf86-video-i810/files/xf86-video-i810-2.4.2-0002-Disable-render-standby.patch?rev=1.1&content-type=text/plain |
16 |
|
17 |
Index: xf86-video-i810-2.4.2-0002-Disable-render-standby.patch |
18 |
=================================================================== |
19 |
From 86f82c429f5d7067c52d3b783988917869e13d1d Mon Sep 17 00:00:00 2001 |
20 |
From: Zhenyu Wang <zhenyu.z.wang@×××××.com> |
21 |
Date: Thu, 11 Sep 2008 15:49:41 +0800 |
22 |
Subject: [PATCH] Disable render standby |
23 |
|
24 |
Render standby is known to cause possible hang issue on some |
25 |
mobile chips, so always disable it. |
26 |
|
27 |
diff --git a/src/i810_reg.h b/src/i810_reg.h |
28 |
index 8690954..af8c6a3 100644 |
29 |
--- a/src/i810_reg.h |
30 |
+++ b/src/i810_reg.h |
31 |
@@ -2815,4 +2815,7 @@ typedef enum { |
32 |
|
33 |
#define PEG_BAND_GAP_DATA 0x14d68 |
34 |
|
35 |
+#define MCHBAR_RENDER_STANDBY 0x111B8 |
36 |
+#define RENDER_STANDBY_ENABLE (1 << 30) |
37 |
+ |
38 |
#endif /* _I810_REG_H */ |
39 |
diff --git a/src/i830_driver.c b/src/i830_driver.c |
40 |
index 6f87c51..209aa07 100644 |
41 |
--- a/src/i830_driver.c |
42 |
+++ b/src/i830_driver.c |
43 |
@@ -2718,6 +2718,23 @@ i830_memory_init(ScrnInfoPtr pScrn) |
44 |
return FALSE; |
45 |
} |
46 |
|
47 |
+static void |
48 |
+i830_disable_render_standby(ScrnInfoPtr pScrn) |
49 |
+{ |
50 |
+ I830Ptr pI830 = I830PTR(pScrn); |
51 |
+ uint32_t render_standby; |
52 |
+ |
53 |
+ /* Render Standby might cause hang issue, try always disable it.*/ |
54 |
+ if (IS_I965GM(pI830) || IS_GM45(pI830)) { |
55 |
+ render_standby = INREG(MCHBAR_RENDER_STANDBY); |
56 |
+ if (render_standby & RENDER_STANDBY_ENABLE) { |
57 |
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Disable render standby.\n"); |
58 |
+ OUTREG(MCHBAR_RENDER_STANDBY, |
59 |
+ (render_standby & (~RENDER_STANDBY_ENABLE))); |
60 |
+ } |
61 |
+ } |
62 |
+} |
63 |
+ |
64 |
static Bool |
65 |
I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) |
66 |
{ |
67 |
@@ -3053,6 +3070,8 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) |
68 |
if (!vgaHWMapMem(pScrn)) |
69 |
return FALSE; |
70 |
|
71 |
+ i830_disable_render_standby(pScrn); |
72 |
+ |
73 |
DPRINTF(PFX, "assert( if(!I830EnterVT(scrnIndex, 0)) )\n"); |
74 |
|
75 |
if (!pI830->useEXA) { |
76 |
-- |
77 |
1.6.0.2 |
78 |
|
79 |
|
80 |
|
81 |
|
82 |
1.1 x11-drivers/xf86-video-i810/files/xf86-video-i810-2.4.2-0001-Don-t-allocate-a-pipe-for-hotplug-detection.patch |
83 |
|
84 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-drivers/xf86-video-i810/files/xf86-video-i810-2.4.2-0001-Don-t-allocate-a-pipe-for-hotplug-detection.patch?rev=1.1&view=markup |
85 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-drivers/xf86-video-i810/files/xf86-video-i810-2.4.2-0001-Don-t-allocate-a-pipe-for-hotplug-detection.patch?rev=1.1&content-type=text/plain |
86 |
|
87 |
Index: xf86-video-i810-2.4.2-0001-Don-t-allocate-a-pipe-for-hotplug-detection.patch |
88 |
=================================================================== |
89 |
From 95fe53b9fa5f44a1adb909909d609463d68578c2 Mon Sep 17 00:00:00 2001 |
90 |
From: Jesse Barnes <jbarnes@××××××××××××.org> |
91 |
Date: Wed, 20 Aug 2008 14:40:29 -0700 |
92 |
Subject: [PATCH] Don't allocate a pipe for hotplug detection |
93 |
|
94 |
It shouldn't be needed... |
95 |
(cherry picked from commit 7b6f4d22211d71480caf6335a3eacaacff369371) |
96 |
|
97 |
diff --git a/src/i830_crt.c b/src/i830_crt.c |
98 |
index 2a99f9c..8274c0c 100644 |
99 |
--- a/src/i830_crt.c |
100 |
+++ b/src/i830_crt.c |
101 |
@@ -352,10 +352,9 @@ i830_crt_detect(xf86OutputPtr output) |
102 |
xf86OutputStatus status; |
103 |
Bool connected; |
104 |
|
105 |
- crtc = i830GetLoadDetectPipe (output, NULL, &dpms_mode); |
106 |
- if (!crtc) |
107 |
- return XF86OutputStatusUnknown; |
108 |
- |
109 |
+ /* |
110 |
+ * Try hotplug detection where supported |
111 |
+ */ |
112 |
if (IS_I945G(pI830) || IS_I945GM(pI830) || IS_I965G(pI830) || |
113 |
IS_G33CLASS(pI830)) { |
114 |
if (i830_crt_detect_hotplug(output)) |
115 |
@@ -363,12 +362,19 @@ i830_crt_detect(xf86OutputPtr output) |
116 |
else |
117 |
status = XF86OutputStatusDisconnected; |
118 |
|
119 |
- goto out; |
120 |
+ goto done; |
121 |
} |
122 |
|
123 |
+ /* |
124 |
+ * DDC is next best, no flicker |
125 |
+ */ |
126 |
+ crtc = i830GetLoadDetectPipe (output, NULL, &dpms_mode); |
127 |
+ if (!crtc) |
128 |
+ return XF86OutputStatusUnknown; |
129 |
+ |
130 |
if (i830_crt_detect_ddc(output)) { |
131 |
status = XF86OutputStatusConnected; |
132 |
- goto out; |
133 |
+ goto out_release_pipe; |
134 |
} |
135 |
|
136 |
/* Use the load-detect method if we have no other way of telling. */ |
137 |
@@ -378,9 +384,10 @@ i830_crt_detect(xf86OutputPtr output) |
138 |
else |
139 |
status = XF86OutputStatusDisconnected; |
140 |
|
141 |
-out: |
142 |
+out_release_pipe: |
143 |
i830ReleaseLoadDetectPipe (output, dpms_mode); |
144 |
|
145 |
+done: |
146 |
return status; |
147 |
} |
148 |
|
149 |
-- |
150 |
1.6.0.2 |