uboot/include/linux/fb.h
<<
>>
Prefs
   1#ifndef _LINUX_FB_H
   2#define _LINUX_FB_H
   3
   4#include <linux/types.h>
   5#include <linux/list.h>
   6
   7/* Definitions of frame buffers                                         */
   8
   9#define FB_MAX                  32      /* sufficient for now */
  10
  11#define FB_TYPE_PACKED_PIXELS           0       /* Packed Pixels        */
  12
  13#define FB_VISUAL_MONO01                0       /* Monochr. 1=Black 0=White */
  14#define FB_VISUAL_MONO10                1       /* Monochr. 1=White 0=Black */
  15#define FB_VISUAL_TRUECOLOR             2       /* True color   */
  16#define FB_VISUAL_PSEUDOCOLOR           3       /* Pseudo color (like atari) */
  17#define FB_VISUAL_DIRECTCOLOR           4       /* Direct color */
  18#define FB_VISUAL_STATIC_PSEUDOCOLOR    5       /* Pseudo color readonly */
  19
  20#define FB_ACCEL_NONE           0       /* no hardware accelerator      */
  21
  22struct fb_fix_screeninfo {
  23        char id[16];                    /* identification string eg "TT Builtin" */
  24        unsigned long smem_start;       /* Start of frame buffer mem */
  25                                        /* (physical address) */
  26        __u32 smem_len;                 /* Length of frame buffer mem */
  27        __u32 type;                     /* see FB_TYPE_*                */
  28        __u32 type_aux;                 /* Interleave for interleaved Planes */
  29        __u32 visual;                   /* see FB_VISUAL_*              */
  30        __u16 xpanstep;                 /* zero if no hardware panning  */
  31        __u16 ypanstep;                 /* zero if no hardware panning  */
  32        __u16 ywrapstep;                /* zero if no hardware ywrap    */
  33        __u32 line_length;              /* length of a line in bytes    */
  34        unsigned long mmio_start;       /* Start of Memory Mapped I/O   */
  35                                        /* (physical address) */
  36        __u32 mmio_len;                 /* Length of Memory Mapped I/O  */
  37        __u32 accel;                    /* Indicate to driver which     */
  38                                        /*  specific chip/card we have  */
  39        __u16 reserved[3];              /* Reserved for future compatibility */
  40};
  41
  42/*
  43 * Interpretation of offset for color fields: All offsets are from the right,
  44 * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you
  45 * can use the offset as right argument to <<). A pixel afterwards is a bit
  46 * stream and is written to video memory as that unmodified.
  47 *
  48 * For pseudocolor: offset and length should be the same for all color
  49 * components. Offset specifies the position of the least significant bit
  50 * of the pallette index in a pixel value. Length indicates the number
  51 * of available palette entries (i.e. # of entries = 1 << length).
  52 */
  53struct fb_bitfield {
  54        __u32 offset;                   /* beginning of bitfield        */
  55        __u32 length;                   /* length of bitfield           */
  56        __u32 msb_right;
  57
  58};
  59
  60#define FB_NONSTD_HAM           1       /* Hold-And-Modify (HAM)        */
  61#define FB_NONSTD_REV_PIX_IN_B  2       /* order of pixels in each byte is reversed */
  62
  63#define FB_ACTIVATE_NOW         0       /* set values immediately (or vbl)*/
  64#define FB_ACTIVATE_NXTOPEN     1       /* activate on next open        */
  65#define FB_ACTIVATE_TEST        2       /* don't set, round up impossible */
  66#define FB_ACTIVATE_MASK       15
  67                                        /* values                       */
  68#define FB_ACTIVATE_VBL        16       /* activate values on next vbl  */
  69#define FB_CHANGE_CMAP_VBL     32       /* change colormap on vbl       */
  70#define FB_ACTIVATE_ALL        64       /* change all VCs on this fb    */
  71#define FB_ACTIVATE_FORCE     128       /* force apply even when no change*/
  72#define FB_ACTIVATE_INV_MODE  256       /* invalidate videomode */
  73
  74#define FB_SYNC_HOR_HIGH_ACT    1       /* horizontal sync high active  */
  75#define FB_SYNC_VERT_HIGH_ACT   2       /* vertical sync high active    */
  76#define FB_SYNC_EXT             4       /* external sync                */
  77#define FB_SYNC_COMP_HIGH_ACT   8       /* composite sync high active   */
  78#define FB_SYNC_BROADCAST       16      /* broadcast video timings      */
  79                                        /* vtotal = 144d/288n/576i => PAL  */
  80                                        /* vtotal = 121d/242n/484i => NTSC */
  81#define FB_SYNC_ON_GREEN        32      /* sync on green */
  82
  83#define FB_VMODE_NONINTERLACED  0       /* non interlaced */
  84#define FB_VMODE_INTERLACED     1       /* interlaced   */
  85#define FB_VMODE_DOUBLE         2       /* double scan */
  86#define FB_VMODE_ODD_FLD_FIRST  4       /* interlaced: top line first */
  87#define FB_VMODE_MASK           255
  88
  89#define FB_VMODE_YWRAP          256     /* ywrap instead of panning     */
  90#define FB_VMODE_SMOOTH_XPAN    512     /* smooth xpan possible (internally used) */
  91#define FB_VMODE_CONUPDATE      512     /* don't update x/yoffset       */
  92
  93/*
  94 * Display rotation support
  95 */
  96#define FB_ROTATE_UR      0
  97#define FB_ROTATE_CW      1
  98#define FB_ROTATE_UD      2
  99#define FB_ROTATE_CCW     3
 100
 101#define PICOS2KHZ(a) (1000000000UL/(a))
 102#define KHZ2PICOS(a) (1000000000UL/(a))
 103
 104struct fb_var_screeninfo {
 105        __u32 xres;                     /* visible resolution           */
 106        __u32 yres;
 107        __u32 xres_virtual;             /* virtual resolution           */
 108        __u32 yres_virtual;
 109        __u32 xoffset;                  /* offset from virtual to visible */
 110        __u32 yoffset;                  /* resolution                   */
 111
 112        __u32 bits_per_pixel;           /* guess what                   */
 113        __u32 grayscale;                /* != 0 Graylevels instead of colors */
 114
 115        struct fb_bitfield red;         /* bitfield in fb mem if true color, */
 116        struct fb_bitfield green;       /* else only length is significant */
 117        struct fb_bitfield blue;
 118        struct fb_bitfield transp;      /* transparency                 */
 119
 120        __u32 nonstd;                   /* != 0 Non standard pixel format */
 121
 122        __u32 activate;                 /* see FB_ACTIVATE_*            */
 123
 124        __u32 height;                   /* height of picture in mm    */
 125        __u32 width;                    /* width of picture in mm     */
 126
 127        __u32 accel_flags;              /* (OBSOLETE) see fb_info.flags */
 128
 129        /* Timing: All values in pixclocks, except pixclock (of course) */
 130        __u32 pixclock;                 /* pixel clock in ps (pico seconds) */
 131        __u32 left_margin;              /* time from sync to picture    */
 132        __u32 right_margin;             /* time from picture to sync    */
 133        __u32 upper_margin;             /* time from sync to picture    */
 134        __u32 lower_margin;
 135        __u32 hsync_len;                /* length of horizontal sync    */
 136        __u32 vsync_len;                /* length of vertical sync      */
 137        __u32 sync;                     /* see FB_SYNC_*                */
 138        __u32 vmode;                    /* see FB_VMODE_*               */
 139        __u32 rotate;                   /* angle we rotate counter clockwise */
 140        __u32 reserved[5];              /* Reserved for future compatibility */
 141};
 142
 143struct fb_cmap {
 144        __u32 start;                    /* First entry  */
 145        __u32 len;                      /* Number of entries */
 146        __u16 *red;                     /* Red values   */
 147        __u16 *green;
 148        __u16 *blue;
 149        __u16 *transp;                  /* transparency, can be NULL */
 150};
 151
 152struct fb_con2fbmap {
 153        __u32 console;
 154        __u32 framebuffer;
 155};
 156
 157/* VESA Blanking Levels */
 158#define VESA_NO_BLANKING        0
 159#define VESA_VSYNC_SUSPEND      1
 160#define VESA_HSYNC_SUSPEND      2
 161#define VESA_POWERDOWN          3
 162
 163enum {
 164        /* screen: unblanked, hsync: on,  vsync: on */
 165        FB_BLANK_UNBLANK       = VESA_NO_BLANKING,
 166
 167        /* screen: blanked,   hsync: on,  vsync: on */
 168        FB_BLANK_NORMAL        = VESA_NO_BLANKING + 1,
 169
 170        /* screen: blanked,   hsync: on,  vsync: off */
 171        FB_BLANK_VSYNC_SUSPEND = VESA_VSYNC_SUSPEND + 1,
 172
 173        /* screen: blanked,   hsync: off, vsync: on */
 174        FB_BLANK_HSYNC_SUSPEND = VESA_HSYNC_SUSPEND + 1,
 175
 176        /* screen: blanked,   hsync: off, vsync: off */
 177        FB_BLANK_POWERDOWN     = VESA_POWERDOWN + 1
 178};
 179
 180#define FB_VBLANK_VBLANKING     0x001   /* currently in a vertical blank */
 181#define FB_VBLANK_HBLANKING     0x002   /* currently in a horizontal blank */
 182#define FB_VBLANK_HAVE_VBLANK   0x004   /* vertical blanks can be detected */
 183#define FB_VBLANK_HAVE_HBLANK   0x008   /* horizontal blanks can be detected */
 184#define FB_VBLANK_HAVE_COUNT    0x010   /* global retrace counter is available */
 185#define FB_VBLANK_HAVE_VCOUNT   0x020   /* the vcount field is valid */
 186#define FB_VBLANK_HAVE_HCOUNT   0x040   /* the hcount field is valid */
 187#define FB_VBLANK_VSYNCING      0x080   /* currently in a vsync */
 188#define FB_VBLANK_HAVE_VSYNC    0x100   /* verical syncs can be detected */
 189
 190struct fb_vblank {
 191        __u32 flags;                    /* FB_VBLANK flags */
 192        __u32 count;                    /* counter of retraces since boot */
 193        __u32 vcount;                   /* current scanline position */
 194        __u32 hcount;                   /* current scandot position */
 195        __u32 reserved[4];              /* reserved for future compatibility */
 196};
 197
 198/* Internal HW accel */
 199#define ROP_COPY 0
 200#define ROP_XOR  1
 201
 202struct fb_copyarea {
 203        __u32 dx;
 204        __u32 dy;
 205        __u32 width;
 206        __u32 height;
 207        __u32 sx;
 208        __u32 sy;
 209};
 210
 211struct fb_fillrect {
 212        __u32 dx;       /* screen-relative */
 213        __u32 dy;
 214        __u32 width;
 215        __u32 height;
 216        __u32 color;
 217        __u32 rop;
 218};
 219
 220struct fb_image {
 221        __u32 dx;               /* Where to place image */
 222        __u32 dy;
 223        __u32 width;            /* Size of image */
 224        __u32 height;
 225        __u32 fg_color;         /* Only used when a mono bitmap */
 226        __u32 bg_color;
 227        __u8  depth;            /* Depth of the image */
 228        const char *data;       /* Pointer to image data */
 229        struct fb_cmap cmap;    /* color map info */
 230};
 231
 232/*
 233 * hardware cursor control
 234 */
 235
 236#define FB_CUR_SETIMAGE 0x01
 237#define FB_CUR_SETPOS   0x02
 238#define FB_CUR_SETHOT   0x04
 239#define FB_CUR_SETCMAP  0x08
 240#define FB_CUR_SETSHAPE 0x10
 241#define FB_CUR_SETSIZE  0x20
 242#define FB_CUR_SETALL   0xFF
 243
 244struct fbcurpos {
 245        __u16 x, y;
 246};
 247
 248struct fb_cursor {
 249        __u16 set;              /* what to set */
 250        __u16 enable;           /* cursor on/off */
 251        __u16 rop;              /* bitop operation */
 252        const char *mask;       /* cursor mask bits */
 253        struct fbcurpos hot;    /* cursor hot spot */
 254        struct fb_image image;  /* Cursor image */
 255};
 256
 257#ifdef CONFIG_FB_BACKLIGHT
 258/* Settings for the generic backlight code */
 259#define FB_BACKLIGHT_LEVELS     128
 260#define FB_BACKLIGHT_MAX        0xFF
 261#endif
 262
 263#ifdef __KERNEL__
 264
 265struct vm_area_struct;
 266struct fb_info;
 267struct device;
 268struct file;
 269
 270/* Definitions below are used in the parsed monitor specs */
 271#define FB_DPMS_ACTIVE_OFF      1
 272#define FB_DPMS_SUSPEND         2
 273#define FB_DPMS_STANDBY         4
 274
 275#define FB_DISP_DDI             1
 276#define FB_DISP_ANA_700_300     2
 277#define FB_DISP_ANA_714_286     4
 278#define FB_DISP_ANA_1000_400    8
 279#define FB_DISP_ANA_700_000     16
 280
 281#define FB_DISP_MONO            32
 282#define FB_DISP_RGB             64
 283#define FB_DISP_MULTI           128
 284#define FB_DISP_UNKNOWN         256
 285
 286#define FB_SIGNAL_NONE          0
 287#define FB_SIGNAL_BLANK_BLANK   1
 288#define FB_SIGNAL_SEPARATE      2
 289#define FB_SIGNAL_COMPOSITE     4
 290#define FB_SIGNAL_SYNC_ON_GREEN 8
 291#define FB_SIGNAL_SERRATION_ON  16
 292
 293#define FB_MISC_PRIM_COLOR      1
 294#define FB_MISC_1ST_DETAIL      2       /* First Detailed Timing is preferred */
 295struct fb_chroma {
 296        __u32 redx;     /* in fraction of 1024 */
 297        __u32 greenx;
 298        __u32 bluex;
 299        __u32 whitex;
 300        __u32 redy;
 301        __u32 greeny;
 302        __u32 bluey;
 303        __u32 whitey;
 304};
 305
 306struct fb_monspecs {
 307        struct fb_chroma chroma;
 308        struct fb_videomode *modedb;    /* mode database */
 309        __u8  manufacturer[4];          /* Manufacturer */
 310        __u8  monitor[14];              /* Monitor String */
 311        __u8  serial_no[14];            /* Serial Number */
 312        __u8  ascii[14];                /* ? */
 313        __u32 modedb_len;               /* mode database length */
 314        __u32 model;                    /* Monitor Model */
 315        __u32 serial;                   /* Serial Number - Integer */
 316        __u32 year;                     /* Year manufactured */
 317        __u32 week;                     /* Week Manufactured */
 318        __u32 hfmin;                    /* hfreq lower limit (Hz) */
 319        __u32 hfmax;                    /* hfreq upper limit (Hz) */
 320        __u32 dclkmin;                  /* pixelclock lower limit (Hz) */
 321        __u32 dclkmax;                  /* pixelclock upper limit (Hz) */
 322        __u16 input;                    /* display type - see FB_DISP_* */
 323        __u16 dpms;                     /* DPMS support - see FB_DPMS_ */
 324        __u16 signal;                   /* Signal Type - see FB_SIGNAL_* */
 325        __u16 vfmin;                    /* vfreq lower limit (Hz) */
 326        __u16 vfmax;                    /* vfreq upper limit (Hz) */
 327        __u16 gamma;                    /* Gamma - in fractions of 100 */
 328        __u16 gtf       : 1;            /* supports GTF */
 329        __u16 misc;                     /* Misc flags - see FB_MISC_* */
 330        __u8  version;                  /* EDID version... */
 331        __u8  revision;                 /* ...and revision */
 332        __u8  max_x;                    /* Maximum horizontal size (cm) */
 333        __u8  max_y;                    /* Maximum vertical size (cm) */
 334};
 335
 336struct fb_cmap_user {
 337        __u32 start;                    /* First entry  */
 338        __u32 len;                      /* Number of entries */
 339        __u16 *red;             /* Red values   */
 340        __u16 *green;
 341        __u16 *blue;
 342        __u16 *transp;          /* transparency, can be NULL */
 343};
 344
 345struct fb_image_user {
 346        __u32 dx;                       /* Where to place image */
 347        __u32 dy;
 348        __u32 width;                    /* Size of image */
 349        __u32 height;
 350        __u32 fg_color;                 /* Only used when a mono bitmap */
 351        __u32 bg_color;
 352        __u8  depth;                    /* Depth of the image */
 353        const char *data;       /* Pointer to image data */
 354        struct fb_cmap_user cmap;       /* color map info */
 355};
 356
 357struct fb_cursor_user {
 358        __u16 set;                      /* what to set */
 359        __u16 enable;                   /* cursor on/off */
 360        __u16 rop;                      /* bitop operation */
 361        const char *mask;       /* cursor mask bits */
 362        struct fbcurpos hot;            /* cursor hot spot */
 363        struct fb_image_user image;     /* Cursor image */
 364};
 365
 366/*
 367 * Register/unregister for framebuffer events
 368 */
 369
 370/*      The resolution of the passed in fb_info about to change */
 371#define FB_EVENT_MODE_CHANGE            0x01
 372/*      The display on this fb_info is beeing suspended, no access to the
 373 *      framebuffer is allowed any more after that call returns
 374 */
 375#define FB_EVENT_SUSPEND                0x02
 376/*      The display on this fb_info was resumed, you can restore the display
 377 *      if you own it
 378 */
 379#define FB_EVENT_RESUME                 0x03
 380/*      An entry from the modelist was removed */
 381#define FB_EVENT_MODE_DELETE            0x04
 382/*      A driver registered itself */
 383#define FB_EVENT_FB_REGISTERED          0x05
 384/*      A driver unregistered itself */
 385#define FB_EVENT_FB_UNREGISTERED        0x06
 386/*      CONSOLE-SPECIFIC: get console to framebuffer mapping */
 387#define FB_EVENT_GET_CONSOLE_MAP        0x07
 388/*      CONSOLE-SPECIFIC: set console to framebuffer mapping */
 389#define FB_EVENT_SET_CONSOLE_MAP        0x08
 390/*      A hardware display blank change occurred */
 391#define FB_EVENT_BLANK                  0x09
 392/*      Private modelist is to be replaced */
 393#define FB_EVENT_NEW_MODELIST           0x0A
 394/*      The resolution of the passed in fb_info about to change and
 395        all vc's should be changed         */
 396#define FB_EVENT_MODE_CHANGE_ALL        0x0B
 397/*      A software display blank change occurred */
 398#define FB_EVENT_CONBLANK               0x0C
 399/*      Get drawing requirements        */
 400#define FB_EVENT_GET_REQ                0x0D
 401/*      Unbind from the console if possible */
 402#define FB_EVENT_FB_UNBIND              0x0E
 403
 404struct fb_event {
 405        struct fb_info *info;
 406        void *data;
 407};
 408
 409struct fb_blit_caps {
 410        u32 x;
 411        u32 y;
 412        u32 len;
 413        u32 flags;
 414};
 415
 416/*
 417 * Pixmap structure definition
 418 *
 419 * The purpose of this structure is to translate data
 420 * from the hardware independent format of fbdev to what
 421 * format the hardware needs.
 422 */
 423
 424#define FB_PIXMAP_DEFAULT 1     /* used internally by fbcon */
 425#define FB_PIXMAP_SYSTEM  2     /* memory is in system RAM  */
 426#define FB_PIXMAP_IO      4     /* memory is iomapped       */
 427#define FB_PIXMAP_SYNC    256   /* set if GPU can DMA       */
 428
 429struct fb_pixmap {
 430        u8  *addr;              /* pointer to memory                    */
 431        u32 size;               /* size of buffer in bytes              */
 432        u32 offset;             /* current offset to buffer             */
 433        u32 buf_align;          /* byte alignment of each bitmap        */
 434        u32 scan_align;         /* alignment per scanline               */
 435        u32 access_align;       /* alignment per read/write (bits)      */
 436        u32 flags;              /* see FB_PIXMAP_*                      */
 437        u32 blit_x;             /* supported bit block dimensions (1-32)*/
 438        u32 blit_y;             /* Format: blit_x = 1 << (width - 1)    */
 439                                /*         blit_y = 1 << (height - 1)   */
 440                                /* if 0, will be set to 0xffffffff (all)*/
 441        /* access methods */
 442        void (*writeio)(struct fb_info *info, void *dst, void *src, unsigned int size);
 443        void (*readio) (struct fb_info *info, void *dst, void *src, unsigned int size);
 444};
 445
 446#ifdef CONFIG_FB_DEFERRED_IO
 447struct fb_deferred_io {
 448        /* delay between mkwrite and deferred handler */
 449        unsigned long delay;
 450        struct mutex lock; /* mutex that protects the page list */
 451        struct list_head pagelist; /* list of touched pages */
 452        /* callback */
 453        void (*deferred_io)(struct fb_info *info, struct list_head *pagelist);
 454};
 455#endif
 456
 457/* FBINFO_* = fb_info.flags bit flags */
 458#define FBINFO_MODULE           0x0001  /* Low-level driver is a module */
 459#define FBINFO_HWACCEL_DISABLED 0x0002
 460        /* When FBINFO_HWACCEL_DISABLED is set:
 461         *  Hardware acceleration is turned off.  Software implementations
 462         *  of required functions (copyarea(), fillrect(), and imageblit())
 463         *  takes over; acceleration engine should be in a quiescent state */
 464
 465/* hints */
 466#define FBINFO_PARTIAL_PAN_OK   0x0040 /* otw use pan only for double-buffering */
 467#define FBINFO_READS_FAST       0x0080 /* soft-copy faster than rendering */
 468
 469/*
 470 * A driver may set this flag to indicate that it does want a set_par to be
 471 * called every time when fbcon_switch is executed. The advantage is that with
 472 * this flag set you can really be sure that set_par is always called before
 473 * any of the functions dependant on the correct hardware state or altering
 474 * that state, even if you are using some broken X releases. The disadvantage
 475 * is that it introduces unwanted delays to every console switch if set_par
 476 * is slow. It is a good idea to try this flag in the drivers initialization
 477 * code whenever there is a bug report related to switching between X and the
 478 * framebuffer console.
 479 */
 480#define FBINFO_MISC_ALWAYS_SETPAR   0x40000
 481
 482/*
 483 * Host and GPU endianness differ.
 484 */
 485#define FBINFO_FOREIGN_ENDIAN   0x100000
 486/*
 487 * Big endian math. This is the same flags as above, but with different
 488 * meaning, it is set by the fb subsystem depending FOREIGN_ENDIAN flag
 489 * and host endianness. Drivers should not use this flag.
 490 */
 491#define FBINFO_BE_MATH  0x100000
 492
 493struct fb_info {
 494        int node;
 495        int flags;
 496        struct fb_var_screeninfo var;   /* Current var */
 497        struct fb_fix_screeninfo fix;   /* Current fix */
 498        struct fb_monspecs monspecs;    /* Current Monitor specs */
 499        struct fb_pixmap pixmap;        /* Image hardware mapper */
 500        struct fb_pixmap sprite;        /* Cursor hardware mapper */
 501        struct fb_cmap cmap;            /* Current cmap */
 502        struct list_head modelist;      /* mode list */
 503        struct fb_videomode *mode;      /* current mode */
 504
 505        char *screen_base;      /* Virtual address */
 506        unsigned long screen_size;      /* Amount of ioremapped VRAM or 0 */
 507        void *pseudo_palette;           /* Fake palette of 16 colors */
 508#define FBINFO_STATE_RUNNING    0
 509#define FBINFO_STATE_SUSPENDED  1
 510        u32 state;                      /* Hardware state i.e suspend */
 511        void *fbcon_par;                /* fbcon use-only private area */
 512        /* From here on everything is device dependent */
 513        void *par;
 514};
 515
 516#define FBINFO_DEFAULT  0
 517
 518#define FBINFO_FLAG_MODULE      FBINFO_MODULE
 519#define FBINFO_FLAG_DEFAULT     FBINFO_DEFAULT
 520
 521/* This will go away */
 522#if defined(__sparc__)
 523
 524/* We map all of our framebuffers such that big-endian accesses
 525 * are what we want, so the following is sufficient.
 526 */
 527
 528/* This will go away */
 529#define fb_readb sbus_readb
 530#define fb_readw sbus_readw
 531#define fb_readl sbus_readl
 532#define fb_readq sbus_readq
 533#define fb_writeb sbus_writeb
 534#define fb_writew sbus_writew
 535#define fb_writel sbus_writel
 536#define fb_writeq sbus_writeq
 537#define fb_memset sbus_memset_io
 538
 539#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__bfin__)
 540
 541#define fb_readb __raw_readb
 542#define fb_readw __raw_readw
 543#define fb_readl __raw_readl
 544#define fb_readq __raw_readq
 545#define fb_writeb __raw_writeb
 546#define fb_writew __raw_writew
 547#define fb_writel __raw_writel
 548#define fb_writeq __raw_writeq
 549#define fb_memset memset_io
 550
 551#else
 552
 553#define fb_readb(addr) (*(volatile u8 *) (addr))
 554#define fb_readw(addr) (*(volatile u16 *) (addr))
 555#define fb_readl(addr) (*(volatile u32 *) (addr))
 556#define fb_readq(addr) (*(volatile u64 *) (addr))
 557#define fb_writeb(b,addr) (*(volatile u8 *) (addr) = (b))
 558#define fb_writew(b,addr) (*(volatile u16 *) (addr) = (b))
 559#define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b))
 560#define fb_writeq(b,addr) (*(volatile u64 *) (addr) = (b))
 561#define fb_memset memset
 562
 563#endif
 564
 565#define FB_LEFT_POS(p, bpp)          (fb_be_math(p) ? (32 - (bpp)) : 0)
 566#define FB_SHIFT_HIGH(p, val, bits)  (fb_be_math(p) ? (val) >> (bits) : \
 567                                                      (val) << (bits))
 568#define FB_SHIFT_LOW(p, val, bits)   (fb_be_math(p) ? (val) << (bits) : \
 569                                                      (val) >> (bits))
 570/* drivers/video/fbmon.c */
 571#define FB_MAXTIMINGS           0
 572#define FB_VSYNCTIMINGS         1
 573#define FB_HSYNCTIMINGS         2
 574#define FB_DCLKTIMINGS          3
 575#define FB_IGNOREMON            0x100
 576
 577#define FB_MODE_IS_UNKNOWN      0
 578#define FB_MODE_IS_DETAILED     1
 579#define FB_MODE_IS_STANDARD     2
 580#define FB_MODE_IS_VESA         4
 581#define FB_MODE_IS_CALCULATED   8
 582#define FB_MODE_IS_FIRST        16
 583#define FB_MODE_IS_FROM_VAR     32
 584
 585/* drivers/video/fbcmap.c */
 586
 587extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
 588extern void fb_dealloc_cmap(struct fb_cmap *cmap);
 589extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to);
 590extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to);
 591extern int fb_set_cmap(struct fb_cmap *cmap, struct fb_info *fb_info);
 592extern int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *fb_info);
 593extern const struct fb_cmap *fb_default_cmap(int len);
 594extern void fb_invert_cmaps(void);
 595
 596struct fb_videomode {
 597        const char *name;       /* optional */
 598        u32 refresh;            /* optional */
 599        u32 xres;
 600        u32 yres;
 601        u32 pixclock;
 602        u32 left_margin;
 603        u32 right_margin;
 604        u32 upper_margin;
 605        u32 lower_margin;
 606        u32 hsync_len;
 607        u32 vsync_len;
 608        u32 sync;
 609        u32 vmode;
 610        u32 flag;
 611};
 612
 613int board_video_skip(void);
 614
 615#endif /* __KERNEL__ */
 616
 617#endif /* _LINUX_FB_H */
 618