139 lines
3.4 KiB
C
139 lines
3.4 KiB
C
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiident.c,v 1.11 2003/01/01 19:16:32 tsi Exp $ */
|
|
/*
|
|
* Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
|
|
*
|
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
* documentation for any purpose is hereby granted without fee, provided that
|
|
* the above copyright notice appear in all copies and that both that copyright
|
|
* notice and this permission notice appear in supporting documentation, and
|
|
* that the name of Marc Aurele La France not be used in advertising or
|
|
* publicity pertaining to distribution of the software without specific,
|
|
* written prior permission. Marc Aurele La France makes no representations
|
|
* about the suitability of this software for any purpose. It is provided
|
|
* "as-is" without express or implied warranty.
|
|
*
|
|
* MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
|
|
* EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif
|
|
|
|
#include "ati.h"
|
|
#include "atiident.h"
|
|
#include "atiutil.h"
|
|
#include "ativersion.h"
|
|
|
|
#include "r128_probe.h"
|
|
#include "radeon_probe.h"
|
|
|
|
const char *ATIChipsetNames[] =
|
|
{
|
|
"ati",
|
|
|
|
#ifndef AVOID_CPIO
|
|
|
|
"ativga",
|
|
"ibmvga",
|
|
"ibm8514",
|
|
"vgawonder",
|
|
"mach8",
|
|
"mach32",
|
|
|
|
#endif /* AVOID_CPIO */
|
|
|
|
"mach64",
|
|
"rage128",
|
|
"radeon"
|
|
};
|
|
|
|
static SymTabRec ATIPublicChipsetNames[] =
|
|
{
|
|
{ATI_CHIPSET_ATI, "ati"},
|
|
|
|
#ifndef AVOID_CPIO
|
|
|
|
{ATI_CHIPSET_ATIVGA, "ativga"},
|
|
#ifdef __MAYBE_NOT__
|
|
{ATI_CHIPSET_IBMVGA, "ibmvga"},
|
|
#endif
|
|
#ifdef __NOT_YET__
|
|
{ATI_CHIPSET_IBM8514, "ibm8514"},
|
|
#endif
|
|
|
|
#endif /* AVOID_CPIO */
|
|
|
|
{-1, NULL}
|
|
};
|
|
|
|
/*
|
|
* ATIIdentify --
|
|
*
|
|
* Print the driver's list of chipset names.
|
|
*/
|
|
void
|
|
ATIIdentify
|
|
(
|
|
int flags
|
|
)
|
|
{
|
|
xf86PrintChipsets(ATI_NAME,
|
|
(NumberOf(ATIPublicChipsetNames) <= 2) ?
|
|
"ATI driver (version " ATI_VERSION_NAME ") for chipset" :
|
|
"ATI driver (version " ATI_VERSION_NAME ") for chipsets",
|
|
ATIPublicChipsetNames);
|
|
R128Identify(flags);
|
|
RADEONIdentify(flags);
|
|
}
|
|
|
|
/*
|
|
* ATIIdentProbe --
|
|
*
|
|
* This function determines if the user specified a chipset name acceptable to
|
|
* the driver. It returns an ATIChipsetType or -1.
|
|
*/
|
|
int
|
|
ATIIdentProbe
|
|
(
|
|
const char *ChipsetName
|
|
)
|
|
{
|
|
int Chipset;
|
|
|
|
static SymTabRec SpecificNames[] =
|
|
{
|
|
|
|
#ifndef AVOID_CPIO
|
|
|
|
{ATI_CHIPSET_VGAWONDER, "vgawonder"},
|
|
#ifdef __NOT_YET__
|
|
{ATI_CHIPSET_MACH8, "mach8"},
|
|
#endif
|
|
{ATI_CHIPSET_MACH32, "mach32"},
|
|
|
|
#endif /* AVOID_CPIO */
|
|
|
|
{ATI_CHIPSET_MACH64, "mach64"},
|
|
{ATI_CHIPSET_RAGE128, "rage128"},
|
|
{ATI_CHIPSET_RADEON, "radeon"},
|
|
{-1, NULL}
|
|
};
|
|
|
|
/* If no Chipset specification, default to "ati" */
|
|
if (!ChipsetName || !*ChipsetName)
|
|
return ATI_CHIPSET_ATI;
|
|
|
|
Chipset = xf86StringToToken(ATIPublicChipsetNames, ChipsetName);
|
|
if (Chipset != -1)
|
|
return Chipset;
|
|
|
|
/* Check for some other chipset names */
|
|
return xf86StringToToken(SpecificNames, ChipsetName);
|
|
}
|