Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 83588
b: refs/heads/master
c: 91c4313
h: refs/heads/master
v: v3
  • Loading branch information
Thomas Pfaff authored and Linus Torvalds committed Feb 6, 2008
1 parent 0bc59a3 commit ec21811
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e8973637bd49de225130f9c04ceb388d48969d98
refs/heads/master: 91c4313206e4409871e2ddd13c29508afe1c8834
4 changes: 2 additions & 2 deletions trunk/drivers/video/console/bitblit.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ static void bit_clear(struct vc_data *vc, struct fb_info *info, int sy,
int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
struct fb_fillrect region;

region.color = attr_bgcol_ec(bgshift, vc);
region.color = attr_bgcol_ec(bgshift, vc, info);
region.dx = sx * vc->vc_font.width;
region.dy = sy * vc->vc_font.height;
region.width = width * vc->vc_font.width;
Expand Down Expand Up @@ -213,7 +213,7 @@ static void bit_clear_margins(struct vc_data *vc, struct fb_info *info,
unsigned int bs = info->var.yres - bh;
struct fb_fillrect region;

region.color = attr_bgcol_ec(bgshift, vc);
region.color = attr_bgcol_ec(bgshift, vc, info);
region.rop = ROP_COPY;

if (rw && !bottom_only) {
Expand Down
5 changes: 1 addition & 4 deletions trunk/drivers/video/console/fbcon.c
Original file line number Diff line number Diff line change
Expand Up @@ -334,10 +334,7 @@ static inline int get_color(struct vc_data *vc, struct fb_info *info,
switch (depth) {
case 1:
{
int col = ~(0xfff << (max(info->var.green.length,
max(info->var.red.length,
info->var.blue.length)))) & 0xff;

int col = mono_col(info);
/* 0 or 1 */
int fg = (info->fix.visual != FB_VISUAL_MONO01) ? col : 0;
int bg = (info->fix.visual != FB_VISUAL_MONO01) ? 0 : col;
Expand Down
47 changes: 43 additions & 4 deletions trunk/drivers/video/console/fbcon.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,6 @@ struct fbcon_ops {
(((s) >> (fgshift)) & 0x0f)
#define attr_bgcol(bgshift,s) \
(((s) >> (bgshift)) & 0x0f)
#define attr_bgcol_ec(bgshift,vc) \
((vc) ? (((vc)->vc_video_erase_char >> (bgshift)) & 0x0f) : 0)
#define attr_fgcol_ec(fgshift,vc) \
((vc) ? (((vc)->vc_video_erase_char >> (fgshift)) & 0x0f) : 0)

/* Monochrome */
#define attr_bold(s) \
Expand All @@ -108,6 +104,49 @@ struct fbcon_ops {
#define attr_blink(s) \
((s) & 0x8000)

#define mono_col(info) \
(~(0xfff << (max((info)->var.green.length, \
max((info)->var.red.length, \
(info)->var.blue.length)))) & 0xff)

static inline int attr_col_ec(int shift, struct vc_data *vc,
struct fb_info *info, int is_fg)
{
int is_mono01;
int col;
int fg;
int bg;

if (!vc)
return 0;

if (vc->vc_can_do_color)
return is_fg ? attr_fgcol(shift,vc->vc_video_erase_char)
: attr_bgcol(shift,vc->vc_video_erase_char);

if (!info)
return 0;

col = mono_col(info);
is_mono01 = info->fix.visual == FB_VISUAL_MONO01;

if (attr_reverse(vc->vc_video_erase_char)) {
fg = is_mono01 ? col : 0;
bg = is_mono01 ? 0 : col;
}
else {
fg = is_mono01 ? 0 : col;
bg = is_mono01 ? col : 0;
}

return is_fg ? fg : bg;
}

#define attr_bgcol_ec(bgshift,vc,info) \
attr_col_ec(bgshift,vc,info,0);
#define attr_fgcol_ec(fgshift,vc,info) \
attr_col_ec(fgshift,vc,info,1);

/* Font */
#define REFCOUNT(fd) (((int *)(fd))[-1])
#define FNTSIZE(fd) (((int *)(fd))[-2])
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/video/console/fbcon_ccw.c
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ static void ccw_clear(struct vc_data *vc, struct fb_info *info, int sy,
int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
u32 vyres = GETVYRES(ops->p->scrollmode, info);

region.color = attr_bgcol_ec(bgshift,vc);
region.color = attr_bgcol_ec(bgshift,vc,info);
region.dx = sy * vc->vc_font.height;
region.dy = vyres - ((sx + width) * vc->vc_font.width);
region.height = width * vc->vc_font.width;
Expand Down Expand Up @@ -198,7 +198,7 @@ static void ccw_clear_margins(struct vc_data *vc, struct fb_info *info,
struct fb_fillrect region;
int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;

region.color = attr_bgcol_ec(bgshift,vc);
region.color = attr_bgcol_ec(bgshift,vc,info);
region.rop = ROP_COPY;

if (rw && !bottom_only) {
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/video/console/fbcon_cw.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ static void cw_clear(struct vc_data *vc, struct fb_info *info, int sy,
int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
u32 vxres = GETVXRES(ops->p->scrollmode, info);

region.color = attr_bgcol_ec(bgshift,vc);
region.color = attr_bgcol_ec(bgshift,vc,info);
region.dx = vxres - ((sy + height) * vc->vc_font.height);
region.dy = sx * vc->vc_font.width;
region.height = width * vc->vc_font.width;
Expand Down Expand Up @@ -182,7 +182,7 @@ static void cw_clear_margins(struct vc_data *vc, struct fb_info *info,
struct fb_fillrect region;
int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;

region.color = attr_bgcol_ec(bgshift,vc);
region.color = attr_bgcol_ec(bgshift,vc,info);
region.rop = ROP_COPY;

if (rw && !bottom_only) {
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/video/console/fbcon_ud.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ static void ud_clear(struct vc_data *vc, struct fb_info *info, int sy,
u32 vyres = GETVYRES(ops->p->scrollmode, info);
u32 vxres = GETVXRES(ops->p->scrollmode, info);

region.color = attr_bgcol_ec(bgshift,vc);
region.color = attr_bgcol_ec(bgshift,vc,info);
region.dy = vyres - ((sy + height) * vc->vc_font.height);
region.dx = vxres - ((sx + width) * vc->vc_font.width);
region.width = width * vc->vc_font.width;
Expand Down Expand Up @@ -228,7 +228,7 @@ static void ud_clear_margins(struct vc_data *vc, struct fb_info *info,
struct fb_fillrect region;
int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;

region.color = attr_bgcol_ec(bgshift,vc);
region.color = attr_bgcol_ec(bgshift,vc,info);
region.rop = ROP_COPY;

if (rw && !bottom_only) {
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/video/console/tileblit.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ static void tile_clear(struct vc_data *vc, struct fb_info *info, int sy,

rect.index = vc->vc_video_erase_char &
((vc->vc_hi_font_mask) ? 0x1ff : 0xff);
rect.fg = attr_fgcol_ec(fgshift, vc);
rect.bg = attr_bgcol_ec(bgshift, vc);
rect.fg = attr_fgcol_ec(fgshift, vc, info);
rect.bg = attr_bgcol_ec(bgshift, vc, info);
rect.sx = sx;
rect.sy = sy;
rect.width = width;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/video/pmag-aa-fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ static int aafbcon_set_font(struct display *disp, int width, int height)
{
struct aafb_info *info = (struct aafb_info *)disp->fb_info;
struct aafb_cursor *c = &info->cursor;
u8 fgc = ~attr_bgcol_ec(disp, disp->conp);
u8 fgc = ~attr_bgcol_ec(disp, disp->conp, &info->info);

if (width > 64 || height > 64 || width < 0 || height < 0)
return -EINVAL;
Expand Down

0 comments on commit ec21811

Please sign in to comment.