viafb.rst (9102B)
1======================================================= 2VIA Integration Graphic Chip Console Framebuffer Driver 3======================================================= 4 5Platform 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 14Driver 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 33Using 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 184Notes: 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 199Configure 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 231Configure 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 285Bootup with viafb 286----------------- 287 288Add the following line to your grub.conf:: 289 290 append = "video=viafb:viafb_mode=1024x768,viafb_bpp=32,viafb_refresh=85" 291 292 293VIA Framebuffer modes 294===================== 295 296.. include:: viafb.modes 297 :literal: