diff options
Diffstat (limited to 'firmware/target/hosted')
-rw-r--r-- | firmware/target/hosted/lcd-linuxfb.c | 24 | ||||
-rw-r--r-- | firmware/target/hosted/samsungypr/lcd-ypr.c | 14 |
2 files changed, 20 insertions, 18 deletions
diff --git a/firmware/target/hosted/lcd-linuxfb.c b/firmware/target/hosted/lcd-linuxfb.c index 14c8c30f89..5dda5cf1cc 100644 --- a/firmware/target/hosted/lcd-linuxfb.c +++ b/firmware/target/hosted/lcd-linuxfb.c | |||
@@ -59,14 +59,21 @@ void lcd_init_device(void) | |||
59 | panicf("Cannot read framebuffer fixed information"); | 59 | panicf("Cannot read framebuffer fixed information"); |
60 | } | 60 | } |
61 | 61 | ||
62 | #if 0 | 62 | if(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0) |
63 | /* check resolution and framebuffer size */ | ||
64 | if(vinfo.xres != LCD_WIDTH || vinfo.yres != LCD_HEIGHT || vinfo.bits_per_pixel != LCD_DEPTH) | ||
65 | { | 63 | { |
66 | panicf("Unexpected framebuffer resolution: %dx%dx%d\n", vinfo.xres, | 64 | panicf("Cannot read framebuffer variable information"); |
67 | vinfo.yres, vinfo.bits_per_pixel); | 65 | } |
66 | |||
67 | /* Make sure we match our desired bitdepth */ | ||
68 | if (vinfo.bits_per_pixel != LCD_DEPTH || vinfo.xres != LCD_WIDTH || vinfo.yres != LCD_HEIGHT) { | ||
69 | vinfo.bits_per_pixel = LCD_DEPTH; | ||
70 | vinfo.xres = LCD_WIDTH; | ||
71 | vinfo.yres = LCD_HEIGHT; | ||
72 | if (ioctl(fd, FBIOPUT_VSCREENINFO, &vinfo)) { | ||
73 | panicf("Cannot set framebuffer to %dx%dx%d", | ||
74 | vinfo.xres, vinfo.yres, vinfo.bits_per_pixel); | ||
75 | } | ||
68 | } | 76 | } |
69 | #endif | ||
70 | /* Note: we use a framebuffer size of width*height*bbp. We cannot trust the | 77 | /* Note: we use a framebuffer size of width*height*bbp. We cannot trust the |
71 | * values returned by the driver for line_length */ | 78 | * values returned by the driver for line_length */ |
72 | 79 | ||
@@ -77,11 +84,6 @@ void lcd_init_device(void) | |||
77 | panicf("Cannot map framebuffer"); | 84 | panicf("Cannot map framebuffer"); |
78 | } | 85 | } |
79 | 86 | ||
80 | if(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0) | ||
81 | { | ||
82 | panicf("Cannot read framebuffer variable information"); | ||
83 | } | ||
84 | |||
85 | memset(framebuffer, 0, finfo.smem_len); | 87 | memset(framebuffer, 0, finfo.smem_len); |
86 | 88 | ||
87 | #ifdef HAVE_LCD_ENABLE | 89 | #ifdef HAVE_LCD_ENABLE |
diff --git a/firmware/target/hosted/samsungypr/lcd-ypr.c b/firmware/target/hosted/samsungypr/lcd-ypr.c index b8db2eedd1..035abaeba7 100644 --- a/firmware/target/hosted/samsungypr/lcd-ypr.c +++ b/firmware/target/hosted/samsungypr/lcd-ypr.c | |||
@@ -66,17 +66,17 @@ void lcd_init_device(void) | |||
66 | exit(2); | 66 | exit(2); |
67 | } | 67 | } |
68 | 68 | ||
69 | /* Now we get the settable settings, and we set 16 bit bpp */ | 69 | /* Now we get the settable settings */ |
70 | if (ioctl(dev_fd, FBIOGET_VSCREENINFO, &vinfo) == -1) { | 70 | if (ioctl(dev_fd, FBIOGET_VSCREENINFO, &vinfo) == -1) { |
71 | perror("Error reading variable information"); | 71 | perror("Error reading variable information"); |
72 | exit(3); | 72 | exit(3); |
73 | } | 73 | } |
74 | 74 | ||
75 | vinfo.bits_per_pixel = LCD_DEPTH; | 75 | vinfo.bits_per_pixel = LCD_DEPTH; /* Explicitly set our desired depth */ |
76 | 76 | ||
77 | if (ioctl(dev_fd, FBIOPUT_VSCREENINFO, &vinfo)) { | 77 | if (ioctl(dev_fd, FBIOPUT_VSCREENINFO, &vinfo)) { |
78 | perror("fbset(ioctl)"); | 78 | perror("fbset(ioctl)"); |
79 | exit(4); | 79 | exit(4); |
80 | } | 80 | } |
81 | 81 | ||
82 | printf("%dx%d, %dbpp\n", vinfo.xres, vinfo.yres, vinfo.bits_per_pixel); | 82 | printf("%dx%d, %dbpp\n", vinfo.xres, vinfo.yres, vinfo.bits_per_pixel); |
@@ -84,17 +84,17 @@ void lcd_init_device(void) | |||
84 | /* Figure out the size of the screen in bytes */ | 84 | /* Figure out the size of the screen in bytes */ |
85 | screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8; | 85 | screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8; |
86 | if (screensize != FRAMEBUFFER_SIZE) { | 86 | if (screensize != FRAMEBUFFER_SIZE) { |
87 | exit(4); | ||
88 | perror("Display and framebuffer mismatch!\n"); | 87 | perror("Display and framebuffer mismatch!\n"); |
88 | exit(5); | ||
89 | } | 89 | } |
90 | 90 | ||
91 | /* Map the device to memory */ | 91 | /* Map the device to memory */ |
92 | dev_fb = mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, dev_fd, 0); | 92 | dev_fb = mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, dev_fd, 0); |
93 | if ((int)dev_fb == -1) { | 93 | if ((int)dev_fb == -1) { |
94 | perror("Error: failed to map framebuffer device to memory"); | 94 | perror("Error: failed to map framebuffer device to memory"); |
95 | exit(4); | 95 | exit(6); |
96 | } | 96 | } |
97 | printf("The framebuffer device was mapped to memory successfully.\n"); | 97 | printf("Framebuffer device successfully mapped into memory.\n"); |
98 | 98 | ||
99 | /* Be sure to turn on display at startup */ | 99 | /* Be sure to turn on display at startup */ |
100 | ioctl(dev_fd, FBIOBLANK, VESA_NO_BLANKING); | 100 | ioctl(dev_fd, FBIOBLANK, VESA_NO_BLANKING); |