Hi,
we are evaluating HDMI port on TWR-LS1021A board where trying to change video resolution dynamically or at least set higher one.
We have successfully build fsl-image-x11 image and boot it on the target board (SDK 1.3)
u-boot: enabling video mode works as expected (640x480)
linux: X11 output works using smallest resolution offered by monitor (720x400)
What is correct way to change resolution?
Avaliable modes from monitor:
root@ls1021atwr:~# cat /sys/class/graphics/fb0/modes
S:1280x960p-60
V:1024x768p-60
V:800x600p-60
V:640x480p-60
U:720x400p-70
D:1280x1024p-60
xrand info:
root@ls1021atwr:~# xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 720 x 400, current 720 x 400, maximum 720 x 400
default connected 720x400+0+0 0mm x 0mm
720x400 70.0*
xrandr, adding new mode and applying with xrand:
root@ls1021atwr:~# cvt 640 480 60 -v
# 640x480 59.38 Hz (CVT 0.31M3) hsync: 29.69 kHz; pclk: 23.75 MHz
Modeline "640x480_60.00" 23.75 640 664 720 800 480 483 487 500 -hsync +vsync
root@ls1021atwr:~# xrandr --newmode "640x480_60.00" 23.75 640 664 720 800 480 483 487 500 -hsync +vsync
xrandr: Failed to get size of gamma for output default
root@ls1021atwr:~# xrandr --addmode default 640x480_60.00
xrandr: Failed to get size of gamma for output default
root@ls1021atwr:~# xrandr --output default --mode 640x480_60.00
xrandr: Failed to get size of gamma for output default
xrandr: screen cannot be larger than 720x400 (desired size 640x480)
root@ls1021atwr:~# xrandr --output default --mode 640x480_60.00
xrandr: Failed to get size of gamma for output default
xrandr: Configure crtc 0 failed
Also other resolutions were tested. First setting fb mode directly (/sys/class/graphics/fb0/mode) does not help either.
Any hints?
Thank you, Klemen
Solved! Go to Solution.
Setting FB DCU buffer to higher value solves segmentation fault. This is done by setting bootarg "res=" to desired value.
No need for xorg.conf if bootarg is set.
Adding new modes to xorg.conf does the trick.
/usr/share/X11/xorg.conf.d/10-monitor.conf
Section "Monitor"
Identifier "Monitor0"
Modeline "640x480_60.00" 23.75 640 664 720 800 480 483 487 500 -hsync +vsync
Modeline "800x600_60.00" 38.25 800 832 912 1024 600 603 607 624 -hsync +vsync
Modeline "1024x768_60.00" 63.50 1024 1072 1176 1328 768 771 775 798 -hsync +vsync
Modeline "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
EndSection
Section "Device"
Identifier "Device0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "640x480_60.00"
EndSubSection
EndSection
... but only for 640x480. Using any other mode, Xserver crashes, Segmentation fault
....
[2632130.375] (II) FBDEV(0): using default device
[2632130.381] (**) FBDEV(0): Depth 16, (--) framebuffer bpp 16
[2632130.381] (==) FBDEV(0): RGB weight 565
[2632130.381] (==) FBDEV(0): Default visual is TrueColor
[2632130.381] (==) FBDEV(0): Using gamma correction (1.0, 1.0, 1.0)
[2632130.381] (II) FBDEV(0): hardware: (video memory: 843kB)
[2632130.381] (II) FBDEV(0): checking modes against framebuffer device...
[2632130.381] (II) FBDEV(0): mode "800x600_60.00" ok
[2632130.381] (II) FBDEV(0): checking modes against monitor...
[2632130.381] (--) FBDEV(0): Virtual size is 800x600 (pitch 800)
[2632130.381] (**) FBDEV(0): Mode "800x600_60.00": 38.2 MHz (scaled from 0.0 MHz), 37.4 kHz, 59.9 Hz
[2632130.381] (II) FBDEV(0): Modeline "800x600_60.00"x0.0 38.25 800 832 912 1024 600 603 607 624 -hsync +vsync (37.4 kHz)
[2632130.381] (==) FBDEV(0): DPI set to (96, 96)
[2632130.381] (II) Loading sub module "fb"
[2632130.381] (II) LoadModule: "fb"
[2632130.382] (II) Loading /usr/lib/xorg/modules/libfb.so
....
[2632130.937] (EE)
[2632130.938] (EE) Backtrace:
[2632130.938] (EE)
[2632130.938] (EE) Segmentation fault at address 0x76a42000
[2632130.938]
Fatal server error:
[2632130.938] Caught signal 11 (Segmentation fault). Server aborting
[2632130.938]
[2632130.938] (EE)
.....
Br, Klemen
Setting FB DCU buffer to higher value solves segmentation fault. This is done by setting bootarg "res=" to desired value.
No need for xorg.conf if bootarg is set.