X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fvideo%2Fconsole%2Fvgacon.c;h=23e1e7e5da9fc2fbba96dde9c7cbb1fcd1d89013;hb=28169de0a7d33c5a792a8a4be7f519c637099cea;hp=0e91d6b577e44c06abbbfdea8100cfb414206ac4;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index 0e91d6b57..23e1e7e5d 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c @@ -77,6 +77,7 @@ static void vgacon_deinit(struct vc_data *c); static void vgacon_cursor(struct vc_data *c, int mode); static int vgacon_switch(struct vc_data *c); static int vgacon_blank(struct vc_data *c, int blank, int mode_switch); +static int vgacon_font_op(struct vc_data *c, struct console_font_op *op); static int vgacon_set_palette(struct vc_data *vc, unsigned char *table); static int vgacon_scrolldelta(struct vc_data *c, int lines); static int vgacon_set_origin(struct vc_data *c); @@ -907,43 +908,38 @@ static int vgacon_adjust_height(struct vc_data *vc, unsigned fontheight) return 0; } -static int vgacon_font_set(struct vc_data *c, struct console_font *font, unsigned flags) +static int vgacon_font_op(struct vc_data *c, struct console_font_op *op) { - unsigned charcount = font->charcount; int rc; if (vga_video_type < VIDEO_TYPE_EGAM) return -EINVAL; - if (font->width != 8 || (charcount != 256 && charcount != 512)) - return -EINVAL; - - rc = vgacon_do_font_op(&state, font->data, 1, charcount == 512); - if (rc) - return rc; - - if (!(flags & KD_FONT_FLAG_DONT_RECALC)) - rc = vgacon_adjust_height(c, font->height); + if (op->op == KD_FONT_OP_SET) { + if (op->width != 8 + || (op->charcount != 256 && op->charcount != 512)) + return -EINVAL; + rc = vgacon_do_font_op(&state, op->data, 1, op->charcount == 512); + if (!rc && !(op->flags & KD_FONT_FLAG_DONT_RECALC)) + rc = vgacon_adjust_height(c, op->height); + } else if (op->op == KD_FONT_OP_GET) { + op->width = 8; + op->height = c->vc_font.height; + op->charcount = vga_512_chars ? 512 : 256; + if (!op->data) + return 0; + rc = vgacon_do_font_op(&state, op->data, 0, 0); + } else + rc = -ENOSYS; return rc; } -static int vgacon_font_get(struct vc_data *c, struct console_font *font) -{ - if (vga_video_type < VIDEO_TYPE_EGAM) - return -EINVAL; - - font->width = 8; - font->height = c->vc_font.height; - font->charcount = vga_512_chars ? 512 : 256; - if (!font->data) - return 0; - return vgacon_do_font_op(&state, font->data, 0, 0); -} - #else -#define vgacon_font_set NULL -#define vgacon_font_get NULL +static int vgacon_font_op(struct vc_data *c, struct console_font_op *op) +{ + return -ENOSYS; +} #endif @@ -1083,8 +1079,7 @@ const struct consw vga_con = { .con_bmove = DUMMY, .con_switch = vgacon_switch, .con_blank = vgacon_blank, - .con_font_set = vgacon_font_set, - .con_font_get = vgacon_font_get, + .con_font_op = vgacon_font_op, .con_set_palette = vgacon_set_palette, .con_scrolldelta = vgacon_scrolldelta, .con_set_origin = vgacon_set_origin,