summaryrefslogtreecommitdiff
path: root/hw/xfree86/utils/xorgcfg/card-cfg.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xfree86/utils/xorgcfg/card-cfg.c')
-rw-r--r--hw/xfree86/utils/xorgcfg/card-cfg.c433
1 files changed, 0 insertions, 433 deletions
diff --git a/hw/xfree86/utils/xorgcfg/card-cfg.c b/hw/xfree86/utils/xorgcfg/card-cfg.c
deleted file mode 100644
index 1f3b7555e..000000000
--- a/hw/xfree86/utils/xorgcfg/card-cfg.c
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * CONECTIVA LINUX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Conectiva Linux shall
- * not be used in advertising or otherwise to promote the sale, use or other
- * dealings in this Software without prior written authorization from
- * Conectiva Linux.
- *
- * Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
- *
- */
-
-#include "xf86config.h"
-#include "mouse-cfg.h"
-#include "cards.h"
-#include "card-cfg.h"
-#include <X11/Xaw/AsciiText.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/Label.h>
-#include <X11/Xaw/List.h>
-#include <X11/Xaw/MenuButton.h>
-#include <X11/Xaw/SmeBSB.h>
-#include <X11/Xaw/SimpleMenu.h>
-#include <X11/Xaw/Viewport.h>
-#ifdef USE_MODULES
-#include "loader.h"
-#endif
-
-/*
- * Prototypes
- */
-static Bool CardConfigCheck(void);
-static void CardModelCallback(Widget, XtPointer, XtPointer);
-#ifdef USE_MODULES
-static void DriverCallback(Widget, XtPointer, XtPointer);
-#endif
-
-/*
- * Initialization
- */
-static CardsEntry *card_entry;
-static XF86ConfDevicePtr current_device;
-static Widget filter, list, driver, busid;
-static char **cards = NULL;
-static int ncards;
-#ifdef USE_MODULES
-static char *driver_str;
-#endif
-
-/*
- * Implementation
- */
-/*ARGSUSED*/
-XtPointer
-CardConfig(XtPointer config)
-{
- XF86ConfDevicePtr card = (XF86ConfDevicePtr)config;
-/* XF86OptionPtr option;*/
- char card_name[32];
- Arg args[1];
- char *bus, *drv_nam;
-
- xf86info.cur_list = CARD;
- XtSetSensitive(back, xf86info.lists[CARD].cur_function > 0);
- XtSetSensitive(next, xf86info.lists[CARD].cur_function <
- xf86info.lists[CARD].num_functions - 1);
- (xf86info.lists[CARD].functions[xf86info.lists[CARD].cur_function])
- (&xf86info);
-
- card_entry = NULL;
- current_device = card;
- XawListUnhighlight(list);
- XtSetArg(args[0], XtNstring, "");
- XtSetValues(filter, args, 1);
-
- if (card != NULL) {
- if (card->dev_card != NULL) {
- int i;
-
- for (i = 0; i < ncards; i++) {
- if (strcasecmp(cards[i], card->dev_card) == 0) {
- card_entry = LookupCard(cards[i]);
- XawListHighlight(list, i);
- XtSetArg(args[0], XtNstring, cards[i]);
- XtSetValues(filter, args, 1);
- break;
- }
- }
- }
- XtSetArg(args[0], XtNstring, card->dev_identifier);
- XtSetValues(ident_widget, args, 1);
- XtSetArg(args[0], XtNstring, card->dev_busid);
- XtSetValues(busid, args, 1);
-#ifdef USE_MODULES
- if (!nomodules)
- XtSetArg(args[0], XtNlabel, driver_str = XtNewString(card->dev_driver));
- else
-#endif
- XtSetArg(args[0], XtNstring, card->dev_driver);
- XtSetValues(driver, args, 1);
- }
- else {
- XF86ConfDevicePtr device = XF86Config->conf_device_lst;
- int ndevices = 0;
-
- while (device != NULL) {
- ++ndevices;
- device = (XF86ConfDevicePtr)(device->list.next);
- }
- do {
- XmuSnprintf(card_name, sizeof(card_name), "Card%d", ndevices);
- ++ndevices;
- } while (xf86findDevice(card_name,
- XF86Config->conf_device_lst));
-
- XtSetArg(args[0], XtNstring, card_name);
- XtSetValues(ident_widget, args, 1);
- XtSetArg(args[0], XtNstring, "");
- XtSetValues(busid, args, 1);
-#ifdef USE_MODULES
- if (!nomodules)
- XtSetArg(args[0], XtNlabel, driver_str = XtNewString("vga"));
- else
-#endif
- XtSetArg(args[0], XtNstring, "vga");
- XtSetValues(driver, args, 1);
- }
-
- if (ConfigLoop(CardConfigCheck) == True) {
- if (card_entry != NULL && card_entry->driver == NULL) {
- fprintf(stderr, "No driver field in Cards database.\n"
- "Please make sure you have the correct files installed.\n");
- exit(1);
- }
- if (card == NULL) {
- card = (XF86ConfDevicePtr)XtCalloc(1, sizeof(XF86ConfDeviceRec));
- card->dev_identifier = XtNewString(ident_string);
- if (card_entry) {
- card->dev_driver = XtNewString(card_entry->driver);
- card->dev_card = XtNewString(card_entry->name);
- if (card_entry->chipset)
- card->dev_chipset = XtNewString(card_entry->chipset);
- if (card_entry->ramdac)
- card->dev_ramdac = XtNewString(card_entry->ramdac);
- if (card_entry->clockchip)
- card->dev_clockchip = XtNewString(card_entry->clockchip);
- }
- /* else will fallback to "vga" */
- }
- else if (card_entry != NULL) {
- XtFree(card->dev_driver);
- card->dev_driver = XtNewString(card_entry->driver);
- if (card_entry->chipset) {
- XtFree(card->dev_chipset);
- card->dev_chipset = XtNewString(card_entry->chipset);
- }
- if (card_entry->ramdac) {
- XtFree(card->dev_ramdac);
- card->dev_ramdac = XtNewString(card_entry->ramdac);
- }
- if (card_entry->clockchip) {
- XtFree(card->dev_clockchip);
- card->dev_clockchip = XtNewString(card_entry->clockchip);
- }
- }
- if (strcasecmp(card->dev_identifier, ident_string))
- xf86renameDevice(XF86Config, card, ident_string);
- XtSetArg(args[0], XtNstring, &bus);
- XtGetValues(busid, args, 1);
- XtFree(card->dev_busid);
- card->dev_busid = XtNewString(bus);
-
-#ifdef USE_MODULES
- if (!nomodules)
- drv_nam = driver_str;
- else
-#endif
- {
- XtSetArg(args[0], XtNstring, &drv_nam);
- XtGetValues(driver, args, 1);
- }
-
- XtFree(card->dev_driver);
- card->dev_driver = XtNewString(drv_nam);
-
-#ifdef USE_MODULES
- if (!nomodules)
- XtFree(driver_str);
-#endif
-
- return ((XtPointer)card);
- }
-#ifdef USE_MODULES
- if (!nomodules)
- XtFree(driver_str);
-#endif
-
- return (NULL);
-}
-
-static Bool
-CardConfigCheck(void)
-{
- XF86ConfDevicePtr device = XF86Config->conf_device_lst;
- char *drv_nam;
-
-#ifdef USE_MODULES
- if (!nomodules)
- drv_nam = driver_str;
- else
-#endif
- {
- Arg args[1];
-
- XtSetArg(args[0], XtNstring, &drv_nam);
- XtGetValues(driver, args, 1);
- }
-
- if (ident_string == NULL || strlen(ident_string) == 0 ||
-#if 0
- /* not all available cards are in the Cards database */
- (current_device == NULL && card_entry == NULL) ||
-#endif
- drv_nam == NULL || *drv_nam == '\0')
- return (False);
-
- while (device != NULL) {
- if (device != current_device &&
- strcasecmp(ident_string, device->dev_identifier) == 0)
- return (False);
- device = (XF86ConfDevicePtr)(device->list.next);
- }
-
- return (True);
-}
-
-static void
-CardModelCallback(Widget w, XtPointer user_data, XtPointer call_data)
-{
- Arg args[1];
- XawListReturnStruct *info = (XawListReturnStruct *)call_data;
- char tip[4096];
- int len;
-
- XtSetArg(args[0], XtNstring, info->string);
- XtSetValues(filter, args, 1);
- card_entry = LookupCard(info->string);
-
- if (card_entry == NULL)
- return;
-
- len = XmuSnprintf(tip, sizeof(tip), "Name: %s\n", card_entry->name);
- if (card_entry->flags & F_UNSUPPORTED)
- len += XmuSnprintf(tip + len, sizeof(tip) - len,
- "**THIS CARD IS UNSUPPORTED**\n");
- if (card_entry->chipset != NULL)
- len += XmuSnprintf(tip + len, sizeof(tip) - len,
- "Chipset: %s\n", card_entry->chipset);
- if (card_entry->driver != NULL) {
-#ifdef USE_MODULES
- if (!nomodules) {
- XtFree(driver_str);
- driver_str = XtNewString(card_entry->driver);
- XtVaSetValues(driver, XtNlabel, driver_str, NULL);
- }
-#endif
- len += XmuSnprintf(tip + len, sizeof(tip) - len,
- "Driver: %s\n", card_entry->driver);
- }
- if (card_entry->ramdac != NULL)
- len += XmuSnprintf(tip + len, sizeof(tip),
- "Ramdac: %s\n", card_entry->ramdac);
- if (card_entry->clockchip != NULL)
- len += XmuSnprintf(tip + len, sizeof(tip) - len,
- "Clockchip: %s\n", card_entry->clockchip);
- if (card_entry->dacspeed != NULL)
- len += XmuSnprintf(tip + len, sizeof(tip) - len,
- "Dacspeed: %s\n", card_entry->dacspeed);
- if (card_entry->lines != NULL)
- len += XmuSnprintf(tip + len, sizeof(tip) - len,
- "\n%s\n", card_entry->lines);
-
-#ifndef USE_MODULES
- XtSetArg(args[0], XtNstring,
- card_entry->driver ? card_entry->driver : "vga");
- XtSetValues(driver, args, 1);
-#endif
-
- XtSetArg(args[0], XtNtip, tip);
- XtSetValues(filter, args, 1);
-}
-
-/*ARGSUSED*/
-void
-CardFilterAction(Widget w, XEvent *ev, String *params, Cardinal *num_params)
-{
- char **cards, *pattern, **old_cards;
- int ncards, old_ncards;
- Arg args[2];
-
- XtSetArg(args[0], XtNstring, &pattern);
- XtGetValues(w, args, 1);
-
- XtSetArg(args[0], XtNlist, &old_cards);
- XtSetArg(args[1], XtNnumberStrings, &old_ncards);
- XtGetValues(list, args, 2);
-
- cards = FilterCardNames(pattern, &ncards);
-
- if (ncards == 0) {
- cards = (char**)XtMalloc(sizeof(char*));
- cards[0] = XtNewString("");
- ncards = 1;
- }
-
- XtSetArg(args[0], XtNlist, cards);
- XtSetArg(args[1], XtNnumberStrings, ncards);
- XtSetValues(list, args, 2);
-
- if (old_ncards > 1 || (XtName(list) != old_cards[0])) {
- while (--old_ncards > -1)
- XtFree(old_cards[old_ncards]);
- XtFree((char*)old_cards);
- }
-
- /* force relayout */
- XtUnmanageChild(list);
- XtManageChild(list);
-}
-
-#ifdef USE_MODULES
-/*ARGSUSED*/
-static void
-DriverCallback(Widget w, XtPointer user_data, XtPointer call_data)
-{
- Arg args[1];
-
- XtFree(driver_str);
- driver_str = XtNewString(XtName(w));
- XtSetArg(args[0], XtNlabel, driver_str);
- XtSetValues(driver, args, 1);
-}
-#endif
-
-void
-CardModel(XF86SetupInfo *info)
-{
- static int first = 1;
- static Widget model;
-
- if (first) {
- Widget viewport;
-
- first = 0;
-
- cards = GetCardNames(&ncards);
-
- model = XtCreateWidget("cardModel", formWidgetClass,
- configp, NULL, 0);
- (void) XtCreateManagedWidget("label", labelWidgetClass,
- model, NULL, 0);
- filter = XtVaCreateManagedWidget("filter", asciiTextWidgetClass,
- model,
- XtNeditType, XawtextEdit,
- NULL);
- viewport = XtCreateManagedWidget("viewport", viewportWidgetClass,
- model, NULL, 0);
- list = XtVaCreateManagedWidget("list", listWidgetClass,
- viewport,
- XtNlist, cards,
- XtNnumberStrings, ncards,
- NULL);
- XtAddCallback(list, XtNcallback, CardModelCallback,
- (XtPointer)info);
- XtCreateManagedWidget("driverL", labelWidgetClass, model, NULL, 0);
-#ifdef USE_MODULES
- if (!nomodules) {
- driver = XtVaCreateManagedWidget("driver", menuButtonWidgetClass,
- model,
- XtNmenuName, "driverM",
- NULL);
- {
- Widget menu, sme;
- xf86cfgModuleOptions *opts = module_options;
-
- menu = XtCreatePopupShell("driverM", simpleMenuWidgetClass,
- driver, NULL, 0);
- while (opts) {
- if (opts->type == VideoModule) {
- sme = XtCreateManagedWidget(opts->name, smeBSBObjectClass,
- menu, NULL, 0);
- XtAddCallback(sme, XtNcallback, DriverCallback, NULL);
- }
- opts = opts->next;
- }
- }
- }
- else
-#endif
- driver = XtVaCreateManagedWidget("driver", asciiTextWidgetClass,
- model,
- XtNeditType, XawtextEdit,
- NULL);
-
- XtCreateManagedWidget("busidL", labelWidgetClass, model, NULL, 0);
- busid = XtVaCreateManagedWidget("busid", asciiTextWidgetClass,
- model,
- XtNeditType, XawtextEdit,
- NULL);
-
- XtRealizeWidget(model);
- }
- XtChangeManagedSet(&current, 1, NULL, NULL, &model, 1);
- current = model;
-}