f6eaae4f |
1 | #include <stdio.h> |
2 | #include <sys/types.h> |
3 | #include <sys/stat.h> |
4 | #include <fcntl.h> |
5 | #include <unistd.h> |
6 | #include <sys/ioctl.h> |
7 | #include <linux/fb.h> |
c66f49e6 |
8 | #include <linux/omapfb.h> |
f6eaae4f |
9 | #include <linux/kd.h> |
10 | |
11 | int main() |
12 | { |
13 | struct fb_var_screeninfo fbvar; |
24cf9d99 |
14 | struct omapfb_plane_info pi; |
15 | struct omapfb_mem_info mi; |
f6eaae4f |
16 | int ret, fbdev, kbdfd; |
f6eaae4f |
17 | |
18 | fbdev = open("/dev/fb0", O_RDWR); |
19 | if (fbdev == -1) { |
c66f49e6 |
20 | perror("open fb0"); |
21 | goto end_fb0; |
f6eaae4f |
22 | } |
23 | |
24 | ret = ioctl(fbdev, FBIOGET_VSCREENINFO, &fbvar); |
25 | if (ret == -1) { |
26 | perror("FBIOGET_VSCREENINFO ioctl"); |
c66f49e6 |
27 | goto end_fb0; |
f6eaae4f |
28 | } |
29 | |
30 | if (fbvar.yoffset != 0) { |
31 | printf("fixing yoffset.. "); |
32 | fbvar.yoffset = 0; |
33 | ret = ioctl(fbdev, FBIOPAN_DISPLAY, &fbvar); |
34 | if (ret < 0) |
35 | perror("ioctl FBIOPAN_DISPLAY"); |
36 | else |
37 | printf("ok\n"); |
38 | } |
39 | |
c66f49e6 |
40 | end_fb0: |
41 | if (fbdev >= 0) |
42 | close(fbdev); |
43 | |
44 | fbdev = open("/dev/fb1", O_RDWR); |
45 | if (fbdev == -1) { |
46 | perror("open fb1"); |
47 | goto end_fb1; |
48 | } |
49 | |
24cf9d99 |
50 | ret = ioctl(fbdev, OMAPFB_QUERY_PLANE, &pi); |
51 | ret |= ioctl(fbdev, OMAPFB_QUERY_MEM, &mi); |
c66f49e6 |
52 | if (ret != 0) |
53 | perror("QUERY_*"); |
54 | |
55 | pi.enabled = 0; |
24cf9d99 |
56 | ret = ioctl(fbdev, OMAPFB_SETUP_PLANE, &pi); |
c66f49e6 |
57 | if (ret != 0) |
58 | perror("SETUP_PLANE"); |
59 | |
60 | mi.size = 0; |
24cf9d99 |
61 | ret = ioctl(fbdev, OMAPFB_SETUP_MEM, &mi); |
c66f49e6 |
62 | if (ret != 0) |
63 | perror("SETUP_MEM"); |
64 | |
65 | end_fb1: |
66 | if (fbdev >= 0) |
67 | close(fbdev); |
f6eaae4f |
68 | |
57e9b4d3 |
69 | kbdfd = open("/dev/tty", O_RDWR); |
70 | if (kbdfd == -1) { |
71 | perror("open /dev/tty"); |
72 | return 1; |
73 | } |
f6eaae4f |
74 | |
57e9b4d3 |
75 | if (ioctl(kbdfd, KDSETMODE, KD_TEXT) == -1) |
76 | perror("KDSETMODE KD_TEXT"); |
f6eaae4f |
77 | |
57e9b4d3 |
78 | close(kbdfd); |
f6eaae4f |
79 | |
80 | return 0; |
81 | } |