projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[x86] remove uses of magic macros for boot_params access
[cascardo/linux.git]
/
drivers
/
video
/
cfbimgblt.c
diff --git
a/drivers/video/cfbimgblt.c
b/drivers/video/cfbimgblt.c
index
8ba6152
..
f598907
100644
(file)
--- a/
drivers/video/cfbimgblt.c
+++ b/
drivers/video/cfbimgblt.c
@@
-29,11
+29,11
@@
* Also need to add code to deal with cards endians that are different than
* the native cpu endians. I also need to deal with MSB position in the word.
*/
* Also need to add code to deal with cards endians that are different than
* the native cpu endians. I also need to deal with MSB position in the word.
*/
-#include <linux/config.h>
#include <linux/module.h>
#include <linux/string.h>
#include <linux/fb.h>
#include <asm/types.h>
#include <linux/module.h>
#include <linux/string.h>
#include <linux/fb.h>
#include <asm/types.h>
+#include "fb_draw.h"
#define DEBUG
#define DEBUG
@@
-43,7
+43,7
@@
#define DPRINTK(fmt, args...)
#endif
#define DPRINTK(fmt, args...)
#endif
-static u32 cfb_tab8[] = {
+static
const
u32 cfb_tab8[] = {
#if defined(__BIG_ENDIAN)
0x00000000,0x000000ff,0x0000ff00,0x0000ffff,
0x00ff0000,0x00ff00ff,0x00ffff00,0x00ffffff,
#if defined(__BIG_ENDIAN)
0x00000000,0x000000ff,0x0000ff00,0x0000ffff,
0x00ff0000,0x00ff00ff,0x00ffff00,0x00ffffff,
@@
-59,7
+59,7
@@
static u32 cfb_tab8[] = {
#endif
};
#endif
};
-static u32 cfb_tab16[] = {
+static
const
u32 cfb_tab16[] = {
#if defined(__BIG_ENDIAN)
0x00000000, 0x0000ffff, 0xffff0000, 0xffffffff
#elif defined(__LITTLE_ENDIAN)
#if defined(__BIG_ENDIAN)
0x00000000, 0x0000ffff, 0xffff0000, 0xffffffff
#elif defined(__LITTLE_ENDIAN)
@@
-69,7
+69,7
@@
static u32 cfb_tab16[] = {
#endif
};
#endif
};
-static u32 cfb_tab32[] = {
+static
const
u32 cfb_tab32[] = {
0x00000000, 0xffffffff
};
0x00000000, 0xffffffff
};
@@
-88,6
+88,7
@@
static inline void color_imageblit(const struct fb_image *image,
u32 null_bits = 32 - bpp;
u32 *palette = (u32 *) p->pseudo_palette;
const u8 *src = image->data;
u32 null_bits = 32 - bpp;
u32 *palette = (u32 *) p->pseudo_palette;
const u8 *src = image->data;
+ u32 bswapmask = fb_compute_bswapmask(p);
dst2 = (u32 __iomem *) dst1;
for (i = image->height; i--; ) {
dst2 = (u32 __iomem *) dst1;
for (i = image->height; i--; ) {
@@
-97,7
+98,7
@@
static inline void color_imageblit(const struct fb_image *image,
val = 0;
if (start_index) {
val = 0;
if (start_index) {
- u32 start_mask = ~
(FB_SHIFT_HIGH(~(u32)0, start_index)
);
+ u32 start_mask = ~
fb_shifted_pixels_mask_u32(start_index, bswapmask
);
val = FB_READL(dst) & start_mask;
shift = start_index;
}
val = FB_READL(dst) & start_mask;
shift = start_index;
}
@@
-108,7
+109,7
@@
static inline void color_imageblit(const struct fb_image *image,
else
color = *src;
color <<= FB_LEFT_POS(bpp);
else
color = *src;
color <<= FB_LEFT_POS(bpp);
- val |= FB_SHIFT_HIGH(color, shift);
+ val |= FB_SHIFT_HIGH(color, shift
^ bswapmask
);
if (shift >= null_bits) {
FB_WRITEL(val, dst++);
if (shift >= null_bits) {
FB_WRITEL(val, dst++);
@@
-120,7
+121,7
@@
static inline void color_imageblit(const struct fb_image *image,
src++;
}
if (shift) {
src++;
}
if (shift) {
- u32 end_mask =
FB_SHIFT_HIGH(~(u32)0, shift
);
+ u32 end_mask =
fb_shifted_pixels_mask_u32(shift, bswapmask
);
FB_WRITEL((FB_READL(dst) & end_mask) | val, dst);
}
FB_WRITEL((FB_READL(dst) & end_mask) | val, dst);
}
@@
-148,7
+149,8
@@
static inline void slow_imageblit(const struct fb_image *image, struct fb_info *
u32 spitch = (image->width+7)/8;
const u8 *src = image->data, *s;
u32 i, j, l;
u32 spitch = (image->width+7)/8;
const u8 *src = image->data, *s;
u32 i, j, l;
-
+ u32 bswapmask = fb_compute_bswapmask(p);
+
dst2 = (u32 __iomem *) dst1;
fgcolor <<= FB_LEFT_POS(bpp);
bgcolor <<= FB_LEFT_POS(bpp);
dst2 = (u32 __iomem *) dst1;
fgcolor <<= FB_LEFT_POS(bpp);
bgcolor <<= FB_LEFT_POS(bpp);
@@
-162,7
+164,7
@@
static inline void slow_imageblit(const struct fb_image *image, struct fb_info *
/* write leading bits */
if (start_index) {
/* write leading bits */
if (start_index) {
- u32 start_mask = ~
(FB_SHIFT_HIGH(~(u32)0,start_index)
);
+ u32 start_mask = ~
fb_shifted_pixels_mask_u32(start_index, bswapmask
);
val = FB_READL(dst) & start_mask;
shift = start_index;
}
val = FB_READL(dst) & start_mask;
shift = start_index;
}
@@
-170,7
+172,7
@@
static inline void slow_imageblit(const struct fb_image *image, struct fb_info *
while (j--) {
l--;
color = (*s & (1 << l)) ? fgcolor : bgcolor;
while (j--) {
l--;
color = (*s & (1 << l)) ? fgcolor : bgcolor;
- val |= FB_SHIFT_HIGH(color, shift);
+ val |= FB_SHIFT_HIGH(color, shift
^ bswapmask
);
/* Did the bitshift spill bits to the next long? */
if (shift >= null_bits) {
/* Did the bitshift spill bits to the next long? */
if (shift >= null_bits) {
@@
-185,7
+187,7
@@
static inline void slow_imageblit(const struct fb_image *image, struct fb_info *
/* write trailing bits */
if (shift) {
/* write trailing bits */
if (shift) {
- u32 end_mask =
FB_SHIFT_HIGH(~(u32)0, shift
);
+ u32 end_mask =
fb_shifted_pixels_mask_u32(shift, bswapmask
);
FB_WRITEL((FB_READL(dst) & end_mask) | val, dst);
}
FB_WRITEL((FB_READL(dst) & end_mask) | val, dst);
}
@@
-219,7
+221,7
@@
static inline void fast_imageblit(const struct fb_image *image, struct fb_info *
u32 bit_mask, end_mask, eorx, shift;
const char *s = image->data, *src;
u32 __iomem *dst;
u32 bit_mask, end_mask, eorx, shift;
const char *s = image->data, *src;
u32 __iomem *dst;
- u32 *tab = NULL;
+
const
u32 *tab = NULL;
int i, j, k;
switch (bpp) {
int i, j, k;
switch (bpp) {
@@
-230,6
+232,7
@@
static inline void fast_imageblit(const struct fb_image *image, struct fb_info *
tab = cfb_tab16;
break;
case 32:
tab = cfb_tab16;
break;
case 32:
+ default:
tab = cfb_tab32;
break;
}
tab = cfb_tab32;
break;
}