fsl_diu_fb: further refactoring of FSL DIU code
[kernel/u-boot.git] / include / fsl_diu_fb.h
1 /*
2  * Copyright 2007 Freescale Semiconductor, Inc.
3  * York Sun <yorksun@freescale.com>
4  *
5  * FSL DIU Framebuffer driver
6  *
7  * See file CREDITS for list of people who contributed to this
8  * project.
9  *
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU General Public License as
12  * published by the Free Software Foundation; either version 2 of
13  * the License, or (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
23  * MA 02111-1307 USA
24  */
25
26 struct fb_var_screeninfo {
27         unsigned int xres;              /* visible resolution           */
28         unsigned int yres;
29
30         unsigned int bits_per_pixel;    /* guess what                   */
31
32         /* Timing: All values in pixclocks, except pixclock (of course) */
33         unsigned int pixclock;          /* pixel clock in ps (pico seconds) */
34         unsigned int left_margin;       /* time from sync to picture    */
35         unsigned int right_margin;      /* time from picture to sync    */
36         unsigned int upper_margin;      /* time from sync to picture    */
37         unsigned int lower_margin;
38         unsigned int hsync_len;         /* length of horizontal sync    */
39         unsigned int vsync_len;         /* length of vertical sync      */
40         unsigned int sync;              /* see FB_SYNC_*                */
41         unsigned int vmode;             /* see FB_VMODE_*               */
42         unsigned int rotate;            /* angle we rotate counter clockwise */
43 };
44
45 struct fb_info {
46         struct fb_var_screeninfo var;   /* Current var */
47         unsigned long smem_start;       /* Start of frame buffer mem */
48                                         /* (physical address) */
49         unsigned int smem_len;          /* Length of frame buffer mem */
50         unsigned int type;              /* see FB_TYPE_*                */
51         unsigned int line_length;       /* length of a line in bytes    */
52
53         char *screen_base;
54         unsigned long screen_size;
55 };
56
57
58 extern char *fsl_fb_open(struct fb_info **info);
59 int fsl_diu_init(int xres, unsigned int pixel_format, int gamma_fix);
60 int platform_diu_init(unsigned int *xres, unsigned int *yres);