Error while rotating LCD fb - detected fb_set_par error, error code: -22
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
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_parerror, 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
detectedfb_set_parerror, error code: -22
/ # echo "1" >/sys/class/graphics/fb0/rotate
/ # echo "2" >/sys/class/graphics/fb0/rotate
detectedfb_set_parerror, 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.
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_parerror, 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
detectedfb_set_parerror, error code: -22
/ # echo "1" >/sys/class/graphics/fb0/rotate
/ # echo "2" >/sys/class/graphics/fb0/rotate
detectedfb_set_parerror, error code: -22
/ # echo "3" >/sys/class/graphics/fb0/rotate
/ # echo "1" >/sys/class/graphics/fb0/rotateQuoted 5 lines
Can some one help me in solving this issue.
Regards,
HM ThalibFor 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