Codebase list nvidia-persistenced / debian/440.44-1 nvidia-cfg.h
debian/440.44-1

Tree @debian/440.44-1 (Download .tar.gz)

nvidia-cfg.h @debian/440.44-1raw · history · blame

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
/*
 * 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
 *
 * This is deprecated; please use NvCfgPciDevice instead
 */

typedef struct {
    int bus;
    int slot;
} NvCfgDevice;


/*
 * NvCfgPciDevice - data structure identifying a device on the PCI bus
 */

typedef struct {
    int domain;
    int bus;
    int slot;
    int function;
} NvCfgPciDevice;


/*
 * NvCfgGSyncDeviceType - type of the GSync device
 */

typedef enum {
    NVCFG_TYPE_GSYNC2 = 1,
    NVCFG_TYPE_GSYNC3,
    NVCFG_TYPE_GSYNC4
} NvCfgGSyncDeviceType;



#define NV_CFG_GSYNC_DEVICE_FIRMWARE_FORMAT_1 1



/*
 * 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;



/*
 * NvCfgGSyncHandle - this is an opaque handle identifying a
 * GSync device.
 */

typedef void * NvCfgGSyncHandle;



/*
 * 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.
 *
 * This is deprecated; please use nvCfgGetPciDevices() instead.
 */

NvCfgBool nvCfgGetDevices(int *n, NvCfgDevice **devs);



/*
 * nvCfgGetPciDevices() - retrieve an array of NvCfgPciDevice'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 graphics devices present in the system, and devs will be an
 * allocated array containing the PCI domain:bus:slot:function
 * address of each NVIDIA PCI graphics device.  When the caller is
 * done, it should free the devs array.  On failure, NVCFG_FALSE will
 * be returned.
 */

NvCfgBool nvCfgGetPciDevices(int *n, NvCfgPciDevice **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.
 *
 * This is deprecated; please use nvCfgOpenPciDevice() instead.
 */

NvCfgBool nvCfgOpenDevice(int bus, int slot, NvCfgDeviceHandle *handle);



/*
 * nvCfgAttachPciDevice() - open a limited, display-less connection to
 * the NVIDIA device identified by the domain:bus:slot:function PCI
 * address.  On success, NVCFG_TRUE will be returned and handle will be
 * assigned.  On failure, NVCFG_FALSE will be returned.
 */
NvCfgBool nvCfgAttachPciDevice(int domain, int bus, int device, int function,
                               NvCfgDeviceHandle *handle);



/*
 * nvCfgOpenPciDevice() - open a connection to the NVIDIA device
 * identified by the domain:bus:slot:function PCI address.  On
 * success, NVCFG_TRUE will be returned and handle will be assigned.
 * On failure, NVCFG_FALSE will be returned.
 */

NvCfgBool nvCfgOpenPciDevice(int domain, int bus, int device, int function,
                             NvCfgDeviceHandle *handle);



/*
 * nvCfgOpenAllPciDevices() - open a connection to each NVIDIA device
 * in the system.  On success, NVCFG_TRUE will be returned, n will be
 * assigned the number of NVIDIA devices in the system, and handles
 * will be assigned with an allocated array of NvCfgDeviceHandles;
 * each element in the array is a handle to one of the NVIDIA devices
 * in the system.  The caller should free the handles array when no
 * longer needed.  On failure, NVCFG_FALSE will be returned.
 */

NvCfgBool nvCfgOpenAllPciDevices(int *n, NvCfgDeviceHandle **handles);



/*
 * nvCfgDetachDevice() - close the previously opened limited, display-less
 * connection to an NVIDIA device created by nvCfgAttachPciDevice().
 */
NvCfgBool nvCfgDetachDevice(NvCfgDeviceHandle handle);



/*
 * nvCfgCloseDevice() - close the previously opened connection to an
 * NVIDIA device created by nvCfgOpenPciDevice().
 */

NvCfgBool nvCfgCloseDevice(NvCfgDeviceHandle handle);



/*
 * nvCfgCloseAllPciDevices() - close all the NVIDIA device connections
 * opened by a previous call to nvCfgOpenAllPciDevices().
 */

NvCfgBool nvCfgCloseAllPciDevices(void);



/*
 * 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);



/*
 * nvCfgGetDeviceUUID() - return an allocated string containing the
 * global unique identifier of the specified NVIDIA device.  It is the caller's
 * responsibility to free the returned string.  On success, NVCFG_TRUE
 * will be returned and uuid will be assigned.  On failure,
 * NVCFG_FALSE will be returned.
 */

NvCfgBool nvCfgGetDeviceUUID(NvCfgDeviceHandle handle, char **uuid);



/*
 * 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);



/* nvCfgGetSupportedDisplayDevices() - get all supported display devices,
 * not only connected ones. Interpretation of display_device_mask
 * parameter is the same as for nvCfgGetDisplayDevices() call.
 * On success, NVCFG_TRUE will be returned and display_device_mask will be
 * assigned.  On failure, NVCFG_FALSE will be returned.
 */

NvCfgBool nvCfgGetSupportedDisplayDevices(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);


/*
 * nvCfgIsPrimaryDevice() - determines whether the specified NVIDIA
 * device is the primary device.  On success, NVCFG_TRUE will be
 * returned and is_primary_device set to indicate whether the
 * device is the primary device.  On failure, NVCFG_FALSE will be
 * returned.
 */

NvCfgBool nvCfgIsPrimaryDevice(NvCfgDeviceHandle handle,
                               NvCfgBool *is_primary_device);

/*
 * nvCfgGetTeslaSerialNumbers() - returns an allocated array of strings 
 * containing the serial numbers of all NVIDIA Tesla/QuadroPlex devices
 * connected to the host, followed by a NULL character. It is the caller's
 * responsibility to free the returned array of strings. On success, 
 * NVCFG_TRUE will be returned and serials will be assigned.  On failure,
 * NVCFG_FALSE will be returned.
 *
 * Note that this function is deprecated and will always return an empty array
 * on recent drivers, since QuadroPlex devices are no longer supported.
 */

NvCfgBool nvCfgGetTeslaSerialNumbers(char ***serials);


/*
 * nvCfgOpenAllGSyncDevices() - returns an array of NvCfgGSyncHandle's
 * indicating what GSync devices are present in the system. On success,
 * NVCFG_TRUE will be returned, n will contain the number of GSync devices
 * present in the system, and handles will be an allocated array containing
 * a handle for each of the GSync devices.The caller should free the
 * handles array when no longer needed. On failure, NVCFG_FALSE will be
 * returned.
 */

NvCfgBool nvCfgOpenAllGSyncDevices(int *n, NvCfgGSyncHandle **handles);


/*
 * nvCfgCloseAllGSyncDevices() - close all the GSync device connections
 * opened by a previous call to nvCfgOpenAllGSyncDevices().
 */

NvCfgBool nvCfgCloseAllGSyncDevices(void);


/*
 * nvCfgGetGSyncDeviceType() - returns the type of GSync device referenced
 * by handle.
 */

NvCfgGSyncDeviceType nvCfgGetGSyncDeviceType(NvCfgGSyncHandle handle);


/*
 * nvCfgGetGSyncDeviceFirmwareVersion() - returns the firmware major version of
 * the GSync device referenced by handle.
 */

int nvCfgGetGSyncDeviceFirmwareVersion(NvCfgGSyncHandle handle);


/*
 * nvCfgGetGSyncDeviceFirmwareMinorVersion() - returns the firmware minor
 * version of the GSync device referenced by handle.
 */

int nvCfgGetGSyncDeviceFirmwareMinorVersion(NvCfgGSyncHandle handle);


/*
 * nvCfgFlashGSyncDevice() - flashes the GSync device referenced by handle.
 * format contains the firmware format, newFirmwareImage contains the
 * new firmware image to be flashed, and size contains the size of
 * newFirmwareImage. On success, NVCFG_TRUE will be returned.
 * On failure, NVCFG_FALSE will be returned.
 */

NvCfgBool nvCfgFlashGSyncDevice(NvCfgGSyncHandle handle, int format,
                                const unsigned char *newFirmwareImage,
                                int size);


/*
 * nvCfgDumpDisplayPortAuxLog() - dump the DisplayPort AUX channel log to the
 * system log. On success, NVCFG_TRUE will be returned. On failure, NVCFG_FALSE
 * will be returned.
 */
NvCfgBool nvCfgDumpDisplayPortAuxLog(NvCfgDeviceHandle handle);

#endif /* __NVIDIA_CFG__ */