projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] vgacon: Workaround for resize bug in some chipsets
[powerpc.git]
/
drivers
/
video
/
console
/
fbcon_rotate.h
diff --git
a/drivers/video/console/fbcon_rotate.h
b/drivers/video/console/fbcon_rotate.h
index
90c6720
..
1b8f92f
100644
(file)
--- a/
drivers/video/console/fbcon_rotate.h
+++ b/
drivers/video/console/fbcon_rotate.h
@@
-21,21
+21,13
@@
(s == SCROLL_REDRAW || s == SCROLL_MOVE || !(i)->fix.xpanstep) ? \
(i)->var.xres : (i)->var.xres_virtual; })
(s == SCROLL_REDRAW || s == SCROLL_MOVE || !(i)->fix.xpanstep) ? \
(i)->var.xres : (i)->var.xres_virtual; })
-/*
- * The bitmap is always big endian
- */
-#if defined(__LITTLE_ENDIAN)
-#define FBCON_BIT(b) (7 - (b))
-#else
-#define FBCON_BIT(b) (b)
-#endif
static inline int pattern_test_bit(u32 x, u32 y, u32 pitch, const char *pat)
{
u32 tmp = (y * pitch) + x, index = tmp / 8, bit = tmp % 8;
pat +=index;
static inline int pattern_test_bit(u32 x, u32 y, u32 pitch, const char *pat)
{
u32 tmp = (y * pitch) + x, index = tmp / 8, bit = tmp % 8;
pat +=index;
- return (
test_bit(FBCON_BIT(bit), (void *)pat)
);
+ return (
*pat) & (0x80 >> bit
);
}
static inline void pattern_set_bit(u32 x, u32 y, u32 pitch, char *pat)
}
static inline void pattern_set_bit(u32 x, u32 y, u32 pitch, char *pat)
@@
-43,13
+35,14
@@
static inline void pattern_set_bit(u32 x, u32 y, u32 pitch, char *pat)
u32 tmp = (y * pitch) + x, index = tmp / 8, bit = tmp % 8;
pat += index;
u32 tmp = (y * pitch) + x, index = tmp / 8, bit = tmp % 8;
pat += index;
- set_bit(FBCON_BIT(bit), (void *)pat);
+
+ (*pat) |= 0x80 >> bit;
}
static inline void rotate_ud(const char *in, char *out, u32 width, u32 height)
{
int i, j;
}
static inline void rotate_ud(const char *in, char *out, u32 width, u32 height)
{
int i, j;
- int shift =
width % 8
;
+ int shift =
(8 - (width % 8)) & 7
;
width = (width + 7) & ~7;
width = (width + 7) & ~7;
@@
-85,7
+78,7
@@
static inline void rotate_cw(const char *in, char *out, u32 width, u32 height)
static inline void rotate_ccw(const char *in, char *out, u32 width, u32 height)
{
int i, j, h = height, w = width;
static inline void rotate_ccw(const char *in, char *out, u32 width, u32 height)
{
int i, j, h = height, w = width;
- int shift =
width % 8
;
+ int shift =
(8 - (width % 8)) & 7
;
width = (width + 7) & ~7;
height = (height + 7) & ~7;
width = (width + 7) & ~7;
height = (height + 7) & ~7;