The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/igsfbvar.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: igsfbvar.h,v 1.9 2004/11/26 22:29:36 uwe Exp $ */
    2 
    3 /*
    4  * Copyright (c) 2002, 2003 Valeriy E. Ushakov
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  * 3. The name of the author may not be used to endorse or promote products
   16  *    derived from this software without specific prior written permission
   17  *
   18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   19  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   20  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   21  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   22  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   23  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   24  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   25  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   27  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   28  */
   29 
   30 /*
   31  * Integraphics Systems IGA 168x and CyberPro series.
   32  */
   33 #ifndef _DEV_IC_IGSFBVAR_H_
   34 #define _DEV_IC_IGSFBVAR_H_
   35 
   36 #define IGS_CMAP_SIZE   256     /* 256 R/G/B entries */
   37 struct igs_hwcmap {
   38         uint8_t r[IGS_CMAP_SIZE];
   39         uint8_t g[IGS_CMAP_SIZE];
   40         uint8_t b[IGS_CMAP_SIZE];
   41 };
   42 
   43 
   44 #define IGS_CURSOR_MAX_SIZE 64  /* 64x64 sprite */
   45 struct igs_hwcursor {
   46         struct wsdisplay_curpos cc_pos;
   47         struct wsdisplay_curpos cc_hot;
   48         struct wsdisplay_curpos cc_size;
   49         uint8_t cc_image[512];          /* save copy of image for GCURSOR */
   50         uint8_t cc_mask[512];           /* save copy of mask for GCURSOR */
   51         uint16_t cc_sprite[512];        /* sprite in device 2bpp format */
   52         uint8_t cc_color[6];            /* 2 colors, 3 rgb components */
   53 };
   54 
   55 
   56 struct igsfb_devconfig {
   57         /* io space, may be memory mapped */
   58         bus_space_tag_t dc_iot;
   59         bus_addr_t dc_iobase;
   60         int dc_ioflags;
   61 
   62         /* io registers */
   63         bus_space_handle_t dc_ioh;
   64 
   65         /* graphic coprocessor */
   66         bus_space_handle_t dc_coph;
   67 
   68         /* linear memory */
   69         bus_space_tag_t dc_memt;
   70         bus_addr_t dc_memaddr;
   71         bus_size_t dc_memsz; /* size of linear address space including mmio */
   72         int dc_memflags;
   73 
   74         /* video memory size */
   75         bus_size_t dc_vmemsz;
   76 
   77         /* resolution */
   78         int dc_width, dc_height, dc_depth;
   79 
   80         /* part of video memory mapped for wsscreen */
   81         bus_space_handle_t dc_fbh;
   82         bus_size_t dc_fbsz;
   83 
   84         /* 1KB of cursor sprite data */
   85         bus_space_handle_t dc_crh;
   86 
   87         /* product id: IGA 168x, CyberPro 2k &c */
   88         int dc_id;
   89 
   90         /* flags that control driver operation */
   91         int dc_hwflags;
   92 #define IGSFB_HW_BSWAP                  0x1 /* endianness mismatch */
   93 #define IGSFB_HW_BE_SELECT              0x2 /* big endian magic (cyberpro) */
   94 #define IGSFB_HW_TEXT_CURSOR            0x4 /* do text cursor in hardware */
   95 
   96 /* do we need to do bswap in software? */
   97 #define IGSFB_HW_SOFT_BSWAP(dc)                                         \
   98         ((((dc)->dc_hwflags) & (IGSFB_HW_BSWAP | IGSFB_HW_BE_SELECT))   \
   99                 == IGSFB_HW_BSWAP)
  100 
  101         int dc_nscreens;                /* can do only a single screen */
  102 
  103         int dc_blanked;                 /* screen is currently blanked */
  104         int dc_curenb;                  /* cursor sprite enabled */
  105         int dc_mapped;                  /* currently in mapped mode */
  106 
  107         struct rasops_info dc_ri;
  108 
  109         /* saved dc_ri.ri_ops.putchar */
  110         void (*dc_ri_putchar)(void *, int, int, u_int, long);
  111 
  112         struct igs_hwcmap dc_cmap;      /* software copy of colormap */
  113         struct igs_hwcursor dc_cursor;  /* software copy of cursor sprite */
  114 
  115         /* precomputed bit table for cursor sprite 1bpp -> 2bpp conversion */
  116         uint16_t dc_bexpand[256];
  117 };
  118 
  119 
  120 struct igsfb_softc {
  121         struct device sc_dev;
  122         struct igsfb_devconfig *sc_dc;
  123 };
  124 
  125 
  126 
  127 /*
  128  * Access sugar for indexed registers
  129  */
  130 
  131 static __inline__ uint8_t
  132 igs_idx_read(bus_space_tag_t, bus_space_handle_t, u_int, uint8_t);
  133 static __inline__ void
  134 igs_idx_write(bus_space_tag_t, bus_space_handle_t, u_int, uint8_t, uint8_t);
  135 
  136 static __inline__ uint8_t
  137 igs_idx_read(t, h, idxport, idx)
  138         bus_space_tag_t t;
  139         bus_space_handle_t h;
  140         u_int idxport;
  141         uint8_t idx;
  142 {
  143         bus_space_write_1(t, h, idxport, idx);
  144         return (bus_space_read_1(t, h, idxport + 1));
  145 }
  146 
  147 static __inline__ void
  148 igs_idx_write(t, h, idxport, idx, val)
  149         bus_space_tag_t t;
  150         bus_space_handle_t h;
  151         u_int idxport;
  152         uint8_t idx, val;
  153 {
  154         bus_space_write_1(t, h, idxport, idx);
  155         bus_space_write_1(t, h, idxport + 1, val);
  156 }
  157 
  158 
  159 /* sugar for sequencer controller */
  160 #define igs_seq_read(t,h,x)     \
  161         (igs_idx_read((t),(h),IGS_SEQ_IDX,(x)))
  162 #define igs_seq_write(t,h,x,v)  \
  163         (igs_idx_write((t),(h),IGS_SEQ_IDX,(x),(v)))
  164 
  165 
  166 /* sugar for CRT controller */
  167 #define igs_crtc_read(t,h,x)    \
  168         (igs_idx_read((t),(h),IGS_CRTC_IDX,(x)))
  169 #define igs_crtc_write(t,h,x,v) \
  170         (igs_idx_write((t),(h),IGS_CRTC_IDX,(x),(v)))
  171 
  172 
  173 /* sugar for attribute controller */
  174 #define igs_attr_flip_flop(t,h) \
  175         ((void)bus_space_read_1((t),(h),IGS_INPUT_STATUS1));
  176 #define igs_attr_read(t,h,x)    \
  177         (igs_idx_read((t),(h),IGS_ATTR_IDX,(x)))
  178 
  179 static __inline__ void
  180 igs_attr_write(bus_space_tag_t, bus_space_handle_t, uint8_t, uint8_t);
  181 
  182 static __inline__ void
  183 igs_attr_write(t, h, idx, val)
  184         bus_space_tag_t t;
  185         bus_space_handle_t h;
  186         uint8_t idx, val;
  187 {
  188         bus_space_write_1(t, h, IGS_ATTR_IDX, idx);
  189         bus_space_write_1(t, h, IGS_ATTR_IDX, val); /* sic, same register */
  190 }
  191 
  192 
  193 /* sugar for graphics controller registers */
  194 #define igs_grfx_read(t,h,x)    (igs_idx_read((t),(h),IGS_GRFX_IDX,(x)))
  195 #define igs_grfx_write(t,h,x,v) (igs_idx_write((t),(h),IGS_GRFX_IDX,(x),(v)))
  196 
  197 
  198 /* sugar for extended registers */
  199 #define igs_ext_read(t,h,x)     (igs_idx_read((t),(h),IGS_EXT_IDX,(x)))
  200 #define igs_ext_write(t,h,x,v)  (igs_idx_write((t),(h),IGS_EXT_IDX,(x),(v)))
  201 
  202 
  203 /* igsfb_subr.c */
  204 int     igsfb_enable(bus_space_tag_t, bus_addr_t, int);
  205 void    igsfb_hw_setup(struct igsfb_devconfig *);
  206 void    igsfb_1024x768_8bpp_60Hz(struct igsfb_devconfig *);
  207 
  208 /* igsfb.c */
  209 int     igsfb_cnattach_subr(struct igsfb_devconfig *);
  210 void    igsfb_attach_subr(struct igsfb_softc *, int);
  211 
  212 
  213 extern struct igsfb_devconfig igsfb_console_dc;
  214 
  215 #endif /* _DEV_IC_IGSFBVAR_H_ */

Cache object: 7c5f502509b1383208009eb23a74c8ff


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.