Skip to contentSkip to conversation

Error while rotating LCD fb - detected fb_set_par error, error code: -22

DISCUSSION Mohamed Thalib H 2 participants 3 messages May 27, 2011 – May 30, 2011

lore
Share & tools
lore
#0 lore raw

Hi,

I am using a omap3530 <http://focus-webapps.ti.com/general/docs/sitesearch/searchdevice.tsp?partNumber=omap3530> based board. I am trying to rotate the LCD using*/sys/class/graphics/fb0/rotate*. The rotation works only for 0 degree and 270 degrees.

When trying to rotate for 90 or 180 degree it give error message *detected fb_set_par error, error code: -22 *and does not rotate.

The log output is below.*
*

/ # cat /proc/cmdline
omapdss.def_disp=lcd30 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3
rootwait lpj=1949696 omapfb.rotate=1 omapfb.rotate_type=1
omap_vout.vid1_static_vrf
b_alloc=y omapfb.vrfb=y
/ # echo "0" > /sys/class/graphics/fb0/rotate
detected fb_set_par error, error code: -22
/ # echo "1" > /sys/class/graphics/fb0/rotate
/ # echo "2" > /sys/class/graphics/fb0/rotate
detected fb_set_par error, error code: -22
/ # echo "3" > /sys/class/graphics/fb0/rotate
/ # echo "1" > /sys/class/graphics/fb0/rotate

Can some one help me in solving this issue.

Regards,
HM Thalib

#1 lore raw
Quoted 22 lines · Mohamed Thalib H

Hi,

I am using a omap3530 <http://focus-webapps.ti.com/general/docs/sitesearch/searchdevice.tsp?partNumber=omap3530> based board. I am trying to rotate the LCD using*/sys/class/graphics/fb0/rotate*. The rotation works only for 0 degree and 270 degrees.

When trying to rotate for 90 or 180 degree it give error message *detected fb_set_par error, error code: -22 *and does not rotate.

The log output is below.*
*

/ # cat /proc/cmdline
omapdss.def_disp=lcd30 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3
rootwait lpj=1949696 omapfb.rotate=1 omapfb.rotate_type=1
omap_vout.vid1_static_vrf
b_alloc=y omapfb.vrfb=y
/ # echo "0" > /sys/class/graphics/fb0/rotate
detected fb_set_par error, error code: -22
/ # echo "1" > /sys/class/graphics/fb0/rotate
/ # echo "2" > /sys/class/graphics/fb0/rotate
detected fb_set_par error, error code: -22
/ # echo "3" > /sys/class/graphics/fb0/rotate
/ # echo "1" > /sys/class/graphics/fb0/rotate

Quoted 5 lines

Can some one help me in solving this issue.

Regards,
HM Thalib

For you info I am using 2.6.34 kernel. LCD size is 240x480

While tracing though the source code I have found out that in file *drivers/video/omap2/dss/overlay.c *function *dss_check_overlay() *it is checking if *dw < info->pos_x + outw *which is *(240 < 0 + 400)*

that is if my overlay width is smaller than screen size, if so return error.

Have any one faced the same scenario. If I am doing something wrong, Please let me know the correct steps to rotate the screen.

#2 lore raw
Quoted 41 lines · Mohamed Thalib H
Quoted 28 lines · Mohamed Thalib H

Hi,

I am using a omap3530
<http://focus-webapps.ti.com/general/docs/sitesearch/searchdevice.tsp?partNumber=omap3530>
based board. I am trying to rotate the LCD using*/sys/class/graphics/fb0/rotate*. The rotation works only for 0 degree and 270 degrees.

When trying to rotate for 90 or 180 degree it give error message *detected fb_set_par error, error code: -22 *and does not rotate.

The log output is below.*
*

/ # cat /proc/cmdline
omapdss.def_disp=lcd30 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3
rootwait lpj=1949696 omapfb.rotate=1 omapfb.rotate_type=1
omap_vout.vid1_static_vrf
b_alloc=y omapfb.vrfb=y
/ # echo "0" > /sys/class/graphics/fb0/rotate
detected fb_set_par error, error code: -22
/ # echo "1" > /sys/class/graphics/fb0/rotate
/ # echo "2" > /sys/class/graphics/fb0/rotate
detected fb_set_par error, error code: -22
/ # echo "3" > /sys/class/graphics/fb0/rotate
/ # echo "1" > /sys/class/graphics/fb0/rotate

Quoted 5 lines

Can some one help me in solving this issue.

Regards,
HM Thalib

For you info I am using 2.6.34 kernel. LCD size is 240x480

While tracing though the source code I have found out that in file *drivers/video/omap2/dss/overlay.c *function *dss_check_overlay() *it is checking if *dw < info->pos_x + outw *which is *(240 < 0 + 400)*

Quoted 5 lines

that is if my overlay width is smaller than screen size, if so return error.

Have any one faced the same scenario. If I am doing something wrong, Please let me know the correct steps to rotate the screen.

The driver does not resize the framebuffer for you. You need to resize and redraw it.

It's been a while since I used rotation, but something like this should work:

- disable the overlay
- resize the framebuffer
- resize the overlay (could be done automatically in the previous step)
- set rotation
- enable overlay

For testing purposes you may also want to try a square framebuffer (240x240), in which case you can rotate it freely as it always fits in the screen.

Also, you're using quite an old kernel. I suggest using newer, if possible.

Tomi