summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util-linux/fbset.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/util-linux/fbset.c b/util-linux/fbset.c
index 196c2aa..e9aacce 100644
--- a/util-linux/fbset.c
+++ b/util-linux/fbset.c
@@ -271,7 +271,7 @@ static int read_mode_db(struct fb_var_screeninfo *base, const char *fn,
}
p = token[1];
i = index_in_strings(
- "geometry\0timings\0interlaced\0double\0vsync\0hsync\0csync\0extsync\0",
+ "geometry\0timings\0interlaced\0double\0vsync\0hsync\0csync\0extsync\0rgba\0",
token[0]);
switch (i) {
case 0:
@@ -342,6 +342,30 @@ static int read_mode_db(struct fb_var_screeninfo *base, const char *fn,
ss(&base->sync, FB_SYNC_EXT, p, "false");
//bb_info_msg("EXTSYNC[%s]", p);
break;
+ case 8: {
+ int red_offset, red_length;
+ int green_offset, green_length;
+ int blue_offset, blue_length;
+ int transp_offset, transp_length;
+
+ sscanf(p, "%d/%d,%d/%d,%d/%d,%d/%d",
+ &red_offset, &red_length,
+ &green_offset, &green_length,
+ &blue_offset, &blue_length,
+ &transp_offset, &transp_length);
+ base->red.offset = red_offset;
+ base->red.length = red_length;
+ base->red.msb_right = 0;
+ base->green.offset = green_offset;
+ base->green.length = green_length;
+ base->green.msb_right = 0;
+ base->blue.offset = blue_offset;
+ base->blue.length = blue_length;
+ base->blue.msb_right = 0;
+ base->transp.offset = transp_offset;
+ base->transp.length = transp_length;
+ base->transp.msb_right = 0;
+ }
}
}
return 0;