1 /* 2 * VRFB Rotation Engine 3 * 4 * Copyright (C) 2009 Nokia Corporation 5 * Author: Tomi Valkeinen <tomi.valkeinen@nokia.com> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as 9 * published by the Free Software Foundation. 10 * 11 * This program is distributed in the hope that it will be useful, but 12 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License along 17 * with this program; if not, write to the Free Software Foundation, Inc., 18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 */ 20 21 #ifndef __OMAP_VRFB_H__ 22 #define __OMAP_VRFB_H__ 23 24 #define OMAP_VRFB_LINE_LEN 2048 25 26 struct vrfb { 27 u8 context; 28 void __iomem *vaddr[4]; 29 unsigned long paddr[4]; 30 u16 xres; 31 u16 yres; 32 u16 xoffset; 33 u16 yoffset; 34 u8 bytespp; 35 bool yuv_mode; 36 }; 37 38 #ifdef CONFIG_OMAP2_VRFB 39 extern bool omap_vrfb_supported(void); 40 extern int omap_vrfb_request_ctx(struct vrfb *vrfb); 41 extern void omap_vrfb_release_ctx(struct vrfb *vrfb); 42 extern void omap_vrfb_adjust_size(u16 *width, u16 *height, 43 u8 bytespp); 44 extern u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp); 45 extern u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp); 46 extern void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr, 47 u16 width, u16 height, 48 unsigned bytespp, bool yuv_mode); 49 extern int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot); 50 extern void omap_vrfb_restore_context(void); 51 52 #else 53 static inline bool omap_vrfb_supported(void) { return false; } 54 static inline int omap_vrfb_request_ctx(struct vrfb *vrfb) { return 0; } 55 static inline void omap_vrfb_release_ctx(struct vrfb *vrfb) {} 56 static inline void omap_vrfb_adjust_size(u16 *width, u16 *height, 57 u8 bytespp) {} 58 static inline u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp) 59 { return 0; } 60 static inline u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp) 61 { return 0; } 62 static inline void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr, 63 u16 width, u16 height, unsigned bytespp, bool yuv_mode) {} 64 static inline int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot) 65 { return 0; } 66 static inline void omap_vrfb_restore_context(void) {} 67 #endif 68 #endif /* __VRFB_H */ 69