cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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: