summaryrefslogtreecommitdiff
path: root/nvidia-cfg.h
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2008-02-13 10:26:52 -0800
committerAaron Plattner <aplattner@nvidia.com>2008-02-13 10:26:52 -0800
commitc1cb49fc2abcb44580f7544e2ac8f987da5205cc (patch)
treec4f28e1ec22fab18a7f95fa2768badd263d0fd6b /nvidia-cfg.h
Diffstat (limited to 'nvidia-cfg.h')
-rw-r--r--nvidia-cfg.h229
1 files changed, 229 insertions, 0 deletions
diff --git a/nvidia-cfg.h b/nvidia-cfg.h
new file mode 100644
index 0000000..020d947
--- /dev/null
+++ b/nvidia-cfg.h
@@ -0,0 +1,229 @@
+/*
+ * nvidia-cfg
+ *
+ * Copyright (c) 2004 NVIDIA Corp. All rights reserved.
+ *
+ * NOTICE TO USER: The source code is copyrighted under U.S. and
+ * international laws. NVIDIA, Corp. of Santa Clara, California owns
+ * the copyright and as design patents pending on the design and
+ * interface of the NV chips. Users and possessors of this source
+ * code are hereby granted a nonexclusive, royalty-free copyright
+ * and design patent license to use this code in individual and
+ * commercial software.
+ *
+ * Any use of this source code must include, in the user documenta-
+ * tion and internal comments to the code, notices to the end user
+ * as follows:
+ *
+ * Copyright (c) 2004 NVIDIA Corp. NVIDIA design patents pending in
+ * the U.S. and foreign countries.
+ *
+ * NVIDIA CORP. MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF
+ * THIS SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT
+ * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. NVIDIA, CORP. DISCLAIMS
+ * ALL WARRANTIES WITH REGARD TO THIS SOURCE CODE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA, CORP. BE LIABLE
+ * FOR ANY SPECIAL, INDIRECT, INCIDENTAL, 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 SOURCE CODE.
+ *
+ *
+ * This header file defines the public interface to the
+ * libnvidia-cfg.so library.
+ */
+
+#ifndef __NVIDIA_CFG_H__
+#define __NVIDIA_CFG_H__
+
+
+
+/*
+ * NvCfgDevice - data structure containing bus:slot pairs
+ */
+
+typedef struct {
+ int bus;
+ int slot;
+} NvCfgDevice;
+
+
+
+/*
+ * NvCfgDisplayDeviceInformation - this data structure contains
+ * various limits and other useful data parsed from the EDID.
+ */
+
+typedef struct {
+
+ /*
+ * The monitor name is the name of the monitor as specified by an
+ * EDID 1.x Monitor Descriptors, or an EDID 2.x
+ * Manufacturer/Product ID string.
+ */
+
+ char monitor_name[64];
+
+ /*
+ * The horiz_sync and vert_refresh ranges are retrieved from an
+ * EDID 1.x Monitor Descriptor, or an EDID 2.x Range Limit.
+ */
+
+ unsigned int min_horiz_sync; /* in Hz */
+ unsigned int max_horiz_sync; /* in Hz */
+ unsigned int min_vert_refresh; /* in Hz */
+ unsigned int max_vert_refresh; /* in Hz */
+
+ unsigned int max_pixel_clock; /* in kHz */
+
+ /*
+ * The max xres, yres, and refresh, if not 0, are taken from the
+ * largest mode in the EDID.
+ */
+
+ unsigned int max_xres; /* in pixels */
+ unsigned int max_yres; /* in pixels */
+ unsigned int max_refresh; /* in Hz */
+
+ /*
+ * the preferred xres, yres, and refresh, if not 0, are the values
+ * specified by the EDID as the preferred timing mode of the
+ * display device.
+ */
+
+ unsigned int preferred_xres; /* in pixels */
+ unsigned int preferred_yres; /* in pixels */
+ unsigned int preferred_refresh; /* in Hz */
+
+ /*
+ * the physical width and height, if not 0, are the physical
+ * dimensions of the display device.
+ */
+
+ unsigned int physical_width; /* in mm */
+ unsigned int physical_height; /* in mm */
+
+} NvCfgDisplayDeviceInformation;
+
+
+
+/*
+ * NvCfgDeviceHandle - this is an opaque handle identifying a
+ * connection to an NVIDIA VGA adapter.
+ */
+
+typedef void * NvCfgDeviceHandle;
+
+
+
+/*
+ * NvCfg Boolean values
+ */
+
+typedef enum {
+ NVCFG_TRUE = 1,
+ NVCFG_FALSE = 0,
+} NvCfgBool;
+
+
+
+/*
+ * nvCfgGetDevices() - retrieve an array of NvCfgDevice's indicating
+ * what PCI devices are present on the system. On success, NVCFG_TRUE
+ * will be returned, n will contain the number of NVIDIA PCI VGA
+ * adapters present in the system, and devs will be an allocated array
+ * containing the bus address of each NVIDIA PCI VGA adapter. When
+ * the caller is done, it should free the devs array. On failure,
+ * NVCFG_FALSE will be returned.
+ */
+
+NvCfgBool nvCfgGetDevices(int *n, NvCfgDevice **devs);
+
+
+
+/*
+ * nvCfgOpenDevice() - open a connection to the NVIDIA device
+ * identified by the bus:slot PCI address. On success, NVCFG_TRUE
+ * will be returned and handle be assigned. On failure, NVCFG_FALSE
+ * will be returned.
+ */
+
+NvCfgBool nvCfgOpenDevice(int bus, int slot, NvCfgDeviceHandle *handle);
+
+
+
+/*
+ * nvCfgCloseDevice() - close the previously opened connection to an
+ * NVIDIA device.
+ */
+
+NvCfgBool nvCfgCloseDevice(NvCfgDeviceHandle handle);
+
+
+
+/*
+ * nvCfgGetNumCRTCs() - return the number of CRTCs (aka "heads")
+ * present on the specified NVIDIA device. On success, NVCFG_TRUE
+ * will be returned and crtcs will be assigned. On failure,
+ * NVCFG_FALSE will be returned.
+ */
+
+NvCfgBool nvCfgGetNumCRTCs(NvCfgDeviceHandle handle, int *crtcs);
+
+
+
+/*
+ * nvCfgGetProductName() - return an allocated string containing the
+ * product name of the specified NVIDIA device. It is the caller's
+ * responsibility to free the returned string. On success, NVCFG_TRUE
+ * will be returned and name will be assigned. On failure,
+ * NVCFG_FALSE will be returned.
+ */
+
+NvCfgBool nvCfgGetProductName(NvCfgDeviceHandle handle, char **name);
+
+
+
+/*
+ * nvCfgGetDisplayDevices() - retrieve a bitmask describing the
+ * currently connected display devices: this "display device mask" is
+ * an unsigned 32 bit value that identifies one or more display
+ * devices. The first 8 bits each identify a CRT, the next 8 bits
+ * each identify a TV, and the next 8 each identify a DFP. For
+ * example, 0x1 refers to CRT-0, 0x3 refers to CRT-0 and CRT-1,
+ * 0x10001 refers to CRT-0 and DFP-0, etc. On success, NVCFG_TRUE
+ * will be returned and display_device_mask will be assigned. On
+ * failure, NVCFG_FALSE will be returned.
+ */
+
+NvCfgBool nvCfgGetDisplayDevices(NvCfgDeviceHandle handle,
+ unsigned int *display_device_mask);
+
+
+/*
+ * nvCfgGetEDIDData() - return an allocated byte array containing the
+ * EDID for the specified display device, if any. On success,
+ * NVCFG_TRUE will be returned and edidSize and edid will be assigned.
+ * On failure, NVCFG_FALSE will be returned. It is the caller's
+ * responsibility to free the allocated EDID.
+ */
+
+NvCfgBool nvCfgGetEDIDData(NvCfgDeviceHandle handle,
+ unsigned int display_device,
+ int *edidSize, void **edid);
+
+
+/*
+ * nvCfgGetEDIDMonitorData() - Initialize the fields in the
+ * NvCfgDisplayDeviceInformation data structure, using data from the
+ * EDID. On success, NVCFG_TRUE will be returned and info will be
+ * assigned. On failure, NVCFG_FALSE will be returned.
+ */
+
+NvCfgBool nvCfgGetEDID(NvCfgDeviceHandle handle,
+ unsigned int display_device,
+ NvCfgDisplayDeviceInformation *info);
+
+#endif /* __NVIDIA_CFG__ */