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 
9*452290f3SThomas Zimmermann struct drm_format_info;
107415287eSGerd Hoffmann struct drm_framebuffer;
117415287eSGerd Hoffmann struct drm_rect;
127415287eSGerd Hoffmann 
13*452290f3SThomas Zimmermann unsigned int drm_fb_clip_offset(unsigned int pitch, const struct drm_format_info *format,
14*452290f3SThomas Zimmermann 				const struct drm_rect *clip);
15*452290f3SThomas Zimmermann 
167415287eSGerd Hoffmann void drm_fb_memcpy(void *dst, void *vaddr, struct drm_framebuffer *fb,
177415287eSGerd Hoffmann 		   struct drm_rect *clip);
185ab7af71SThomas Zimmermann void drm_fb_memcpy_dstclip(void __iomem *dst, unsigned int dst_pitch, void *vaddr,
19bf4f6d16SGerd Hoffmann 			   struct drm_framebuffer *fb,
2026f024f5SGerd Hoffmann 			   struct drm_rect *clip);
21bd34cea2SNoralf Trønnes void drm_fb_swab(void *dst, void *src, struct drm_framebuffer *fb,
22bd34cea2SNoralf Trønnes 		 struct drm_rect *clip, bool cached);
23cee0b7cbSNoralf Trønnes void drm_fb_xrgb8888_to_rgb332(void *dst, void *vaddr, struct drm_framebuffer *fb,
24cee0b7cbSNoralf Trønnes 			       struct drm_rect *clip);
25bcc44420SGerd Hoffmann void drm_fb_xrgb8888_to_rgb565(void *dst, void *vaddr,
267415287eSGerd Hoffmann 			       struct drm_framebuffer *fb,
27d653bd39SGerd Hoffmann 			       struct drm_rect *clip, bool swab);
28d653bd39SGerd Hoffmann void drm_fb_xrgb8888_to_rgb565_dstclip(void __iomem *dst, unsigned int dst_pitch,
29bcc44420SGerd Hoffmann 				       void *vaddr, struct drm_framebuffer *fb,
30d653bd39SGerd Hoffmann 				       struct drm_rect *clip, bool swab);
31bcf80d6eSNoralf Trønnes void drm_fb_xrgb8888_to_rgb888(void *dst, void *src, struct drm_framebuffer *fb,
32bcf80d6eSNoralf Trønnes 			       struct drm_rect *clip);
335c5373b5SGerd Hoffmann void drm_fb_xrgb8888_to_rgb888_dstclip(void __iomem *dst, unsigned int dst_pitch,
34ec3de7a4SGerd Hoffmann 				       void *vaddr, struct drm_framebuffer *fb,
35ec3de7a4SGerd Hoffmann 				       struct drm_rect *clip);
367415287eSGerd Hoffmann void drm_fb_xrgb8888_to_gray8(u8 *dst, void *vaddr, struct drm_framebuffer *fb,
377415287eSGerd Hoffmann 			      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