diff options
Diffstat (limited to 'firmware/target/hosted/lcd-linuxfb.c')
-rw-r--r-- | firmware/target/hosted/lcd-linuxfb.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/firmware/target/hosted/lcd-linuxfb.c b/firmware/target/hosted/lcd-linuxfb.c index 6a57be9e40..8edb82757f 100644 --- a/firmware/target/hosted/lcd-linuxfb.c +++ b/firmware/target/hosted/lcd-linuxfb.c | |||
@@ -53,15 +53,15 @@ void lcd_init_device(void) | |||
53 | panicf("Cannot open framebuffer: %s\n", fb_dev); | 53 | panicf("Cannot open framebuffer: %s\n", fb_dev); |
54 | } | 54 | } |
55 | 55 | ||
56 | /* get fixed and variable information */ | 56 | if (fcntl( fd, F_SETFD, FD_CLOEXEC ) < 0) |
57 | if(ioctl(fd, FBIOGET_FSCREENINFO, &finfo) < 0) | ||
58 | { | 57 | { |
59 | panicf("Cannot read framebuffer fixed information"); | 58 | panicf("Can't set CLOEXEC"); |
60 | } | 59 | } |
61 | 60 | ||
62 | if(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0) | 61 | /* get fixed and variable information */ |
62 | if(ioctl(fd, FBIOGET_FSCREENINFO, &finfo) < 0) | ||
63 | { | 63 | { |
64 | panicf("Cannot read framebuffer variable information"); | 64 | panicf("Cannot read framebuffer fixed information"); |
65 | } | 65 | } |
66 | 66 | ||
67 | #if 0 | 67 | #if 0 |
@@ -76,12 +76,17 @@ void lcd_init_device(void) | |||
76 | * values returned by the driver for line_length */ | 76 | * values returned by the driver for line_length */ |
77 | 77 | ||
78 | /* map framebuffer */ | 78 | /* map framebuffer */ |
79 | framebuffer = mmap(0, FRAMEBUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); | 79 | framebuffer = mmap(NULL, FRAMEBUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); |
80 | if((void *)framebuffer == MAP_FAILED) | 80 | if((void *)framebuffer == MAP_FAILED) |
81 | { | 81 | { |
82 | panicf("Cannot map framebuffer"); | 82 | panicf("Cannot map framebuffer"); |
83 | } | 83 | } |
84 | 84 | ||
85 | if(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0) | ||
86 | { | ||
87 | panicf("Cannot read framebuffer variable information"); | ||
88 | } | ||
89 | |||
85 | memset(framebuffer, 0, finfo.smem_len); | 90 | memset(framebuffer, 0, finfo.smem_len); |
86 | 91 | ||
87 | #ifdef HAVE_LCD_ENABLE | 92 | #ifdef HAVE_LCD_ENABLE |
@@ -104,7 +109,11 @@ void lcd_enable(bool on) | |||
104 | { | 109 | { |
105 | if (fd < 0) return; | 110 | if (fd < 0) return; |
106 | 111 | ||
112 | if (lcd_active() == on) | ||
113 | return; | ||
114 | |||
107 | lcd_set_active(on); | 115 | lcd_set_active(on); |
116 | |||
108 | if (on) | 117 | if (on) |
109 | { | 118 | { |
110 | send_event(LCD_EVENT_ACTIVATION, NULL); | 119 | send_event(LCD_EVENT_ACTIVATION, NULL); |