Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/format-helper: Unify the parameters of all per-line conversion helpers

Give each per-line conversion helper pointers of type void and the
number of pixels in the line. Remove the unused swab parameters.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220427141409.22842-4-tzimmermann@suse.de

+50 -37
+50 -37
drivers/gpu/drm/drm_format_helper.c
··· 177 177 } 178 178 EXPORT_SYMBOL(drm_fb_swab); 179 179 180 - static void drm_fb_xrgb8888_to_rgb332_line(u8 *dbuf, const __le32 *sbuf, unsigned int pixels) 180 + static void drm_fb_xrgb8888_to_rgb332_line(void *dbuf, const void *sbuf, unsigned int pixels, 181 + bool swab) 181 182 { 183 + u8 *dbuf8 = dbuf; 184 + const __le32 *sbuf32 = sbuf; 182 185 unsigned int x; 183 186 u32 pix; 184 187 185 188 for (x = 0; x < pixels; x++) { 186 - pix = le32_to_cpu(sbuf[x]); 187 - dbuf[x] = ((pix & 0x00e00000) >> 16) | 188 - ((pix & 0x0000e000) >> 11) | 189 - ((pix & 0x000000c0) >> 6); 189 + pix = le32_to_cpu(sbuf32[x]); 190 + dbuf8[x] = ((pix & 0x00e00000) >> 16) | 191 + ((pix & 0x0000e000) >> 11) | 192 + ((pix & 0x000000c0) >> 6); 190 193 } 191 194 } 192 195 ··· 222 219 src += clip_offset(clip, fb->pitches[0], sizeof(u32)); 223 220 for (y = 0; y < drm_rect_height(clip); y++) { 224 221 memcpy(sbuf, src, src_len); 225 - drm_fb_xrgb8888_to_rgb332_line(dst, sbuf, width); 222 + drm_fb_xrgb8888_to_rgb332_line(dst, sbuf, width, false); 226 223 src += fb->pitches[0]; 227 224 dst += dst_pitch; 228 225 } ··· 231 228 } 232 229 EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb332); 233 230 234 - static void drm_fb_xrgb8888_to_rgb565_line(u16 *dbuf, const u32 *sbuf, 235 - unsigned int pixels) 231 + static void drm_fb_xrgb8888_to_rgb565_line(void *dbuf, const void *sbuf, unsigned int pixels) 236 232 { 233 + u16 *dbuf16 = dbuf; 234 + const u32 *sbuf32 = sbuf; 237 235 unsigned int x; 238 236 u16 val16; 239 237 240 238 for (x = 0; x < pixels; x++) { 241 - val16 = ((sbuf[x] & 0x00F80000) >> 8) | 242 - ((sbuf[x] & 0x0000FC00) >> 5) | 243 - ((sbuf[x] & 0x000000F8) >> 3); 244 - dbuf[x] = val16; 239 + val16 = ((sbuf32[x] & 0x00F80000) >> 8) | 240 + ((sbuf32[x] & 0x0000FC00) >> 5) | 241 + ((sbuf32[x] & 0x000000F8) >> 3); 242 + dbuf16[x] = val16; 245 243 } 246 244 } 247 245 248 - static void drm_fb_xrgb8888_to_rgb565_swab_line(u16 *dbuf, const u32 *sbuf, 246 + static void drm_fb_xrgb8888_to_rgb565_swab_line(void *dbuf, const void *sbuf, 249 247 unsigned int pixels) 250 248 { 249 + u16 *dbuf16 = dbuf; 250 + const u32 *sbuf32 = sbuf; 251 251 unsigned int x; 252 252 u16 val16; 253 253 254 254 for (x = 0; x < pixels; x++) { 255 - val16 = ((sbuf[x] & 0x00F80000) >> 8) | 256 - ((sbuf[x] & 0x0000FC00) >> 5) | 257 - ((sbuf[x] & 0x000000F8) >> 3); 258 - dbuf[x] = swab16(val16); 255 + val16 = ((sbuf32[x] & 0x00F80000) >> 8) | 256 + ((sbuf32[x] & 0x0000FC00) >> 5) | 257 + ((sbuf32[x] & 0x000000F8) >> 3); 258 + dbuf16[x] = swab16(val16); 259 259 } 260 260 } 261 261 ··· 353 347 } 354 348 EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb565_toio); 355 349 356 - static void drm_fb_xrgb8888_to_rgb888_line(u8 *dbuf, const u32 *sbuf, 357 - unsigned int pixels) 350 + static void drm_fb_xrgb8888_to_rgb888_line(void *dbuf, const void *sbuf, unsigned int pixels) 358 351 { 352 + u8 *dbuf8 = dbuf; 353 + const u32 *sbuf32 = sbuf; 359 354 unsigned int x; 360 355 361 356 for (x = 0; x < pixels; x++) { 362 - *dbuf++ = (sbuf[x] & 0x000000FF) >> 0; 363 - *dbuf++ = (sbuf[x] & 0x0000FF00) >> 8; 364 - *dbuf++ = (sbuf[x] & 0x00FF0000) >> 16; 357 + *dbuf8++ = (sbuf32[x] & 0x000000FF) >> 0; 358 + *dbuf8++ = (sbuf32[x] & 0x0000FF00) >> 8; 359 + *dbuf8++ = (sbuf32[x] & 0x00FF0000) >> 16; 365 360 } 366 361 } 367 362 ··· 528 521 kfree(dbuf); 529 522 } 530 523 531 - static void drm_fb_xrgb8888_to_xrgb2101010_line(u32 *dbuf, const u32 *sbuf, 532 - unsigned int pixels) 524 + static void drm_fb_xrgb8888_to_xrgb2101010_line(void *dbuf, const void *sbuf, unsigned int pixels) 533 525 { 526 + u32 *dbuf32 = dbuf; 527 + const u32 *sbuf32 = sbuf; 534 528 unsigned int x; 535 529 u32 val32; 536 530 537 531 for (x = 0; x < pixels; x++) { 538 - val32 = ((sbuf[x] & 0x000000FF) << 2) | 539 - ((sbuf[x] & 0x0000FF00) << 4) | 540 - ((sbuf[x] & 0x00FF0000) << 6); 541 - *dbuf++ = val32 | ((val32 >> 8) & 0x00300C03); 532 + val32 = ((sbuf32[x] & 0x000000FF) << 2) | 533 + ((sbuf32[x] & 0x0000FF00) << 4) | 534 + ((sbuf32[x] & 0x00FF0000) << 6); 535 + *dbuf32++ = val32 | ((val32 >> 8) & 0x00300C03); 542 536 } 543 537 } 544 538 ··· 584 576 } 585 577 EXPORT_SYMBOL(drm_fb_xrgb8888_to_xrgb2101010_toio); 586 578 587 - static void drm_fb_xrgb8888_to_gray8_line(u8 *dst, const u32 *src, unsigned int pixels) 579 + static void drm_fb_xrgb8888_to_gray8_line(void *dbuf, const void *sbuf, unsigned int pixels) 588 580 { 581 + u8 *dbuf8 = dbuf; 582 + const u32 *sbuf32 = sbuf; 589 583 unsigned int x; 590 584 591 585 for (x = 0; x < pixels; x++) { 592 - u8 r = (*src & 0x00ff0000) >> 16; 593 - u8 g = (*src & 0x0000ff00) >> 8; 594 - u8 b = *src & 0x000000ff; 586 + u8 r = (*sbuf32 & 0x00ff0000) >> 16; 587 + u8 g = (*sbuf32 & 0x0000ff00) >> 8; 588 + u8 b = *sbuf32 & 0x000000ff; 595 589 596 590 /* ITU BT.601: Y = 0.299 R + 0.587 G + 0.114 B */ 597 - *dst++ = (3 * r + 6 * g + b) / 10; 598 - src++; 591 + *dbuf8++ = (3 * r + 6 * g + b) / 10; 592 + sbuf32++; 599 593 } 600 594 } 601 595 ··· 726 716 EXPORT_SYMBOL(drm_fb_blit_toio); 727 717 728 718 729 - static void drm_fb_gray8_to_mono_line(u8 *dst, const u8 *src, unsigned int pixels) 719 + static void drm_fb_gray8_to_mono_line(void *dbuf, const void *sbuf, unsigned int pixels) 730 720 { 721 + u8 *dbuf8 = dbuf; 722 + const u8 *sbuf8 = sbuf; 723 + 731 724 while (pixels) { 732 725 unsigned int i, bits = min(pixels, 8U); 733 726 u8 byte = 0; 734 727 735 728 for (i = 0; i < bits; i++, pixels--) { 736 - if (*src++ >= 128) 729 + if (*sbuf8++ >= 128) 737 730 byte |= BIT(i); 738 731 } 739 - *dst++ = byte; 732 + *dbuf8++ = byte; 740 733 } 741 734 } 742 735