mirror of
git://nv-tegra.nvidia.com/tegra/gfx-src/nv-xconfig.git
synced 2025-12-22 09:22:53 +03:00
22a5c807291792a264b5acca7ff6d199468890b8 - nvidia-xconfig-35.5.0/Makefile 4cc77b90af91e615a64ae04893fdffa7939db84c - nvidia-xconfig-35.5.0/COPYING f14e9577e537037d4778d490ef70f13b0e94a70a - nvidia-xconfig-35.5.0/option_table.h 647e7896275a1113ec99352d573823a05001f57e - nvidia-xconfig-35.5.0/lscf.c 1e39095238886dfc6a69f7ec750e10c05a93e7d1 - nvidia-xconfig-35.5.0/nvidia-xconfig.1.m4 a5ad539267b73169480e7898b284823639c4db3a - nvidia-xconfig-35.5.0/tree.c b3d0f9f27c4d9cb7940d04e1dd387d357a16024c - nvidia-xconfig-35.5.0/nvidia-xconfig.c 46f2ea329459b0b16cb36cc14cec0de737d0963e - nvidia-xconfig-35.5.0/options.c 6f6f68f976250f2646450e571f9ab2d7eee1ac80 - nvidia-xconfig-35.5.0/nvidia-cfg.h 913b088cb559f31e09a1baf89d85d75cb43079b4 - nvidia-xconfig-35.5.0/nvidia-xconfig.h bfa37f78ba458f14a1865bbf3f67eb84987a7e1c - nvidia-xconfig-35.5.0/extract_edids.c d37da5a118e0418b267a48d05fd144611316b42c - nvidia-xconfig-35.5.0/gen-manpage-opts.c 41bcac41393c9a465c30c07cf1ab386647a16687 - nvidia-xconfig-35.5.0/util.c 9b0c02164398be2795fea7cb13c9e1b062d24bfb - nvidia-xconfig-35.5.0/query_gpu_info.c c946eefad99cec9366d8abbd4e45c5d138d3b7be - nvidia-xconfig-35.5.0/make_usable.c 10edc2c301fd331439b38d001c0df41669c238b2 - nvidia-xconfig-35.5.0/multiple_screens.c c7b8d8ca0f7c9dcc2cdca4f8e77d1122c71892ef - nvidia-xconfig-35.5.0/XF86Config-parser/Read.c a9bc06f33bf525c2b08be2dc3cd64a59c4c7946d - nvidia-xconfig-35.5.0/XF86Config-parser/Configint.h 2022a4a3c2a1b23a67ae74f50a3849f5f3a45e4b - nvidia-xconfig-35.5.0/XF86Config-parser/Keyboard.c 83b0a8efd6a508db54995688ab353591bdb242a2 - nvidia-xconfig-35.5.0/XF86Config-parser/Flags.c e67d630ef396ab7d34524c333f3a77fc42ba8fc6 - nvidia-xconfig-35.5.0/XF86Config-parser/configProcs.h f3d611bdbddfa64675a0810ef81dada57e224bcd - nvidia-xconfig-35.5.0/XF86Config-parser/Extensions.c 5ffb2caa5077a2e6ec1c5ece807e71503fb2fbce - nvidia-xconfig-35.5.0/XF86Config-parser/Module.c 7344be997921dec57959691e986763ee686888d5 - nvidia-xconfig-35.5.0/XF86Config-parser/Device.c 33211ca0a10f50e2c87b9e8feef6c1ab381b57a1 - nvidia-xconfig-35.5.0/XF86Config-parser/DRI.c 953b945f3b117d6fb44f1f738af17b6380a9ec72 - nvidia-xconfig-35.5.0/XF86Config-parser/Monitor.c 6c210ad0eaee1db3fec48ff01746cb054b4f9aaa - nvidia-xconfig-35.5.0/XF86Config-parser/Video.c 4407207cf890539dc604cff5b834c994b307729a - nvidia-xconfig-35.5.0/XF86Config-parser/Write.c de1c758e29f217e1a99e4c076d54ac84bce98b18 - nvidia-xconfig-35.5.0/XF86Config-parser/Screen.c c66a0a141e25e31b568fb9df41f17d7fb9e6d3b9 - nvidia-xconfig-35.5.0/XF86Config-parser/xf86Parser.h 9cbc29da282aa957f28b7fc83caf1e3b19ee2a52 - nvidia-xconfig-35.5.0/XF86Config-parser/Vendor.c 18711ff932af2202869a30f3b32d6d7fe7811c84 - nvidia-xconfig-35.5.0/XF86Config-parser/Layout.c cda3a4ab05bf48ba28af35b5c4c632e968afc7fa - nvidia-xconfig-35.5.0/XF86Config-parser/Util.c ec19d673a6a7d1d8f855f2d32d3e8f63046c3625 - nvidia-xconfig-35.5.0/XF86Config-parser/Files.c ac878b26ded86a3c502a6a81fc4c4a96162afefb - nvidia-xconfig-35.5.0/XF86Config-parser/Merge.c 0a274c4bc54b6ae0f6d009e443bda0cb033d66b5 - nvidia-xconfig-35.5.0/XF86Config-parser/Pointer.c 3f2238c88d737bd329a9bca1ac4b0bcf77bb9ac2 - nvidia-xconfig-35.5.0/XF86Config-parser/xf86tokens.h 45ceb0129668346ae3e52d81bb6e2f97efadf9d0 - nvidia-xconfig-35.5.0/XF86Config-parser/Input.c 4d9b03ea3badceb6bdfdf6589e6731140ec44079 - nvidia-xconfig-35.5.0/XF86Config-parser/Generate.c 04efe162cf6d97882f2bb87f3712d9a65c2320f3 - nvidia-xconfig-35.5.0/XF86Config-parser/Scan.c 5d55b94375c2055cfa1578e4c7f34c90e63a33f7 - nvidia-xconfig-35.5.0/common-utils/gen-manpage-opts-helper.c 384e36102dcd08ed4c5de05b5e3b8a7cdb2e257d - nvidia-xconfig-35.5.0/common-utils/nvgetopt.c dc2678d8a9d794a4b2b2718fce57ec087f21f54b - nvidia-xconfig-35.5.0/common-utils/common-utils.h aac5cbf0e68e1da4e646c316a7c0e620304ee16b - nvidia-xconfig-35.5.0/common-utils/msg.c e572cac43202f6c2af1c80b9e3901215126093ed - nvidia-xconfig-35.5.0/common-utils/nvgetopt.h 8a346196b052cfb1e06dd83d2ad1fe71e928d2b3 - nvidia-xconfig-35.5.0/common-utils/common-utils.c 1654638c567bc7f2bd70b54d807b498ab14c1061 - nvidia-xconfig-35.5.0/common-utils/nvpci-utils.h 8259a24058c714629f9819cc8c830ea9b202bb27 - nvidia-xconfig-35.5.0/common-utils/gen-manpage-opts-helper.h 524990f5497f9bbeb3d148b5e7dc8d2267c3163d - nvidia-xconfig-35.5.0/common-utils/nvpci-utils.c abb5c1b445d9353f2d2840bda848cd16109710a4 - nvidia-xconfig-35.5.0/common-utils/msg.h Change-Id: Ie20f3a72a69e383fefa7dbce49841bc806b6e6e8
356 lines
7.8 KiB
C
356 lines
7.8 KiB
C
/*
|
|
* nvidia-xconfig: A tool for manipulating XConfig files,
|
|
* specifically for use by the NVIDIA Linux graphics driver.
|
|
*
|
|
* Copyright (C) 2004 NVIDIA Corporation
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms and conditions of the GNU General Public License,
|
|
* version 2, as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses>.
|
|
*
|
|
*
|
|
* tree.c - this source file contains routines for printing an
|
|
* XConfig in a tree format, rooted at the ServerLayout section.
|
|
*
|
|
* Note that the tree is just printed to stdout (not through an
|
|
* ncurses ui) so we can just call printf directly here.
|
|
*
|
|
* TODO: there are many fields that we are not yet printing
|
|
*/
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include "nvidia-xconfig.h"
|
|
|
|
|
|
|
|
/*
|
|
* print_options()
|
|
*/
|
|
|
|
static void print_options(XConfigOptionPtr options, int indents)
|
|
{
|
|
XConfigOptionPtr opt;
|
|
int i;
|
|
|
|
for (opt = options; opt; opt = opt->next) {
|
|
printf(" |");
|
|
for (i = 1; i < indents; i++) printf(" |");
|
|
printf("--> Option \"%s\"", opt->name);
|
|
if (opt->val) printf(" \"%s\"", opt->val);
|
|
printf("\n");
|
|
}
|
|
} /* print_options() */
|
|
|
|
|
|
|
|
/*
|
|
* print_range()
|
|
*/
|
|
|
|
static void print_range(parser_range* range, int n)
|
|
{
|
|
int i;
|
|
for (i = 0; i < n; i++) {
|
|
if (i > 0) printf(", ");
|
|
printf("%.1f-%.1f", range[i].lo, range[i].hi);
|
|
}
|
|
printf("\n");
|
|
|
|
} /* print_range() */
|
|
|
|
|
|
|
|
/*
|
|
* print_monitor()
|
|
*/
|
|
|
|
static void print_monitor(XConfigMonitorPtr monitor)
|
|
{
|
|
XConfigModeLinePtr modeline;
|
|
|
|
printf(" | |--> Monitor \"%s\"\n", monitor->identifier);
|
|
printf(" | | |\n");
|
|
|
|
if (monitor->vendor) {
|
|
printf(" | | |--> VendorName \"%s\"\n",
|
|
monitor->vendor);
|
|
}
|
|
|
|
if (monitor->modelname) {
|
|
printf(" | | |--> ModelName \"%s\"\n",
|
|
monitor->modelname);
|
|
}
|
|
|
|
printf(" | | |--> HorizSync ");
|
|
print_range(monitor->hsync, monitor->n_hsync);
|
|
|
|
printf(" | | |--> VertRefresh ");
|
|
print_range(monitor->vrefresh, monitor->n_vrefresh);
|
|
|
|
for (modeline = monitor->modelines; modeline; modeline = modeline->next) {
|
|
printf(" | | |--> Modeline \"%s\" ...\n",
|
|
modeline->identifier);
|
|
}
|
|
|
|
print_options(monitor->options, 3);
|
|
|
|
printf(" | |\n");
|
|
|
|
} /* print_monitor() */
|
|
|
|
|
|
|
|
/*
|
|
* print_device()
|
|
*/
|
|
|
|
static void print_device(XConfigDevicePtr device)
|
|
{
|
|
printf(" | |--> Device \"%s\"\n", device->identifier);
|
|
|
|
if (device->driver) {
|
|
printf(" | | |--> Driver \"%s\"\n",
|
|
device->driver);
|
|
}
|
|
if (device->vendor) {
|
|
printf(" | | |--> VendorName \"%s\"\n",
|
|
device->vendor);
|
|
}
|
|
if (device->board) {
|
|
printf(" | | |--> BoardName \"%s\"\n",
|
|
device->board);
|
|
}
|
|
if (device->busid) {
|
|
printf(" | | |--> BusID \"%s\"\n",
|
|
device->busid);
|
|
}
|
|
if (device->screen >= 0) {
|
|
printf(" | | |--> Screen \"%d\"\n",
|
|
device->screen);
|
|
}
|
|
|
|
print_options(device->options, 3);
|
|
|
|
printf(" | |\n");
|
|
|
|
} /* print_device() */
|
|
|
|
|
|
|
|
/*
|
|
* print_modes()
|
|
*/
|
|
|
|
static void print_modes(XConfigScreenPtr screen)
|
|
{
|
|
XConfigDisplayPtr display;
|
|
XConfigModePtr mode;
|
|
int printedSomething = 0;
|
|
|
|
for (display = screen->displays; display; display = display->next) {
|
|
if (display->depth == screen->defaultdepth) {
|
|
for (mode = display->modes; mode; mode = mode->next) {
|
|
if (!printedSomething) {
|
|
printf(" | |--> Modes");
|
|
}
|
|
printf(" \"%s\"", mode->mode_name);
|
|
printedSomething = 1;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (printedSomething) {
|
|
printf("\n");
|
|
}
|
|
|
|
} /* print_modes() */
|
|
|
|
|
|
|
|
/*
|
|
* print_virtual()
|
|
*/
|
|
|
|
static void print_virtual(XConfigScreenPtr screen)
|
|
{
|
|
XConfigDisplayPtr display;
|
|
|
|
for (display = screen->displays; display; display = display->next) {
|
|
if (display->depth == screen->defaultdepth) {
|
|
if (display->virtualX || display->virtualY) {
|
|
printf(" | |--> Virtual %d %d\n",
|
|
display->virtualX, display->virtualY);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
} /* print_virtual() */
|
|
|
|
|
|
|
|
/*
|
|
* print_screen()
|
|
*/
|
|
|
|
static void print_screen(XConfigScreenPtr screen)
|
|
{
|
|
printf(" |--> Screen \"%s\"\n", screen->identifier);
|
|
printf(" | |\n");
|
|
print_monitor(screen->monitor);
|
|
|
|
print_device(screen->device);
|
|
|
|
print_options(screen->options, 2);
|
|
|
|
printf(" | |--> DefaultColorDepth %d\n",
|
|
screen->defaultdepth);
|
|
print_modes(screen);
|
|
print_virtual(screen);
|
|
|
|
printf(" |\n");
|
|
|
|
} /* print_screen() */
|
|
|
|
|
|
|
|
/*
|
|
* print_input()
|
|
*/
|
|
|
|
static void print_input(XConfigInputrefPtr inputRef)
|
|
{
|
|
XConfigInputPtr input = inputRef->input;
|
|
|
|
printf(" |--> InputDevice \"%s\"\n", input->identifier);
|
|
printf(" | |\n");
|
|
printf(" | |--> Driver \"%s\"\n", input->driver);
|
|
|
|
print_options(input->options, 2);
|
|
print_options(inputRef->options, 2);
|
|
|
|
printf(" |\n");
|
|
|
|
} /* print_input() */
|
|
|
|
|
|
|
|
/*
|
|
* print_layout()
|
|
*/
|
|
|
|
static void print_layout(XConfigLayoutPtr layout)
|
|
{
|
|
XConfigAdjacencyPtr adj;
|
|
XConfigInputrefPtr input;
|
|
|
|
printf("\n");
|
|
printf(" ServerLayout \"%s\"\n", layout->identifier);
|
|
printf(" |\n");
|
|
|
|
for (adj = layout->adjacencies; adj; adj = adj->next) {
|
|
print_screen(adj->screen);
|
|
}
|
|
|
|
for (input = layout->inputs; input; input = input->next) {
|
|
print_input(input);
|
|
}
|
|
|
|
print_options(layout->options, 1);
|
|
|
|
} /* print_layout() */
|
|
|
|
|
|
|
|
/*
|
|
* print_server_flags()
|
|
*/
|
|
|
|
static void print_server_flags(XConfigPtr config)
|
|
{
|
|
if (!config->flags || !config->flags->options) return;
|
|
|
|
printf("\n");
|
|
printf(" ServerFlags\n");
|
|
printf(" |\n");
|
|
|
|
print_options(config->flags->options, 1);
|
|
|
|
printf("\n");
|
|
|
|
} /* print_server_flags() */
|
|
|
|
|
|
|
|
/*
|
|
* print_server_extensions()
|
|
*/
|
|
|
|
static void print_server_extensions(XConfigPtr config)
|
|
{
|
|
if (!config->extensions || !config->extensions->options) return;
|
|
|
|
printf("\n");
|
|
printf(" Extensions\n");
|
|
printf(" |\n");
|
|
|
|
print_options(config->extensions->options, 1);
|
|
|
|
printf("\n");
|
|
|
|
} /* print_server_extensions() */
|
|
|
|
|
|
|
|
/*
|
|
* print_tree()
|
|
*/
|
|
|
|
int print_tree(Options *op, XConfigPtr config)
|
|
{
|
|
XConfigLayoutPtr layout;
|
|
|
|
if (!config) {
|
|
printf("Unable to locate/open XConfig file.\n");
|
|
return FALSE;
|
|
}
|
|
|
|
/*
|
|
* either use the requested layout or loop over all the layouts in
|
|
* the file
|
|
*/
|
|
|
|
if (op->layout) {
|
|
layout = xconfigFindLayout(op->layout, config->layouts);
|
|
if (!layout) {
|
|
printf("Unable to find layout \"%s\".\n", op->layout);
|
|
return FALSE;
|
|
}
|
|
print_layout(layout);
|
|
} else {
|
|
for (layout = config->layouts; layout; layout = layout->next) {
|
|
print_layout(layout);
|
|
}
|
|
}
|
|
|
|
printf("\n");
|
|
|
|
print_server_flags(config);
|
|
|
|
print_server_extensions(config);
|
|
|
|
return TRUE;
|
|
|
|
} /* print_tree() */
|