root/dev/pci/tga_conf.c

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

DEFINITIONS

This source file includes following definitions.
  1. tga_identify
  2. tga_getconf

    1 /* $OpenBSD: tga_conf.c,v 1.5 2002/04/01 11:26:32 matthieu Exp $ */
    2 /* $NetBSD: tga_conf.c,v 1.5 2001/11/13 07:48:49 lukem Exp $ */
    3 
    4 /*
    5  * Copyright (c) 1995, 1996 Carnegie-Mellon University.
    6  * All rights reserved.
    7  *
    8  * Author: Chris G. Demetriou
    9  *
   10  * Permission to use, copy, modify and distribute this software and
   11  * its documentation is hereby granted, provided that both the copyright
   12  * notice and this permission notice appear in all copies of the
   13  * software, derivative works or modified versions, and any portions
   14  * thereof, and that both notices appear in supporting documentation.
   15  *
   16  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
   17  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
   18  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
   19  *
   20  * Carnegie Mellon requests users of this software to return to
   21  *
   22  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
   23  *  School of Computer Science
   24  *  Carnegie Mellon University
   25  *  Pittsburgh PA 15213-3890
   26  *
   27  * any improvements or extensions that they make and grant Carnegie the
   28  * rights to redistribute these changes.
   29  */
   30 
   31 #include <sys/param.h>
   32 #include <sys/device.h>
   33 
   34 #include <dev/pci/pcivar.h>
   35 #include <dev/pci/tgareg.h>
   36 #include <dev/pci/tgavar.h>
   37 
   38 #include <dev/ic/bt485var.h>
   39 #include <dev/ic/bt463var.h>
   40 #include <dev/ic/ibm561var.h>
   41 
   42 #undef KB
   43 #define KB              * 1024
   44 #undef MB
   45 #define MB              * 1024 * 1024
   46 
   47 static const struct tga_conf tga_configs[TGA_TYPE_UNKNOWN] = {
   48         /* TGA_TYPE_T8_01 */
   49         {
   50                 "T8-01",
   51                 bt485_funcs,
   52                 8,
   53                 4 MB,
   54                 2 KB,
   55                 1,      {  2 MB,     0 },       { 1 MB,    0 },
   56                 0,      {     0,     0 },       {    0,    0 },
   57         },
   58         /* TGA_TYPE_T8_02 */
   59         {
   60                 "T8-02",
   61                 bt485_funcs,
   62                 8,
   63                 4 MB,
   64                 4 KB,
   65                 1,      {  2 MB,     0 },       { 2 MB,    0 },
   66                 0,      {     0,     0 },       {    0,    0 },
   67         },
   68         /* TGA_TYPE_T8_22 */
   69         {
   70                 "T8-22",
   71                 bt485_funcs,
   72                 8,
   73                 8 MB,
   74                 4 KB,
   75                 1,      {  4 MB,     0 },       { 2 MB,    0 },
   76                 1,      {  6 MB,     0 },       { 2 MB,    0 },
   77         },
   78         /* TGA_TYPE_T8_44 */
   79         {
   80                 "T8-44",
   81                 bt485_funcs,
   82                 8,
   83                 16 MB,
   84                 4 KB,
   85                 2,      {  8 MB, 12 MB },       { 2 MB, 2 MB },
   86                 2,      { 10 MB, 14 MB },       { 2 MB, 2 MB },
   87         },
   88         /* TGA_TYPE_T32_04 */
   89         {
   90                 "T32-04",
   91                 bt463_funcs,
   92                 32,
   93                 16 MB,
   94                 8 KB,
   95                 1,      {  8 MB,     0 },       { 4 MB,    0 },
   96                 0,      {     0,     0 },       {    0,    0 },
   97         },
   98         /* TGA_TYPE_T32_08 */
   99         {
  100                 "T32-08",
  101                 bt463_funcs,
  102                 32,
  103                 16 MB,
  104                 16 KB,
  105                 1,      {  8 MB,    0 },        { 8 MB,    0 },
  106                 0,      {     0,    0 },        {    0,    0 },
  107         },
  108         /* TGA_TYPE_T32_88 */
  109         {
  110                 "T32-88",
  111                 bt463_funcs,
  112                 32,
  113                 32 MB,
  114                 16 KB,
  115                 1,      { 16 MB,    0 },        { 8 MB,    0 },
  116                 1,      { 24 MB,    0 },        { 8 MB,    0 },
  117         },
  118         /* TGA_TYPE_POWERSTORM_4D20 */
  119         /* XXX: These numbers may be incorrect */
  120         {
  121                 "PS4d20",
  122                 ibm561_funcs,
  123                 32,
  124                 32 MB,
  125                 16 KB,
  126                 1,      { 16 MB,    0 },        { 8 MB,    0 },
  127                 1,      { 24 MB,    0 },        { 8 MB,    0 },
  128         },
  129 };
  130 
  131 #undef KB
  132 #undef MB
  133 
  134 int
  135 tga_identify(dc)
  136         struct tga_devconfig *dc;
  137 {
  138         int type;
  139         int gder;
  140         int grev;
  141         int deep, addrmask, wide;
  142         int tga2;
  143 
  144         gder = TGARREG(dc, TGA_REG_GDER);
  145         grev = TGARREG(dc, TGA_REG_GREV);
  146 
  147         deep = (gder & 0x1) != 0; /* XXX */
  148         addrmask = (gder >> 2) & 0x7; /* XXX */
  149         wide = (gder & 0x200) == 0; /* XXX */
  150         tga2 = (grev & 0x20) != 0;
  151 
  152 
  153         type = TGA_TYPE_UNKNOWN;
  154 
  155         if (!deep) {
  156                 /* 8bpp frame buffer */
  157 
  158                 if (addrmask == 0x0) {
  159                         /* 4MB core map; T8-01 or T8-02 */
  160 
  161                         if (!wide)
  162                                 type = TGA_TYPE_T8_01;
  163                         else
  164                                 type = TGA_TYPE_T8_02;
  165                 } else if (addrmask == 0x1) {
  166                         /* 8MB core map; T8-22 */
  167 
  168                         if (wide)                       /* sanity */
  169                                 type = TGA_TYPE_T8_22;
  170                 } else if (addrmask == 0x3) {
  171                         /* 16MB core map; T8-44 */
  172 
  173                         if (wide)                       /* sanity */
  174                                 type = TGA_TYPE_T8_44;
  175                 }
  176         } else {
  177                 /* 32bpp frame buffer */
  178                 if (addrmask == 0x00 && tga2 && wide) {
  179                         /* My PowerStorm 4d20 shows up this way? */
  180                         type = TGA_TYPE_POWERSTORM_4D20;
  181                 }
  182 
  183                 if (addrmask == 0x3) {
  184                         /* 16MB core map; T32-04 or T32-08 */
  185 
  186                         if (!wide)
  187                                 type = TGA_TYPE_T32_04;
  188                         else
  189                                 type = TGA_TYPE_T32_08;
  190                 } else if (addrmask == 0x7) {
  191                         /* 32MB core map; T32-88 */
  192 
  193                         if (wide && !tga2)                      /* sanity */
  194                                 type = TGA_TYPE_T32_88;
  195                 }
  196         }
  197 
  198         return (type);
  199 }
  200 
  201 const struct tga_conf *
  202 tga_getconf(type)
  203         int type;
  204 {
  205 
  206         if (type >= 0 && type < TGA_TYPE_UNKNOWN)
  207                 return &tga_configs[type];
  208 
  209         return (NULL);
  210 }

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