blob: 0b0937c0b2f6324e535f121be71ee4e620219da6 [file] [log] [blame]
Thomas Gleixner2874c5f2019-05-27 08:55:01 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Gerd Hoffmann74152872019-04-05 11:52:15 +02002/*
3 * Copyright (C) 2016 Noralf Trønnes
Gerd Hoffmann74152872019-04-05 11:52:15 +02004 */
5
6#ifndef __LINUX_DRM_FORMAT_HELPER_H
7#define __LINUX_DRM_FORMAT_HELPER_H
8
Thomas Zimmermann452290f2021-11-10 11:36:54 +01009struct drm_format_info;
Gerd Hoffmann74152872019-04-05 11:52:15 +020010struct drm_framebuffer;
11struct drm_rect;
12
Thomas Zimmermann452290f2021-11-10 11:36:54 +010013unsigned int drm_fb_clip_offset(unsigned int pitch, const struct drm_format_info *format,
14 const struct drm_rect *clip);
15
Thomas Zimmermann27bd66d2021-11-10 11:36:55 +010016void drm_fb_memcpy(void *dst, unsigned int dst_pitch, const void *vaddr,
17 const struct drm_framebuffer *fb, const struct drm_rect *clip);
18void drm_fb_memcpy_toio(void __iomem *dst, unsigned int dst_pitch, const void *vaddr,
19 const struct drm_framebuffer *fb, const struct drm_rect *clip);
Thomas Zimmermann3e3543c2021-11-10 11:36:56 +010020void drm_fb_swab(void *dst, unsigned int dst_pitch, const void *src,
21 const struct drm_framebuffer *fb, const struct drm_rect *clip,
22 bool cached);
Thomas Zimmermann53bc2092021-11-10 11:36:57 +010023void drm_fb_xrgb8888_to_rgb332(void *dst, unsigned int dst_pitch, const void *vaddr,
24 const struct drm_framebuffer *fb, const struct drm_rect *clip);
25void drm_fb_xrgb8888_to_rgb565(void *dst, unsigned int dst_pitch, const void *vaddr,
26 const struct drm_framebuffer *fb, const struct drm_rect *clip,
27 bool swab);
28void drm_fb_xrgb8888_to_rgb565_toio(void __iomem *dst, unsigned int dst_pitch,
29 const void *vaddr, const struct drm_framebuffer *fb,
30 const struct drm_rect *clip, bool swab);
31void drm_fb_xrgb8888_to_rgb888(void *dst, unsigned int dst_pitch, const void *src,
32 const struct drm_framebuffer *fb, const struct drm_rect *clip);
33void drm_fb_xrgb8888_to_rgb888_toio(void __iomem *dst, unsigned int dst_pitch,
34 const void *vaddr, const struct drm_framebuffer *fb,
35 const struct drm_rect *clip);
Hector Martin877691b2021-12-12 15:24:06 +090036void drm_fb_xrgb8888_to_xrgb2101010_toio(void __iomem *dst, unsigned int dst_pitch,
37 const void *vaddr, const struct drm_framebuffer *fb,
38 const struct drm_rect *clip);
Thomas Zimmermann53bc2092021-11-10 11:36:57 +010039void drm_fb_xrgb8888_to_gray8(void *dst, unsigned int dst_pitch, const void *vaddr,
40 const struct drm_framebuffer *fb, const struct drm_rect *clip);
Gerd Hoffmann74152872019-04-05 11:52:15 +020041
Thomas Zimmermann19b20a82021-11-10 11:36:58 +010042int drm_fb_blit_toio(void __iomem *dst, unsigned int dst_pitch, uint32_t dst_format,
43 const void *vmap, const struct drm_framebuffer *fb,
44 const struct drm_rect *rect);
Thomas Zimmermann900d3e42021-04-30 12:58:33 +020045
Javier Martinez Canillasbcf8b612022-02-14 14:37:06 +010046void drm_fb_xrgb8888_to_mono_reversed(void *dst, unsigned int dst_pitch, const void *src,
47 const struct drm_framebuffer *fb,
48 const struct drm_rect *clip);
49
Gerd Hoffmann74152872019-04-05 11:52:15 +020050#endif /* __LINUX_DRM_FORMAT_HELPER_H */