NV services: Difference between revisions
Masagrator (talk | contribs) No edit summary |
|||
(17 intermediate revisions by 2 users not shown) | |||
Line 593: | Line 593: | ||
! Value || Direction || Size || Description | ! Value || Direction || Size || Description | ||
|- | |- | ||
| 0x80040212 || Out || 4 || NVDISP_CTRL_NUM_OUTPUTS | | 0x80040212 || Out || 4 || [[#NVDISP_CTRL_NUM_OUTPUTS]] | ||
|- | |- | ||
| 0xC0140213 || Inout || 20 || NVDISP_CTRL_GET_DISPLAY_PROPERTIES | | 0xC0140213 || Inout || 20 || NVDISP_CTRL_GET_DISPLAY_PROPERTIES | ||
|- | |- | ||
| 0xC1100214 || Inout || 272 || NVDISP_CTRL_QUERY_EDID | | 0xC2100214</br>([1.0.0-11.0.1] 0xC1100214) || Inout || 528</br>([1.0.0-11.0.1] 272) || NVDISP_CTRL_QUERY_EDID | ||
|- | |- | ||
| 0xC0080216</br>([1.0.0-3.0.0] 0xC0040216) || Inout || 8</br>([1.0.0-3.0.0] 4) || NVDISP_CTRL_GET_EXT_HPD_IN_OUT_EVENTS</br>([1.0.0-3.0.0] NVDISP_CTRL_GET_EXT_HPD_IN_EVENT) | | 0xC0080216</br>([1.0.0-3.0.0] 0xC0040216) || Inout || 8</br>([1.0.0-3.0.0] 4) || NVDISP_CTRL_GET_EXT_HPD_IN_OUT_EVENTS</br>([1.0.0-3.0.0] NVDISP_CTRL_GET_EXT_HPD_IN_EVENT) | ||
Line 611: | Line 611: | ||
| 0x80010224 || Out || 1 || [11.0.0+] NVDISP_CTRL_IS_DISPLAY_OLED | | 0x80010224 || Out || 1 || [11.0.0+] NVDISP_CTRL_IS_DISPLAY_OLED | ||
|} | |} | ||
=== NVDISP_CTRL_NUM_OUTPUTS === | |||
struct { | |||
__out u32 num_outputs; | |||
}; | |||
== /dev/nvdisp-disp0, /dev/nvdisp-disp1 == | == /dev/nvdisp-disp0, /dev/nvdisp-disp1 == | ||
Line 622: | Line 628: | ||
| 0xC4C80203 || In || 1224 || NVDISP_FLIP | | 0xC4C80203 || In || 1224 || NVDISP_FLIP | ||
|- | |- | ||
| 0x80380204 || Out || 56 || NVDISP_GET_MODE | | 0x80380204 || Out || 56 || [[#NVDISP_GET_MODE]] | ||
|- | |- | ||
| 0x40380205 || | | 0x40380205 || In || 56 || [[#NVDISP_SET_MODE]] | ||
|- | |- | ||
| 0x430C0206 || In || 780 || NVDISP_SET_LUT | | 0x430C0206 || In || 780 || NVDISP_SET_LUT | ||
Line 634: | Line 640: | ||
| 0x80040209 || Out || 4 || NVDISP_GET_HEAD_STATUS | | 0x80040209 || Out || 4 || NVDISP_GET_HEAD_STATUS | ||
|- | |- | ||
| 0xC038020A || Inout || 56 || NVDISP_VALIDATE_MODE | | 0xC038020A || Inout || 56 || [[#NVDISP_VALIDATE_MODE]] | ||
|- | |- | ||
| 0x4018020B || In || 24 || NVDISP_SET_CSC | | 0x4018020B || In || 24 || NVDISP_SET_CSC | ||
Line 646: | Line 652: | ||
| 0xC004020F || Inout || 4 || NVDISP_DPMS | | 0xC004020F || Inout || 4 || NVDISP_DPMS | ||
|- | |- | ||
| 0x80600210 || Out || 96 || NVDISP_GET_AVI_INFOFRAME | | 0x80600210 || Out || 96 || [[#NVDISP_GET_AVI_INFOFRAME]] | ||
|- | |- | ||
| 0x40600211 || In || 96 || NVDISP_SET_AVI_INFOFRAME | | 0x40600211 || In || 96 || [[#NVDISP_SET_AVI_INFOFRAME]] | ||
|- | |- | ||
| 0xEBFC0215 || Inout || 11260 || NVDISP_GET_MODE_DB | | 0xEBFC0215 || Inout || 11260 || [[#NVDISP_GET_MODE_DB]] | ||
|- | |- | ||
| 0xC003021A || Inout || 3 || NVDISP_PANEL_GET_VENDOR_ID | | 0xC003021A || Inout || 3 || [[#NVDISP_PANEL_GET_VENDOR_ID]] | ||
|- | |- | ||
| 0x803C021B || Out || 60 || NVDISP_GET_MODE2 | | 0x803C021B || Out || 60 || [[#NVDISP_GET_MODE2]] | ||
|- | |- | ||
| 0x403C021C || In || 60 || NVDISP_SET_MODE2 | | 0x403C021C || In || 60 || [[#NVDISP_SET_MODE2]] | ||
|- | |- | ||
| 0xC03C021D || Inout || 60 || NVDISP_VALIDATE_MODE2 | | 0xC03C021D || Inout || 60 || [[#NVDISP_VALIDATE_MODE2]] | ||
|- | |- | ||
| 0xEF20021E || Inout || 12064 || NVDISP_GET_MODE_DB2 | | 0xEF20021E || Inout || 12064 || [[#NVDISP_GET_MODE_DB2]] | ||
|- | |- | ||
| 0xC004021F || Inout || 4 || NVDISP_GET_WINMASK | | 0xC004021F || Inout || 4 || NVDISP_GET_WINMASK | ||
Line 674: | Line 680: | ||
| 0xC01C0226 || Inout || 28 || [11.0.0+] [[#NVDISP_GET_PANEL_DATA]] | | 0xC01C0226 || Inout || 28 || [11.0.0+] [[#NVDISP_GET_PANEL_DATA]] | ||
|} | |} | ||
=== NVDISP_GET_MODE === | |||
Almost identical to Linux driver. | |||
struct { | |||
__out u32 hActive; | |||
__out u32 vActive; | |||
__out u32 hSyncWidth; | |||
__out u32 vSyncWidth; | |||
__out u32 hFrontPorch; | |||
__out u32 vFrontPorch; | |||
__out u32 hBackPorch; | |||
__out u32 vBackPorch; | |||
__out u32 hRefToSync; | |||
__out u32 vRefToSync; | |||
__out u32 pclkKHz; | |||
__out u32 bitsPerPixel; // Always 0 | |||
__out u32 vmode; // Always 0 | |||
__out u32 sync; | |||
}; | |||
=== NVDISP_SET_MODE === | |||
Almost identical to Linux driver. | |||
struct { | |||
__in u32 hActive; | |||
__in u32 vActive; | |||
__in u32 hSyncWidth; | |||
__in u32 vSyncWidth; | |||
__in u32 hFrontPorch; | |||
__in u32 vFrontPorch; | |||
__in u32 hBackPorch; | |||
__in u32 vBackPorch; | |||
__in u32 hRefToSync; | |||
__in u32 vRefToSync; | |||
__in u32 pclkKHz; | |||
__in u32 bitsPerPixel; | |||
__in u32 vmode; | |||
__in u32 sync; | |||
}; | |||
=== NVDISP_VALIDATE_MODE === | |||
Almost identical to Linux driver. | |||
struct { | |||
__inout u32 hActive; | |||
__inout u32 vActive; | |||
__inout u32 hSyncWidth; | |||
__inout u32 vSyncWidth; | |||
__inout u32 hFrontPorch; | |||
__inout u32 vFrontPorch; | |||
__inout u32 hBackPorch; | |||
__inout u32 vBackPorch; | |||
__inout u32 hRefToSync; | |||
__inout u32 vRefToSync; | |||
__inout u32 pclkKHz; | |||
__inout u32 bitsPerPixel; | |||
__inout u32 vmode; | |||
__inout u32 sync; | |||
}; | |||
=== NVDISP_GET_AVI_INFOFRAME === | |||
Unpacked standard AVI infoframe struct (HDMI v1.4b/2.0) | |||
struct { | |||
__out u32 csum; | |||
__out u32 scan; | |||
__out u32 bar_valid; | |||
__out u32 act_fmt_valid; | |||
__out u32 rgb_ycc; | |||
__out u32 act_format; | |||
__out u32 aspect_ratio; | |||
__out u32 colorimetry; | |||
__out u32 scaling; | |||
__out u32 rgb_quant; | |||
__out u32 ext_colorimetry; | |||
__out u32 it_content; | |||
__out u32 video_format; | |||
__out u32 pix_rep; | |||
__out u32 it_content_type; | |||
__out u32 ycc_quant; | |||
__out u32 top_bar_end_line_lsb; | |||
__out u32 top_bar_end_line_msb; | |||
__out u32 bot_bar_start_line_lsb; | |||
__out u32 bot_bar_start_line_msb; | |||
__out u32 left_bar_end_pixel_lsb; | |||
__out u32 left_bar_end_pixel_msb; | |||
__out u32 right_bar_start_pixel_lsb; | |||
__out u32 right_bar_start_pixel_msb; | |||
}; | |||
=== NVDISP_SET_AVI_INFOFRAME === | |||
Unpacked standard AVI infoframe struct (HDMI v1.4b/2.0) | |||
struct { | |||
__in u32 csum; | |||
__in u32 scan; | |||
__in u32 bar_valid; | |||
__in u32 act_fmt_valid; | |||
__in u32 rgb_ycc; | |||
__in u32 act_format; | |||
__in u32 aspect_ratio; | |||
__in u32 colorimetry; | |||
__in u32 scaling; | |||
__in u32 rgb_quant; | |||
__in u32 ext_colorimetry; | |||
__in u32 it_content; | |||
__in u32 video_format; | |||
__in u32 pix_rep; | |||
__in u32 it_content_type; | |||
__in u32 ycc_quant; | |||
__in u32 top_bar_end_line_lsb; | |||
__in u32 top_bar_end_line_msb; | |||
__in u32 bot_bar_start_line_lsb; | |||
__in u32 bot_bar_start_line_msb; | |||
__in u32 left_bar_end_pixel_lsb; | |||
__in u32 left_bar_end_pixel_msb; | |||
__in u32 right_bar_start_pixel_lsb; | |||
__in u32 right_bar_start_pixel_msb; | |||
}; | |||
=== NVDISP_GET_MODE_DB === | |||
Almost identical to Linux driver. | |||
struct mode { | |||
u32 hActive; | |||
u32 vActive; | |||
u32 hSyncWidth; | |||
u32 vSyncWidth; | |||
u32 hFrontPorch; | |||
u32 vFrontPorch; | |||
u32 hBackPorch; | |||
u32 vBackPorch; | |||
u32 hRefToSync; | |||
u32 vRefToSync; | |||
u32 pclkKHz; | |||
u32 bitsPerPixel; | |||
u32 vmode; | |||
u32 sync; | |||
}; | |||
struct { | |||
__out struct mode modes[201]; | |||
__out u32 num_modes; | |||
}; | |||
=== NVDISP_PANEL_GET_VENDOR_ID === | |||
Returns display panel's informations. | |||
struct { | |||
__out u8 vendor; //0x10 - JDI, 0x20 - InnoLux, 0x30 - AUO, 0x40 - Sharp, 0x50 - Samsung | |||
__out u8 model; | |||
__out u8 board; //0xF - 6.2", 0x10 - 5.5", 0x20 - 7.0". JDI panels have nonstandard values | |||
}; | |||
=== NVDISP_GET_MODE2 === | |||
struct { | |||
__out u32 unk0; //Always 0 | |||
__out u32 hActive; | |||
__out u32 vActive; | |||
__out u32 hSyncWidth; | |||
__out u32 vSyncWidth; | |||
__out u32 hFrontPorch; | |||
__out u32 vFrontPorch; | |||
__out u32 hBackPorch; | |||
__out u32 vBackPorch; | |||
__out u32 pclkKHz; | |||
__out u32 bitsPerPixel; // Always 0 | |||
__out u32 vmode; // Always 0 | |||
__out u32 sync; | |||
__out u32 unk1; | |||
__out u32 reserved; | |||
}; | |||
=== NVDISP_SET_MODE2 === | |||
struct { | |||
__in u32 unk0; | |||
__in u32 hActive; | |||
__in u32 vActive; | |||
__in u32 hSyncWidth; | |||
__in u32 vSyncWidth; | |||
__in u32 hFrontPorch; | |||
__in u32 vFrontPorch; | |||
__in u32 hBackPorch; | |||
__in u32 vBackPorch; | |||
__in u32 pclkKHz; | |||
__in u32 bitsPerPixel; | |||
__in u32 vmode; | |||
__in u32 sync; | |||
__in u32 unk1; | |||
__in u32 reserved; | |||
}; | |||
=== NVDISP_VALIDATE_MODE2 === | |||
struct { | |||
__inout u32 unk0; | |||
__inout u32 hActive; | |||
__inout u32 vActive; | |||
__inout u32 hSyncWidth; | |||
__inout u32 vSyncWidth; | |||
__inout u32 hFrontPorch; | |||
__inout u32 vFrontPorch; | |||
__inout u32 hBackPorch; | |||
__inout u32 vBackPorch; | |||
__inout u32 pclkKHz; | |||
__inout u32 bitsPerPixel; | |||
__inout u32 vmode; | |||
__inout u32 sync; | |||
__inout u32 unk1; | |||
__inout u32 reserved; | |||
}; | |||
=== NVDISP_GET_MODE_DB2 === | |||
struct mode2 { | |||
u32 unk0; | |||
u32 hActive; | |||
u32 vActive; | |||
u32 hSyncWidth; | |||
u32 vSyncWidth; | |||
u32 hFrontPorch; | |||
u32 vFrontPorch; | |||
u32 hBackPorch; | |||
u32 vBackPorch; | |||
u32 pclkKHz; | |||
u32 bitsPerPixel; | |||
u32 vmode; | |||
u32 sync; | |||
u32 unk1; | |||
u32 reserved; | |||
}; | |||
struct { | |||
__out struct mode2 modes[201]; | |||
__out u32 num_modes; | |||
}; | |||
=== NVDISP_GET_BACKLIGHT_RANGE === | === NVDISP_GET_BACKLIGHT_RANGE === | ||
Line 757: | Line 1,003: | ||
| 0x40010501 || In || 1 || NVDCUTIL_ENABLE_CRC | | 0x40010501 || In || 1 || NVDCUTIL_ENABLE_CRC | ||
|- | |- | ||
| 0x40010502 || In || 1 || NVDCUTIL_VIRTUAL_EDID_ENABLE | | 0x40010502 || In || 1 || [[#NVDCUTIL_VIRTUAL_EDID_ENABLE]] | ||
|- | |- | ||
| 0x42040503 || In || | | 0x42040503 || In || 516 || [[#NVDCUTIL_VIRTUAL_EDID_SET_DATA]] | ||
|- | |- | ||
| 0x803C0504 || Out || 60 || NVDCUTIL_GET_MODE | | 0x803C0504 || Out || 60 || NVDCUTIL_GET_MODE | ||
Line 777: | Line 1,023: | ||
| 0x8070050B || Out || 112 || [11.0.0+] NVDCUTIL_DP_CONF_READ | | 0x8070050B || Out || 112 || [11.0.0+] NVDCUTIL_DP_CONF_READ | ||
|} | |} | ||
=== NVDCUTIL_VIRTUAL_EDID_ENABLE === | |||
struct { | |||
__in u8 enable; | |||
}; | |||
=== NVDCUTIL_VIRTUAL_EDID_SET_DATA === | |||
struct { | |||
__in u8 edid[512]; | |||
__in u32 edid_size; | |||
}; | |||
== /dev/nvsched-ctrl == | == /dev/nvsched-ctrl == | ||
Line 1,972: | Line 2,231: | ||
struct { | struct { | ||
__out u32 | __out u32 type; // Error type (0=no_error, 1=mmu_error, 2=gr_error, 3=pbdma_error, 4=timeout) | ||
}; | __out u32 info[31]; // Infor depends on the error type | ||
}; | |||
==== GR Error Code Format ==== | |||
When <code>type == 2</code> (GR Error), the returned data is formatted as follows: | |||
struct { | |||
__out u32 type; // 2=gr_error | |||
__out u32 intr_value; // Interrupt bits | |||
__out u32 addr; // Register address (in bytes) | |||
__out u32 data_hi; // Data high 32 bits | |||
__out u32 data_lo; // Data low 32 bits | |||
__out u32 class_num; // GPU class number (e.g., 0xb197 for MAXWELL_B) | |||
}; | |||
{| class="wikitable" | |||
|+ GR Error Interrupt Bits | |||
|- | |||
! Bit(s) | |||
! Description | |||
|- | |||
| 0 | |||
| GR_INTR_NOTIFY | |||
|- | |||
| 1 | |||
| GR_INTR_SEMAPHORE | |||
|- | |||
| 2 | |||
| unknown | |||
|- | |||
| 3 | |||
| unknown | |||
|- | |||
| 4 | |||
| GR_INTR_ILLEGAL_METHOD | |||
|- | |||
| 5 | |||
| GR_INTR_ILLEGAL_CLASS | |||
|- | |||
| 6 | |||
| GR_INTR_ILLEGAL_NOTIFY | |||
|- | |||
| 7 | |||
| unknown | |||
|- | |||
| 8 | |||
| GR_INTR_FIRMWARE_METHOD | |||
|- | |||
| 9–18 | |||
| unknown | |||
|- | |||
| 19 | |||
| GR_INTR_FECS_ERROR | |||
|- | |||
| 20 | |||
| GR_INTR_CLASS_ERROR | |||
|- | |||
| 21 | |||
| GR_INTR_EXCEPTION | |||
|- | |||
| 22–31 | |||
| unknown | |||
|} | |||
=== NVGPU_IOCTL_CHANNEL_GET_ERROR_NOTIFICATION === | === NVGPU_IOCTL_CHANNEL_GET_ERROR_NOTIFICATION === |