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-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-2  -  FREEBSD-11-1  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-4  -  FREEBSD-10-3  -  FREEBSD-10-2  -  FREEBSD-10-1  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-3  -  FREEBSD-9-2  -  FREEBSD-9-1  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-4  -  FREEBSD-8-3  -  FREEBSD-8-2  -  FREEBSD-8-1  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-4  -  FREEBSD-7-3  -  FREEBSD-7-2  -  FREEBSD-7-1  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-4  -  FREEBSD-6-3  -  FREEBSD-6-2  -  FREEBSD-6-1  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-5  -  FREEBSD-5-4  -  FREEBSD-5-3  -  FREEBSD-5-2  -  FREEBSD-5-1  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  xnu-1456.1.26  -  xnu-1699.24.8  -  xnu-2050.18.24  -  OPENSOLARIS  -  minix-3-1-1 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: igsfbvar.h,v 1.16 2006/04/05 01:13:50 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, dc_stride;
   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_blanked;                 /* screen is currently blanked */
  102         int dc_curenb;                  /* cursor sprite enabled */
  103         int dc_mapped;                  /* currently in mapped mode */
  104 
  105         /* saved dc_ri.ri_ops.putchar */
  106         void (*dc_ri_putchar)(void *, int, int, u_int, long);
  107 
  108         struct igs_hwcmap dc_cmap;      /* software copy of colormap */
  109         struct igs_hwcursor dc_cursor;  /* software copy of cursor sprite */
  110 
  111         /* precomputed bit table for cursor sprite 1bpp -> 2bpp conversion */
  112         uint16_t dc_bexpand[256];
  113 
  114         /* virtual console support */
  115         struct vcons_data dc_vd;
  116         struct vcons_screen dc_console;
  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(bus_space_tag_t t, bus_space_handle_t h,
  138              u_int idxport, uint8_t idx)
  139 {
  140         bus_space_write_1(t, h, idxport, idx);
  141         return (bus_space_read_1(t, h, idxport + 1));
  142 }
  143 
  144 static __inline void
  145 igs_idx_write(bus_space_tag_t t, bus_space_handle_t h,
  146               u_int idxport, uint8_t idx, uint8_t val)
  147 {
  148         bus_space_write_1(t, h, idxport, idx);
  149         bus_space_write_1(t, h, idxport + 1, val);
  150 }
  151 
  152 
  153 /* sugar for sequencer controller */
  154 #define igs_seq_read(t,h,x)     \
  155         (igs_idx_read((t),(h),IGS_SEQ_IDX,(x)))
  156 #define igs_seq_write(t,h,x,v)  \
  157         (igs_idx_write((t),(h),IGS_SEQ_IDX,(x),(v)))
  158 
  159 
  160 /* sugar for CRT controller */
  161 #define igs_crtc_read(t,h,x)    \
  162         (igs_idx_read((t),(h),IGS_CRTC_IDX,(x)))
  163 #define igs_crtc_write(t,h,x,v) \
  164         (igs_idx_write((t),(h),IGS_CRTC_IDX,(x),(v)))
  165 
  166 
  167 /* sugar for attribute controller */
  168 #define igs_attr_flip_flop(t,h) \
  169         ((void)bus_space_read_1((t),(h),IGS_INPUT_STATUS1));
  170 #define igs_attr_read(t,h,x)    \
  171         (igs_idx_read((t),(h),IGS_ATTR_IDX,(x)))
  172 
  173 static __inline void
  174 igs_attr_write(bus_space_tag_t, bus_space_handle_t, uint8_t, uint8_t);
  175 
  176 static __inline void
  177 igs_attr_write(bus_space_tag_t t, bus_space_handle_t h,
  178                uint8_t idx, uint8_t val)
  179 {
  180         bus_space_write_1(t, h, IGS_ATTR_IDX, idx);
  181         bus_space_write_1(t, h, IGS_ATTR_IDX, val); /* sic, same register */
  182 }
  183 
  184 
  185 /* sugar for graphics controller registers */
  186 #define igs_grfx_read(t,h,x)    (igs_idx_read((t),(h),IGS_GRFX_IDX,(x)))
  187 #define igs_grfx_write(t,h,x,v) (igs_idx_write((t),(h),IGS_GRFX_IDX,(x),(v)))
  188 
  189 
  190 /* sugar for extended registers */
  191 #define igs_ext_read(t,h,x)     (igs_idx_read((t),(h),IGS_EXT_IDX,(x)))
  192 #define igs_ext_write(t,h,x,v)  (igs_idx_write((t),(h),IGS_EXT_IDX,(x),(v)))
  193 
  194 
  195 /* igsfb_subr.c */
  196 int     igsfb_enable(bus_space_tag_t, bus_addr_t, int);
  197 void    igsfb_hw_setup(struct igsfb_devconfig *);
  198 void    igsfb_1024x768_8bpp_60Hz(struct igsfb_devconfig *);
  199 
  200 /* igsfb.c */
  201 int     igsfb_cnattach_subr(struct igsfb_devconfig *);
  202 void    igsfb_attach_subr(struct igsfb_softc *, int);
  203 
  204 
  205 extern struct igsfb_devconfig igsfb_console_dc;
  206 
  207 #endif /* _DEV_IC_IGSFBVAR_H_ */

Cache object: 3d6371f36cd99ae1523c809bcccc7819


[ 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.