| 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:
|