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
 163
 164enum {
 165        /* screen: unblanked, hsync: on,  vsync: on */
 166        FB_BLANK_UNBLANK       = VESA_NO_BLANKING,
 167
 168        /* screen: blanked,   hsync: on,  vsync: on */
 169        FB_BLANK_NORMAL        = VESA_NO_BLANKING + 1,
 170
 171        /* screen: blanked,   hsync: on,  vsync: off */
 172        FB_BLANK_VSYNC_SUSPEND = VESA_VSYNC_SUSPEND + 1,
 173
 174        /* screen: blanked,   hsync: off, vsync: on */
 175        FB_BLANK_HSYNC_SUSPEND = VESA_HSYNC_SUSPEND + 1,
 176
 177        /* screen: blanked,   hsync: off, vsync: off */
 178        FB_BLANK_POWERDOWN     = VESA_POWERDOWN + 1
 179};
 180
 181#define FB_VBLANK_VBLANKING     0x001   /* currently in a vertical blank */
 182#define FB_VBLANK_HBLANKING     0x002   /* currently in a horizontal blank */
 183#define FB_VBLANK_HAVE_VBLANK   0x004   /* vertical blanks can be detected */
 184#define FB_VBLANK_HAVE_HBLANK   0x008   /* horizontal blanks can be detected */
 185#define FB_VBLANK_HAVE_COUNT    0x010   /* global retrace counter is available */
 186#define FB_VBLANK_HAVE_VCOUNT   0x020   /* the vcount field is valid */
 187#define FB_VBLANK_HAVE_HCOUNT   0x040   /* the hcount field is valid */
 188#define FB_VBLANK_VSYNCING      0x080   /* currently in a vsync */
 189#define FB_VBLANK_HAVE_VSYNC    0x100   /* verical syncs can be detected */
 190
 191struct fb_vblank {
 192        __u32 flags;                    /* FB_VBLANK flags */
 193        __u32 count;                    /* counter of retraces since boot */
 194        __u32 vcount;                   /* current scanline position */
 195        __u32 hcount;                   /* current scandot position */
 196        __u32 reserved[4];              /* reserved for future compatibility */
 197};
 198
 199/* Internal HW accel */
 200#define ROP_COPY 0
 201#define ROP_XOR  1
 202
 203struct fb_copyarea {
 204        __u32 dx;
 205        __u32 dy;
 206        __u32 width;
 207        __u32 height;
 208        __u32 sx;
 209        __u32 sy;
 210};
 211
 212struct fb_fillrect {
 213        __u32 dx;       /* screen-relative */
 214        __u32 dy;
 215        __u32 width;
 216        __u32 height;
 217        __u32 color;
 218        __u32 rop;
 219};
 220
 221struct fb_image {
 222        __u32 dx;               /* Where to place image */
 223        __u32 dy;
 224        __u32 width;            /* Size of image */
 225        __u32 height;
 226        __u32 fg_color;         /* Only used when a mono bitmap */
 227        __u32 bg_color;
 228        __u8  depth;            /* Depth of the image */
 229        const char *data;       /* Pointer to image data */
 230        struct fb_cmap cmap;    /* color map info */
 231};
 232
 233/*
 234 * hardware cursor control
 235 */
 236
 237#define FB_CUR_SETIMAGE 0x01
 238#define FB_CUR_SETPOS   0x02
 239#define FB_CUR_SETHOT   0x04
 240#define FB_CUR_SETCMAP  0x08
 241#define FB_CUR_SETSHAPE 0x10
 242#define FB_CUR_SETSIZE  0x20
 243#define FB_CUR_SETALL   0xFF
 244
 245struct fbcurpos {
 246        __u16 x, y;
 247};
 248
 249struct fb_cursor {
 250        __u16 set;              /* what to set */
 251        __u16 enable;           /* cursor on/off */
 252        __u16 rop;              /* bitop operation */
 253        const char *mask;       /* cursor mask bits */
 254        struct fbcurpos hot;    /* cursor hot spot */
 255        struct fb_image image;  /* Cursor image */
 256};
 257
 258#ifdef CONFIG_FB_BACKLIGHT
 259/* Settings for the generic backlight code */
 260#define FB_BACKLIGHT_LEVELS     128
 261#define FB_BACKLIGHT_MAX        0xFF
 262#endif
 263
 264#ifdef __KERNEL__
 265
 266struct vm_area_struct;
 267struct fb_info;
 268struct device;
 269struct file;
 270
 271/* Definitions below are used in the parsed monitor specs */
 272#define FB_DPMS_ACTIVE_OFF      1
 273#define FB_DPMS_SUSPEND         2
 274#define FB_DPMS_STANDBY         4
 275
 276#define FB_DISP_DDI             1
 277#define FB_DISP_ANA_700_300     2
 278#define FB_DISP_ANA_714_286     4
 279#define FB_DISP_ANA_1000_400    8
 280#define FB_DISP_ANA_700_000     16
 281
 282#define FB_DISP_MONO            32
 283#define FB_DISP_RGB             64
 284#define FB_DISP_MULTI           128
 285#define FB_DISP_UNKNOWN         256
 286
 287#define FB_SIGNAL_NONE          0
 288#define FB_SIGNAL_BLANK_BLANK   1
 289#define FB_SIGNAL_SEPARATE      2
 290#define FB_SIGNAL_COMPOSITE     4
 291#define FB_SIGNAL_SYNC_ON_GREEN 8
 292#define FB_SIGNAL_SERRATION_ON  16
 293
 294#define FB_MISC_PRIM_COLOR      1
 295#define FB_MISC_1ST_DETAIL      2       /* First Detailed Timing is preferred */
 296struct fb_chroma {
 297        __u32 redx;     /* in fraction of 1024 */
 298        __u32 greenx;
 299        __u32 bluex;
 300        __u32 whitex;
 301        __u32 redy;
 302        __u32 greeny;
 303        __u32 bluey;
 304        __u32 whitey;
 305};
 306
 307struct fb_monspecs {
 308        struct fb_chroma chroma;
 309        struct fb_videomode *modedb;    /* mode database */
 310        __u8  manufacturer[4];          /* Manufacturer */
 311        __u8  monitor[14];              /* Monitor String */
 312        __u8  serial_no[14];            /* Serial Number */
 313        __u8  ascii[14];                /* ? */
 314        __u32 modedb_len;               /* mode database length */
 315        __u32 model;                    /* Monitor Model */
 316        __u32 serial;                   /* Serial Number - Integer */
 317        __u32 year;                     /* Year manufactured */
 318        __u32 week;                     /* Week Manufactured */
 319        __u32 hfmin;                    /* hfreq lower limit (Hz) */
 320        __u32 hfmax;                    /* hfreq upper limit (Hz) */
 321        __u32 dclkmin;                  /* pixelclock lower limit (Hz) */
 322        __u32 dclkmax;                  /* pixelclock upper limit (Hz) */
 323        __u16 input;                    /* display type - see FB_DISP_* */
 324        __u16 dpms;                     /* DPMS support - see FB_DPMS_ */
 325        __u16 signal;                   /* Signal Type - see FB_SIGNAL_* */
 326        __u16 vfmin;                    /* vfreq lower limit (Hz) */
 327        __u16 vfmax;                    /* vfreq upper limit (Hz) */
 328        __u16 gamma;                    /* Gamma - in fractions of 100 */
 329        __u16 gtf       : 1;            /* supports GTF */
 330        __u16 misc;                     /* Misc flags - see FB_MISC_* */
 331        __u8  version;                  /* EDID version... */
 332        __u8  revision;                 /* ...and revision */
 333        __u8  max_x;                    /* Maximum horizontal size (cm) */
 334        __u8  max_y;                    /* Maximum vertical size (cm) */
 335};
 336
 337struct fb_cmap_user {
 338        __u32 start;                    /* First entry  */
 339        __u32 len;                      /* Number of entries */
 340        __u16 *red;             /* Red values   */
 341        __u16 *green;
 342        __u16 *blue;
 343        __u16 *transp;          /* transparency, can be NULL */
 344};
 345
 346struct fb_image_user {
 347        __u32 dx;                       /* Where to place image */
 348        __u32 dy;
 349        __u32 width;                    /* Size of image */
 350        __u32 height;
 351        __u32 fg_color;                 /* Only used when a mono bitmap */
 352        __u32 bg_color;
 353        __u8  depth;                    /* Depth of the image */
 354        const char *data;       /* Pointer to image data */
 355        struct fb_cmap_user cmap;       /* color map info */
 356};
 357
 358struct fb_cursor_user {
 359        __u16 set;                      /* what to set */
 360        __u16 enable;                   /* cursor on/off */
 361        __u16 rop;                      /* bitop operation */
 362        const char *mask;       /* cursor mask bits */
 363        struct fbcurpos hot;            /* cursor hot spot */
 364        struct fb_image_user image;     /* Cursor image */
 365};
 366
 367/*
 368 * Register/unregister for framebuffer events
 369 */
 370
 371/*      The resolution of the passed in fb_info about to change */
 372#define FB_EVENT_MODE_CHANGE            0x01
 373/*      The display on this fb_info is beeing suspended, no access to the
 374 *      framebuffer is allowed any more after that call returns
 375 */
 376#define FB_EVENT_SUSPEND                0x02
 377/*      The display on this fb_info was resumed, you can restore the display
 378 *      if you own it
 379 */
 380#define FB_EVENT_RESUME                 0x03
 381/*      An entry from the modelist was removed */
 382#define FB_EVENT_MODE_DELETE            0x04
 383/*      A driver registered itself */
 384#define FB_EVENT_FB_REGISTERED          0x05
 385/*      A driver unregistered itself */
 386#define FB_EVENT_FB_UNREGISTERED        0x06
 387/*      CONSOLE-SPECIFIC: get console to framebuffer mapping */
 388#define FB_EVENT_GET_CONSOLE_MAP        0x07
 389/*      CONSOLE-SPECIFIC: set console to framebuffer mapping */
 390#define FB_EVENT_SET_CONSOLE_MAP        0x08
 391/*      A hardware display blank change occurred */
 392#define FB_EVENT_BLANK                  0x09
 393/*      Private modelist is to be replaced */
 394#define FB_EVENT_NEW_MODELIST           0x0A
 395/*      The resolution of the passed in fb_info about to change and
 396        all vc's should be changed         */
 397#define FB_EVENT_MODE_CHANGE_ALL        0x0B
 398/*      A software display blank change occurred */
 399#define FB_EVENT_CONBLANK               0x0C
 400/*      Get drawing requirements        */
 401#define FB_EVENT_GET_REQ                0x0D
 402/*      Unbind from the console if possible */
 403#define FB_EVENT_FB_UNBIND              0x0E
 404
 405struct fb_event {
 406        struct fb_info *info;
 407        void *data;
 408};
 409
 410struct fb_blit_caps {
 411        u32 x;
 412        u32 y;
 413        u32 len;
 414        u32 flags;
 415};
 416
 417/*
 418 * Pixmap structure definition
 419 *
 420 * The purpose of this structure is to translate data
 421 * from the hardware independent format of fbdev to what
 422 * format the hardware needs.
 423 */
 424
 425#define FB_PIXMAP_DEFAULT 1     /* used internally by fbcon */
 426#define FB_PIXMAP_SYSTEM  2     /* memory is in system RAM  */
 427#define FB_PIXMAP_IO      4     /* memory is iomapped       */
 428#define FB_PIXMAP_SYNC    256   /* set if GPU can DMA       */
 429
 430struct fb_pixmap {
 431        u8  *addr;              /* pointer to memory                    */
 432        u32 size;               /* size of buffer in bytes              */
 433        u32 offset;             /* current offset to buffer             */
 434        u32 buf_align;          /* byte alignment of each bitmap        */
 435        u32 scan_align;         /* alignment per scanline               */
 436        u32 access_align;       /* alignment per read/write (bits)      */
 437        u32 flags;              /* see FB_PIXMAP_*                      */
 438        u32 blit_x;             /* supported bit block dimensions (1-32)*/
 439        u32 blit_y;             /* Format: blit_x = 1 << (width - 1)    */
 440                                /*         blit_y = 1 << (height - 1)   */
 441                                /* if 0, will be set to 0xffffffff (all)*/
 442        /* access methods */
 443        void (*writeio)(struct fb_info *info, void *dst, void *src, unsigned int size);
 444        void (*readio) (struct fb_info *info, void *dst, void *src, unsigned int size);
 445};
 446
 447#ifdef CONFIG_FB_DEFERRED_IO
 448struct fb_deferred_io {
 449        /* delay between mkwrite and deferred handler */
 450        unsigned long delay;
 451        struct mutex lock; /* mutex that protects the page list */
 452        struct list_head pagelist; /* list of touched pages */
 453        /* callback */
 454        void (*deferred_io)(struct fb_info *info, struct list_head *pagelist);
 455};
 456#endif
 457
 458/* FBINFO_* = fb_info.flags bit flags */
 459#define FBINFO_MODULE           0x0001  /* Low-level driver is a module */
 460#define FBINFO_HWACCEL_DISABLED 0x0002
 461        /* When FBINFO_HWACCEL_DISABLED is set:
 462         *  Hardware acceleration is turned off.  Software implementations
 463         *  of required functions (copyarea(), fillrect(), and imageblit())
 464         *  takes over; acceleration engine should be in a quiescent state */
 465
 466/* hints */
 467#define FBINFO_PARTIAL_PAN_OK   0x0040 /* otw use pan only for double-buffering */
 468#define FBINFO_READS_FAST       0x0080 /* soft-copy faster than rendering */
 469
 470/*
 471 * A driver may set this flag to indicate that it does want a set_par to be
 472 * called every time when fbcon_switch is executed. The advantage is that with
 473 * this flag set you can really be sure that set_par is always called before
 474 * any of the functions dependant on the correct hardware state or altering
 475 * that state, even if you are using some broken X releases. The disadvantage
 476 * is that it introduces unwanted delays to every console switch if set_par
 477 * is slow. It is a good idea to try this flag in the drivers initialization
 478 * code whenever there is a bug report related to switching between X and the
 479 * framebuffer console.
 480 */
 481#define FBINFO_MISC_ALWAYS_SETPAR   0x40000
 482
 483/*
 484 * Host and GPU endianness differ.
 485 */
 486#define FBINFO_FOREIGN_ENDIAN   0x100000
 487/*
 488 * Big endian math. This is the same flags as above, but with different
 489 * meaning, it is set by the fb subsystem depending FOREIGN_ENDIAN flag
 490 * and host endianness. Drivers should not use this flag.
 491 */
 492#define FBINFO_BE_MATH  0x100000
 493
 494struct fb_info {
 495        int node;
 496        int flags;
 497        struct fb_var_screeninfo var;   /* Current var */
 498        struct fb_fix_screeninfo fix;   /* Current fix */
 499        struct fb_monspecs monspecs;    /* Current Monitor specs */
 500        struct fb_pixmap pixmap;        /* Image hardware mapper */
 501        struct fb_pixmap sprite;        /* Cursor hardware mapper */
 502        struct fb_cmap cmap;            /* Current cmap */
 503        struct list_head modelist;      /* mode list */
 504        struct fb_videomode *mode;      /* current mode */
 505
 506        char *screen_base;      /* Virtual address */
 507        unsigned long screen_size;      /* Amount of ioremapped VRAM or 0 */
 508        void *pseudo_palette;           /* Fake palette of 16 colors */
 509#define FBINFO_STATE_RUNNING    0
 510#define FBINFO_STATE_SUSPENDED  1
 511        u32 state;                      /* Hardware state i.e suspend */
 512        void *fbcon_par;                /* fbcon use-only private area */
 513        /* From here on everything is device dependent */
 514        void *par;
 515};
 516
 517#define FBINFO_DEFAULT  0
 518
 519#define FBINFO_FLAG_MODULE      FBINFO_MODULE
 520#define FBINFO_FLAG_DEFAULT     FBINFO_DEFAULT
 521
 522/* This will go away */
 523#if defined(__sparc__)
 524
 525/* We map all of our framebuffers such that big-endian accesses
 526 * are what we want, so the following is sufficient.
 527 */
 528
 529/* This will go away */
 530#define fb_readb sbus_readb
 531#define fb_readw sbus_readw
 532#define fb_readl sbus_readl
 533#define fb_readq sbus_readq
 534#define fb_writeb sbus_writeb
 535#define fb_writew sbus_writew
 536#define fb_writel sbus_writel
 537#define fb_writeq sbus_writeq
 538#define fb_memset sbus_memset_io
 539
 540#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__bfin__)
 541
 542#define fb_readb __raw_readb
 543#define fb_readw __raw_readw
 544#define fb_readl __raw_readl
 545#define fb_readq __raw_readq
 546#define fb_writeb __raw_writeb
 547#define fb_writew __raw_writew
 548#define fb_writel __raw_writel
 549#define fb_writeq __raw_writeq
 550#define fb_memset memset_io
 551
 552#else
 553
 554#define fb_readb(addr) (*(volatile u8 *) (addr))
 555#define fb_readw(addr) (*(volatile u16 *) (addr))
 556#define fb_readl(addr) (*(volatile u32 *) (addr))
 557#define fb_readq(addr) (*(volatile u64 *) (addr))
 558#define fb_writeb(b,addr) (*(volatile u8 *) (addr) = (b))
 559#define fb_writew(b,addr) (*(volatile u16 *) (addr) = (b))
 560#define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b))
 561#define fb_writeq(b,addr) (*(volatile u64 *) (addr) = (b))
 562#define fb_memset memset
 563
 564#endif
 565
 566#define FB_LEFT_POS(p, bpp)          (fb_be_math(p) ? (32 - (bpp)) : 0)
 567#define FB_SHIFT_HIGH(p, val, bits)  (fb_be_math(p) ? (val) >> (bits) : \
 568                                                      (val) << (bits))
 569#define FB_SHIFT_LOW(p, val, bits)   (fb_be_math(p) ? (val) << (bits) : \
 570                                                      (val) >> (bits))
 571/* drivers/video/fbmon.c */
 572#define FB_MAXTIMINGS           0
 573#define FB_VSYNCTIMINGS         1
 574#define FB_HSYNCTIMINGS         2
 575#define FB_DCLKTIMINGS          3
 576#define FB_IGNOREMON            0x100
 577
 578#define FB_MODE_IS_UNKNOWN      0
 579#define FB_MODE_IS_DETAILED     1
 580#define FB_MODE_IS_STANDARD     2
 581#define FB_MODE_IS_VESA         4
 582#define FB_MODE_IS_CALCULATED   8
 583#define FB_MODE_IS_FIRST        16
 584#define FB_MODE_IS_FROM_VAR     32
 585
 586
 587/* drivers/video/fbcmap.c */
 588
 589extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
 590extern void fb_dealloc_cmap(struct fb_cmap *cmap);
 591extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to);
 592extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to);
 593extern int fb_set_cmap(struct fb_cmap *cmap, struct fb_info *fb_info);
 594extern int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *fb_info);
 595extern const struct fb_cmap *fb_default_cmap(int len);
 596extern void fb_invert_cmaps(void);
 597
 598struct fb_videomode {
 599        const char *name;       /* optional */
 600        u32 refresh;            /* optional */
 601        u32 xres;
 602        u32 yres;
 603        u32 pixclock;
 604        u32 left_margin;
 605        u32 right_margin;
 606        u32 upper_margin;
 607        u32 lower_margin;
 608        u32 hsync_len;
 609        u32 vsync_len;
 610        u32 sync;
 611        u32 vmode;
 612        u32 flag;
 613};
 614
 615int board_video_skip(void);
 616
 617#endif /* __KERNEL__ */
 618
 619#endif /* _LINUX_FB_H */
 620