1 /**************************************************************************
3 xserver-xorg-video-emulfb
5 Copyright 2010 - 2011 Samsung Electronics co., Ltd. All Rights Reserved.
7 Contact: SooChan Lim <sc1.lim@samsung.com>
9 Permission is hereby granted, free of charge, to any person obtaining a
10 copy of this software and associated documentation files (the
11 "Software"), to deal in the Software without restriction, including
12 without limitation the rights to use, copy, modify, merge, publish,
13 distribute, sub license, and/or sell copies of the Software, and to
14 permit persons to whom the Software is furnished to do so, subject to
15 the following conditions:
17 The above copyright notice and this permission notice (including the
18 next paragraph) shall be included in all copies or substantial portions
21 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
24 IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
25 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 **************************************************************************/
32 #include "fbdev_util.h"
35 struct s3cfb_user_window
41 #define S3CFB_WIN_ON _IOW('F', 305, uint)
42 #define S3CFB_WIN_OFF _IOW('F', 306, uint)
43 #define S3CFB_WIN_POSITION _IOW('F', 203, struct s3cfb_user_window)
44 #define S3CFB_WIN_SET_PIXEL_ALPHA _IOW('F', 211, struct fb_var_screeninfo)
47 fbdevFbGetVarScreenInfo (int fd, struct fb_var_screeninfo *fbVarInfo)
51 return_val_if_fail (fd >= 0, FALSE);
52 return_val_if_fail (fbVarInfo != NULL, FALSE);
54 ret = ioctl (fd, FBIOGET_VSCREENINFO, (void*)fbVarInfo);
58 xf86DrvMsg (0, X_ERROR, "FBIOGET_VSCREENINFO failed.\n");
66 fbdevFbSetVarScreenInfo (int fd, struct fb_var_screeninfo *fbVarInfo)
70 return_val_if_fail (fd >= 0, FALSE);
71 return_val_if_fail (fbVarInfo != NULL, FALSE);
73 ret = ioctl (fd, FBIOPUT_VSCREENINFO, (void*)fbVarInfo);
77 xf86DrvMsg (0, X_ERROR, "FBIOPUT_VSCREENINFO failed.\n");
85 fbdevFbGetFixScreenInfo (int fd, struct fb_fix_screeninfo *fbFixInfo)
89 return_val_if_fail (fd >= 0, FALSE);
90 return_val_if_fail (fbFixInfo != NULL, FALSE);
92 ret = ioctl (fd, FBIOGET_FSCREENINFO, (void*)fbFixInfo);
96 xf86DrvMsg (0, X_ERROR, "FBIOGET_FSCREENINFO failed.\n");
104 fbdevFbSetWinPosition (int fd, int x, int y)
106 struct s3cfb_user_window pos;
109 return_val_if_fail (fd >= 0, FALSE);
114 ret = ioctl (fd, S3CFB_WIN_POSITION, &pos);
117 xf86DrvMsg (0, X_ERROR, "S3CFB_WIN_POSITION failed. pos(%d,%d)\n", x, y);
125 fbdevFbScreenAlphaInit (int fd)
127 struct fb_var_screeninfo var;
130 ret = ioctl (fd, FBIOGET_VSCREENINFO, &var);
133 xf86DrvMsg (0, X_ERROR, "failed to get fb_var\n");
137 if (var.bits_per_pixel != 32)
139 xf86DrvMsg (0, X_ERROR, "per pixel overlay alpha is supported with 32 bpp mode\n");
142 var.transp.length = 8;
143 var.activate = FB_ACTIVATE_FORCE;
144 ret = ioctl (fd, FBIOPUT_VSCREENINFO, &var);
147 xf86DrvMsg (0, X_ERROR, "failed to set fb_var\n");
155 fbdevFbScreenAlphaDeinit (int fd)
157 struct fb_var_screeninfo var;
160 ret = ioctl (fd, FBIOGET_VSCREENINFO, &var);
163 xf86DrvMsg (0, X_ERROR, "failed to get fb_var\n");
167 var.transp.length = 0;
168 ret = ioctl (fd, FBIOPUT_VSCREENINFO, &var);
171 xf86DrvMsg (0, X_ERROR, "failed to set fb_var\n");
178 #include <sys/utsname.h>
180 fbdevFbResetLCDModule()
188 ErrorF ("Fail get umane\n");
190 sprintf (rmmod, "/sbin/rmmod s3c_lcd");
191 sprintf (insmod, "/sbin/insmod /opt/driver/s3c_lcd.ko");
194 ErrorF ("%s failed.\n", rmmod);
196 ErrorF ("%s failed.\n", insmod);
202 fbdevFbActivate (int fd)
204 struct fb_var_screeninfo var;
207 ret = ioctl (fd, FBIOGET_VSCREENINFO, &var);
210 ErrorF ("failed to get fb_var\n");
214 var.activate = FB_ACTIVATE_FORCE;
216 ret = ioctl (fd, FBIOPUT_VSCREENINFO, &var);
219 ErrorF ("failed to set fb_var.activate\n");
223 ret = ioctl (fd, FBIOBLANK, FB_BLANK_UNBLANK);
226 ErrorF ("failed to set FBIOBLANK : FB_BLANK_UNBLANK\n");
235 fbdevFbDeActivate (int fd)
239 ret = ioctl (fd, FBIOBLANK, FB_BLANK_NORMAL);
242 ErrorF ("failed to set FBIOBLANK : FB_BLANK_NORMAL\n");
250 fbdevFbSetBase (int fd)
252 struct fb_var_screeninfo var;
255 ret = ioctl (fd, FBIOGET_VSCREENINFO, &var);
258 xf86DrvMsg (0, X_ERROR, "failed to get fb_var\n");
263 ret = ioctl (fd, FBIOPAN_DISPLAY,&var);
266 xf86DrvMsg (0, X_ERROR, "failed to set fb_var\n");
274 fbdevFbHWPanDisplay (int fd, int x, int y)
276 struct fb_var_screeninfo var;
279 ret = ioctl (fd, FBIOGET_VSCREENINFO, &var);
282 xf86DrvMsg (0, X_WARNING, "!!WARNING::%s::fail to get vscreen_info\n",
289 ret = ioctl (fd, FBIOPAN_DISPLAY, &var);
292 xf86DrvMsg (0, X_WARNING, "!!WARNING::%s::fail to pandisplay(xoff,%d)(yoff,%d)\n",