mirror of
git://nv-tegra.nvidia.com/tegra/kernel-src/nv-kernel-display-driver.git
synced 2025-12-25 03:01:33 +03:00
Compare commits
2 Commits
rel-36_eng
...
rel-36
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bdcd6ec921 | ||
|
|
cfdc1a1644 |
@@ -1,7 +1,7 @@
|
||||
# NVIDIA Linux Open GPU Kernel Module Source
|
||||
|
||||
This is the source release of the NVIDIA Linux open GPU kernel modules,
|
||||
version 540.4.0.
|
||||
version 540.5.0.
|
||||
|
||||
|
||||
## How to Build
|
||||
@@ -17,7 +17,7 @@ as root:
|
||||
|
||||
Note that the kernel modules built here must be used with GSP
|
||||
firmware and user-space NVIDIA GPU driver components from a corresponding
|
||||
540.4.0 driver release. This can be achieved by installing
|
||||
540.5.0 driver release. This can be achieved by installing
|
||||
the NVIDIA GPU driver from the .run file using the `--no-kernel-modules`
|
||||
option. E.g.,
|
||||
|
||||
@@ -180,7 +180,7 @@ software applications.
|
||||
## Compatible GPUs
|
||||
|
||||
The open-gpu-kernel-modules can be used on any Turing or later GPU
|
||||
(see the table below). However, in the 540.4.0 release,
|
||||
(see the table below). However, in the 540.5.0 release,
|
||||
GeForce and Workstation support is still considered alpha-quality.
|
||||
|
||||
To enable use of the open kernel modules on GeForce and Workstation GPUs,
|
||||
@@ -188,7 +188,7 @@ set the "NVreg_OpenRmEnableUnsupportedGpus" nvidia.ko kernel module
|
||||
parameter to 1. For more details, see the NVIDIA GPU driver end user
|
||||
README here:
|
||||
|
||||
https://us.download.nvidia.com/XFree86/Linux-x86_64/540.4.0/README/kernel_open.html
|
||||
https://us.download.nvidia.com/XFree86/Linux-x86_64/540.5.0/README/kernel_open.html
|
||||
|
||||
In the below table, if three IDs are listed, the first is the PCI Device
|
||||
ID, the second is the PCI Subsystem Vendor ID, and the third is the PCI
|
||||
|
||||
@@ -5,12 +5,12 @@ d13779dbbab1c776db15f462cd46b29f2c0f8c7c - Makefile
|
||||
5728867ce2e96b63b29367be6aa1c0e47bcafc8f - SECURITY.md
|
||||
6b73bf6a534ddc0f64e8ba88739381c3b7fb4b5c - nv-compiler.sh
|
||||
ac7f91dfb6c5c469d2d8196c6baebe46ede5aee0 - CHANGELOG.md
|
||||
fe4e34f7f517ffe6976a020c22fefcf24ec0c211 - README.md
|
||||
fb30136834a37c3b273df8352db5bcc1f46b3d7d - README.md
|
||||
ec5f1eb408e0b650158e0310fb1ddd8e9b323a6f - CONTRIBUTING.md
|
||||
af3ee56442f16029cb9b13537477c384226b22fc - CODE_OF_CONDUCT.md
|
||||
41123f5c3015f9a14cf35b7c75c5b720f5fbed07 - kernel-open/Kbuild
|
||||
e3d628e13e13e8f4b886c88d8b22adfbf3217a54 - kernel-open/Kbuild
|
||||
4f4410c3c8db46e5a98d7a35f7d909a49de6cb43 - kernel-open/Makefile
|
||||
ee6138c2662d06babf6cf3239383bbec0cb61325 - kernel-open/conftest.sh
|
||||
3f1d791899ab2db1d55cc73ec56fc11c9bef67cb - kernel-open/conftest.sh
|
||||
0b1508742a1c5a04b6c3a4be1b48b506f4180848 - kernel-open/dkms.conf
|
||||
19a5da412ce1557b721b8550a4a80196f6162ba6 - kernel-open/common/inc/os_dsi_panel_props.h
|
||||
4750735d6f3b334499c81d499a06a654a052713d - kernel-open/common/inc/nv-caps.h
|
||||
@@ -173,7 +173,7 @@ eb98761cdc99141ad937966e5533c57189db376a - kernel-open/nvidia-drm/nvidia-drm-fen
|
||||
2529ef49fee3a01717aaabea530d94017d5c31cc - kernel-open/nvidia-drm/nvidia-drm-helper.h
|
||||
2a48c9643c836a1b0a0c133afa9439b4f5ce0feb - kernel-open/nvidia-drm/nvidia-drm-os-interface.h
|
||||
b83e4c3ba825a75233eaedb0ac33feed74a53ab7 - kernel-open/nvidia-drm/nvidia-drm-gem-user-memory.c
|
||||
de9bb1ee16ac6e3718844280f67550ccfd18ec22 - kernel-open/nvidia-drm/nvidia-drm-drv.c
|
||||
21c629706f242599f6a81380155dd00bb0d994e7 - kernel-open/nvidia-drm/nvidia-drm-drv.c
|
||||
203295380efca7e422746805437b05ce22505424 - kernel-open/nvidia-drm/nvidia-drm-gem.c
|
||||
cd987993109f7c020e296bf397905190a866d4ff - kernel-open/nvidia-drm/nvidia-drm-encoder.c
|
||||
8bedc7374d7a43250e49fb09139c511b489d45e3 - kernel-open/nvidia-drm/nv-pci-table.h
|
||||
@@ -181,16 +181,16 @@ cd987993109f7c020e296bf397905190a866d4ff - kernel-open/nvidia-drm/nvidia-drm-enc
|
||||
ec550cba2bebff2c5054b6e12fc43d81e37ade48 - kernel-open/nvidia-drm/nvidia-dma-fence-helper.h
|
||||
e362c64aa67b47becdbf5c8ba2a245e135adeedf - kernel-open/nvidia-drm/nvidia-drm-gem-dma-buf.c
|
||||
492a1b0b02dcd2d60f05ac670daeeddcaa4b0da5 - kernel-open/nvidia-drm/nvidia-dma-resv-helper.h
|
||||
dbfbce802ea046ea776603eedf9aab4155e8c6da - kernel-open/nvidia-drm/nvidia-drm-connector.c
|
||||
05d56aa5e69b2332dba36ed15703865533976681 - kernel-open/nvidia-drm/nvidia-drm-connector.c
|
||||
97b6c56b1407de976898e0a8b5a8f38a5211f8bb - kernel-open/nvidia-drm/nvidia-drm-format.h
|
||||
62b38738a83f67d0ea336cfadff1db5a5eaa8521 - kernel-open/nvidia-drm/nvidia-drm-priv.h
|
||||
deb00fa4d1de972d93d8e72355d81ba87044c86f - kernel-open/nvidia-drm/nvidia-drm-fence.c
|
||||
8a8b431f45bd0fe477759c1527d792cb9a1fa3f5 - kernel-open/nvidia-drm/nvidia-drm-gem.h
|
||||
1b7c0e4bc236101b930a9a95a622c0031c56978d - kernel-open/nvidia-drm/nvidia-drm-modeset.h
|
||||
74530bdbcb5a40ba47687c9d2fcdd7baaf3e3863 - kernel-open/nvidia-drm/nvidia-drm.Kbuild
|
||||
fa3bcbf2d4b25dc6e2337bcd9d04b0c1413be3da - kernel-open/nvidia-drm/nvidia-drm.Kbuild
|
||||
40b5613d1fbbe6b74bff67a5d07974ad321f75f0 - kernel-open/nvidia-drm/nvidia-drm-utils.h
|
||||
8da06bd922850e840c94ed380e3b92c63aecbf70 - kernel-open/nvidia-drm/nvidia-drm-fb.c
|
||||
e8df2e0d44b9c0b938248112003cb534eca239fd - kernel-open/nvidia-drm/nvidia-drm-crtc.c
|
||||
71560a9be3b3c2cd1c85f5d781524aadb6869eed - kernel-open/nvidia-drm/nvidia-drm-crtc.c
|
||||
372ea4c8e7bbc0bdeb899e6f163c8f20c663ad22 - kernel-open/nvidia-modeset/nvidia-modeset-os-interface.h
|
||||
e02497b93f0f13d8e1624ff2effe417ec63bc2b0 - kernel-open/nvidia-modeset/nvidia-modeset-linux.c
|
||||
0a0650835e8835d32418891a2fd25031f5d8770e - kernel-open/nvidia-modeset/nvkms.h
|
||||
@@ -492,7 +492,7 @@ e670ffdd499c13e5025aceae5541426ab2ab0925 - src/common/inc/gps.h
|
||||
5257e84f2048b01258c78cec70987f158f6b0c44 - src/common/inc/nvlog_inc.h
|
||||
b58ed1b4372a5c84d5f3755b7090b196179a2729 - src/common/inc/nv_speculation_barrier.h
|
||||
d877f4b99ae7d18cc5c78b85e89c0a7e3f3e8418 - src/common/inc/nvPNPVendorIds.h
|
||||
cd9253d1a83b171ca5aa514bc24ac87f2f9af961 - src/common/inc/nvUnixVersion.h
|
||||
6e212afa22e8348eedf1b15bd4bd7f7fd698c3b2 - src/common/inc/nvUnixVersion.h
|
||||
1fc95a17ddb619570063f6707d6a395684bfa884 - src/common/inc/displayport/dpcd20.h
|
||||
90998aac8685a403fdec9ff875f7436373d76f71 - src/common/inc/displayport/dpcd14.h
|
||||
669268ea1660e9e5b876f90da003599ba01356bb - src/common/inc/displayport/displayport.h
|
||||
@@ -538,7 +538,7 @@ cd9d3f57a9212166eba32b25cebc866a8d5bc026 - src/common/displayport/inc/dp_qse.h
|
||||
72711e7f688ee25510fca0e7eef6a4a99bb0aff3 - src/common/displayport/inc/dp_linkconfig.h
|
||||
e02e5621eaea52a2266a86dcd587f4714680caf4 - src/common/displayport/inc/dp_linkedlist.h
|
||||
2067e2ca3b86014c3e6dfc51d6574d87ae12d907 - src/common/displayport/inc/dp_timer.h
|
||||
c953ceae3005d389fb0873d8c3cc3783c7b2d885 - src/common/displayport/inc/dp_connectorimpl.h
|
||||
5a0d4df6d025eb24ae8af408416378d1e9e2f17a - src/common/displayport/inc/dp_connectorimpl.h
|
||||
4a445c98d9541a53f77af2ffa154501793c01fe4 - src/common/displayport/inc/dp_connector.h
|
||||
660ba146cf1242947eac3e2ded50ef4387ca8f35 - src/common/displayport/inc/dp_messagecodings.h
|
||||
df11366a5bcfb641025f12cddf9b5e8c2ed008de - src/common/displayport/inc/dp_watermark.h
|
||||
@@ -550,7 +550,7 @@ d199166ebfe00628b9c4894a97c3bb9f09d355e5 - src/common/displayport/src/dp_message
|
||||
aa2e56f6c66bf91c2b4a6030de2d29480f69710e - src/common/displayport/src/dp_wardatabase.cpp
|
||||
de264916d0e3e873a4c624f237ea228469d0a980 - src/common/displayport/src/dp_watermark.cpp
|
||||
e874ffeaeb6deec57605bf91eaa2af116a9762bd - src/common/displayport/src/dp_bitstream.cpp
|
||||
f3d79cc73199a2250ac8219f0a696512f4e67d63 - src/common/displayport/src/dp_evoadapter.cpp
|
||||
6b2384144feb749a974ca794ff74031e13ed6610 - src/common/displayport/src/dp_evoadapter.cpp
|
||||
56ee9318a7b51a04baa1d25d7d9a798c733dc1bc - src/common/displayport/src/dp_vrr.cpp
|
||||
d991afdb694634e9df756184b5951739fc3fd0ab - src/common/displayport/src/dp_auxretry.cpp
|
||||
554e6b7dadbb68ac0f3d2e368ca3fd90832ea254 - src/common/displayport/src/dp_discovery.cpp
|
||||
@@ -558,12 +558,12 @@ d991afdb694634e9df756184b5951739fc3fd0ab - src/common/displayport/src/dp_auxretr
|
||||
719d2ddbfb8555636496cb5dd74ee6776059db92 - src/common/displayport/src/dp_timer.cpp
|
||||
1923346b4f1209a8ceaf30d240f1b05717149be4 - src/common/displayport/src/dp_deviceimpl.cpp
|
||||
98cec6b663cf630c789e9823675cbb4948e1ba5e - src/common/displayport/src/dp_edid.cpp
|
||||
6a27fd2443690afb573116c13d3f976348dee298 - src/common/displayport/src/dp_groupimpl.cpp
|
||||
9fc1b9ae59805ea96879de1960149398bfe8dccd - src/common/displayport/src/dp_groupimpl.cpp
|
||||
e10ed809c1ddb7e67f0d7caf88802f291c8567ef - src/common/displayport/src/dp_qse.cpp
|
||||
4803cde0fffcf89fed46d6deaeba5c96c669a908 - src/common/displayport/src/dp_messageheader.cpp
|
||||
9f31213ab8037d7bb18c96a67d2630d61546544a - src/common/displayport/src/dp_mst_edid.cpp
|
||||
f56f92e32710b0342805b785d34ba1a9f2a54ed3 - src/common/displayport/src/dp_guid.cpp
|
||||
b487eed6e639a1aa485b06255beef61e112f24b3 - src/common/displayport/src/dp_connectorimpl.cpp
|
||||
656cf635f5268df416d746378d25e773bde24758 - src/common/displayport/src/dp_connectorimpl.cpp
|
||||
f83b3c17e9f26651f12c8835a682abdd66aed3a2 - src/common/displayport/src/dp_splitter.cpp
|
||||
1543bbaba8f3e149239cf44be3c0d080c624d5ba - src/common/displayport/src/dp_buffer.cpp
|
||||
fa4f4869d3d63c0180f30ae3736600a6627284c6 - src/common/displayport/src/dp_merger.cpp
|
||||
@@ -1232,9 +1232,9 @@ ce42ceac4c4cf9d249d66ab57ae2f435cd9623fc - src/nvidia-modeset/kapi/src/nvkms-kap
|
||||
5f559582336ab0e252f25039d43b114a6630758c - src/nvidia-modeset/src/nvkms-evo.c
|
||||
7262999494048226f8a94492899609fbecd729d8 - src/nvidia-modeset/src/nvkms-hw-flip.c
|
||||
6a35b80a6995777dc9500cac9659e6f0f0c12d23 - src/nvidia-modeset/src/nvkms-cursor3.c
|
||||
250313f03ab04c90a5018c357f9a2d3ebbcd8961 - src/nvidia-modeset/src/nvkms-rm.c
|
||||
7326c2e84f81abbe6d8df0ce2632a83682fbd5dc - src/nvidia-modeset/src/nvkms-rm.c
|
||||
30ad7839985dea46e6b6d43499210a3056da51ad - src/nvidia-modeset/src/nvkms-utils-flip.c
|
||||
6a84fae64ca00bc8b5d9ae75c291140f23d8fd4d - src/nvidia-modeset/src/nvkms-evo3.c
|
||||
2ff0dded5029b1284268ee9358f576828d073285 - src/nvidia-modeset/src/nvkms-evo3.c
|
||||
0343d2f40978b0780b0dae54b22f366f723ff08e - src/nvidia-modeset/src/nvkms-flip.c
|
||||
3e723edf2a0a2f4f93032feb4aeaaf7fd0acddfa - src/nvidia-modeset/src/g_nvkms-evo-states.c
|
||||
761c8540278a1ffb9fe4aa0adb1b4ee95524787a - src/nvidia-modeset/src/nvkms-hal.c
|
||||
@@ -1244,7 +1244,7 @@ bd2e4a6102432d4ac1faf92b5d3db29e9e3cfafc - src/nvidia-modeset/src/nvkms-utils.c
|
||||
9a8746ee4a4e772b8ac13f06dc0de8a250fdb4c7 - src/nvidia-modeset/src/nvkms-ctxdma.c
|
||||
e7a717712eb5f710df2c735013f27b0c03ae276c - src/nvidia-modeset/src/nvkms-hdmi.c
|
||||
2fa9d9b3cbeeb9406f2dd51a4f4a5d53844a31c9 - src/nvidia-modeset/src/nvkms-dpy.c
|
||||
97e0db0542c5e86b31d2238e09a4e5a695ccbebc - src/nvidia-modeset/src/nvkms.c
|
||||
f92ae2b0ba77cf14cbe966a0c66fe6ca02a7e73e - src/nvidia-modeset/src/nvkms.c
|
||||
dff88ceaf95239b51b60af915f92e389bb844425 - src/nvidia-modeset/src/nvkms-cursor.c
|
||||
2b304663f2a005b5ccdecfafb69a3407f2feeb18 - src/nvidia-modeset/src/nvkms-evo2.c
|
||||
94e9c19b7b6a5e56fd46b0885e7dd6fe698fe2df - src/nvidia-modeset/src/nvkms-prealloc.c
|
||||
@@ -1269,7 +1269,7 @@ f96cd982b4c05351faa31d04ac30d6fa7c866bcb - src/nvidia-modeset/src/dp/nvdp-timer.
|
||||
a90b2c295271631b4c3abe6afb8dfd92d6b429c8 - src/nvidia-modeset/src/dp/nvdp-connector.cpp
|
||||
535ce9f743903eb83a341eef1be812f4e4b50887 - src/nvidia-modeset/src/dp/nvdp-evo-interface.cpp
|
||||
c19775aebdaaaee3500378d47af6ff0b8eb486b8 - src/nvidia-modeset/src/dp/nvdp-device.cpp
|
||||
a2a4b7063fa903cc434163ebceb7c8d48f703c33 - src/nvidia-modeset/src/dp/nvdp-connector-event-sink.cpp
|
||||
98046832ecc2cad21e727fecf2b9626dd212d95c - src/nvidia-modeset/src/dp/nvdp-connector-event-sink.cpp
|
||||
51af3c1ee6b74ee0c9add3fb7d50cbc502980789 - src/nvidia-modeset/src/dp/nvdp-evo-interface.hpp
|
||||
110ac212ee8832c3fa3c4f45d6d33eed0301e992 - src/nvidia-modeset/src/dp/nvdp-host.cpp
|
||||
69fed95ab3954dd5cb26590d02cd8ba09cdff1ac - src/nvidia-modeset/src/dp/nvdp-connector-event-sink.hpp
|
||||
|
||||
@@ -72,7 +72,7 @@ EXTRA_CFLAGS += -I$(src)/common/inc
|
||||
EXTRA_CFLAGS += -I$(src)
|
||||
EXTRA_CFLAGS += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error -Wno-format-extra-args
|
||||
EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM
|
||||
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"540.4.0\"
|
||||
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"540.5.0\"
|
||||
|
||||
ifneq ($(SYSSRCHOST1X),)
|
||||
EXTRA_CFLAGS += -I$(SYSSRCHOST1X)
|
||||
@@ -212,6 +212,8 @@ $(obj)/conftest/patches.h: $(NV_CONFTEST_SCRIPT)
|
||||
# corresponding #define will be generated in conftest/headers.h.
|
||||
NV_HEADER_PRESENCE_TESTS = \
|
||||
asm/system.h \
|
||||
drm/display/drm_hdcp.h \
|
||||
drm/display/drm_hdcp_helper.h \
|
||||
drm/drmP.h \
|
||||
drm/drm_aperture.h \
|
||||
drm/drm_auth.h \
|
||||
|
||||
@@ -1390,6 +1390,23 @@ compile_test() {
|
||||
compile_check_conftest "$CODE" "NV_DRM_DEV_UNREF_PRESENT" "" "functions"
|
||||
;;
|
||||
|
||||
drm_sysfs_connector_property_event)
|
||||
#
|
||||
# Determine if drm_sysfs_connector_property_event() is present.
|
||||
#
|
||||
# Commit 0cf8d292ba5e ("drm/sysfs: rename drm_sysfs_connector_status_event()")
|
||||
# renamed drm_sysfs_connector_status_event() to
|
||||
# drm_sysfs_connector_property_event() in Linux v6.5.
|
||||
#
|
||||
CODE="
|
||||
#include <drm/drm_sysfs.h>
|
||||
void conftest_drm_sysfs_connector_property_event(void) {
|
||||
drm_sysfs_connector_property_event();
|
||||
}"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_DRM_SYSFS_CONNECTOR_PROPERTY_EVENT_PRESENT" "" "functions"
|
||||
;;
|
||||
|
||||
pde_data)
|
||||
#
|
||||
# Determine if the pde_data() function is present.
|
||||
|
||||
@@ -45,7 +45,14 @@
|
||||
#include <drm/drm_atomic_helper.h>
|
||||
#include <drm/drm_edid.h>
|
||||
|
||||
#if defined(NV_DRM_DISPLAY_DRM_HDCP_HELPER_H_PRESENT)
|
||||
#include <drm/display/drm_hdcp_helper.h>
|
||||
#elif defined(NV_DRM_DISPLAY_DRM_HDCP_H_PRESENT)
|
||||
#include <drm/display/drm_hdcp.h>
|
||||
#else
|
||||
#include <drm/drm_hdcp.h>
|
||||
#endif
|
||||
|
||||
#include <drm/drm_sysfs.h>
|
||||
|
||||
static void nv_drm_connector_destroy(struct drm_connector *connector)
|
||||
@@ -786,8 +793,13 @@ int nv_drm_connector_update_topology_property(struct nv_drm_connector *nv_connec
|
||||
&connector->base,
|
||||
nv_dev->nv_hdcp_topology_property);
|
||||
// Generate uevent on cp property when topology is updated
|
||||
#if defined(NV_DRM_SYSFS_CONNECTOR_PROPERTY_EVENT_PRESENT)
|
||||
drm_sysfs_connector_property_event(connector,
|
||||
dev->mode_config.content_protection_property);
|
||||
#else
|
||||
drm_sysfs_connector_status_event(connector,
|
||||
dev->mode_config.content_protection_property);
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -625,7 +625,7 @@ static int nv_drm_plane_atomic_check(struct drm_plane *plane,
|
||||
}
|
||||
|
||||
#if defined(NV_DRM_COLOR_MGMT_AVAILABLE)
|
||||
if (crtc_state->color_mgmt_changed) {
|
||||
if (crtc_state->color_mgmt_changed || ((plane->state->crtc != plane_state->crtc))) {
|
||||
/*
|
||||
* According to the comment in the Linux kernel's
|
||||
* drivers/gpu/drm/drm_color_mgmt.c, if this property is NULL,
|
||||
|
||||
@@ -1780,6 +1780,10 @@ static const struct file_operations nv_drm_fops = {
|
||||
.read = drm_read,
|
||||
|
||||
.llseek = noop_llseek,
|
||||
|
||||
#if defined(FOP_UNSIGNED_OFFSET)
|
||||
.fop_flags = FOP_UNSIGNED_OFFSET,
|
||||
#endif
|
||||
};
|
||||
|
||||
static const struct drm_ioctl_desc nv_drm_ioctls[] = {
|
||||
|
||||
@@ -89,6 +89,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_aperture_remove_conflicting_pci_frameb
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fbdev_generic_setup
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_helper_crtc_enable_color_mgmt
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_crtc_enable_color_mgmt
|
||||
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_sysfs_connector_property_event
|
||||
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_bus_present
|
||||
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_bus_has_bus_type
|
||||
|
||||
@@ -1 +1 @@
|
||||
rel-36_eng_2025-02-28
|
||||
rel-36_eng_2025-12-11
|
||||
|
||||
@@ -565,6 +565,7 @@ namespace DisplayPort
|
||||
void freeTimeslice(GroupImpl * targetGroup);
|
||||
void flushTimeslotsToHardware();
|
||||
void hdcpRenegotiate(NvU64 cN, NvU64 cKsv);
|
||||
void hdcpActiveGroupsSetECF();
|
||||
bool getHDCPAbortCodesDP12(NvU32 &hdcpAbortCodesDP12);
|
||||
bool getOuiSink(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision);
|
||||
bool hdcpValidateKsv(const NvU8 *ksv, NvU32 Size);
|
||||
|
||||
@@ -2141,6 +2141,24 @@ void ConnectorImpl::releaseLinkHandsOff()
|
||||
assessLink();
|
||||
}
|
||||
|
||||
void ConnectorImpl::hdcpActiveGroupsSetECF()
|
||||
{
|
||||
NvU64 ecf = 0x0;
|
||||
// Set the ECF for the groups which are already active.
|
||||
for (ListElement *i = this->activeGroups.begin(); i != this->activeGroups.end(); i = i->next)
|
||||
{
|
||||
GroupImpl * group = (GroupImpl *)i;
|
||||
if (group->hdcpEnabled)
|
||||
{
|
||||
NvU64 countOnes = (((NvU64)1) << group->timeslot.count) - 1;
|
||||
NvU64 mask = countOnes << group->timeslot.begin;
|
||||
ecf |= mask;
|
||||
}
|
||||
}
|
||||
// Restore the ECF and trigger ACT
|
||||
main->configureAndTriggerECF(ecf);
|
||||
}
|
||||
|
||||
//
|
||||
// Timer callback for event management
|
||||
// Uses: fireEvents()
|
||||
@@ -2160,7 +2178,10 @@ void ConnectorImpl::expired(const void * tag)
|
||||
while (!(hdcpEnableTransitionGroups.isEmpty()))
|
||||
{
|
||||
GroupImpl* curStrmEncrEnblGroup = hdcpEnableTransitionGroups.pop();
|
||||
curStrmEncrEnblGroup->hdcpSetEncrypted(true);
|
||||
if (!(curStrmEncrEnblGroup->hdcpEnabled))
|
||||
{
|
||||
curStrmEncrEnblGroup->hdcpSetEncrypted(true, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2169,10 +2190,12 @@ void ConnectorImpl::expired(const void * tag)
|
||||
if (authRetries < HDCP_AUTHENTICATION_RETRIES)
|
||||
{
|
||||
HDCPState hdcpState = {0};
|
||||
// Get hdcp state which will be !HDCP_State_Authenticated for the first entry and
|
||||
// subsequently it will reflect the result of last fired configureHDCPRenegotiate
|
||||
main->configureHDCPGetHDCPState(hdcpState);
|
||||
|
||||
unsigned authDelay = (hdcpState.HDCP_State_22_Capable ?
|
||||
HDCP22_AUTHENTICATION_COOLDOWN : HDCP_AUTHENTICATION_COOLDOWN);
|
||||
HDCP22_AUTHENTICATION_COOLDOWN * 2 : HDCP_AUTHENTICATION_COOLDOWN);
|
||||
|
||||
// Don't fire any reauthentication if we're not done with the modeset
|
||||
if (!intransitionGroups.isEmpty())
|
||||
@@ -2190,26 +2213,23 @@ void ConnectorImpl::expired(const void * tag)
|
||||
|
||||
authRetries++;
|
||||
isHDCPAuthTriggered = true;
|
||||
main->configureHDCPRenegotiate();
|
||||
main->configureHDCPGetHDCPState(hdcpState);
|
||||
|
||||
// Skip configureHDCPRenegotiate if HDCP is already enabled from previous
|
||||
// previous call to configureHDCPRenegotiate
|
||||
if (!hdcpState.HDCP_State_Authenticated)
|
||||
{
|
||||
main->configureHDCPRenegotiate();
|
||||
// Get fresh hdcp state after Renegotiate as HDCP1X can be enabled
|
||||
// synchronously by configureHDCPRenegotiate (HDCP2X takes time)
|
||||
main->configureHDCPGetHDCPState(hdcpState);
|
||||
}
|
||||
|
||||
if (hdcpState.HDCP_State_Authenticated)
|
||||
{
|
||||
isHDCPAuthOn = true;
|
||||
authRetries = 0;
|
||||
// Set the ECF for the groups which are already active.
|
||||
for (ListElement *i = this->activeGroups.begin(); i != this->activeGroups.end(); i = i->next)
|
||||
{
|
||||
GroupImpl * group = (GroupImpl *)i;
|
||||
if (group->hdcpEnabled)
|
||||
{
|
||||
NvU64 countOnes = (((NvU64)1) << group->timeslot.count) - 1;
|
||||
NvU64 mask = countOnes << group->timeslot.begin;
|
||||
ecf |= mask;
|
||||
}
|
||||
}
|
||||
// Restore the ECF and trigger ACT
|
||||
main->configureAndTriggerECF(ecf);
|
||||
hdcpActiveGroupsSetECF();
|
||||
// Enable HDCP for Group
|
||||
if (!(bHdcpStrmEncrEnblOnlyOnDemand))
|
||||
{
|
||||
@@ -3260,6 +3280,12 @@ void ConnectorImpl::notifyAttachEnd(bool modesetCancelled)
|
||||
}
|
||||
}
|
||||
|
||||
{ // Set stream type and bEnforceType0Hdcp1xDS upfront before enabling hdcp with hub
|
||||
bool bNeedReNegotiate = false;
|
||||
main->setStreamType(currentModesetDeviceGroup->streamIndex,
|
||||
NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_1, &bNeedReNegotiate);
|
||||
}
|
||||
|
||||
//
|
||||
// RM has the requirement of Head being ARMed to do authentication.
|
||||
// Postpone the authentication until the NAE to do the authentication for DP1.2 as solution.
|
||||
@@ -3486,6 +3512,27 @@ void ConnectorImpl::notifyDetachEnd(bool bKeepOdAlive)
|
||||
if (this->policyModesetOrderMitigation && this->modesetOrderMitigation)
|
||||
this->modesetOrderMitigation = false;
|
||||
}
|
||||
else // !activeGroups.isEmpty()
|
||||
{
|
||||
if ((this->linkUseMultistream()) && (hdcpState.HDCP_State_Authenticated))
|
||||
{
|
||||
if (hdcpState.HDCP_State_22_Capable)
|
||||
{
|
||||
main->configureAndTriggerECF(0x0);
|
||||
authRetries = 0;
|
||||
isHDCPAuthOn = false;
|
||||
// numOfStream changed, AKE_Init needed to change dpTypeMask
|
||||
main->configureHDCPRenegotiate();
|
||||
// ReAuth, so schedule callback to check state later.
|
||||
timer->queueCallback(this, &tagHDCPReauthentication, HDCP_AUTHENTICATION_COOLDOWN);
|
||||
}
|
||||
else
|
||||
{
|
||||
hdcpActiveGroupsSetECF();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fireEvents();
|
||||
}
|
||||
|
||||
|
||||
@@ -546,7 +546,7 @@ bool EvoMainLink::setStreamType(unsigned streamIndex, NvU8 streamType, bool * bN
|
||||
// 1. Will it stop engaging HWDRM with this fix ?
|
||||
// 2. VPR blanking gets applied and blanks repeater display as well
|
||||
//
|
||||
paramsHdcpCtrl.bEnforceType0Hdcp1xDS = (streamType == NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_1);
|
||||
paramsHdcpCtrl.bEnforceType0Hdcp1xDS = NV_TRUE;
|
||||
|
||||
paramsHdcpCtrl.cmd |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _CMD,
|
||||
_SET_TYPE);
|
||||
|
||||
@@ -491,6 +491,16 @@ bool GroupImpl::hdcpSetEncrypted(bool encrypted, NvU8 streamType, NvBool bForce
|
||||
if (this->headIndex == group->headIndex)
|
||||
{
|
||||
group->hdcpEnabled = false;
|
||||
{ // Inform ConnectorEventSink that we have disabled HDCP on this Device
|
||||
Device * d = 0;
|
||||
for (d = ((Group*)this)->enumDevices(0); d != 0; d = ((Group*)this)->enumDevices(d))
|
||||
{
|
||||
if (((DeviceImpl*)d)->isHDCPCap == True)
|
||||
{
|
||||
parent->sink->notifyHDCPCapDone(d, False);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -629,6 +639,16 @@ void GroupImpl::hdcpMSTQSEandSetECF()
|
||||
{
|
||||
DP_ASSERT(group->hdcpEnabled == false);
|
||||
group->hdcpEnabled = true;
|
||||
{ // Inform ConnectorEventSink that we have enabled HDCP on this Device
|
||||
Device * d = 0;
|
||||
for (d = ((Group*)this)->enumDevices(0); d != 0; d = ((Group*)this)->enumDevices(d))
|
||||
{
|
||||
if (((DeviceImpl*)d)->isHDCPCap == True)
|
||||
{
|
||||
parent->sink->notifyHDCPCapDone(d, True);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) || defined(NV_VMWARE) || defined(NV_QNX) || defined(NV_INTEGRITY) || \
|
||||
(defined(RMCFG_FEATURE_PLATFORM_GSP) && RMCFG_FEATURE_PLATFORM_GSP == 1)
|
||||
|
||||
#define NV_VERSION_STRING "540.4.0"
|
||||
#define NV_VERSION_STRING "540.5.0"
|
||||
|
||||
#else
|
||||
|
||||
|
||||
@@ -552,6 +552,19 @@ void ConnectorEventSink::notifyCableOkStateChange(DisplayPort::Device *dev,
|
||||
void ConnectorEventSink::notifyHDCPCapDone(DisplayPort::Device *dev,
|
||||
bool hdcpCap)
|
||||
{
|
||||
NVDpyEvoPtr pDpyEvo = NULL;
|
||||
pDpyEvo = FindDpyByDevice(pConnectorEvo, dev);
|
||||
if (pDpyEvo)
|
||||
{
|
||||
if (hdcpCap)
|
||||
{
|
||||
nvSendDpyEventEvo(pDpyEvo, NVKMS_EVENT_TYPE_DPY_CP_CHANGED);
|
||||
}
|
||||
else
|
||||
{
|
||||
nvSendDpyClearEventEvo(pDpyEvo, NVKMS_EVENT_TYPE_DPY_CP_CHANGED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ConnectorEventSink::notifyMCCSEvent(DisplayPort::Device *dev)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2010-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2010-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -1336,7 +1336,8 @@ static void ConfigureCsc1C5(NVDevEvoPtr pDevEvo,
|
||||
matrix = LMSToRec2020RGB;
|
||||
} else if (pHeadState->colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT601) {
|
||||
matrix = LMSToRec601RGB;
|
||||
} else if (pHeadState->colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT709) {
|
||||
} else {
|
||||
// For unsupported or default output color spaces also , use 709 matrix
|
||||
matrix = LMSToRec709RGB;
|
||||
}
|
||||
|
||||
@@ -1486,9 +1487,15 @@ static const NvU32* EvoGetFMTMatrixC5(
|
||||
} else {
|
||||
retValue = FMTMatrix[FMT_COEFF_TYPE_REC601_YUV_12BPC_LTD_TO_RGB_16BPC_FULL];
|
||||
}
|
||||
} else {
|
||||
// Unsupported bit depth, fail silently by defaulting to identity.
|
||||
retValue = FMTMatrix[FMT_COEFF_TYPE_IDENTITY];
|
||||
}
|
||||
break;
|
||||
case NVKMS_INPUT_COLORSPACE_BT709:
|
||||
case NVKMS_INPUT_COLORSPACE_NONE:
|
||||
default:
|
||||
// Unsupported or if input color space is not set, use 709 FMT matrix.
|
||||
if (pFormatInfo->yuv.depthPerComponent == 8) {
|
||||
if (specifiedFull) {
|
||||
retValue = FMTMatrix[FMT_COEFF_TYPE_REC709_YUV_8BPC_FULL_TO_RGB_16BPC_FULL];
|
||||
@@ -1507,6 +1514,9 @@ static const NvU32* EvoGetFMTMatrixC5(
|
||||
} else {
|
||||
retValue = FMTMatrix[FMT_COEFF_TYPE_REC709_YUV_12BPC_LTD_TO_RGB_16BPC_FULL];
|
||||
}
|
||||
} else {
|
||||
// Unsupported bit depth, fail silently by defaulting to identity.
|
||||
retValue = FMTMatrix[FMT_COEFF_TYPE_IDENTITY];
|
||||
}
|
||||
break;
|
||||
case NVKMS_INPUT_COLORSPACE_BT2100_PQ:
|
||||
@@ -1528,11 +1538,11 @@ static const NvU32* EvoGetFMTMatrixC5(
|
||||
} else {
|
||||
retValue = FMTMatrix[FMT_COEFF_TYPE_REC2020_YUV_12BPC_LTD_TO_RGB_16BPC_FULL];
|
||||
}
|
||||
} else {
|
||||
// Unsupported bit depth, fail silently by defaulting to identity.
|
||||
retValue = FMTMatrix[FMT_COEFF_TYPE_IDENTITY];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// Unsupported bit depth, fail silently by defaulting to identity.
|
||||
retValue = FMTMatrix[FMT_COEFF_TYPE_IDENTITY];
|
||||
}
|
||||
} else {
|
||||
// All inputs with RGB colorspace receive an identity FMT.
|
||||
|
||||
@@ -1582,7 +1582,7 @@ static void ReceiveHotplugEvent(void *arg, void *pEventDataVoid, NvU32 hEvent,
|
||||
nvHandleHotplugEventDeferredWork, /* callback */
|
||||
arg, /* argument (this is a ref_ptr to a pDispEvo) */
|
||||
0, /* dataU32 */
|
||||
0);
|
||||
100000 /*sleep 100 ms */);
|
||||
}
|
||||
|
||||
static void ReceiveDPIRQEvent(void *arg, void *pEventDataVoid, NvU32 hEvent,
|
||||
|
||||
@@ -2649,7 +2649,7 @@ static NvBool RegisterSurface(struct NvKmsPerOpen *pOpen,
|
||||
|
||||
nvEvoRegisterSurface(pOpenDev->pDevEvo, pOpenDev, pParams,
|
||||
NvHsMapPermissionsReadOnly);
|
||||
return TRUE;
|
||||
return pParams->reply.surfaceHandle != 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
NVIDIA_VERSION = 540.4.0
|
||||
NVIDIA_VERSION = 540.5.0
|
||||
|
||||
# This file.
|
||||
VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST))
|
||||
|
||||
Reference in New Issue
Block a user