linux/Documentation/fb/viafb.rst
<<
>>
Prefs
   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:
 298