linux/include/video/uvesafb.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _UVESAFB_H
   3#define _UVESAFB_H
   4
   5#include <uapi/video/uvesafb.h>
   6
   7
   8/* VBE CRTC Info Block */
   9struct vbe_crtc_ib {
  10        u16 horiz_total;
  11        u16 horiz_start;
  12        u16 horiz_end;
  13        u16 vert_total;
  14        u16 vert_start;
  15        u16 vert_end;
  16        u8  flags;
  17        u32 pixel_clock;
  18        u16 refresh_rate;
  19        u8  reserved[40];
  20} __attribute__ ((packed));
  21
  22#define VBE_MODE_VGACOMPAT      0x20
  23#define VBE_MODE_COLOR          0x08
  24#define VBE_MODE_SUPPORTEDHW    0x01
  25#define VBE_MODE_GRAPHICS       0x10
  26#define VBE_MODE_LFB            0x80
  27
  28#define VBE_MODE_MASK           (VBE_MODE_COLOR | VBE_MODE_SUPPORTEDHW | \
  29                                VBE_MODE_GRAPHICS | VBE_MODE_LFB)
  30
  31/* VBE Mode Info Block */
  32struct vbe_mode_ib {
  33        /* for all VBE revisions */
  34        u16 mode_attr;
  35        u8  winA_attr;
  36        u8  winB_attr;
  37        u16 win_granularity;
  38        u16 win_size;
  39        u16 winA_seg;
  40        u16 winB_seg;
  41        u32 win_func_ptr;
  42        u16 bytes_per_scan_line;
  43
  44        /* for VBE 1.2+ */
  45        u16 x_res;
  46        u16 y_res;
  47        u8  x_char_size;
  48        u8  y_char_size;
  49        u8  planes;
  50        u8  bits_per_pixel;
  51        u8  banks;
  52        u8  memory_model;
  53        u8  bank_size;
  54        u8  image_pages;
  55        u8  reserved1;
  56
  57        /* Direct color fields for direct/6 and YUV/7 memory models. */
  58        /* Offsets are bit positions of lsb in the mask. */
  59        u8  red_len;
  60        u8  red_off;
  61        u8  green_len;
  62        u8  green_off;
  63        u8  blue_len;
  64        u8  blue_off;
  65        u8  rsvd_len;
  66        u8  rsvd_off;
  67        u8  direct_color_info;  /* direct color mode attributes */
  68
  69        /* for VBE 2.0+ */
  70        u32 phys_base_ptr;
  71        u8  reserved2[6];
  72
  73        /* for VBE 3.0+ */
  74        u16 lin_bytes_per_scan_line;
  75        u8  bnk_image_pages;
  76        u8  lin_image_pages;
  77        u8  lin_red_len;
  78        u8  lin_red_off;
  79        u8  lin_green_len;
  80        u8  lin_green_off;
  81        u8  lin_blue_len;
  82        u8  lin_blue_off;
  83        u8  lin_rsvd_len;
  84        u8  lin_rsvd_off;
  85        u32 max_pixel_clock;
  86        u16 mode_id;
  87        u8  depth;
  88} __attribute__ ((packed));
  89
  90#define UVESAFB_DEFAULT_MODE "640x480-16"
  91
  92/* How long to wait for a reply from userspace [ms] */
  93#define UVESAFB_TIMEOUT 5000
  94
  95/* Max number of concurrent tasks */
  96#define UVESAFB_TASKS_MAX 16
  97
  98#define dac_reg (0x3c8)
  99#define dac_val (0x3c9)
 100
 101struct uvesafb_pal_entry {
 102        u_char blue, green, red, pad;
 103} __attribute__ ((packed));
 104
 105struct uvesafb_ktask {
 106        struct uvesafb_task t;
 107        void *buf;
 108        struct completion *done;
 109        u32 ack;
 110};
 111
 112static int uvesafb_exec(struct uvesafb_ktask *tsk);
 113
 114#define UVESAFB_EXACT_RES       1
 115#define UVESAFB_EXACT_DEPTH     2
 116
 117struct uvesafb_par {
 118        struct vbe_ib vbe_ib;           /* VBE Info Block */
 119        struct vbe_mode_ib *vbe_modes;  /* list of supported VBE modes */
 120        int vbe_modes_cnt;
 121
 122        u8 nocrtc;
 123        u8 ypan;                        /* 0 - nothing, 1 - ypan, 2 - ywrap */
 124        u8 pmi_setpal;                  /* PMI for palette changes */
 125        u16 *pmi_base;                  /* protected mode interface location */
 126        void *pmi_start;
 127        void *pmi_pal;
 128        u8 *vbe_state_orig;             /*
 129                                         * original hardware state, before the
 130                                         * driver was loaded
 131                                         */
 132        u8 *vbe_state_saved;            /* state saved by fb_save_state */
 133        int vbe_state_size;
 134        atomic_t ref_count;
 135
 136        int mode_idx;
 137        struct vbe_crtc_ib crtc;
 138        int mtrr_handle;
 139};
 140
 141#endif /* _UVESAFB_H */
 142