Commit | Line | Data |
---|---|---|
ab42b818 MCC |
1 | ======================================================= |
2 | VIA Integration Graphic Chip Console Framebuffer Driver | |
3 | ======================================================= | |
4 | ||
5 | Platform | |
6 | -------- | |
7 | The console framebuffer driver is for graphics chips of | |
8 | VIA UniChrome Family | |
9 | (CLE266, PM800 / CN400 / CN300, | |
10 | P4M800CE / P4M800Pro / CN700 / VN800, | |
11 | CX700 / VX700, K8M890, P4M890, | |
12 | CN896 / P4M900, VX800, VX855) | |
13 | ||
14 | Driver features | |
15 | --------------- | |
16 | Device: CRT, LCD, DVI | |
17 | ||
18 | Support viafb_mode:: | |
19 | ||
20 | CRT: | |
21 | 640x480(60, 75, 85, 100, 120 Hz), 720x480(60 Hz), | |
22 | 720x576(60 Hz), 800x600(60, 75, 85, 100, 120 Hz), | |
23 | 848x480(60 Hz), 856x480(60 Hz), 1024x512(60 Hz), | |
24 | 1024x768(60, 75, 85, 100 Hz), 1152x864(75 Hz), | |
25 | 1280x768(60 Hz), 1280x960(60 Hz), 1280x1024(60, 75, 85 Hz), | |
26 | 1440x1050(60 Hz), 1600x1200(60, 75 Hz), 1280x720(60 Hz), | |
27 | 1920x1080(60 Hz), 1400x1050(60 Hz), 800x480(60 Hz) | |
28 | ||
29 | color depth: 8 bpp, 16 bpp, 32 bpp supports. | |
30 | ||
31 | Support 2D hardware accelerator. | |
32 | ||
33 | Using the viafb module | |
34 | ---------------------- | |
35 | Start viafb with default settings:: | |
36 | ||
37 | #modprobe viafb | |
38 | ||
39 | Start viafb with user options:: | |
40 | ||
41 | #modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60 | |
42 | viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1 | |
43 | viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60 | |
44 | viafb_SAMM_ON=1 | |
45 | ||
46 | viafb_mode: | |
47 | - 640x480 (default) | |
48 | - 720x480 | |
49 | - 800x600 | |
50 | - 1024x768 | |
51 | ||
52 | viafb_bpp: | |
53 | - 8, 16, 32 (default:32) | |
54 | ||
55 | viafb_refresh: | |
56 | - 60, 75, 85, 100, 120 (default:60) | |
57 | ||
58 | viafb_lcd_dsp_method: | |
59 | - 0 : expansion (default) | |
60 | - 1 : centering | |
61 | ||
62 | viafb_lcd_mode: | |
63 | 0 : LCD panel with LSB data format input (default) | |
64 | 1 : LCD panel with MSB data format input | |
65 | ||
66 | viafb_lcd_panel_id: | |
67 | - 0 : Resolution: 640x480, Channel: single, Dithering: Enable | |
68 | - 1 : Resolution: 800x600, Channel: single, Dithering: Enable | |
69 | - 2 : Resolution: 1024x768, Channel: single, Dithering: Enable (default) | |
70 | - 3 : Resolution: 1280x768, Channel: single, Dithering: Enable | |
71 | - 4 : Resolution: 1280x1024, Channel: dual, Dithering: Enable | |
72 | - 5 : Resolution: 1400x1050, Channel: dual, Dithering: Enable | |
73 | - 6 : Resolution: 1600x1200, Channel: dual, Dithering: Enable | |
74 | ||
75 | - 8 : Resolution: 800x480, Channel: single, Dithering: Enable | |
76 | - 9 : Resolution: 1024x768, Channel: dual, Dithering: Enable | |
77 | - 10: Resolution: 1024x768, Channel: single, Dithering: Disable | |
78 | - 11: Resolution: 1024x768, Channel: dual, Dithering: Disable | |
79 | - 12: Resolution: 1280x768, Channel: single, Dithering: Disable | |
80 | - 13: Resolution: 1280x1024, Channel: dual, Dithering: Disable | |
81 | - 14: Resolution: 1400x1050, Channel: dual, Dithering: Disable | |
82 | - 15: Resolution: 1600x1200, Channel: dual, Dithering: Disable | |
83 | - 16: Resolution: 1366x768, Channel: single, Dithering: Disable | |
84 | - 17: Resolution: 1024x600, Channel: single, Dithering: Enable | |
85 | - 18: Resolution: 1280x768, Channel: dual, Dithering: Enable | |
86 | - 19: Resolution: 1280x800, Channel: single, Dithering: Enable | |
87 | ||
88 | viafb_accel: | |
89 | - 0 : No 2D Hardware Acceleration | |
90 | - 1 : 2D Hardware Acceleration (default) | |
91 | ||
92 | viafb_SAMM_ON: | |
93 | - 0 : viafb_SAMM_ON disable (default) | |
94 | - 1 : viafb_SAMM_ON enable | |
95 | ||
96 | viafb_mode1: (secondary display device) | |
97 | - 640x480 (default) | |
98 | - 720x480 | |
99 | - 800x600 | |
100 | - 1024x768 | |
101 | ||
102 | viafb_bpp1: (secondary display device) | |
103 | - 8, 16, 32 (default:32) | |
104 | ||
105 | viafb_refresh1: (secondary display device) | |
106 | - 60, 75, 85, 100, 120 (default:60) | |
107 | ||
108 | viafb_active_dev: | |
109 | This option is used to specify active devices.(CRT, DVI, CRT+LCD...) | |
110 | DVI stands for DVI or HDMI, E.g., If you want to enable HDMI, | |
111 | set viafb_active_dev=DVI. In SAMM case, the previous of | |
112 | viafb_active_dev is primary device, and the following is | |
113 | secondary device. | |
114 | ||
115 | For example: | |
116 | ||
117 | To enable one device, such as DVI only, we can use:: | |
118 | ||
119 | modprobe viafb viafb_active_dev=DVI | |
120 | ||
121 | To enable two devices, such as CRT+DVI:: | |
122 | ||
123 | modprobe viafb viafb_active_dev=CRT+DVI; | |
124 | ||
125 | For DuoView case, we can use:: | |
126 | ||
127 | modprobe viafb viafb_active_dev=CRT+DVI | |
128 | ||
129 | OR:: | |
130 | ||
131 | modprobe viafb viafb_active_dev=DVI+CRT... | |
132 | ||
133 | For SAMM case: | |
134 | ||
135 | If CRT is primary and DVI is secondary, we should use:: | |
136 | ||
137 | modprobe viafb viafb_active_dev=CRT+DVI viafb_SAMM_ON=1... | |
138 | ||
139 | If DVI is primary and CRT is secondary, we should use:: | |
140 | ||
141 | modprobe viafb viafb_active_dev=DVI+CRT viafb_SAMM_ON=1... | |
142 | ||
143 | viafb_display_hardware_layout: | |
144 | This option is used to specify display hardware layout for CX700 chip. | |
145 | ||
146 | - 1 : LCD only | |
147 | - 2 : DVI only | |
148 | - 3 : LCD+DVI (default) | |
149 | - 4 : LCD1+LCD2 (internal + internal) | |
150 | - 16: LCD1+ExternalLCD2 (internal + external) | |
151 | ||
152 | viafb_second_size: | |
153 | This option is used to set second device memory size(MB) in SAMM case. | |
154 | The minimal size is 16. | |
155 | ||
156 | viafb_platform_epia_dvi: | |
157 | This option is used to enable DVI on EPIA - M | |
158 | ||
159 | - 0 : No DVI on EPIA - M (default) | |
160 | - 1 : DVI on EPIA - M | |
161 | ||
162 | viafb_bus_width: | |
163 | When using 24 - Bit Bus Width Digital Interface, | |
164 | this option should be set. | |
165 | ||
166 | - 12: 12-Bit LVDS or 12-Bit TMDS (default) | |
167 | - 24: 24-Bit LVDS or 24-Bit TMDS | |
168 | ||
169 | viafb_device_lcd_dualedge: | |
170 | When using Dual Edge Panel, this option should be set. | |
171 | ||
172 | - 0 : No Dual Edge Panel (default) | |
173 | - 1 : Dual Edge Panel | |
174 | ||
175 | viafb_lcd_port: | |
176 | This option is used to specify LCD output port, | |
177 | available values are "DVP0" "DVP1" "DFP_HIGHLOW" "DFP_HIGH" "DFP_LOW". | |
178 | ||
179 | for external LCD + external DVI on CX700(External LCD is on DVP0), | |
180 | we should use:: | |
181 | ||
182 | modprobe viafb viafb_lcd_port=DVP0... | |
183 | ||
184 | Notes: | |
185 | 1. CRT may not display properly for DuoView CRT & DVI display at | |
186 | the "640x480" PAL mode with DVI overscan enabled. | |
187 | 2. SAMM stands for single adapter multi monitors. It is different from | |
188 | multi-head since SAMM support multi monitor at driver layers, thus fbcon | |
189 | layer doesn't even know about it; SAMM's second screen doesn't have a | |
190 | device node file, thus a user mode application can't access it directly. | |
191 | When SAMM is enabled, viafb_mode and viafb_mode1, viafb_bpp and | |
192 | viafb_bpp1, viafb_refresh and viafb_refresh1 can be different. | |
193 | 3. When console is depending on viafbinfo1, dynamically change resolution | |
194 | and bpp, need to call VIAFB specified ioctl interface VIAFB_SET_DEVICE | |
195 | instead of calling common ioctl function FBIOPUT_VSCREENINFO since | |
196 | viafb doesn't support multi-head well, or it will cause screen crush. | |
197 | ||
198 | ||
199 | Configure viafb with "fbset" tool | |
200 | --------------------------------- | |
201 | ||
202 | "fbset" is an inbox utility of Linux. | |
203 | ||
204 | 1. Inquire current viafb information, type:: | |
205 | ||
206 | # fbset -i | |
207 | ||
208 | 2. Set various resolutions and viafb_refresh rates:: | |
209 | ||
210 | # fbset <resolution-vertical_sync> | |
211 | ||
212 | example:: | |
213 | ||
214 | # fbset "1024x768-75" | |
215 | ||
216 | or:: | |
217 | ||
218 | # fbset -g 1024 768 1024 768 32 | |
219 | ||
220 | Check the file "/etc/fb.modes" to find display modes available. | |
221 | ||
222 | 3. Set the color depth:: | |
223 | ||
224 | # fbset -depth <value> | |
225 | ||
226 | example:: | |
227 | ||
228 | # fbset -depth 16 | |
229 | ||
230 | ||
231 | Configure viafb via /proc | |
232 | ------------------------- | |
233 | The following files exist in /proc/viafb | |
234 | ||
235 | supported_output_devices | |
236 | This read-only file contains a full ',' separated list containing all | |
237 | output devices that could be available on your platform. It is likely | |
238 | that not all of those have a connector on your hardware but it should | |
239 | provide a good starting point to figure out which of those names match | |
240 | a real connector. | |
241 | ||
242 | Example:: | |
243 | ||
244 | # cat /proc/viafb/supported_output_devices | |
245 | ||
246 | iga1/output_devices, iga2/output_devices | |
247 | These two files are readable and writable. iga1 and iga2 are the two | |
248 | independent units that produce the screen image. Those images can be | |
249 | forwarded to one or more output devices. Reading those files is a way | |
250 | to query which output devices are currently used by an iga. | |
251 | ||
252 | Example:: | |
253 | ||
254 | # cat /proc/viafb/iga1/output_devices | |
255 | ||
256 | If there are no output devices printed the output of this iga is lost. | |
257 | This can happen for example if only one (the other) iga is used. | |
258 | Writing to these files allows adjusting the output devices during | |
259 | runtime. One can add new devices, remove existing ones or switch | |
260 | between igas. Essentially you can write a ',' separated list of device | |
261 | names (or a single one) in the same format as the output to those | |
262 | files. You can add a '+' or '-' as a prefix allowing simple addition | |
263 | and removal of devices. So a prefix '+' adds the devices from your list | |
264 | to the already existing ones, '-' removes the listed devices from the | |
265 | existing ones and if no prefix is given it replaces all existing ones | |
266 | with the listed ones. If you remove devices they are expected to turn | |
267 | off. If you add devices that are already part of the other iga they are | |
268 | removed there and added to the new one. | |
269 | ||
270 | Examples: | |
271 | ||
272 | Add CRT as output device to iga1:: | |
273 | ||
274 | # echo +CRT > /proc/viafb/iga1/output_devices | |
275 | ||
276 | Remove (turn off) DVP1 and LVDS1 as output devices of iga2:: | |
277 | ||
278 | # echo -DVP1,LVDS1 > /proc/viafb/iga2/output_devices | |
279 | ||
280 | Replace all iga1 output devices by CRT:: | |
281 | ||
282 | # echo CRT > /proc/viafb/iga1/output_devices | |
283 | ||
284 | ||
285 | Bootup with viafb | |
286 | ----------------- | |
287 | ||
288 | Add the following line to your grub.conf:: | |
289 | ||
290 | append = "video=viafb:viafb_mode=1024x768,viafb_bpp=32,viafb_refresh=85" | |
291 | ||
292 | ||
293 | VIA Framebuffer modes | |
294 | ===================== | |
295 | ||
296 | .. include:: viafb.modes | |
297 | :literal: |