Joseph Chan | 09a525e | 2008-10-15 22:03:19 -0700 | [diff] [blame] | 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, |
Harald Welte | 4562aea | 2009-12-15 16:46:42 -0800 | [diff] [blame] | 10 | CN896 / P4M900, VX800, VX855) |
Joseph Chan | 09a525e | 2008-10-15 22:03:19 -0700 | [diff] [blame] | 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 | |
Joseph Chan | 09a525e | 2008-10-15 22:03:19 -0700 | [diff] [blame] | 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 | |
| 164 | Notes: |
| 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. |
Joseph Chan | 09a525e | 2008-10-15 22:03:19 -0700 | [diff] [blame] | 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 | |
Florian Tobias Schandinat | 47eb1d8 | 2010-09-19 05:35:44 +0000 | [diff] [blame] | 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 ',' seperated 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 ',' seperated 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 | |
Joseph Chan | 09a525e | 2008-10-15 22:03:19 -0700 | [diff] [blame] | 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 | |