treewide: remove redundant IS_ERR() before error code check
[linux/fpc-iii.git] / Documentation / power / video.rst
blob337a2ba9f32f0f78e0eb5d14b7d8d14a16536ee6
1 ===========================
2 Video issues with S3 resume
3 ===========================
5 2003-2006, Pavel Machek
7 During S3 resume, hardware needs to be reinitialized. For most
8 devices, this is easy, and kernel driver knows how to do
9 it. Unfortunately there's one exception: video card. Those are usually
10 initialized by BIOS, and kernel does not have enough information to
11 boot video card. (Kernel usually does not even contain video card
12 driver -- vesafb and vgacon are widely used).
14 This is not problem for swsusp, because during swsusp resume, BIOS is
15 run normally so video card is normally initialized. It should not be
16 problem for S1 standby, because hardware should retain its state over
17 that.
19 We either have to run video BIOS during early resume, or interpret it
20 using vbetool later, or maybe nothing is necessary on particular
21 system because video state is preserved. Unfortunately different
22 methods work on different systems, and no known method suits all of
23 them.
25 Userland application called s2ram has been developed; it contains long
26 whitelist of systems, and automatically selects working method for a
27 given system. It can be downloaded from CVS at
28 www.sf.net/projects/suspend . If you get a system that is not in the
29 whitelist, please try to find a working solution, and submit whitelist
30 entry so that work does not need to be repeated.
32 Currently, VBE_SAVE method (6 below) works on most
33 systems. Unfortunately, vbetool only runs after userland is resumed,
34 so it makes debugging of early resume problems
35 hard/impossible. Methods that do not rely on userland are preferable.
37 Details
38 ~~~~~~~
40 There are a few types of systems where video works after S3 resume:
42 (1) systems where video state is preserved over S3.
44 (2) systems where it is possible to call the video BIOS during S3
45     resume. Unfortunately, it is not correct to call the video BIOS at
46     that point, but it happens to work on some machines. Use
47     acpi_sleep=s3_bios.
49 (3) systems that initialize video card into vga text mode and where
50     the BIOS works well enough to be able to set video mode. Use
51     acpi_sleep=s3_mode on these.
53 (4) on some systems s3_bios kicks video into text mode, and
54     acpi_sleep=s3_bios,s3_mode is needed.
56 (5) radeon systems, where X can soft-boot your video card. You'll need
57     a new enough X, and a plain text console (no vesafb or radeonfb). See
58     http://www.doesi.gmxhome.de/linux/tm800s3/s3.html for more information.
59     Alternatively, you should use vbetool (6) instead.
61 (6) other radeon systems, where vbetool is enough to bring system back
62     to life. It needs text console to be working. Do vbetool vbestate
63     save > /tmp/delme; echo 3 > /proc/acpi/sleep; vbetool post; vbetool
64     vbestate restore < /tmp/delme; setfont <whatever>, and your video
65     should work.
67 (7) on some systems, it is possible to boot most of kernel, and then
68     POSTing bios works. Ole Rohne has patch to do just that at
69     http://dev.gentoo.org/~marineam/patch-radeonfb-2.6.11-rc2-mm2.
71 (8) on some systems, you can use the video_post utility and or
72     do echo 3 > /sys/power/state  && /usr/sbin/video_post - which will
73     initialize the display in console mode. If you are in X, you can switch
74     to a virtual terminal and back to X using  CTRL+ALT+F1 - CTRL+ALT+F7 to get
75     the display working in graphical mode again.
77 Now, if you pass acpi_sleep=something, and it does not work with your
78 bios, you'll get a hard crash during resume. Be careful. Also it is
79 safest to do your experiments with plain old VGA console. The vesafb
80 and radeonfb (etc) drivers have a tendency to crash the machine during
81 resume.
83 You may have a system where none of above works. At that point you
84 either invent another ugly hack that works, or write proper driver for
85 your video card (good luck getting docs :-(). Maybe suspending from X
86 (proper X, knowing your hardware, not XF68_FBcon) might have better
87 chance of working.
89 Table of known working notebooks:
92 =============================== ===============================================
93 Model                           hack (or "how to do it")
94 =============================== ===============================================
95 Acer Aspire 1406LC              ole's late BIOS init (7), turn off DRI
96 Acer TM 230                     s3_bios (2)
97 Acer TM 242FX                   vbetool (6)
98 Acer TM C110                    video_post (8)
99 Acer TM C300                    vga=normal (only suspend on console, not in X),
100                                 vbetool (6) or video_post (8)
101 Acer TM 4052LCi                 s3_bios (2)
102 Acer TM 636Lci                  s3_bios,s3_mode (4)
103 Acer TM 650 (Radeon M7)         vga=normal plus boot-radeon (5) gets text
104                                 console back
105 Acer TM 660                     ??? [#f1]_
106 Acer TM 800                     vga=normal, X patches, see webpage (5)
107                                 or vbetool (6)
108 Acer TM 803                     vga=normal, X patches, see webpage (5)
109                                 or vbetool (6)
110 Acer TM 803LCi                  vga=normal, vbetool (6)
111 Arima W730a                     vbetool needed (6)
112 Asus L2400D                     s3_mode (3) [#f2]_ (S1 also works OK)
113 Asus L3350M (SiS 740)           (6)
114 Asus L3800C (Radeon M7)         s3_bios (2) (S1 also works OK)
115 Asus M6887Ne                    vga=normal, s3_bios (2), use radeon driver
116                                 instead of fglrx in x.org
117 Athlon64 desktop prototype      s3_bios (2)
118 Compal CL-50                    ??? [#f1]_
119 Compaq Armada E500 - P3-700     none (1) (S1 also works OK)
120 Compaq Evo N620c                vga=normal, s3_bios (2)
121 Dell 600m, ATI R250 Lf          none (1), but needs xorg-x11-6.8.1.902-1
122 Dell D600, ATI RV250            vga=normal and X, or try vbestate (6)
123 Dell D610                       vga=normal and X (possibly vbestate (6) too,
124                                 but not tested)
125 Dell Inspiron 4000              ??? [#f1]_
126 Dell Inspiron 500m              ??? [#f1]_
127 Dell Inspiron 510m              ???
128 Dell Inspiron 5150              vbetool needed (6)
129 Dell Inspiron 600m              ??? [#f1]_
130 Dell Inspiron 8200              ??? [#f1]_
131 Dell Inspiron 8500              ??? [#f1]_
132 Dell Inspiron 8600              ??? [#f1]_
133 eMachines athlon64 machines     vbetool needed (6) (someone please get
134                                 me model #s)
135 HP NC6000                       s3_bios, may not use radeonfb (2);
136                                 or vbetool (6)
137 HP NX7000                       ??? [#f1]_
138 HP Pavilion ZD7000              vbetool post needed, need open-source nv
139                                 driver for X
140 HP Omnibook XE3 athlon version  none (1)
141 HP Omnibook XE3GC               none (1), video is S3 Savage/IX-MV
142 HP Omnibook XE3L-GF             vbetool (6)
143 HP Omnibook 5150                none (1), (S1 also works OK)
144 IBM TP T20, model 2647-44G      none (1), video is S3 Inc. 86C270-294
145                                 Savage/IX-MV, vesafb gets "interesting"
146                                 but X work.
147 IBM TP A31 / Type 2652-M5G      s3_mode (3) [works ok with
148                                 BIOS 1.04 2002-08-23, but not at all with
149                                 BIOS 1.11 2004-11-05 :-(]
150 IBM TP R32 / Type 2658-MMG      none (1)
151 IBM TP R40 2722B3G              ??? [#f1]_
152 IBM TP R50p / Type 1832-22U     s3_bios (2)
153 IBM TP R51                      none (1)
154 IBM TP T30      236681A         ??? [#f1]_
155 IBM TP T40 / Type 2373-MU4      none (1)
156 IBM TP T40p                     none (1)
157 IBM TP R40p                     s3_bios (2)
158 IBM TP T41p                     s3_bios (2), switch to X after resume
159 IBM TP T42                      s3_bios (2)
160 IBM ThinkPad T42p (2373-GTG)    s3_bios (2)
161 IBM TP X20                      ??? [#f1]_
162 IBM TP X30                      s3_bios, s3_mode (4)
163 IBM TP X31 / Type 2672-XXH      none (1), use radeontool
164                                 (http://fdd.com/software/radeon/) to
165                                 turn off backlight.
166 IBM TP X32                      none (1), but backlight is on and video is
167                                 trashed after long suspend. s3_bios,
168                                 s3_mode (4) works too. Perhaps that gets
169                                 better results?
170 IBM Thinkpad X40 Type 2371-7JG  s3_bios,s3_mode (4)
171 IBM TP 600e                     none(1), but a switch to console and
172                                 back to X is needed
173 Medion MD4220                   ??? [#f1]_
174 Samsung P35                     vbetool needed (6)
175 Sharp PC-AR10 (ATI rage)        none (1), backlight does not switch off
176 Sony Vaio PCG-C1VRX/K           s3_bios (2)
177 Sony Vaio PCG-F403              ??? [#f1]_
178 Sony Vaio PCG-GRT995MP          none (1), works with 'nv' X driver
179 Sony Vaio PCG-GR7/K             none (1), but needs radeonfb, use
180                                 radeontool (http://fdd.com/software/radeon/)
181                                 to turn off backlight.
182 Sony Vaio PCG-N505SN            ??? [#f1]_
183 Sony Vaio vgn-s260              X or boot-radeon can init it (5)
184 Sony Vaio vgn-S580BH            vga=normal, but suspend from X. Console will
185                                 be blank unless you return to X.
186 Sony Vaio vgn-FS115B            s3_bios (2),s3_mode (4)
187 Toshiba Libretto L5             none (1)
188 Toshiba Libretto 100CT/110CT    vbetool (6)
189 Toshiba Portege 3020CT          s3_mode (3)
190 Toshiba Satellite 4030CDT       s3_mode (3) (S1 also works OK)
191 Toshiba Satellite 4080XCDT      s3_mode (3) (S1 also works OK)
192 Toshiba Satellite 4090XCDT      ??? [#f1]_
193 Toshiba Satellite P10-554       s3_bios,s3_mode (4)[#f3]_
194 Toshiba M30                     (2) xor X with nvidia driver using internal AGP
195 Uniwill 244IIO                  ??? [#f1]_
196 =============================== ===============================================
198 Known working desktop systems
199 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
201 =================== ============================= ========================
202 Mainboard           Graphics card                 hack (or "how to do it")
203 =================== ============================= ========================
204 Asus A7V8X          nVidia RIVA TNT2 model 64     s3_bios,s3_mode (4)
205 =================== ============================= ========================
208 .. [#f1] from https://wiki.ubuntu.com/HoaryPMResults, not sure
209          which options to use. If you know, please tell me.
211 .. [#f2] To be tested with a newer kernel.
213 .. [#f3] Not with SMP kernel, UP only.