forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
297 lines
8.9 KiB
297 lines
8.9 KiB
======================================================= |
|
VIA Integration Graphic Chip Console Framebuffer Driver |
|
======================================================= |
|
|
|
Platform |
|
-------- |
|
The console framebuffer driver is for graphics chips of |
|
VIA UniChrome Family |
|
(CLE266, PM800 / CN400 / CN300, |
|
P4M800CE / P4M800Pro / CN700 / VN800, |
|
CX700 / VX700, K8M890, P4M890, |
|
CN896 / P4M900, VX800, VX855) |
|
|
|
Driver features |
|
--------------- |
|
Device: CRT, LCD, DVI |
|
|
|
Support viafb_mode:: |
|
|
|
CRT: |
|
640x480(60, 75, 85, 100, 120 Hz), 720x480(60 Hz), |
|
720x576(60 Hz), 800x600(60, 75, 85, 100, 120 Hz), |
|
848x480(60 Hz), 856x480(60 Hz), 1024x512(60 Hz), |
|
1024x768(60, 75, 85, 100 Hz), 1152x864(75 Hz), |
|
1280x768(60 Hz), 1280x960(60 Hz), 1280x1024(60, 75, 85 Hz), |
|
1440x1050(60 Hz), 1600x1200(60, 75 Hz), 1280x720(60 Hz), |
|
1920x1080(60 Hz), 1400x1050(60 Hz), 800x480(60 Hz) |
|
|
|
color depth: 8 bpp, 16 bpp, 32 bpp supports. |
|
|
|
Support 2D hardware accelerator. |
|
|
|
Using the viafb module |
|
---------------------- |
|
Start viafb with default settings:: |
|
|
|
#modprobe viafb |
|
|
|
Start viafb with user options:: |
|
|
|
#modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60 |
|
viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1 |
|
viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60 |
|
viafb_SAMM_ON=1 |
|
|
|
viafb_mode: |
|
- 640x480 (default) |
|
- 720x480 |
|
- 800x600 |
|
- 1024x768 |
|
|
|
viafb_bpp: |
|
- 8, 16, 32 (default:32) |
|
|
|
viafb_refresh: |
|
- 60, 75, 85, 100, 120 (default:60) |
|
|
|
viafb_lcd_dsp_method: |
|
- 0 : expansion (default) |
|
- 1 : centering |
|
|
|
viafb_lcd_mode: |
|
0 : LCD panel with LSB data format input (default) |
|
1 : LCD panel with MSB data format input |
|
|
|
viafb_lcd_panel_id: |
|
- 0 : Resolution: 640x480, Channel: single, Dithering: Enable |
|
- 1 : Resolution: 800x600, Channel: single, Dithering: Enable |
|
- 2 : Resolution: 1024x768, Channel: single, Dithering: Enable (default) |
|
- 3 : Resolution: 1280x768, Channel: single, Dithering: Enable |
|
- 4 : Resolution: 1280x1024, Channel: dual, Dithering: Enable |
|
- 5 : Resolution: 1400x1050, Channel: dual, Dithering: Enable |
|
- 6 : Resolution: 1600x1200, Channel: dual, Dithering: Enable |
|
|
|
- 8 : Resolution: 800x480, Channel: single, Dithering: Enable |
|
- 9 : Resolution: 1024x768, Channel: dual, Dithering: Enable |
|
- 10: Resolution: 1024x768, Channel: single, Dithering: Disable |
|
- 11: Resolution: 1024x768, Channel: dual, Dithering: Disable |
|
- 12: Resolution: 1280x768, Channel: single, Dithering: Disable |
|
- 13: Resolution: 1280x1024, Channel: dual, Dithering: Disable |
|
- 14: Resolution: 1400x1050, Channel: dual, Dithering: Disable |
|
- 15: Resolution: 1600x1200, Channel: dual, Dithering: Disable |
|
- 16: Resolution: 1366x768, Channel: single, Dithering: Disable |
|
- 17: Resolution: 1024x600, Channel: single, Dithering: Enable |
|
- 18: Resolution: 1280x768, Channel: dual, Dithering: Enable |
|
- 19: Resolution: 1280x800, Channel: single, Dithering: Enable |
|
|
|
viafb_accel: |
|
- 0 : No 2D Hardware Acceleration |
|
- 1 : 2D Hardware Acceleration (default) |
|
|
|
viafb_SAMM_ON: |
|
- 0 : viafb_SAMM_ON disable (default) |
|
- 1 : viafb_SAMM_ON enable |
|
|
|
viafb_mode1: (secondary display device) |
|
- 640x480 (default) |
|
- 720x480 |
|
- 800x600 |
|
- 1024x768 |
|
|
|
viafb_bpp1: (secondary display device) |
|
- 8, 16, 32 (default:32) |
|
|
|
viafb_refresh1: (secondary display device) |
|
- 60, 75, 85, 100, 120 (default:60) |
|
|
|
viafb_active_dev: |
|
This option is used to specify active devices.(CRT, DVI, CRT+LCD...) |
|
DVI stands for DVI or HDMI, E.g., If you want to enable HDMI, |
|
set viafb_active_dev=DVI. In SAMM case, the previous of |
|
viafb_active_dev is primary device, and the following is |
|
secondary device. |
|
|
|
For example: |
|
|
|
To enable one device, such as DVI only, we can use:: |
|
|
|
modprobe viafb viafb_active_dev=DVI |
|
|
|
To enable two devices, such as CRT+DVI:: |
|
|
|
modprobe viafb viafb_active_dev=CRT+DVI; |
|
|
|
For DuoView case, we can use:: |
|
|
|
modprobe viafb viafb_active_dev=CRT+DVI |
|
|
|
OR:: |
|
|
|
modprobe viafb viafb_active_dev=DVI+CRT... |
|
|
|
For SAMM case: |
|
|
|
If CRT is primary and DVI is secondary, we should use:: |
|
|
|
modprobe viafb viafb_active_dev=CRT+DVI viafb_SAMM_ON=1... |
|
|
|
If DVI is primary and CRT is secondary, we should use:: |
|
|
|
modprobe viafb viafb_active_dev=DVI+CRT viafb_SAMM_ON=1... |
|
|
|
viafb_display_hardware_layout: |
|
This option is used to specify display hardware layout for CX700 chip. |
|
|
|
- 1 : LCD only |
|
- 2 : DVI only |
|
- 3 : LCD+DVI (default) |
|
- 4 : LCD1+LCD2 (internal + internal) |
|
- 16: LCD1+ExternalLCD2 (internal + external) |
|
|
|
viafb_second_size: |
|
This option is used to set second device memory size(MB) in SAMM case. |
|
The minimal size is 16. |
|
|
|
viafb_platform_epia_dvi: |
|
This option is used to enable DVI on EPIA - M |
|
|
|
- 0 : No DVI on EPIA - M (default) |
|
- 1 : DVI on EPIA - M |
|
|
|
viafb_bus_width: |
|
When using 24 - Bit Bus Width Digital Interface, |
|
this option should be set. |
|
|
|
- 12: 12-Bit LVDS or 12-Bit TMDS (default) |
|
- 24: 24-Bit LVDS or 24-Bit TMDS |
|
|
|
viafb_device_lcd_dualedge: |
|
When using Dual Edge Panel, this option should be set. |
|
|
|
- 0 : No Dual Edge Panel (default) |
|
- 1 : Dual Edge Panel |
|
|
|
viafb_lcd_port: |
|
This option is used to specify LCD output port, |
|
available values are "DVP0" "DVP1" "DFP_HIGHLOW" "DFP_HIGH" "DFP_LOW". |
|
|
|
for external LCD + external DVI on CX700(External LCD is on DVP0), |
|
we should use:: |
|
|
|
modprobe viafb viafb_lcd_port=DVP0... |
|
|
|
Notes: |
|
1. CRT may not display properly for DuoView CRT & DVI display at |
|
the "640x480" PAL mode with DVI overscan enabled. |
|
2. SAMM stands for single adapter multi monitors. It is different from |
|
multi-head since SAMM support multi monitor at driver layers, thus fbcon |
|
layer doesn't even know about it; SAMM's second screen doesn't have a |
|
device node file, thus a user mode application can't access it directly. |
|
When SAMM is enabled, viafb_mode and viafb_mode1, viafb_bpp and |
|
viafb_bpp1, viafb_refresh and viafb_refresh1 can be different. |
|
3. When console is depending on viafbinfo1, dynamically change resolution |
|
and bpp, need to call VIAFB specified ioctl interface VIAFB_SET_DEVICE |
|
instead of calling common ioctl function FBIOPUT_VSCREENINFO since |
|
viafb doesn't support multi-head well, or it will cause screen crush. |
|
|
|
|
|
Configure viafb with "fbset" tool |
|
--------------------------------- |
|
|
|
"fbset" is an inbox utility of Linux. |
|
|
|
1. Inquire current viafb information, type:: |
|
|
|
# fbset -i |
|
|
|
2. Set various resolutions and viafb_refresh rates:: |
|
|
|
# fbset <resolution-vertical_sync> |
|
|
|
example:: |
|
|
|
# fbset "1024x768-75" |
|
|
|
or:: |
|
|
|
# fbset -g 1024 768 1024 768 32 |
|
|
|
Check the file "/etc/fb.modes" to find display modes available. |
|
|
|
3. Set the color depth:: |
|
|
|
# fbset -depth <value> |
|
|
|
example:: |
|
|
|
# fbset -depth 16 |
|
|
|
|
|
Configure viafb via /proc |
|
------------------------- |
|
The following files exist in /proc/viafb |
|
|
|
supported_output_devices |
|
This read-only file contains a full ',' separated list containing all |
|
output devices that could be available on your platform. It is likely |
|
that not all of those have a connector on your hardware but it should |
|
provide a good starting point to figure out which of those names match |
|
a real connector. |
|
|
|
Example:: |
|
|
|
# cat /proc/viafb/supported_output_devices |
|
|
|
iga1/output_devices, iga2/output_devices |
|
These two files are readable and writable. iga1 and iga2 are the two |
|
independent units that produce the screen image. Those images can be |
|
forwarded to one or more output devices. Reading those files is a way |
|
to query which output devices are currently used by an iga. |
|
|
|
Example:: |
|
|
|
# cat /proc/viafb/iga1/output_devices |
|
|
|
If there are no output devices printed the output of this iga is lost. |
|
This can happen for example if only one (the other) iga is used. |
|
Writing to these files allows adjusting the output devices during |
|
runtime. One can add new devices, remove existing ones or switch |
|
between igas. Essentially you can write a ',' separated list of device |
|
names (or a single one) in the same format as the output to those |
|
files. You can add a '+' or '-' as a prefix allowing simple addition |
|
and removal of devices. So a prefix '+' adds the devices from your list |
|
to the already existing ones, '-' removes the listed devices from the |
|
existing ones and if no prefix is given it replaces all existing ones |
|
with the listed ones. If you remove devices they are expected to turn |
|
off. If you add devices that are already part of the other iga they are |
|
removed there and added to the new one. |
|
|
|
Examples: |
|
|
|
Add CRT as output device to iga1:: |
|
|
|
# echo +CRT > /proc/viafb/iga1/output_devices |
|
|
|
Remove (turn off) DVP1 and LVDS1 as output devices of iga2:: |
|
|
|
# echo -DVP1,LVDS1 > /proc/viafb/iga2/output_devices |
|
|
|
Replace all iga1 output devices by CRT:: |
|
|
|
# echo CRT > /proc/viafb/iga1/output_devices |
|
|
|
|
|
Bootup with viafb |
|
----------------- |
|
|
|
Add the following line to your grub.conf:: |
|
|
|
append = "video=viafb:viafb_mode=1024x768,viafb_bpp=32,viafb_refresh=85" |
|
|
|
|
|
VIA Framebuffer modes |
|
===================== |
|
|
|
.. include:: viafb.modes |
|
:literal:
|
|
|