root/include/video/uvesafb.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 */
   9 struct 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 */
  32 struct 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 
 101 struct uvesafb_pal_entry {
 102         u_char blue, green, red, pad;
 103 } __attribute__ ((packed));
 104 
 105 struct uvesafb_ktask {
 106         struct uvesafb_task t;
 107         void *buf;
 108         struct completion *done;
 109         u32 ack;
 110 };
 111 
 112 static int uvesafb_exec(struct uvesafb_ktask *tsk);
 113 
 114 #define UVESAFB_EXACT_RES       1
 115 #define UVESAFB_EXACT_DEPTH     2
 116 
 117 struct 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 */

/* [<][>][^][v][top][bottom][index][help] */