/* (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) (c) Copyright 2000-2004 Convergence (integrated media) GmbH All rights reserved. Written by Denis Oliver Kropp , Andreas Hundt , Sven Neumann , Ville Syrjälä and Claudio Ciccani . This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __CORE__FBDEV_H__ #define __CORE__FBDEV_H__ #include /* Needs to be included before dfb_types.h */ #include #include #include #include #include #include "agp.h" #include "fb.h" #include "surfacemanager.h" #include "vt.h" #ifndef FBIO_WAITFORVSYNC #define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t) #endif typedef struct { /* fbdev fixed screeninfo, contains infos about memory and type of card */ struct fb_fix_screeninfo fix; VideoMode *modes; /* linked list of valid video modes */ VideoMode current_mode; /* current video mode */ struct fb_var_screeninfo current_var; /* fbdev variable screeninfo set by DirectFB */ struct fb_var_screeninfo orig_var; /* fbdev variable screeninfo before DirectFB was started */ void *orig_cmap_memory; void *temp_cmap_memory; void *current_cmap_memory; struct fb_cmap orig_cmap; /* original palette */ struct fb_cmap current_cmap; /* our copy of the cmap */ struct fb_cmap temp_cmap; /* scratch */ FusionCall fbdev_ioctl; /* ioctl rpc */ unsigned long page_mask; /* PAGE_SIZE - 1 */ CoreSurfacePool *pool; struct { int bus; int dev; int func; } pci; /* PCI Bus ID of graphics device */ struct { unsigned short vendor; /* Graphics device vendor id */ unsigned short model; /* Graphics device model id */ } device; AGPShared *agp; FusionSHMPoolShared *shmpool; FusionSHMPoolShared *shmpool_data; CoreLayerRegionConfig config; SurfaceManager *manager; } FBDevShared; typedef struct { FBDevShared *shared; CoreDFB *core; /* virtual framebuffer address */ void *framebuffer_base; int fd; /* file descriptor for /dev/fb */ VirtualTerminal *vt; AGPDevice *agp; } FBDev; /* * core init function, opens /dev/fb, get fbdev screeninfo * disables font acceleration, reads mode list */ DFBResult dfb_fbdev_initialize( void ); DFBResult dfb_fbdev_join( void ); /* * deinitializes DirectFB fbdev stuff and restores fbdev settings */ DFBResult dfb_fbdev_shutdown( bool emergency ); DFBResult dfb_fbdev_leave ( bool emergency ); const VideoMode *dfb_fbdev_find_mode( int width, int height ); DFBResult dfb_fbdev_test_mode ( const VideoMode *mode, const CoreLayerRegionConfig *config ); DFBResult dfb_fbdev_test_mode_simple( const VideoMode *mode ); DFBResult dfb_fbdev_set_mode ( const VideoMode *mode, CoreSurface *surface, unsigned int xoffset, unsigned int yoffset ); #endif