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