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 26struct 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 39extern bool omap_vrfb_supported(void); 40extern int omap_vrfb_request_ctx(struct vrfb *vrfb); 41extern void omap_vrfb_release_ctx(struct vrfb *vrfb); 42extern void omap_vrfb_adjust_size(u16 *width, u16 *height, 43 u8 bytespp); 44extern u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp); 45extern u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp); 46extern void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr, 47 u16 width, u16 height, 48 unsigned bytespp, bool yuv_mode); 49extern int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot); 50extern void omap_vrfb_restore_context(void); 51 52#else 53static inline bool omap_vrfb_supported(void) { return false; } 54static inline int omap_vrfb_request_ctx(struct vrfb *vrfb) { return 0; } 55static inline void omap_vrfb_release_ctx(struct vrfb *vrfb) {} 56static inline void omap_vrfb_adjust_size(u16 *width, u16 *height, 57 u8 bytespp) {} 58static inline u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp) 59 { return 0; } 60static inline u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp) 61 { return 0; } 62static inline void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr, 63 u16 width, u16 height, unsigned bytespp, bool yuv_mode) {} 64static inline int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot) 65 { return 0; } 66static inline void omap_vrfb_restore_context(void) {} 67#endif 68#endif /* __VRFB_H */ 69