xref: /linux/include/video/omapvrfb.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*45051539SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
26a1c9f6dSTomi Valkeinen /*
36a1c9f6dSTomi Valkeinen  * VRFB Rotation Engine
46a1c9f6dSTomi Valkeinen  *
56a1c9f6dSTomi Valkeinen  * Copyright (C) 2009 Nokia Corporation
66a1c9f6dSTomi Valkeinen  * Author: Tomi Valkeinen <tomi.valkeinen@nokia.com>
76a1c9f6dSTomi Valkeinen  */
86a1c9f6dSTomi Valkeinen 
96a1c9f6dSTomi Valkeinen #ifndef __OMAP_VRFB_H__
106a1c9f6dSTomi Valkeinen #define __OMAP_VRFB_H__
116a1c9f6dSTomi Valkeinen 
126a1c9f6dSTomi Valkeinen #define OMAP_VRFB_LINE_LEN 2048
136a1c9f6dSTomi Valkeinen 
146a1c9f6dSTomi Valkeinen struct vrfb {
156a1c9f6dSTomi Valkeinen 	u8 context;
166a1c9f6dSTomi Valkeinen 	void __iomem *vaddr[4];
176a1c9f6dSTomi Valkeinen 	unsigned long paddr[4];
186a1c9f6dSTomi Valkeinen 	u16 xres;
196a1c9f6dSTomi Valkeinen 	u16 yres;
206a1c9f6dSTomi Valkeinen 	u16 xoffset;
216a1c9f6dSTomi Valkeinen 	u16 yoffset;
226a1c9f6dSTomi Valkeinen 	u8 bytespp;
236a1c9f6dSTomi Valkeinen 	bool yuv_mode;
246a1c9f6dSTomi Valkeinen };
256a1c9f6dSTomi Valkeinen 
266a1c9f6dSTomi Valkeinen #ifdef CONFIG_OMAP2_VRFB
27aa1e49a3STomi Valkeinen extern bool omap_vrfb_supported(void);
286a1c9f6dSTomi Valkeinen extern int omap_vrfb_request_ctx(struct vrfb *vrfb);
296a1c9f6dSTomi Valkeinen extern void omap_vrfb_release_ctx(struct vrfb *vrfb);
306a1c9f6dSTomi Valkeinen extern void omap_vrfb_adjust_size(u16 *width, u16 *height,
316a1c9f6dSTomi Valkeinen 		u8 bytespp);
326a1c9f6dSTomi Valkeinen extern u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp);
336a1c9f6dSTomi Valkeinen extern u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp);
346a1c9f6dSTomi Valkeinen extern void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr,
356a1c9f6dSTomi Valkeinen 		u16 width, u16 height,
366a1c9f6dSTomi Valkeinen 		unsigned bytespp, bool yuv_mode);
376a1c9f6dSTomi Valkeinen extern int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot);
386a1c9f6dSTomi Valkeinen extern void omap_vrfb_restore_context(void);
396a1c9f6dSTomi Valkeinen 
406a1c9f6dSTomi Valkeinen #else
omap_vrfb_supported(void)41aa1e49a3STomi Valkeinen static inline bool omap_vrfb_supported(void) { return false; }
omap_vrfb_request_ctx(struct vrfb * vrfb)426a1c9f6dSTomi Valkeinen static inline int omap_vrfb_request_ctx(struct vrfb *vrfb) { return 0; }
omap_vrfb_release_ctx(struct vrfb * vrfb)436a1c9f6dSTomi Valkeinen static inline void omap_vrfb_release_ctx(struct vrfb *vrfb) {}
omap_vrfb_adjust_size(u16 * width,u16 * height,u8 bytespp)446a1c9f6dSTomi Valkeinen static inline void omap_vrfb_adjust_size(u16 *width, u16 *height,
456a1c9f6dSTomi Valkeinen 		u8 bytespp) {}
omap_vrfb_min_phys_size(u16 width,u16 height,u8 bytespp)466a1c9f6dSTomi Valkeinen static inline u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp)
476a1c9f6dSTomi Valkeinen 		{ return 0; }
omap_vrfb_max_height(u32 phys_size,u16 width,u8 bytespp)486a1c9f6dSTomi Valkeinen static inline u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp)
496a1c9f6dSTomi Valkeinen 		{ return 0; }
omap_vrfb_setup(struct vrfb * vrfb,unsigned long paddr,u16 width,u16 height,unsigned bytespp,bool yuv_mode)506a1c9f6dSTomi Valkeinen static inline void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr,
516a1c9f6dSTomi Valkeinen 		u16 width, u16 height, unsigned bytespp, bool yuv_mode) {}
omap_vrfb_map_angle(struct vrfb * vrfb,u16 height,u8 rot)526a1c9f6dSTomi Valkeinen static inline int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot)
536a1c9f6dSTomi Valkeinen 		{ return 0; }
omap_vrfb_restore_context(void)546a1c9f6dSTomi Valkeinen static inline void omap_vrfb_restore_context(void) {}
556a1c9f6dSTomi Valkeinen #endif
566a1c9f6dSTomi Valkeinen #endif /* __VRFB_H */
57