diff options
Diffstat (limited to 'drivers/video/fbmem.c')
-rw-r--r-- | drivers/video/fbmem.c | 57 |
1 files changed, 5 insertions, 52 deletions
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 8cef020d1801..78907a873493 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c | |||
@@ -76,65 +76,21 @@ int fb_get_color_depth(struct fb_var_screeninfo *var) | |||
76 | EXPORT_SYMBOL(fb_get_color_depth); | 76 | EXPORT_SYMBOL(fb_get_color_depth); |
77 | 77 | ||
78 | /* | 78 | /* |
79 | * Drawing helpers. | 79 | * Data padding functions. |
80 | */ | 80 | */ |
81 | void fb_iomove_buf_aligned(struct fb_info *info, struct fb_pixmap *buf, | ||
82 | u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, | ||
83 | u32 height) | ||
84 | { | ||
85 | int i; | ||
86 | |||
87 | for (i = height; i--; ) { | ||
88 | buf->outbuf(info, dst, src, s_pitch); | ||
89 | src += s_pitch; | ||
90 | dst += d_pitch; | ||
91 | } | ||
92 | } | ||
93 | |||
94 | void fb_sysmove_buf_aligned(struct fb_info *info, struct fb_pixmap *buf, | 81 | void fb_sysmove_buf_aligned(struct fb_info *info, struct fb_pixmap *buf, |
95 | u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, | 82 | u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, |
96 | u32 height) | 83 | u32 height) |
97 | { | 84 | { |
98 | int i, j; | 85 | int i; |
99 | 86 | ||
100 | for (i = height; i--; ) { | 87 | for (i = height; i--; ) { |
101 | for (j = 0; j < s_pitch; j++) | 88 | memcpy(dst, src, s_pitch); |
102 | dst[j] = src[j]; | ||
103 | src += s_pitch; | 89 | src += s_pitch; |
104 | dst += d_pitch; | 90 | dst += d_pitch; |
105 | } | 91 | } |
106 | } | 92 | } |
107 | 93 | EXPORT_SYMBOL(fb_sysmove_buf_aligned); | |
108 | void fb_iomove_buf_unaligned(struct fb_info *info, struct fb_pixmap *buf, | ||
109 | u8 *dst, u32 d_pitch, u8 *src, u32 idx, | ||
110 | u32 height, u32 shift_high, u32 shift_low, | ||
111 | u32 mod) | ||
112 | { | ||
113 | u8 mask = (u8) (0xfff << shift_high), tmp; | ||
114 | int i, j; | ||
115 | |||
116 | for (i = height; i--; ) { | ||
117 | for (j = 0; j < idx; j++) { | ||
118 | tmp = buf->inbuf(info, dst+j); | ||
119 | tmp &= mask; | ||
120 | tmp |= *src >> shift_low; | ||
121 | buf->outbuf(info, dst+j, &tmp, 1); | ||
122 | tmp = *src << shift_high; | ||
123 | buf->outbuf(info, dst+j+1, &tmp, 1); | ||
124 | src++; | ||
125 | } | ||
126 | tmp = buf->inbuf(info, dst+idx); | ||
127 | tmp &= mask; | ||
128 | tmp |= *src >> shift_low; | ||
129 | buf->outbuf(info, dst+idx, &tmp, 1); | ||
130 | if (shift_high < mod) { | ||
131 | tmp = *src << shift_high; | ||
132 | buf->outbuf(info, dst+idx+1, &tmp, 1); | ||
133 | } | ||
134 | src++; | ||
135 | dst += d_pitch; | ||
136 | } | ||
137 | } | ||
138 | 94 | ||
139 | void fb_sysmove_buf_unaligned(struct fb_info *info, struct fb_pixmap *buf, | 95 | void fb_sysmove_buf_unaligned(struct fb_info *info, struct fb_pixmap *buf, |
140 | u8 *dst, u32 d_pitch, u8 *src, u32 idx, | 96 | u8 *dst, u32 d_pitch, u8 *src, u32 idx, |
@@ -166,6 +122,7 @@ void fb_sysmove_buf_unaligned(struct fb_info *info, struct fb_pixmap *buf, | |||
166 | dst += d_pitch; | 122 | dst += d_pitch; |
167 | } | 123 | } |
168 | } | 124 | } |
125 | EXPORT_SYMBOL(fb_sysmove_buf_unaligned); | ||
169 | 126 | ||
170 | /* | 127 | /* |
171 | * we need to lock this section since fb_cursor | 128 | * we need to lock this section since fb_cursor |
@@ -1357,10 +1314,6 @@ EXPORT_SYMBOL(fb_set_var); | |||
1357 | EXPORT_SYMBOL(fb_blank); | 1314 | EXPORT_SYMBOL(fb_blank); |
1358 | EXPORT_SYMBOL(fb_pan_display); | 1315 | EXPORT_SYMBOL(fb_pan_display); |
1359 | EXPORT_SYMBOL(fb_get_buffer_offset); | 1316 | EXPORT_SYMBOL(fb_get_buffer_offset); |
1360 | EXPORT_SYMBOL(fb_iomove_buf_unaligned); | ||
1361 | EXPORT_SYMBOL(fb_iomove_buf_aligned); | ||
1362 | EXPORT_SYMBOL(fb_sysmove_buf_unaligned); | ||
1363 | EXPORT_SYMBOL(fb_sysmove_buf_aligned); | ||
1364 | EXPORT_SYMBOL(fb_set_suspend); | 1317 | EXPORT_SYMBOL(fb_set_suspend); |
1365 | EXPORT_SYMBOL(fb_register_client); | 1318 | EXPORT_SYMBOL(fb_register_client); |
1366 | EXPORT_SYMBOL(fb_unregister_client); | 1319 | EXPORT_SYMBOL(fb_unregister_client); |