uboot/include/linux/fb.h
<<
>>
Prefs
   1#ifndef _LINUX_FB_H
   2#define _LINUX_FB_H
   3
   4#include <linux/types.h>
   5
   6/* Definitions of frame buffers                                         */
   7
   8#define FB_MAX                  32      /* sufficient for now */
   9
  10#define FB_TYPE_PACKED_PIXELS           0       /* Packed Pixels        */
  11
  12#define FB_VISUAL_MONO01                0       /* Monochr. 1=Black 0=White */
  13#define FB_VISUAL_MONO10                1       /* Monochr. 1=White 0=Black */
  14#define FB_VISUAL_TRUECOLOR             2       /* True color   */
  15#define FB_VISUAL_PSEUDOCOLOR           3       /* Pseudo color (like atari) */
  16#define FB_VISUAL_DIRECTCOLOR           4       /* Direct color */
  17#define FB_VISUAL_STATIC_PSEUDOCOLOR    5       /* Pseudo color readonly */
  18
  19#define FB_ACCEL_NONE           0       /* no hardware accelerator      */
  20
  21struct fb_fix_screeninfo {
  22        char id[16];                    /* identification string eg "TT Builtin" */
  23        unsigned long smem_start;       /* Start of frame buffer mem */
  24                                        /* (physical address) */
  25        __u32 smem_len;                 /* Length of frame buffer mem */
  26        __u32 type;                     /* see FB_TYPE_*                */
  27        __u32 type_aux;                 /* Interleave for interleaved Planes */
  28        __u32 visual;                   /* see FB_VISUAL_*              */
  29        __u16 xpanstep;                 /* zero if no hardware panning  */
  30        __u16 ypanstep;                 /* zero if no hardware panning  */
  31        __u16 ywrapstep;                /* zero if no hardware ywrap    */
  32        __u32 line_length;              /* length of a line in bytes    */
  33        unsigned long mmio_start;       /* Start of Memory Mapped I/O   */
  34                                        /* (physical address) */
  35        __u32 mmio_len;                 /* Length of Memory Mapped I/O  */
  36        __u32 accel;                    /* Indicate to driver which     */
  37                                        /*  specific chip/card we have  */
  38        __u16 reserved[3];              /* Reserved for future compatibility */
  39};
  40
  41/*
  42 * Interpretation of offset for color fields: All offsets are from the right,
  43 * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you
  44 * can use the offset as right argument to <<). A pixel afterwards is a bit
  45 * stream and is written to video memory as that unmodified.
  46 *
  47 * For pseudocolor: offset and length should be the same for all color
  48 * components. Offset specifies the position of the least significant bit
  49 * of the pallette index in a pixel value. Length indicates the number
  50 * of available palette entries (i.e. # of entries = 1 << length).
  51 */
  52struct fb_bitfield {
  53        __u32 offset;                   /* beginning of bitfield        */
  54        __u32 length;                   /* length of bitfield           */
  55        __u32 msb_right;
  56
  57};
  58
  59#define FB_NONSTD_HAM           1       /* Hold-And-Modify (HAM)        */
  60#define FB_NONSTD_REV_PIX_IN_B  2       /* order of pixels in each byte is reversed */
  61
  62#define FB_ACTIVATE_NOW         0       /* set values immediately (or vbl)*/
  63#define FB_ACTIVATE_NXTOPEN     1       /* activate on next open        */
  64#define FB_ACTIVATE_TEST        2       /* don't set, round up impossible */
  65#define FB_ACTIVATE_MASK       15
  66                                        /* values                       */
  67#define FB_ACTIVATE_VBL        16       /* activate values on next vbl  */
  68#define FB_CHANGE_CMAP_VBL     32       /* change colormap on vbl       */
  69#define FB_ACTIVATE_ALL        64       /* change all VCs on this fb    */
  70#define FB_ACTIVATE_FORCE     128       /* force apply even when no change*/
  71#define FB_ACTIVATE_INV_MODE  256       /* invalidate videomode */
  72
  73#define FB_SYNC_HOR_HIGH_ACT    1       /* horizontal sync high active  */
  74#define FB_SYNC_VERT_HIGH_ACT   2       /* vertical sync high active    */
  75#define FB_SYNC_EXT             4       /* external sync                */
  76#define FB_SYNC_COMP_HIGH_ACT   8       /* composite sync high active   */
  77#define FB_SYNC_BROADCAST       16      /* broadcast video timings      */
  78                                        /* vtotal = 144d/288n/576i => PAL  */
  79                                        /* vtotal = 121d/242n/484i => NTSC */
  80#define FB_SYNC_ON_GREEN        32      /* sync on green */
  81
  82#define FB_VMODE_NONINTERLACED  0       /* non interlaced */
  83#define FB_VMODE_INTERLACED     1       /* interlaced   */
  84#define FB_VMODE_DOUBLE         2       /* double scan */
  85#define FB_VMODE_ODD_FLD_FIRST  4       /* interlaced: top line first */
  86#define FB_VMODE_MASK           255
  87
  88#define FB_VMODE_YWRAP          256     /* ywrap instead of panning     */
  89#define FB_VMODE_SMOOTH_XPAN    512     /* smooth xpan possible (internally used) */
  90#define FB_VMODE_CONUPDATE      512     /* don't update x/yoffset       */
  91
  92/*
  93 * Display rotation support
  94 */
  95#define FB_ROTATE_UR      0
  96#define FB_ROTATE_CW      1
  97#define FB_ROTATE_UD      2
  98#define FB_ROTATE_CCW     3
  99
 100#define PICOS2KHZ(a) (1000000000UL/(a))
 101#define KHZ2PICOS(a) (1000000000UL/(a))
 102
 103struct fb_var_screeninfo {
 104        __u32 xres;                     /* visible resolution           */
 105        __u32 yres;
 106        __u32 xres_virtual;             /* virtual resolution           */
 107        __u32 yres_virtual;
 108        __u32 xoffset;                  /* offset from virtual to visible */
 109        __u32 yoffset;                  /* resolution                   */
 110
 111        __u32 bits_per_pixel;           /* guess what                   */
 112        __u32 grayscale;                /* != 0 Graylevels instead of colors */
 113
 114        struct fb_bitfield red;         /* bitfield in fb mem if true color, */
 115        struct fb_bitfield green;       /* else only length is significant */
 116        struct fb_bitfield blue;
 117        struct fb_bitfield transp;      /* transparency                 */
 118
 119        __u32 nonstd;                   /* != 0 Non standard pixel format */
 120
 121        __u32 activate;                 /* see FB_ACTIVATE_*            */
 122
 123        __u32 height;                   /* height of picture in mm    */
 124        __u32 width;                    /* width of picture in mm     */
 125
 126        __u32 accel_flags;              /* (OBSOLETE) see fb_info.flags */
 127
 128        /* Timing: All values in pixclocks, except pixclock (of course) */
 129        __u32 pixclock;                 /* pixel clock in ps (pico seconds) */
 130        __u32 left_margin;              /* time from sync to picture    */
 131        __u32 right_margin;             /* time from picture to sync    */
 132        __u32 upper_margin;             /* time from sync to picture    */
 133        __u32 lower_margin;
 134        __u32 hsync_len;                /* length of horizontal sync    */
 135        __u32 vsync_len;                /* length of vertical sync      */
 136        __u32 sync;                     /* see FB_SYNC_*                */
 137        __u32 vmode;                    /* see FB_VMODE_*               */
 138        __u32 rotate;                   /* angle we rotate counter clockwise */
 139        __u32 reserved[5];              /* Reserved for future compatibility */
 140};
 141
 142struct fb_cmap {
 143        __u32 start;                    /* First entry  */
 144        __u32 len;                      /* Number of entries */
 145        __u16 *red;                     /* Red values   */
 146        __u16 *green;
 147        __u16 *blue;
 148        __u16 *transp;                  /* transparency, can be NULL */
 149};
 150
 151struct fb_con2fbmap {
 152        __u32 console;
 153        __u32 framebuffer;
 154};
 155
 156/* VESA Blanking Levels */
 157#define VESA_NO_BLANKING        0
 158#define VESA_VSYNC_SUSPEND      1
 159#define VESA_HSYNC_SUSPEND      2
 160#define VESA_POWERDOWN          3
 161
 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 occured */
 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 occured */
 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(__avr32__) || 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
 586/* drivers/video/fbcmap.c */
 587
 588extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
 589extern void fb_dealloc_cmap(struct fb_cmap *cmap);
 590extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to);
 591extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to);
 592extern int fb_set_cmap(struct fb_cmap *cmap, struct fb_info *fb_info);
 593extern int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *fb_info);
 594extern const struct fb_cmap *fb_default_cmap(int len);
 595extern void fb_invert_cmaps(void);
 596
 597struct fb_videomode {
 598        const char *name;       /* optional */
 599        u32 refresh;            /* optional */
 600        u32 xres;
 601        u32 yres;
 602        u32 pixclock;
 603        u32 left_margin;
 604        u32 right_margin;
 605        u32 upper_margin;
 606        u32 lower_margin;
 607        u32 hsync_len;
 608        u32 vsync_len;
 609        u32 sync;
 610        u32 vmode;
 611        u32 flag;
 612};
 613
 614#endif /* __KERNEL__ */
 615
 616#endif /* _LINUX_FB_H */
 617