12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
27415287eSGerd Hoffmann /*
37415287eSGerd Hoffmann  * Copyright (C) 2016 Noralf Trønnes
47415287eSGerd Hoffmann  */
57415287eSGerd Hoffmann 
67415287eSGerd Hoffmann #ifndef __LINUX_DRM_FORMAT_HELPER_H
77415287eSGerd Hoffmann #define __LINUX_DRM_FORMAT_HELPER_H
87415287eSGerd Hoffmann 
9452290f3SThomas Zimmermann struct drm_format_info;
107415287eSGerd Hoffmann struct drm_framebuffer;
117415287eSGerd Hoffmann struct drm_rect;
127415287eSGerd Hoffmann 
13452290f3SThomas Zimmermann unsigned int drm_fb_clip_offset(unsigned int pitch, const struct drm_format_info *format,
14452290f3SThomas Zimmermann 				const struct drm_rect *clip);
15452290f3SThomas Zimmermann 
1627bd66ddSThomas Zimmermann void drm_fb_memcpy(void *dst, unsigned int dst_pitch, const void *vaddr,
1727bd66ddSThomas Zimmermann 		   const struct drm_framebuffer *fb, const struct drm_rect *clip);
1827bd66ddSThomas Zimmermann void drm_fb_memcpy_toio(void __iomem *dst, unsigned int dst_pitch, const void *vaddr,
1927bd66ddSThomas Zimmermann 			const struct drm_framebuffer *fb, const struct drm_rect *clip);
203e3543c8SThomas Zimmermann void drm_fb_swab(void *dst, unsigned int dst_pitch, const void *src,
213e3543c8SThomas Zimmermann 		 const struct drm_framebuffer *fb, const struct drm_rect *clip,
223e3543c8SThomas Zimmermann 		 bool cached);
23*53bc2098SThomas Zimmermann void drm_fb_xrgb8888_to_rgb332(void *dst, unsigned int dst_pitch, const void *vaddr,
24*53bc2098SThomas Zimmermann 			       const struct drm_framebuffer *fb, const struct drm_rect *clip);
25*53bc2098SThomas Zimmermann void drm_fb_xrgb8888_to_rgb565(void *dst, unsigned int dst_pitch, const void *vaddr,
26*53bc2098SThomas Zimmermann 			       const struct drm_framebuffer *fb, const struct drm_rect *clip,
27*53bc2098SThomas Zimmermann 			       bool swab);
28*53bc2098SThomas Zimmermann void drm_fb_xrgb8888_to_rgb565_toio(void __iomem *dst, unsigned int dst_pitch,
29*53bc2098SThomas Zimmermann 				    const void *vaddr, const struct drm_framebuffer *fb,
30*53bc2098SThomas Zimmermann 				    const struct drm_rect *clip, bool swab);
31*53bc2098SThomas Zimmermann void drm_fb_xrgb8888_to_rgb888(void *dst, unsigned int dst_pitch, const void *src,
32*53bc2098SThomas Zimmermann 			       const struct drm_framebuffer *fb, const struct drm_rect *clip);
33*53bc2098SThomas Zimmermann void drm_fb_xrgb8888_to_rgb888_toio(void __iomem *dst, unsigned int dst_pitch,
34*53bc2098SThomas Zimmermann 				    const void *vaddr, const struct drm_framebuffer *fb,
35*53bc2098SThomas Zimmermann 				    const struct drm_rect *clip);
36*53bc2098SThomas Zimmermann void drm_fb_xrgb8888_to_gray8(void *dst, unsigned int dst_pitch, const void *vaddr,
37*53bc2098SThomas Zimmermann 			      const struct drm_framebuffer *fb, const struct drm_rect *clip);
387415287eSGerd Hoffmann 
39900d3e4aSThomas Zimmermann int drm_fb_blit_rect_dstclip(void __iomem *dst, unsigned int dst_pitch,
40900d3e4aSThomas Zimmermann 			     uint32_t dst_format, void *vmap,
41900d3e4aSThomas Zimmermann 			     struct drm_framebuffer *fb,
42900d3e4aSThomas Zimmermann 			     struct drm_rect *rect);
43900d3e4aSThomas Zimmermann int drm_fb_blit_dstclip(void __iomem *dst, unsigned int dst_pitch,
44900d3e4aSThomas Zimmermann 			uint32_t dst_format, void *vmap,
45900d3e4aSThomas Zimmermann 			struct drm_framebuffer *fb);
46900d3e4aSThomas Zimmermann 
477415287eSGerd Hoffmann #endif /* __LINUX_DRM_FORMAT_HELPER_H */
48