Updating prebuilts and/or headers

d13779dbbab1c776db15f462cd46b29f2c0f8c7c - Makefile
7d577fdb9594ae572ff38fdda682a4796ab832ca - COPYING
5728867ce2e96b63b29367be6aa1c0e47bcafc8f - SECURITY.md
6b73bf6a534ddc0f64e8ba88739381c3b7fb4b5c - nv-compiler.sh
ac7f91dfb6c5c469d2d8196c6baebe46ede5aee0 - CHANGELOG.md
fe4e34f7f517ffe6976a020c22fefcf24ec0c211 - README.md
ec5f1eb408e0b650158e0310fb1ddd8e9b323a6f - CONTRIBUTING.md
af3ee56442f16029cb9b13537477c384226b22fc - CODE_OF_CONDUCT.md
41123f5c3015f9a14cf35b7c75c5b720f5fbed07 - kernel-open/Kbuild
4f4410c3c8db46e5a98d7a35f7d909a49de6cb43 - kernel-open/Makefile
4f39cccb3a96d6a8be929f524e48e673aaa0093f - 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
60ef64c0f15526ae2d786e5cec07f28570f0663b - kernel-open/common/inc/conftest.h
880e45b68b19fdb91ac94991f0e6d7fc3b406b1f - kernel-open/common/inc/nv-pci-types.h
03257213e55fff1c07c75c6dcf69afa920372822 - kernel-open/common/inc/nvtypes.h
c45b2faf17ca2a205c56daa11e3cb9d864be2238 - kernel-open/common/inc/nv-modeset-interface.h
e42d91cd7e6c17796fa89a172146950261f45d42 - kernel-open/common/inc/nv-lock.h
b249abc0a7d0c9889008e98cb2f8515a9d310b85 - kernel-open/common/inc/nvgputypes.h
e4a4f57abb8769d204468b2f5000c81f5ea7c92f - kernel-open/common/inc/nv-procfs.h
fc319569799d54944cd09b0e170e29d67b33072d - kernel-open/common/inc/nv.h
751abf80513898b35a6449725e27724b1e23ac50 - kernel-open/common/inc/nvmisc.h
e1144f5bd643d24f67b7577c16c687294cb50d39 - kernel-open/common/inc/rm-gpu-ops.h
3f7b20e27e6576ee1f2f0557d269697a0b8af7ec - kernel-open/common/inc/nv-firmware-registry.h
5fd1da24ae8263c43dc5dada4702564b6f0ca3d9 - kernel-open/common/inc/dce_rm_client_ipc.h
1c49c1642d44ec347f82ff0aa06d0fca6213bad2 - kernel-open/common/inc/nvimpshared.h
befb2c0bf0a31b61be5469575ce3c73a9204f4e9 - kernel-open/common/inc/nv_stdarg.h
0e70d16576584082ee4c7f3ff9944f3bd107b1c1 - kernel-open/common/inc/cpuopsys.h
d7ab0ee225361daacd280ff98848851933a10a98 - kernel-open/common/inc/nv-list-helpers.h
b02c378ac0521c380fc2403f0520949f785b1db6 - kernel-open/common/inc/nv-dmabuf.h
689d6be9302d488000e57a329373feeb14e93798 - kernel-open/common/inc/nv-procfs-utils.h
b417d06ed1845f5ed69181d8eb9de6b6a87fa973 - kernel-open/common/inc/nv-firmware.h
a69cfed9725a8ade97036a1cb795e9144be1836d - kernel-open/common/inc/nv-platform.h
b986bc6591ba17a74ad81ec4c93347564c6d5165 - kernel-open/common/inc/nvkms-format.h
fa267c903e9c449e62dbb6945906400d43417eff - kernel-open/common/inc/nvlimits.h
143051f69a53db0e7c5d2f846a9c14d666e264b4 - kernel-open/common/inc/nv-kref.h
3603c631c6cf784ec862e4e45f05939d98679002 - kernel-open/common/inc/nv-kthread-q.h
b4c5d759f035b540648117b1bff6b1701476a398 - kernel-open/common/inc/nvCpuUuid.h
a0c57e8ffbe1ae12de70e56b740737dae5394a18 - kernel-open/common/inc/nv-linux.h
4a8b7f3cc65fa530670f510796bef51cf8c4bb6b - kernel-open/common/inc/nv-register-module.h
5cf4b517c9bd8f14593c1a6450078a774a39dd08 - kernel-open/common/inc/nv-hypervisor.h
b7f5d125ca0cbd4631012894b635a58cfc9f8e06 - kernel-open/common/inc/nv-pgprot.h
4a97d807a225d792544578f8112c9a3f90cc38f6 - kernel-open/common/inc/nvstatuscodes.h
7b2e2e6ff278acddc6980b330f68e374f38e0a6c - kernel-open/common/inc/nv-timer.h
d25291d32caef187daf3589ce4976e4fa6bec70d - kernel-open/common/inc/nv-time.h
906329ae5773732896e6fe94948f7674d0b04c17 - kernel-open/common/inc/os_gpio.h
57937fb42f6fb312f7c3cf63aa399e43bad13c8c - kernel-open/common/inc/nv-proto.h
507d35d1d4c5ba94ef975f75e16c63244d6cd650 - kernel-open/common/inc/nv-ioctl.h
3665b1e35c52be6b971ab5117ce614109e110b7d - kernel-open/common/inc/nv-mm.h
4856fe869a5f3141e5d7f7d1b0a6affad94cbc31 - kernel-open/common/inc/nv-pci.h
95bf694a98ba78d5a19e66463b8adda631e6ce4c - kernel-open/common/inc/nvstatus.h
b15c5fe5d969414640a2cb374b707c230e7597e4 - kernel-open/common/inc/nv-hash.h
23e71bf8f57bc6777ee6ee419dfdd44d7a2a3c6e - kernel-open/common/inc/nvkms-kapi.h
f428218ee6f5d0289602495a1cfb287db4fb0823 - kernel-open/common/inc/nv_uvm_interface.h
1e7eec6561b04d2d21c3515987aaa116e9401c1f - kernel-open/common/inc/nv-kernel-interface-api.h
1e9c09285aabbfd1010e786f08494cba36658a0d - kernel-open/common/inc/nvkms-api-types.h
c9120c6a33932c7514608601f82ea85d2386b84f - kernel-open/common/inc/os-interface.h
ceac0fe7333f3a67b8fb63de42ab567dd905949f - kernel-open/common/inc/nv-ioctl-numa.h
c75bfc368c6ce3fc2c1a0c5062834e90d822b365 - kernel-open/common/inc/nv-memdbg.h
1d17329caf26cdf931122b3c3b7edf4932f43c38 - kernel-open/common/inc/nv-msi.h
3b12d770f8592b94a8c7774c372e80ad08c5774c - kernel-open/common/inc/nvi2c.h
e20882a9b14f2bf887e7465d3f238e5ac17bc2f5 - kernel-open/common/inc/nv_speculation_barrier.h
1d8b347e4b92c340a0e9eac77e0f63b9fb4ae977 - kernel-open/common/inc/nv-ioctl-numbers.h
891192c9aabdb45fb4a798cc24cd89d205972d3f - kernel-open/common/inc/nv_uvm_types.h
b642fb649ce2ba17f37c8aa73f61b38f99a74986 - kernel-open/common/inc/nv-retpoline.h
3a26838c4edd3525daa68ac6fc7b06842dc6fc07 - kernel-open/common/inc/nv-gpu-info.h
cda75171ca7d8bf920aab6d56ef9aadec16fd15d - kernel-open/common/inc/os/nv_memory_type.h
e0a37b715684ae0f434327e4ce1b5832caf7ea4e - kernel-open/nvidia/nv-nano-timer.c
1a98a2aaf386cd3d03b4b5513d6a511c60f71c2c - kernel-open/nvidia/nv-reg.h
363185059b03b6756b434c6ba9a2ebd79a888cf0 - kernel-open/nvidia/nv-imp.c
b8d361216db85fe897cbced2a9600507b7708c61 - kernel-open/nvidia/libspdm_hkdf_sha.c
64f1c96761f6d9e7e02ab049dd0c810196568036 - kernel-open/nvidia/nv-pat.c
946fb049ca50c9bb39897eca4b8443278043eea2 - kernel-open/nvidia/nv-vm.c
4e5a330fa40dab218821976ac1b530c649d48994 - kernel-open/nvidia/libspdm_ecc.c
94c406f36836c3396b0ca08b4ff71496666b9c43 - kernel-open/nvidia/os-usermap.c
7ac10bc4b3b1c5a261388c3f5f9ce0e9b35d7b44 - kernel-open/nvidia/nv-usermap.c
7af675f85642229b7e7de05dcadd622550fe7ad7 - kernel-open/nvidia/nv-vtophys.c
d11ab03a617b29efcf00f85e24ebce60f91cf82c - kernel-open/nvidia/nv-backlight.c
ef8fd76c55625aeaa71c9b789c4cf519ef6116b2 - kernel-open/nvidia/libspdm_hkdf.c
cf90d9ea3abced81d182ab3c4161e1b5d3ad280d - kernel-open/nvidia/nv-rsync.h
6710f4603a9d3e14bcaefdf415b1cfff9ec9b7ec - kernel-open/nvidia/libspdm_aead.c
d68af9144d3d487308e73d0a52f4474f8047d6ca - kernel-open/nvidia/nv-gpio.c
fc22bea3040ae178492cb9c7a62f1d0012b1c113 - kernel-open/nvidia/nv-procfs.c
aa6cf0ed774330e4afe4eaa55b3463ed31a2f7ae - kernel-open/nvidia/nv.c
e0aff92ee8ddec261d8f0d81c41f837503c4b571 - kernel-open/nvidia/nv-dsi-parse-panel-props.c
9104dc5f36a825aaf1208b54b167965625d4a433 - kernel-open/nvidia/nv_uvm_interface.c
fbae5663e3c278d8206d07ec6446ca4c2781795f - kernel-open/nvidia/nv-ibmnpu.h
ab04c42e0e8e7f48f1a7074885278bbb6006d65f - kernel-open/nvidia/nv-bpmp.c
01d4701e8302e345275f1ec60b9718e645b5663c - kernel-open/nvidia/libspdm_x509.c
e5cd40b060a69cf71220c910e9428d7f261892f7 - kernel-open/nvidia/internal_crypt_lib.h
dc39c4ee87f4dc5f5ccc179a98e07ddb82bb8bce - kernel-open/nvidia/nv-modeset-interface.c
70a9117dce7471a07178d9456b146a033d6b544b - kernel-open/nvidia/nv-dma.c
0a3ad5cdacfe156b02f53c0087bdc0ec9509cd6a - kernel-open/nvidia/nv-ipc-soc.c
06e7ec77cd21c43f900984553a4960064753e444 - kernel-open/nvidia/nv-platform-pm.c
04596e9a57955df30de2f21122aa7e38f3c8825a - kernel-open/nvidia/os-mlock.c
646e6b03521587cc1a02617afd697183e5d1a83a - kernel-open/nvidia/nv-kthread-q.c
94344ec0af21bd9c7c7ab912f7bd3a8668a3e0aa - kernel-open/nvidia/os-pci.c
6e669fe32e4b69dcdbc9739dc8a45fb800547d53 - kernel-open/nvidia/nv-p2p.c
d9221522e02e18b037b8929fbc075dc3c1e58654 - kernel-open/nvidia/nv-pci-table.c
e8daae4e6106429378673988293aaa1fcd80f0eb - kernel-open/nvidia/nv-pci.c
57a06cab892f111b0fb1ebe182c0c688560e750e - kernel-open/nvidia/nvspdm_cryptlib_extensions.h
8c9fd9590d7e3ad333ae03d5f22b72ffbdbe6e70 - kernel-open/nvidia/nv-dmabuf.c
6d4fbea733fdcd92fc6a8a5884e8bb359f9e8abd - kernel-open/nvidia/rmp2pdefines.h
b71bf4426322ab59e78e2a1500509a5f4b2b71ab - kernel-open/nvidia/nv-pat.h
bb4b87fbfa85a21af5b3ed26cc8ff5cbaae78266 - kernel-open/nvidia/os-interface.c
ce537a7d786bd11a4429bf7c59836d5373a66f61 - kernel-open/nvidia/nv-i2c.c
8bedc7374d7a43250e49fb09139c511b489d45e3 - kernel-open/nvidia/nv-pci-table.h
c7f1aaa6a5f3a3cdf1e5f80adf40b3c9f185fb94 - kernel-open/nvidia/nv-report-err.c
3b27e4eaa97bd6fa71f1a075b50af69b1ec16454 - kernel-open/nvidia/libspdm_ec.c
dd9e367cba9e0672c998ec6d570be38084a365ab - kernel-open/nvidia/libspdm_rand.c
37654472e65659be229b5e35c6f25c0724929511 - kernel-open/nvidia/nv-frontend.c
8f87a475c202458948025d1521968677fc11dd50 - kernel-open/nvidia/nv-msi.c
6084c207652ea4bc02a6c94275cad00880acc059 - kernel-open/nvidia/nv-platform.c
dd819a875c584bc469082fcf519779ea00b1d952 - kernel-open/nvidia/libspdm_aead_aes_gcm.c
69f203ad21e643f7b7c85e7e86bd4b674a3536de - kernel-open/nvidia/nv-acpi.c
cf98395acb4430a7c105218f7a4b5f7e810b39cf - kernel-open/nvidia/os-registry.c
4eee7319202366822e17d29ecec9f662c075e7ac - kernel-open/nvidia/nv-rsync.c
980556d84bc56e819955b9338a43a9d970dba11d - kernel-open/nvidia/nv_gpu_ops.h
642c3a7d10b263ab9a63073f83ad843566927b58 - kernel-open/nvidia/libspdm_hmac_sha.c
86443277db67b64c70260e5668bb4140bc90165c - kernel-open/nvidia/nv-clk.c
4c64885083621f5f313a7dee72e14eee8abed2a0 - kernel-open/nvidia/nvidia-sources.Kbuild
2fab5ae911554508e6e7a3b25824e8b2c27e85c2 - kernel-open/nvidia/nv-ibmnpu.c
9883eb32e5d4377c3dce1c7cb54d0e05c05e128b - kernel-open/nvidia/nv-mmap.c
68d781e929d103e6fa55fa92b5d4f933fbfb6526 - kernel-open/nvidia/nv-report-err.h
95ae148b016e4111122c2d9f8f004b53e78998f3 - kernel-open/nvidia/nv-memdbg.c
af3ddc5641076d1618e5a0d5dcc16c63a3d7d011 - kernel-open/nvidia/nvidia.Kbuild
6060392eec4e707ac61ebca3995b6a966eba7fc1 - kernel-open/nvidia/nv-p2p.h
7b1bd10726481626dd51f4eebb693794561c20f6 - kernel-open/nvidia/nv-host1x.c
11778961efc78ef488be5387fa3de0c1b761c0d9 - kernel-open/nvidia/libspdm_sha.c
02b1936dd9a9e30141245209d79b8304b7f12eb9 - kernel-open/nvidia/nv-cray.c
2f6e4c6ee6f809097c8b07a7b698e8614bf25e57 - kernel-open/nvidia/nv-caps.c
9b701fe42a0e87d62c58b15c553086a608e89f7b - kernel-open/nvidia/nv-frontend.h
d2ce61cd7fc2c0d384f9caa40e98bdeb032bab86 - kernel-open/nvidia/libspdm_shash.c
fa178a7209f56008e67b553a2c5ad1b2dd383aac - kernel-open/nvidia/hal/library/cryptlib/cryptlib_rng.h
34de62da6f880ba8022299c77eddbb11d7fc68d2 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_hash.h
95b97f5a3ddcf73ed5d7fa0be9e27aec776d7c13 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_rsa.h
cf94004b7b5729982806f7d6ef7cc6db53e3de56 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_aead.h
9a6e164ec60c2feb1eb8782e3028afbffe420927 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_mac.h
92ab7c0bf545029c4c1d9a0ab68b53eedc655f9c - kernel-open/nvidia/hal/library/cryptlib/cryptlib_ec.h
d007df1d642e836595331598ca0313084922f3ee - kernel-open/nvidia/hal/library/cryptlib/cryptlib_sm2.h
c276be3eb63bb451edfe9ed13859c251530743e6 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_ecd.h
5b79fbc90502b1ba8d1f9966fc7b9a6fd7ef07b4 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_cert.h
0dcb1fd3982e6307b07c917cb453cddbcd1d2f43 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_dh.h
7ff12b437215b77c920a845943e4101dcde289c4 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_hkdf.h
d5ddc354e191d6178625b0df8e8b34e8c3e4c474 - kernel-open/nvidia/library/spdm_lib_config.h
19b5d633f4560d545f622ada0dd352d5aa02c651 - kernel-open/nvidia/library/cryptlib.h
7398ff33b24fa58315cc40776bc3451e090aa437 - kernel-open/nvidia/internal/libspdm_lib_config.h
44b9140286d2917ff7896b98f02d2d87bce58ee2 - kernel-open/nvidia-drm/nvidia-drm-crtc.h
7c1eb7d5d928bb5677634cedde4a234266d4344d - kernel-open/nvidia-drm/nvidia-drm-linux.c
8b2063f0cc2e328f4f986c2ce556cfb626c89810 - kernel-open/nvidia-drm/nvidia-drm-utils.c
6d65ea9f067e09831a8196022bfe00a145bec270 - kernel-open/nvidia-drm/nvidia-drm-gem-dma-buf.h
f454b9ae53a2c308d6909d197c2b9a6543f7d8c3 - kernel-open/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
69f2ad23a2df1e20a38c60d251673db8bffcbd9e - kernel-open/nvidia-drm/nvidia-drm-modeset.c
23586447526d9ffedd7878b6cf5ba00139fadb5e - kernel-open/nvidia-drm/nvidia-drm-gem-user-memory.h
99642b76e9a84b5a1d2e2f4a8c7fb7bcd77a44fd - kernel-open/nvidia-drm/nvidia-drm.h
66b33e4ac9abe09835635f6776c1222deefad741 - kernel-open/nvidia-drm/nvidia-drm-fb.h
2eba218d75f3802d7bab34d0dd6320f872b2d604 - kernel-open/nvidia-drm/nvidia-drm-gem-nvkms-memory.h
c52acdbc07f16aa78570d9e6a7f62e493264fde1 - kernel-open/nvidia-drm/nvidia-drm-helper.c
ae6efc1bbec8a5e948b7244f4801f0b4b398f203 - kernel-open/nvidia-drm/nvidia-drm.c
86666530006fc4446d7e3bbe175ce9d3350d8d81 - kernel-open/nvidia-drm/nvidia-drm-ioctl.h
511ea7cd9e7778c6adc028ae13377c1a8856b72a - kernel-open/nvidia-drm/nvidia-drm-format.c
aedc8183ac255b270f74899cf9fd1c974fdbf00b - kernel-open/nvidia-drm/nvidia-drm-drv.h
624b30dc76058cc3a0797a86ffa5da46803e3ace - kernel-open/nvidia-drm/nvidia-drm-connector.h
646e6b03521587cc1a02617afd697183e5d1a83a - kernel-open/nvidia-drm/nv-kthread-q.c
d9221522e02e18b037b8929fbc075dc3c1e58654 - kernel-open/nvidia-drm/nv-pci-table.c
eb98761cdc99141ad937966e5533c57189db376a - kernel-open/nvidia-drm/nvidia-drm-fence.h
eca70b3b8146903ec678a60eebb0462e6ccf4569 - kernel-open/nvidia-drm/nvidia-drm-encoder.h
b1bc97e6e0564f1526dedaf8bb68d081fc509cc7 - 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
77339943a9d60e01708aae95c258476831f0b8fb - kernel-open/nvidia-drm/nvidia-drm-drv.c
203295380efca7e422746805437b05ce22505424 - kernel-open/nvidia-drm/nvidia-drm-gem.c
c1a318e90decef16aa29768ea5c8946becc5a4a0 - kernel-open/nvidia-drm/nvidia-drm-encoder.c
8bedc7374d7a43250e49fb09139c511b489d45e3 - kernel-open/nvidia-drm/nv-pci-table.h
044071d60c8cc8ea66c6caaf1b70fe01c4081ad3 - kernel-open/nvidia-drm/nvidia-drm-conftest.h
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
b59e4cccbc405babf7cf230455b5b089e81b03bc - kernel-open/nvidia-drm/nvidia-drm-connector.c
97b6c56b1407de976898e0a8b5a8f38a5211f8bb - kernel-open/nvidia-drm/nvidia-drm-format.h
6859a86572262b38ae7a905f21921e9ceb74523d - 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
7ba9a7661d0227a2f8a8b96614e40302dfcd8c37 - 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
53f37dd6d99d4bc8227db5d532e2f1309723468b - 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
646e6b03521587cc1a02617afd697183e5d1a83a - kernel-open/nvidia-modeset/nv-kthread-q.c
7dbe6f8405e47c1380c6151c7c7d12b0b02ef7f4 - kernel-open/nvidia-modeset/nvidia-modeset.Kbuild
2ea1436104463c5e3d177e8574c3b4298976d37e - kernel-open/nvidia-modeset/nvkms-ioctl.h
36f9753dbbef7dd5610312d5b14bffac1a93cee4 - nouveau/nouveau_firmware_layout.ods
7ad4bb8aebd57a9be26329a611b14c5a70ccf2b7 - nouveau/extract-firmware-nouveau.py
e7a5fa74517ecd7f617860f01c5523bc5acd6432 - src/common/sdk/nvidia/inc/rs_access.h
edf1f7d1457b015aa92c12f74f9ffa1e2f86a821 - src/common/sdk/nvidia/inc/nvtypes.h
7c03663f5e12754572e6efcbe09f51ec2c5f6502 - src/common/sdk/nvidia/inc/g_finn_rm_api.h
b249abc0a7d0c9889008e98cb2f8515a9d310b85 - src/common/sdk/nvidia/inc/nvgputypes.h
78a4b6b19a38de41527ef8b290754deca5906817 - src/common/sdk/nvidia/inc/nvcd.h
751abf80513898b35a6449725e27724b1e23ac50 - src/common/sdk/nvidia/inc/nvmisc.h
b5dedeada189123f1965650827bf8a8193383a92 - src/common/sdk/nvidia/inc/nvimpshared.h
befb2c0bf0a31b61be5469575ce3c73a9204f4e9 - src/common/sdk/nvidia/inc/nv_stdarg.h
f5a682339a89d2b119b43e5b9263dd67346ed3bc - src/common/sdk/nvidia/inc/cpuopsys.h
b3de92f4edb1fcc856fd62b74359c9cd447519a8 - src/common/sdk/nvidia/inc/nverror.h
fa267c903e9c449e62dbb6945906400d43417eff - src/common/sdk/nvidia/inc/nvlimits.h
5cf4b517c9bd8f14593c1a6450078a774a39dd08 - src/common/sdk/nvidia/inc/nv-hypervisor.h
4a97d807a225d792544578f8112c9a3f90cc38f6 - src/common/sdk/nvidia/inc/nvstatuscodes.h
95bf694a98ba78d5a19e66463b8adda631e6ce4c - src/common/sdk/nvidia/inc/nvstatus.h
a506a41b8dcf657fb39a740ffc1dfd83835d6c89 - src/common/sdk/nvidia/inc/nvcfg_sdk.h
1e7eec6561b04d2d21c3515987aaa116e9401c1f - src/common/sdk/nvidia/inc/nv-kernel-interface-api.h
af0bc90b3ad4767de53b8ff91e246fdab0146e8b - src/common/sdk/nvidia/inc/nvsecurityinfo.h
5cec5038e1f4a395a08b765c8361a9560f3312b7 - src/common/sdk/nvidia/inc/nvdisptypes.h
c8b96af9d498f87cb9acde064648f9e84d789055 - src/common/sdk/nvidia/inc/nv_vgpu_types.h
3b12d770f8592b94a8c7774c372e80ad08c5774c - src/common/sdk/nvidia/inc/nvi2c.h
56cca793dd7bcbc4a3681677a822fc9f7a11a091 - src/common/sdk/nvidia/inc/nvos.h
9bca638f5832d831880f090c583fac6fc8cf6ee6 - src/common/sdk/nvidia/inc/dpringbuffertypes.h
7de14a0c3cc8460a9c41e1ee32fda5409c5b9988 - src/common/sdk/nvidia/inc/mmu_fmt_types.h
95b0de4e76d9cc1bf49ef953fc00aa47e238ccd2 - src/common/sdk/nvidia/inc/nvfixedtypes.h
41a588413e1b13f0f3eec6647ffc7023dfaf651f - src/common/sdk/nvidia/inc/alloc/alloc_channel.h
a7c7899429766c092ee3ecf5f672b75bef55216c - src/common/sdk/nvidia/inc/class/cl9271.h
cef74c734fc7d2f32ff74095c59212d9e1d4cafc - src/common/sdk/nvidia/inc/class/cl84a0.h
9f8a45cb986e3ad2bd4a8900469fe5f8b0c9463a - src/common/sdk/nvidia/inc/class/cl9870.h
e6818f1728a66a70080e87dac15a6f92dd875b4e - src/common/sdk/nvidia/inc/class/cl927d.h
89d4eeb421fc2be3b9717e333e9ff67bfffa24e8 - src/common/sdk/nvidia/inc/class/cl2080.h
866977d299eac812b41eb702a517e27bdc56e875 - src/common/sdk/nvidia/inc/class/clc37a.h
d301edef2d1dd42382670e5a6ceef0d8caf67d28 - src/common/sdk/nvidia/inc/class/cl90cd.h
95d99f0805c8451f0f221483b3618e4dbd1e1dd8 - src/common/sdk/nvidia/inc/class/cl90f1.h
99a34eee22f584d5dfb49c3018a8cb9a7b1035ed - src/common/sdk/nvidia/inc/class/cl5070_notification.h
b29ba657f62f8d8d28a8bdd2976ef3ac8aa6075f - src/common/sdk/nvidia/inc/class/cl0073.h
2f87e87bcf9f38017ad84417d332a6aa7022c88f - src/common/sdk/nvidia/inc/class/cl9471.h
ddbffcce44afa7c07924fd64a608f7f3fe608ccc - src/common/sdk/nvidia/inc/class/cl0071.h
74c75472658eea77d031bf3979dd7fe695b4293f - src/common/sdk/nvidia/inc/class/cl0092_callback.h
a75d43f7b84d4cb39f8a2be35c12b2d2735f0ad9 - src/common/sdk/nvidia/inc/class/cl0000.h
c2d8bb02052e80cd0d11695e734f5e05ab7faeb5 - src/common/sdk/nvidia/inc/class/cl907dswspare.h
7c7406d40a09372dcae2aaf3fcad225c3dd2cf3f - src/common/sdk/nvidia/inc/class/cl9010_callback.h
8b75d2586151302d181f59d314b6b3f9f80b8986 - src/common/sdk/nvidia/inc/class/clc573.h
593384ce8938ceeec46c782d6869eda3c7b8c274 - src/common/sdk/nvidia/inc/class/cl900e.h
dec74b9cf8062f1a0a8bbeca58b4f98722fd94b0 - src/common/sdk/nvidia/inc/class/cl0076.h
053e3c0de24348d3f7e7fe9cbd1743f46be7a978 - src/common/sdk/nvidia/inc/class/cl0004.h
78259dc2a70da76ef222ac2dc460fe3caa32457a - src/common/sdk/nvidia/inc/class/clc37e.h
b7a5b31a8c3606aa98ba823e37e21520b55ba95c - src/common/sdk/nvidia/inc/class/cl402c.h
13f8e49349460ef0480b74a7043d0591cf3eb68f - src/common/sdk/nvidia/inc/class/clc57b.h
c2600834921f8a6aad6a0404076fa76f9bc1c04d - src/common/sdk/nvidia/inc/class/clc37b.h
513c505274565fa25c5a80f88a7d361ffbcb08c3 - src/common/sdk/nvidia/inc/class/cl0005.h
f968cd35ce1d1d8e3bc2f669025e6b1042b35354 - src/common/sdk/nvidia/inc/class/cl00de.h
0d8975eec1e3222694e98eb69ddb2c01accf1ba6 - src/common/sdk/nvidia/inc/class/cl0000_notification.h
941a031920c0b3bb16473a6a3d4ba8c52c1259d7 - src/common/sdk/nvidia/inc/class/cl917e.h
cb610aaae807d182b4a2ee46b9b43ebfa4a49a08 - src/common/sdk/nvidia/inc/class/clc57e.h
9e1d2f90d77e23f1d2163a8f8d8d747058e21947 - src/common/sdk/nvidia/inc/class/cl9010.h
5f4e91808d6289265c73f07072eb9cd028e87428 - src/common/sdk/nvidia/inc/class/clc370_notification.h
36c6162356ac39346c8900b1e0074e4b614d4b5a - src/common/sdk/nvidia/inc/class/clc370.h
5df0ce4eb733554e963eb3c7938396f58f2dd4d5 - src/common/sdk/nvidia/inc/class/cl2081.h
2e3d5c71793820d90973d547d8afdf41ff989f89 - src/common/sdk/nvidia/inc/class/clc67a.h
fb5ef3d6734a2ee6baba7981cdf6419d013cee85 - src/common/sdk/nvidia/inc/class/clc671.h
e63ed2e1ff3fe2a5b29cfc334d3da611db2aadf6 - src/common/sdk/nvidia/inc/class/clc37dcrcnotif.h
31ac68401e642baf44effb681d42374f42cf86b1 - src/common/sdk/nvidia/inc/class/cl00c3.h
95ca0b08eed54d1c6dd76fdf9cf4715007df1b20 - src/common/sdk/nvidia/inc/class/cl0020.h
9797f4758d534181eeaa6bc88d576de43ba56045 - src/common/sdk/nvidia/inc/class/clc574.h
78efa8d42f828c89cd2a62b8c3931ebd0b0a6476 - src/common/sdk/nvidia/inc/class/clc771.h
eac86d7180236683b86f980f89ec7ebfe6c85791 - src/common/sdk/nvidia/inc/class/cl957d.h
f3f33f70ec85c983acec8862ccaabf5b186de2bb - src/common/sdk/nvidia/inc/class/cl9270.h
60d0c7923699599a5a4732decfbcb89e1d77b69e - src/common/sdk/nvidia/inc/class/cl9770.h
e0c9a155f829c158c02c21b49c083168f8b00cbe - src/common/sdk/nvidia/inc/class/clc37dswspare.h
e1bfd0c78f397e7c924c9521f87da8286bebe3f1 - src/common/sdk/nvidia/inc/class/cl84a0_deprecated.h
bae36cac0a8d83003ded2305409192995d264d04 - src/common/sdk/nvidia/inc/class/cl0001.h
992b395855033b4a1fa7536d0de6ab2d071a5f82 - src/common/sdk/nvidia/inc/class/clc77d.h
05605d914edda157385e430ccdbeb3fcd8ad3c36 - src/common/sdk/nvidia/inc/class/cl9171.h
a23967cf3b15eefe0cc37fef5d03dfc716770d85 - src/common/sdk/nvidia/inc/class/clc372sw.h
02ff42b6686954e4571b8a318575372239db623b - src/common/sdk/nvidia/inc/class/cl30f1_notification.h
ef173136a93cdd2e02ec82d7db05dc223b93c0e1 - src/common/sdk/nvidia/inc/class/clc770.h
a3e011723b5863277a453bfcfb59ce967cee0673 - src/common/sdk/nvidia/inc/class/clc670.h
02906b5ba8aab0736a38fd1f6d7b4f6026a5185b - src/common/sdk/nvidia/inc/class/clc57esw.h
326dbbeb275b4fc29f6a7e2e42b32736474fec04 - src/common/sdk/nvidia/inc/class/cl9571.h
9b2d08d7a37beea802642f807d40413c7f9a8212 - src/common/sdk/nvidia/inc/class/clc37d.h
bd9f406625e6c0cce816a5ddfb9078723e7f7fb5 - src/common/sdk/nvidia/inc/class/clb0b5sw.h
ab27db8414f1400a3f4d9011e83ac49628b4fe91 - src/common/sdk/nvidia/inc/class/cl987d.h
2614a83d383b540f23ef721ec49af1dfde629098 - src/common/sdk/nvidia/inc/class/cl0080.h
9db39be032023bff165cd9d36bee2466617015a5 - src/common/sdk/nvidia/inc/class/cl0002.h
5556b1c2e267d1fda7dee49abec983e5e4a93bff - src/common/sdk/nvidia/inc/class/cl2080_notification.h
e72a7871d872b2eb823cc67c0a7d4cafb3d0ca18 - src/common/sdk/nvidia/inc/class/cl90ec.h
11b19cb8d722146044ad5a12ae96c13ed5b122b6 - src/common/sdk/nvidia/inc/class/cl917b.h
b685769b5f3fed613227498866d06cc3c1caca28 - src/common/sdk/nvidia/inc/class/cl2082.h
204feb997ba42deab327d570e5f12235d5160f00 - src/common/sdk/nvidia/inc/class/clc57a.h
15d1f928a9b3f36065e377e29367577ae92ab065 - src/common/sdk/nvidia/inc/class/cl0080_notification.h
16f9950a48c4e670b939a89724b547c5be9938bf - src/common/sdk/nvidia/inc/class/clc570.h
060722ac6a529a379375bb399785cbf2380db4fd - src/common/sdk/nvidia/inc/class/clc373.h
b71d1f698a3e3c4ac9db1f5824db983cf136981a - src/common/sdk/nvidia/inc/class/cl9170.h
a9503a5558b08071f35b11df9a917310947c378b - src/common/sdk/nvidia/inc/class/cl00da.h
c61f8348c2978eef0a07191aaf92bd73e935f7bd - src/common/sdk/nvidia/inc/class/clc67e.h
4a6444c347825e06bdd62401120553469f79c188 - src/common/sdk/nvidia/inc/class/cl917dcrcnotif.h
026f66c4cc7baad36f1af740ae885dae58498e07 - src/common/sdk/nvidia/inc/class/clc371.h
ff47d8a4b4bdb3b9cd04ddb7666005ac7fcf2231 - src/common/sdk/nvidia/inc/class/cl003e.h
0285aed652c6aedd392092cdf2c7b28fde13a263 - src/common/sdk/nvidia/inc/class/cl00fc.h
1efc9d4aa038f208cd19533f6188ac3a629bf31a - src/common/sdk/nvidia/inc/class/cl917a.h
38265d86eb7c771d2d3fc5102d53e6a170a7f560 - src/common/sdk/nvidia/inc/class/cl0041.h
2d76476dba432ffc1292d2d5dd2a84ff3a359568 - src/common/sdk/nvidia/inc/class/cl0092.h
022e8405220e482f83629dd482efee81cc49f665 - src/common/sdk/nvidia/inc/class/clc77f.h
fe7484d17bc643ad61faabee5419ddc81cf9bfd6 - src/common/sdk/nvidia/inc/class/cl9570.h
bb79bbd1b0a37283802bc59f184abe0f9ced08a5 - src/common/sdk/nvidia/inc/class/cl0040.h
127f78d2bb92ef3f74effd00c2c67cf7db5382fe - src/common/sdk/nvidia/inc/class/clc67d.h
b1133e9abe15cf7b22c04d9627afa2027e781b81 - src/common/sdk/nvidia/inc/class/cl917c.h
a26ddc6c62faac1ecd5c5f43499aab32c70f32cb - src/common/sdk/nvidia/inc/class/clc67b.h
c40fd87fa6293d483b5bf510e2e331143ded9fa4 - src/common/sdk/nvidia/inc/class/cl9470.h
20894d974d1f8f993c290463f1c97c71fd2e40b1 - src/common/sdk/nvidia/inc/class/cl30f1.h
04ab1761d913030cb7485149ecd365f2f9c0f7da - src/common/sdk/nvidia/inc/class/cl0005_notification.h
da8d312d2fdc6012e354df4fa71ed62ae4aac369 - src/common/sdk/nvidia/inc/class/cl927c.h
158c98c8721d558ab64a025e6fdd04ce7a16ba9e - src/common/sdk/nvidia/inc/class/cl947d.h
5416c871e8d50a4e76cbad446030dbedbe1644fd - src/common/sdk/nvidia/inc/class/cl00f2.h
d90649c6a6c491bf086958426b56c697222e10bc - src/common/sdk/nvidia/inc/class/cl00fe.h
dd4f75c438d19c27e52f25b36fc8ded1ce02133c - src/common/sdk/nvidia/inc/class/cl917cswspare.h
435a34753d445eb9711c7132d70bd26df2b8bdab - src/common/sdk/nvidia/inc/class/cl917d.h
31939808cd46382b1c63bc1e0bd4af953302773f - src/common/sdk/nvidia/inc/class/cl977d.h
83427e3172c64c3b9ef393205ccc3b961ec65190 - src/common/sdk/nvidia/inc/class/cl5070.h
28867d69a6ceac83da53a11a5e1ef87d9476f0be - src/common/sdk/nvidia/inc/class/clc57d.h
f5760f5054538f4ecf04d94fb1582a80a930bc29 - src/common/sdk/nvidia/inc/class/clc673.h
4fc2133935b8e560c9a1048bc0b1f1c2f0a4464c - src/common/sdk/nvidia/inc/class/cl00c1.h
6db83e33cb3432f34d4b55c3de222eaf793a90f0 - src/common/sdk/nvidia/inc/class/cl00b1.h
5b573deb4d68ccb67d9cccc11b28203c5db3d2f7 - src/common/sdk/nvidia/inc/ctrl/ctrl0002.h
625af1df5c9453bd35a9e873ee5c77e73d5fd195 - src/common/sdk/nvidia/inc/ctrl/ctrl90ec.h
ade4a731f59c7cd16b4a60d318a19147b9918bb9 - src/common/sdk/nvidia/inc/ctrl/ctrl0004.h
90843f8173a341deb7f1466cd69a17114c6b9e4f - src/common/sdk/nvidia/inc/ctrl/ctrl90f1.h
fcdf7b331c3f7744d296918e68d44dfb114b9461 - src/common/sdk/nvidia/inc/ctrl/ctrl00fe.h
4fc1dd23cbfdb4ce49f1722f6e282cd21f33b7f5 - src/common/sdk/nvidia/inc/ctrl/ctrla06f.h
360ed7fefcd6f8f4370b3cf88d43a9f8eec1e86d - src/common/sdk/nvidia/inc/ctrl/ctrl00da.h
f64c19679dc9a20e62ef86d01878a006b505ed93 - src/common/sdk/nvidia/inc/ctrl/ctrl906f.h
a75a0a693d5742c8aecd788dc204a69863cfaf39 - src/common/sdk/nvidia/inc/ctrl/ctrl00de.h
8607fdd8ecaa5140bac6643a3f715610ed391d67 - src/common/sdk/nvidia/inc/ctrl/ctrlxxxx.h
b35f86170f27005bc714b37edc96dffb97691bd4 - src/common/sdk/nvidia/inc/ctrl/ctrla081.h
b4cecb527cdc3ba4e68ca0031ac2179756108cb0 - src/common/sdk/nvidia/inc/ctrl/ctrl003e.h
72164895b0055a1942e1190a05d5090753af95a1 - src/common/sdk/nvidia/inc/ctrl/ctrl30f1.h
7433f9674e36f120671d6e1802f2cdbcaadc58c3 - src/common/sdk/nvidia/inc/ctrl/ctrl2080.h
0edffddbe7764b268f724abc4ac84924767d1bf2 - src/common/sdk/nvidia/inc/ctrl/ctrl0041.h
c8b2e0e64bb3cf3c562dee5fa7913035f82d8247 - src/common/sdk/nvidia/inc/ctrl/ctrl402c.h
352825959d98fe9b47a474cfdd154d380c80d24e - src/common/sdk/nvidia/inc/ctrl/ctrl90cd.h
1cd4acc266f26dba813ac8802dba4e7ab381f753 - src/common/sdk/nvidia/inc/ctrl/ctrl0080.h
3fcf5dbb82508d88a040981a7ab21eac1466bb2b - src/common/sdk/nvidia/inc/ctrl/ctrl0073.h
bfee287b190fd698735c5660592741ba5c25a8ea - src/common/sdk/nvidia/inc/ctrl/ctrl0020.h
175ad4d300fa40b960d07fee059b51c6b8639f01 - src/common/sdk/nvidia/inc/ctrl/ctrlb06f.h
ebf415ac7d55643fa24493f27b69a843ea05f6c7 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000client.h
5782a19aeaf9695c13940cf4532e41523a8460e3 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000base.h
c341344b0879c5e9c7ba9ac0005eb28b347eaa63 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000system.h
1cef17e1833c002d968a2255726a4f785e4e66e7 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000unix.h
4e7733c378eb6f7924e43ff111017ae0e433800d - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000vgpu.h
899e3bc9a551ca0b181d1c8dd7ef8d779a66ecc4 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000gpu.h
d08ef822e97ee56984618d52ed3ed55ee395eadb - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000gsync.h
668e6d37c0a556a70ae003569fe237b1024d6e6b - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000nvd.h
6bc78fd963e407de843598786bdbcd1653005328 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000diag.h
a33a1c1173962183793d84276e46c61d27ca867e - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000gpuacct.h
1b594c39d1439c3d1ecc24c4325b2ea8c2724548 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000syncgpuboost.h
0146d2b3ecec8760e76dacd8ce6bb75c343c6cac - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000proc.h
dd49db523d761d6f14e3890549cd8186c25f1d62 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000event.h
4f0ccb0667bd3e3070e40f3f83bede7849bc78e4 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080nvjpg.h
12f1e560480dafde75646fb41aa349d9d729ca7d - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080host.h
28b06c8f8152dce2b2e684a4ba84acd25a8b8c26 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080base.h
12f1d3bb13c72fb1b52b62cf2a21f1b15619c06d - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080dma.h
8e85550f24771c87138a973cd8cd714e419a14e8 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080gpu.h
e0c551dc47bc06f8dff5884affdeb05eb118609f - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080bif.h
7edd8cdb8061ec137bc29d0dbbfbb5d169c0fd35 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080perf.h
ccba5f12df1bce4b4235eed5a1c7a0cd2612c2ce - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080internal.h
a3328cf6633f9b04258eff05ce30e66cc6930310 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080cipher.h
a427892e601a4ca4f88cc5778ff78895324f3728 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080unix.h
92ff82d1045933baa79958a9f6efd451b0123e95 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080bsp.h
ec7b09fe14c31c175e0abfcfa85dee20d57d02b4 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080clk.h
68bdc682ee42784c09409cd581bb991f7fc1bf41 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080msenc.h
e238d87a94267f62141c413d0c44f03f27204b33 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080fifo.h
6fb840928970cf39919f2f415932bcc3e0764b25 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080gr.h
ea6d95de011af0039b1adc209733e524bc583c92 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080fb.h
c74ac448c3382d92e662804b56e73edd748e2678 - src/common/sdk/nvidia/inc/ctrl/ctrl83de/ctrl83debase.h
33716a49ba4f7fcc0faa889d535e370a14edd582 - src/common/sdk/nvidia/inc/ctrl/ctrl83de/ctrl83dedebug.h
1066e2e0a0633b0dd1b9114f31079c30178a5ac8 - src/common/sdk/nvidia/inc/ctrl/ctrlc372/ctrlc372chnc.h
3f747a4fc98291329e0245a971248cf2c28a1b60 - src/common/sdk/nvidia/inc/ctrl/ctrlc372/ctrlc372base.h
9279520e7dec45516d5339d82d35eb60b88f7300 - src/common/sdk/nvidia/inc/ctrl/ctrl208f/ctrl208fbase.h
67a911b3177b75243e2fceef821ebcfd3668235e - src/common/sdk/nvidia/inc/ctrl/ctrl208f/ctrl208fgpu.h
f9db227bd1cefe92e4f35b52cafcb15266630582 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073stereo.h
d2992c1a9aac5b1b5cfefcca72e9a2401190158c - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073common.h
456707a5de78815fc6a33f2da7e2a2a45ccc4884 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073internal.h
abed22b35137e2d40399eb4ed01724aa789cb635 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073event.h
505860d3cd6f7d5144f97195b9fb32dd5b8f74aa - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dp.h
51cbe71bafc97e853c2b75147d7e9cb5cf72cefa - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073specific.h
8e807c3771f3d37885d4066d95ec71c05234b5ec - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073system.h
52f251090780737f14eb993150f3ae73be303921 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dpu.h
77eb4fab61225663a3f49b868c983d5d532ca184 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073svp.h
6ca26c7149455e43f32e8b83b74f4a34a24a2d29 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073base.h
31534360d235be6dfdf4c1cf3854ce1e97be8fe2 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dfp.h
022feef64678b2f71ab70dc67d5d604054990957 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073psr.h
2a00952f0f3988c5425fec957a19d926ae75ba28 - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370verif.h
a8384da236fdd365d15d26daeb7db1c117ce1072 - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370base.h
0710ae87ce40008bea9181310b755ed74c397bfe - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370event.h
5f70c2eb6a144bc4d7ca8be63fa46391909e8201 - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370rg.h
6975ff971c7ed1ac1a429896a3be1d95353fa4bd - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370chnc.h
e919b586a0e44cfe96b819deeab2c21c6af34f55 - src/common/sdk/nvidia/inc/ctrl/ctrla06f/ctrla06finternal.h
cebcfa209648731e86af526834717b19d5b24159 - src/common/sdk/nvidia/inc/ctrl/ctrla06f/ctrla06fevent.h
83d495dfe528167aa8ddbf45091051a89bd1a262 - src/common/sdk/nvidia/inc/ctrl/ctrla06f/ctrla06fbase.h
ce19b7278c6720b3bee62bcaa763ebb322d91957 - src/common/sdk/nvidia/inc/ctrl/ctrla06f/ctrla06fgpfifo.h
0acaf597e0fc8f59a99b1772b7370395513492ed - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070event.h
ce4e42c8e73047ae03f835f9d3655dda1eb44452 - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070base.h
e3fb93f0ff3469ec76cecdc6f0bf1c296551a2b1 - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070impoverrides.h
a138379dd76c468072f1862b8fc6ae79ee876b4e - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070common.h
53134475c1fd9c228a2c607051b34c28a5a80b03 - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070seq.h
3ab2fc007f2c76ddc89caf14c4db0ab530515d4a - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070verif.h
50f2ef0c01ab81077bd0e313d9ff168faae91670 - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070rg.h
5f4b08b9ee7853eb33269ef7b415050eac2d702a - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070or.h
fa763827e4359b2deb6307ef742474f8f6f960dd - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070chnc.h
e8d883de767aa995a374d8da56b5c9da8787cb1d - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070system.h
c1e506bd4bb6ad792c802961a9e03b371abb6919 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080flcn.h
cfa32c37f373eeef53aedc3f4dffff1634c122e8 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gpumon.h
18ed4b62c824c252abdd89a6616e3cc325ffa7fa - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080dmabuf.h
ecd312fabb249a25655e151cee3615c5ab61ffa7 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080pmgr.h
c30b5995d353e68623b32fea398f461351e3b8f1 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080lpwr.h
aa0f685b94bdae99a58aa1a45735b0593a2e6f5a - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080vfe.h
aa86ffd04a55436ecacbedb1626f6187bbddedf7 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080perf_cf.h
a002a436f77b9544041a259405dddba90301df01 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080grmgr.h
1990d0c4fa84c6d078282d4d7d0624ccb0325ce7 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080unix.h
86737d12192b2e7dc878bbeb8e57a41dcc1a655e - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fb.h
8b622186edb156e980d02bd59a71c01923d1aa23 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080tmr.h
4f31fe752e050953a0f87d04063dc152bba261fe - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080clk.h
920f69f6d8386a107160da834545f71172cc2f0f - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080boardobj.h
55cee85b56cb6ed5d017bab55c40cc8799789c8b - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080nvd.h
27341c2b0ad4eb10044fdf9fc2377024b4c63297 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080bios.h
b8e8c5ccab01d7997d1fd5579a690cb3279a8ab3 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080base.h
b2eecbca32d87b939858bf0b22f93c06b49b3a04 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080i2c.h
3db5bcbcae4063f2356ec76924b4bcc1d0df1a05 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080ecc.h
6c467ece3508071c2b3a296afffedd592726f8de - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080bus.h
22b8cc6c4677e664904659c726425a62aa24124e - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fifo.h
4fa54b01cd70c3ca3b5cac93bade62dd09641b97 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080vgpumgrinternal.h
96f72ec608cd198be995f3acd9c04afe7c7e6dc8 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080volt.h
359c6b06f2712a527d1ef08465179c14a8b4a751 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080acr.h
4c2af959d06536294d62b2366a6ba61ca744bd50 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080dma.h
d5cdbcd10e049e8daf48feb5347f070d4ef85f8b - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080spdm.h
898fa08818b657c27b456d952e7a4e09d8d197ee - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080illum.h
6627bf1716c0e06e870c083d264753d6a0abb439 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080ce.h
5013ec94fa6311100818efb422b013ed77cffe82 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gpu.h
0cd5e883dfafb74ce2ec9bccca6e688a27e6cfa9 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080perf_cf_pwr_model.h
07f82ae90cde3c6e2e6c5af135c40e01660c39a3 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080boardobjgrpclasses.h
48691dd2c8d93fbd162e207cdb5d27ea30741d36 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gsp.h
01a6a431e8aeffeec97755009b4e9575bdf0de7b - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080mc.h
ae428e2b33fd058eeaffbbd4fbcd42178345883c - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080nvlink.h
66aa4e08f838e1f87e4babacb42d3d59cb6837ff - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080pmu.h
74f1abf45a2a0f60c82e4825b9abfa6c57cab648 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080power.h
cfe695da65835f26c82399db0e44a56c7162c180 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080pmumon.h
d4ba227a522423503e5044c774dbcca692c48247 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080rc.h
97bb79e74b25134fa02a60d310b3e81170df6fd6 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080clkavfs.h
fed713e236b4fbc1e71dcf6747182ebea5836318 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080event.h
bf976b3c428ccb9cb80d2f84f80b2c33d96e6ce1 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080perf.h
347efee37fa9404ce1933f01a7aa8a43b229db44 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080thermal.h
5ac6c9a299256935259eaf94323ae58995a97ad7 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gpio.h
e4441458a7914414a2092f36a9f93389ed65154a - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fuse.h
d411633fdeae66035e8c018ec8f6f25a9d5dd462 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gr.h
496c7a1a0c283b25a637a996995d3987c9045346 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080internal.h
5c7b955ef5e6f6ca9c0944e8a2b2c4a1ae760e04 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080spi.h
93a9fa93eb3d1099991e4682b6228124220ca293 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fla.h
e8d117ea0d596ed6415324bd136de337f1a36ff1 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fan.h
42dc8204c0f6da47c5f741344032fc02702cfac5 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080ucodefuzzer.h
59254e4bdc475b70cfd0b445ef496f27c20faab0 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080cipher.h
59340a74f26b92f689fe99f8303775c87a4bbd58 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080hshub.h
2476f128437c0520204e13a4ddd2239ff3f40c21 - src/common/unix/common/inc/nv-float.h
881cbcc7ed39ea9198279136205dbe40142be35e - src/common/unix/common/inc/nv_assert.h
1c947cfc8a133b00727104684764e5bb900c9d28 - src/common/unix/common/inc/nv_mode_timings.h
d5253e7e4abd3ad8d72375260aa80037adcd8973 - src/common/unix/common/inc/nv_dpy_id.h
995d8447f8539bd736cc09d62983ae8ebc7e3436 - src/common/unix/common/inc/nv_common_utils.h
edded9ca3d455444372fe6c497b2d61bd0cc3f96 - src/common/unix/common/utils/nv_memory_tracker.c
bda08c8398f68ffc2866ebc390dc63a09a16b0b9 - src/common/unix/common/utils/unix_rm_handle.c
26f2a36442266c5d2664d509ecfd31094a83e152 - src/common/unix/common/utils/nv_vasprintf.c
e903bbbecf4fb3085aaccca0628f0a0e4aba3e58 - src/common/unix/common/utils/nv_mode_timings_utils.c
667b361db93e35d12d979c47e4d7a68be9aa93b6 - src/common/unix/common/utils/interface/nv_mode_timings_utils.h
07c675d22c4f0f4be6647b65b6487e2d6927c347 - src/common/unix/common/utils/interface/nv_memory_tracker.h
8d9c4d69394b23d689a4aa6727eb3da1d383765a - src/common/unix/common/utils/interface/unix_rm_handle.h
9e008270f277e243f9167ab50401602378a2a6e8 - src/common/unix/common/utils/interface/nv_vasprintf.h
e1fbb040ea9d3c773ed07deb9ef5d63c8c8cab7a - src/common/inc/nvSha1.h
8f0d91e1a8f0d3474fb91dc3e6234e55d2c79fcc - src/common/inc/rmosxfac.h
56f837b06862884abb82686948cafc024f210126 - src/common/inc/nvlog_defs.h
ebccc5c2af2863509e957fe98b01d9a14d8b0367 - src/common/inc/nv_list.h
714db3678cd564170ec05022de6c37686da9df23 - src/common/inc/pex.h
4df0a4ae78271bb5b295288798d5be7866242adc - src/common/inc/nvctassert.h
6fa5359ffe91b624548c226b6139f241771a9289 - src/common/inc/jt.h
87bb66c50d1301edb50140e9896e1f67aaaa7175 - src/common/inc/nvVer.h
d9c0905f374db0b9cc164ce42eab457d1ba28c53 - src/common/inc/nvop.h
b4c5d759f035b540648117b1bff6b1701476a398 - src/common/inc/nvCpuUuid.h
4282574b39d1bcaf394b63aca8769bb52462b89b - src/common/inc/nvBinSegment.h
8c41b32c479f0de04df38798c56fd180514736fc - src/common/inc/nvBldVer.h
62e510fa46465f69e9c55fabf1c8124bee3091c4 - src/common/inc/nvHdmiFrlCommon.h
a346380cebac17412b4efc0aef2fad27c33b8fb5 - src/common/inc/nvlog_inc2.h
e670ffdd499c13e5025aceae5541426ab2ab0925 - src/common/inc/gps.h
963aebc9ec7bcb9c445eee419f72289b21680cdd - src/common/inc/hdmi_spec.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
1fc95a17ddb619570063f6707d6a395684bfa884 - src/common/inc/displayport/dpcd20.h
90998aac8685a403fdec9ff875f7436373d76f71 - src/common/inc/displayport/dpcd14.h
669268ea1660e9e5b876f90da003599ba01356bb - src/common/inc/displayport/displayport.h
ee0105d1113ce6330939c7e8d597d899daae662e - src/common/inc/displayport/dpcd.h
bbcecae47807b4578baa460da4147328140ecfcd - src/common/inc/swref/published/nv_ref.h
1efbc285d851a4430776a945d8c250b6a7019ab5 - src/common/inc/swref/published/nv_arch.h
38edc89fd4148b5b013b9e07081ba1e9b34516ac - src/common/inc/swref/published/turing/tu102/kind_macros.h
86a59440492fd6f869aef3509f0e64a492b4550d - src/common/inc/swref/published/turing/tu102/dev_mmu.h
1ea0c3d6ea0c79c01accc7b25d15b421ab49a55d - src/common/inc/swref/published/disp/v04_02/dev_disp.h
3cddaacf90bbbefedf500e6af7eaefb0f007813c - src/common/inc/swref/published/disp/v03_00/dev_disp.h
64c123c90018c5ee122b02b02cbccfcd5ec32cab - src/common/inc/swref/published/t23x/t234/dev_fuse.h
4de33a60116ce3fa3f440db105561eddc21ce375 - src/common/shared/nvstatus/nvstatus.c
750ecc85242882a9e428d5a5cf1a64f418d59c5f - src/common/displayport/inc/dp_object.h
a6ff1a7aee138f6771c5b0bbedb593a2641e1114 - src/common/displayport/inc/dp_messages.h
80380945c76c58648756446435d615f74630f2da - src/common/displayport/inc/dp_timeout.h
cdb1e7797c250b0a7c0449e2df5ce71e42b83432 - src/common/displayport/inc/dp_merger.h
070b4f6216f19feebb6a67cbb9c3eb22dc60cf74 - src/common/displayport/inc/dp_buffer.h
02b65d96a7a345eaa87042faf6dd94052235009c - src/common/displayport/inc/dp_messageheader.h
78595e6262d5ab0e6232392dc0852feaf83c7585 - src/common/displayport/inc/dp_auxbus.h
e27519c72e533a69f7433638a1d292fb9df8772e - src/common/displayport/inc/dp_crc.h
325818d0a4d1b15447923e2ed92c938d293dc079 - src/common/displayport/inc/dp_hostimp.h
29ee5f4ef6670f06e96c07b36c11e3bad8bee6aa - src/common/displayport/inc/dp_address.h
f9149d441628fb2ad4fa630f74b9ca43ce710ba7 - src/common/displayport/inc/dp_groupimpl.h
8d8a5f0160922b6630fa796789c5d59cce94d9e0 - src/common/displayport/inc/dp_configcaps.h
570d78b90c470b48d47592a76404c190a0480023 - src/common/displayport/inc/dp_evoadapter.h
01f1dd58ed5bb12503fa45be7a6657cde0a857e2 - src/common/displayport/inc/dp_guid.h
cca426d571c6b01f7953180e2e550e55c629f0f4 - src/common/displayport/inc/dp_auxretry.h
11487c992494f502d1c48ff00982998504336800 - src/common/displayport/inc/dp_internal.h
f6e1b0850f5ed0f23f263d4104523d9290bb8669 - src/common/displayport/inc/dp_vrr.h
2f134665b274bb223c3f74e0ec5c6a0392fa6387 - src/common/displayport/inc/dp_discovery.h
07d22f84e6a386dad251761278a828dab64b6dd5 - src/common/displayport/inc/dp_bitstream.h
6617a20b016f0cd3278e37617d093b900a6b6afd - src/common/displayport/inc/dp_mainlink.h
96f8faea51e03cb6dd421e8c2b0a80d5a6ba8b93 - src/common/displayport/inc/dp_deviceimpl.h
eb9cdbb0a907926b1afd2a551ec19830f06ae205 - src/common/displayport/inc/dp_splitter.h
5bd3706ceea585df76a75dda7f9581b91ee8f998 - src/common/displayport/inc/dp_tracing.h
4a098c4d09dedc33b86748d5fe9a30d097675e9f - src/common/displayport/inc/dp_list.h
7b7d9a137027fbbedfc041465987fa4ed4198ce4 - src/common/displayport/inc/dp_edid.h
379d3933c90eaf9c35a0bad2bd6af960a321465f - src/common/displayport/inc/dp_wardatabase.h
800e4cb73c649c3c5ad56a8116a8de66aedd487c - src/common/displayport/inc/dp_auxdefs.h
e2075486b392d6b231f2f133922ac096ca4bc095 - src/common/displayport/inc/dp_ringbuffer.h
2c60a5ee5d2a248e51a0ea740395f377d2e51e25 - src/common/displayport/inc/dp_regkeydatabase.h
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
4a445c98d9541a53f77af2ffa154501793c01fe4 - src/common/displayport/inc/dp_connector.h
660ba146cf1242947eac3e2ded50ef4387ca8f35 - src/common/displayport/inc/dp_messagecodings.h
df11366a5bcfb641025f12cddf9b5e8c2ed008de - src/common/displayport/inc/dp_watermark.h
d2b00a849a81f6c6092e3b2c4e7ed20fcee62b39 - src/common/displayport/inc/dptestutil/dp_testmessage.h
70b155b0da07a92ede884a9cec715f67e6b5c3e8 - src/common/displayport/src/dp_list.cpp
37eabb1ab51cb38660eb24e294c63c8320750b96 - src/common/displayport/src/dp_sst_edid.cpp
fea946e5320e7de8e9229bca8d4a6a14b9e8db59 - src/common/displayport/src/dp_crc.cpp
d199166ebfe00628b9c4894a97c3bb9f09d355e5 - src/common/displayport/src/dp_messagecodings.cpp
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
56ee9318a7b51a04baa1d25d7d9a798c733dc1bc - src/common/displayport/src/dp_vrr.cpp
d991afdb694634e9df756184b5951739fc3fd0ab - src/common/displayport/src/dp_auxretry.cpp
554e6b7dadbb68ac0f3d2e368ca3fd90832ea254 - src/common/displayport/src/dp_discovery.cpp
45da2aabdaf6b5b2bf17a3deeb045feed1545415 - src/common/displayport/src/dp_messages.cpp
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
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
f83b3c17e9f26651f12c8835a682abdd66aed3a2 - src/common/displayport/src/dp_splitter.cpp
1543bbaba8f3e149239cf44be3c0d080c624d5ba - src/common/displayport/src/dp_buffer.cpp
fa4f4869d3d63c0180f30ae3736600a6627284c6 - src/common/displayport/src/dp_merger.cpp
b18924b1d50232b92223355f608fcca1b6d7ff46 - src/common/displayport/src/dp_configcaps.cpp
a0b68fce10eb0b95518cfd291e2d282872225295 - src/common/displayport/src/dptestutil/dp_testmessage.cpp
54c516f23671ec703a4e000f700c16dce640367a - src/common/modeset/timing/nvt_dmt.c
890d8c2898a3277b0fed360301c2dc2688724f47 - src/common/modeset/timing/nvt_util.c
cc04c12ebe4e2f7e31d0619ddd16db0c46b9db9e - src/common/modeset/timing/nvtiming.h
80063c05e3961073d23f76822bc9b55be533a6ee - src/common/modeset/timing/nvt_edid.c
446e1044fcc8f7711111fca6a49d2776dba6e24c - src/common/modeset/timing/nvt_edidext_displayid.c
aad5d6f2b238b9582a63ba1e467da13d86ee4ded - src/common/modeset/timing/dpsdp.h
5b1ce39d595dfb88141f698e73b0a64d26e9b31d - src/common/modeset/timing/nvt_dsc_pps.c
f75b1d98895bdccda0db2d8dd8feba53b88180c5 - src/common/modeset/timing/displayid.h
1997adbf2f6f5be7eb6c7a88e6660391a85d891b - src/common/modeset/timing/nvt_gtf.c
04693ced0777456f6b7005f19a4b7c39a6d20ee6 - src/common/modeset/timing/nvtiming_pvt.h
58b68f1272b069bb7819cbe86fd9e19d8acd0571 - src/common/modeset/timing/edid.h
849309f12f14d685acf548f9eed35fadea10c4e7 - src/common/modeset/timing/nvt_edidext_displayid20.c
974f52eb92bda6186510c71a2b6ae25cb0514141 - src/common/modeset/timing/nvt_dsc_pps.h
2868a1ecc76e5dd57535929890b922028522f4b5 - src/common/modeset/timing/nvt_edidext_861.c
28d7b753825d5f4a9402aff14488c125453e95c5 - src/common/modeset/timing/nvt_tv.c
cb1923187030de8ad82780663eb7151b68c3b735 - src/common/modeset/timing/displayid20.h
49df9034c1634d0a9588e5588efa832a71750a37 - src/common/modeset/timing/nvt_cvt.c
783bd7a92ca178ca396b15e8027561c8b61c09a3 - src/common/modeset/timing/nvt_displayid20.c
443c0a4b17a0019e4de3032c93c5cac258529f01 - src/common/modeset/hdmipacket/nvhdmipkt_internal.h
60ee78d72d4d6b03932b7111508784538f35381a - src/common/modeset/hdmipacket/nvhdmipkt.c
1babb2c7f11b95fd69bcbc9dcffeefea29d61118 - src/common/modeset/hdmipacket/nvhdmipkt_C671.c
9fbe6313ee438f301ac75f5ca2228e27b785c4f4 - src/common/modeset/hdmipacket/nvhdmipkt_0073.c
bb634bc2517a2653be2534602ab0f4712e0b1363 - src/common/modeset/hdmipacket/nvhdmipkt_9171.c
54a1b5e5aaf0848a72befc896ed12f1de433ad4f - src/common/modeset/hdmipacket/nvhdmipkt_9471.c
a1f52f0f78eec1d98b30b0f08bc1c5e88ae3d396 - src/common/modeset/hdmipacket/nvhdmipkt.h
9be7b7be94a35d1d9a04f269ff560dbbb7860a2a - src/common/modeset/hdmipacket/nvhdmipkt_9571.c
381e1b8aeaa8bd586c51db1f9b37d3634285c16a - src/common/modeset/hdmipacket/nvhdmipkt_class.h
5e12a290fc91202e4ba9e823b6d8457594ed72d3 - src/common/modeset/hdmipacket/nvhdmi_frlInterface.h
67db549636b67a32d646fb7fc6c8db2f13689ecc - src/common/modeset/hdmipacket/nvhdmipkt_9271.c
e6d500269128cbd93790fe68fbcad5ba45c2ba7d - src/common/modeset/hdmipacket/nvhdmipkt_C371.c
f2b434ed8bdd7624143654b7b3953d8c92e5a8e2 - src/common/modeset/hdmipacket/nvhdmipkt_common.h
33a5c7cd8cf4ecb7d9a76c9b623372949b538fc8 - src/common/softfloat/nvidia/nv-softfloat.h
be9407a273620c0ba619b53ed72d59d52620c3e4 - src/common/softfloat/nvidia/platform.h
f6d98979ab2d1e2b0d664333104130af6abbcad5 - src/common/softfloat/source/f64_to_i64_r_minMag.c
21a6232d93734b01692689258a3fdfbbf4ff089d - src/common/softfloat/source/s_roundToUI32.c
29321080baa7eab86947ac825561fdcff54a0e43 - src/common/softfloat/source/i32_to_f32.c
dafa667ee5dd52c97fc0c3b7144f6b619406c225 - src/common/softfloat/source/s_mulAddF64.c
108eec2abf1cddb397ce9f652465c2e52f7c143b - src/common/softfloat/source/f64_roundToInt.c
513a7d1c3053fc119efcd8ae1bcc9652edc45315 - src/common/softfloat/source/f32_lt.c
d19ff7dfece53875f2d6c6f7dd9e7772f7b0b7ec - src/common/softfloat/source/f32_to_i64_r_minMag.c
2db07bbb8242bc55a24ef483af6d648db0660de0 - src/common/softfloat/source/f32_add.c
c951c9dffa123e4f77ed235eca49ef9b67f9f3d2 - src/common/softfloat/source/s_subMagsF64.c
5c1026617c588bcf5f1e59230bd5bb900600b9ac - src/common/softfloat/source/f64_mul.c
5c4ee32cc78efc718aaa60ec31d0b00b1bee3c2c - src/common/softfloat/source/f64_to_ui64_r_minMag.c
6fa7493285fe2f7fdc0ac056a6367e90327905c2 - src/common/softfloat/source/f32_sub.c
da3b3f94a817909a3dc93ca5fa7675805c7979e0 - src/common/softfloat/source/f64_isSignalingNaN.c
d701741d8d6a92bb890e53deda1b795f5787f465 - src/common/softfloat/source/f64_le.c
baa7af4eea226140c26ffe6ab02a863d07f729fb - src/common/softfloat/source/f64_eq_signaling.c
2e5c29d842a8ebc5fbf987068dc9394cee609cc7 - src/common/softfloat/source/f32_to_ui64.c
054b23a974fc8d0bab232be433c4e516e6c1250a - src/common/softfloat/source/f64_lt_quiet.c
dde685423af544e5359efdb51b4bf9457c67fa3b - src/common/softfloat/source/f32_sqrt.c
fb062ecbe62a1f5878fd47f0c61490f2bde279dd - src/common/softfloat/source/s_roundToI32.c
8e58f0258218475616ff4e6317516d40ad475626 - src/common/softfloat/source/f32_lt_quiet.c
ab19c6b50c40b8089cb915226d4553d1aa902b0e - src/common/softfloat/source/f64_to_i32_r_minMag.c
86fdc2472526375539216461732d1db6a9f85b55 - src/common/softfloat/source/s_roundPackToF32.c
9266c83f3e50093cc45d7be6ab993a0e72af1685 - src/common/softfloat/source/s_roundPackToF64.c
2e0fec421f4defd293cf55c5f3af7d91f4b7d2cc - src/common/softfloat/source/ui64_to_f32.c
68843a93e1f46195243ef1164f611b759cf19d17 - src/common/softfloat/source/f32_le_quiet.c
00ab2120f71117161d4f6daaa9b90a3036a99841 - src/common/softfloat/source/f32_to_ui32.c
d0f8f08c225b60d88b6358d344404ba9df3038ec - src/common/softfloat/source/s_normSubnormalF32Sig.c
0108fe6f0d394ad72083aff9bb58507f97a0b669 - src/common/softfloat/source/ui32_to_f64.c
7bc81f5bc894118c08bfd52b59e010bc068ed762 - src/common/softfloat/source/ui32_to_f32.c
0adfa7e174cdb488bb22b06642e14e7fc6f49c67 - src/common/softfloat/source/s_roundToI64.c
c3ce12c227d25bc0de48fbcf914fc208e2448741 - src/common/softfloat/source/f64_sub.c
b9fd15957f7ae5effeccb5d8adaa7434b43f44e1 - src/common/softfloat/source/s_roundToUI64.c
29396b7c23941024a59d5ea06698d2fbc7e1a6ca - src/common/softfloat/source/f64_to_i64.c
ae25eea499b3ea5bdd96c905fd0542da11083048 - src/common/softfloat/source/s_normRoundPackToF64.c
b22876b0695f58ee56143c9f461f1dde32fefbf3 - src/common/softfloat/source/f64_to_ui64.c
b8c5ccc1e511637d8b2ba2657de4937b80c01c07 - src/common/softfloat/source/f32_le.c
1ff879eca2a273293b5cd6048419b2d2d8063b93 - src/common/softfloat/source/f64_mulAdd.c
0e9694d551848d88531f5461a9b3b91611652e9a - src/common/softfloat/source/f64_to_ui32_r_minMag.c
5a5e0d9f1ee7e8c0d1d4f9fbcf6eba330a5f1792 - src/common/softfloat/source/f32_isSignalingNaN.c
bc992c88f3de09e3a82447cf06dbde7c6604f7f8 - src/common/softfloat/source/f64_to_f32.c
1a86a6948bf6768bd23a19f1f05d40968c1d2b15 - src/common/softfloat/source/f64_rem.c
50daf9186bc5d0180d1453c957164b136d5ffc89 - src/common/softfloat/source/f64_eq.c
09cb0cdb90eb23b53cd9c1a76ba26021084710d1 - src/common/softfloat/source/s_addMagsF32.c
9f4d355d85fbe998e243fe4c7bbf8ad23062b6e2 - src/common/softfloat/source/i64_to_f64.c
fd40a71c7ebf9d632a384fadf9487cfef4f3ea98 - src/common/softfloat/source/s_shiftRightJam128.c
aaf6ccb77a1a89fa055a0fb63513297b35e2e54b - src/common/softfloat/source/f64_le_quiet.c
38bd00e9c4d2f1354c611404cca6209a6c417669 - src/common/softfloat/source/s_countLeadingZeros64.c
d9a86343e6cc75714f65f690082dd4b0ba724be9 - src/common/softfloat/source/s_roundPackToF16.c
0bf499c0e3a54186fa32b38b310cc9d98ccdcfe3 - src/common/softfloat/source/f32_eq.c
d4b26dc407a891e9ff5324853f1845a99c5d5cd2 - src/common/softfloat/source/f32_to_i32.c
296c40b0589536cb9af3231ad3dcd7f2baaa6887 - src/common/softfloat/source/f64_lt.c
0d8e42636a3409a647291fdb388001c2b11bba07 - src/common/softfloat/source/f32_to_f16.c
ec1a797b11f6e846928a4a49a8756f288bda1dfa - src/common/softfloat/source/i32_to_f64.c
729e790328168c64d65a1355e990274c249bbb3a - src/common/softfloat/source/f32_to_i32_r_minMag.c
9a5b93459ace2da23964da98617d6b18006fab86 - src/common/softfloat/source/s_countLeadingZeros8.c
84b0a01ba2a667eb28b166d45bd91352ead83e69 - src/common/softfloat/source/i64_to_f32.c
4b37be398b3e73ae59245f03b2ba2394fc902b4d - src/common/softfloat/source/s_normSubnormalF64Sig.c
6f83fa864007e8227ae09bb36a7fdc18832d4445 - src/common/softfloat/source/f32_mul.c
daeb408588738b3eb4c8b092d7f92ac597cf1fc6 - src/common/softfloat/source/f32_rem.c
a94c8c2bd74633027e52e96f41d24714d8081eb4 - src/common/softfloat/source/s_approxRecipSqrt_1Ks.c
69dc4cc63b2a9873a6eb636ee7cb704cbd502001 - src/common/softfloat/source/f64_to_ui32.c
50b3147f8413f0595a4c3d6e6eeab84c1ffecada - src/common/softfloat/source/s_normRoundPackToF32.c
bbc70102b30f152a560eb98e7a1a4b11b9ede85e - src/common/softfloat/source/f64_sqrt.c
760fd7c257a1f915b61a1089b2acb143c18a082e - src/common/softfloat/source/s_addMagsF64.c
ebb4f674b6213fec29761fc4e05c1e3ddeda6d17 - src/common/softfloat/source/f32_mulAdd.c
4445b1fbbd507144f038fd939311ff95bc2cf5f1 - src/common/softfloat/source/ui64_to_f64.c
871cb1a4037d7b4e73cb20ad18390736eea7ae36 - src/common/softfloat/source/f32_to_ui64_r_minMag.c
ce37cdce572a3b02d42120e81c4969b39d1a67b6 - src/common/softfloat/source/f64_to_i32.c
c29536f617d71fe30accac44b2f1df61c98a97dc - src/common/softfloat/source/f64_div.c
54cbeb5872a86e822bda852ec15d3dcdad4511ce - src/common/softfloat/source/f64_add.c
e7890082ce426d88b4ec93893da32e306478c0d1 - src/common/softfloat/source/s_approxRecipSqrt32_1.c
824383b03952c611154bea0a862da2b9e2a43827 - src/common/softfloat/source/s_subMagsF32.c
00c612847b3bd227a006a4a2697df85866b80315 - src/common/softfloat/source/s_mulAddF32.c
7c8e5ab3f9bf6b2764ce5fffe80b2674be566a12 - src/common/softfloat/source/softfloat_state.c
e4930e155580a0f5aa7f3694a6205bc9aebfe7aa - src/common/softfloat/source/f32_to_f64.c
1484fc96d7731695bda674e99947280a86990997 - src/common/softfloat/source/f32_to_i64.c
2960704c290f29aae36b8fe006884d5c4abcabb4 - src/common/softfloat/source/f32_div.c
23b76c1d0be64e27a6f7e2ea7b8919f1a45a8e7c - src/common/softfloat/source/f32_to_ui32_r_minMag.c
fe06512577e642b09196d46430d038d027491e9f - src/common/softfloat/source/f32_eq_signaling.c
5e6f9e120a17cc73297a35e4d57e4b9cbce01780 - src/common/softfloat/source/s_mul64To128.c
e0ad81cfb5d2c0e74dc4ece9518ca15ffc77beaf - src/common/softfloat/source/f32_roundToInt.c
d8b0c55a49c4fa0b040541db6d5ff634d7d103e7 - src/common/softfloat/source/8086-SSE/s_propagateNaNF64UI.c
a6d5c83f6a0542b33ac9c23ac65ef69002cfff9d - src/common/softfloat/source/8086-SSE/s_propagateNaNF32UI.c
86cda6550cb02bbf595d1667573e4be83702a95e - src/common/softfloat/source/8086-SSE/specialize.h
3d0dbc0a672d039a6346e1c21ddf87ffc9181978 - src/common/softfloat/source/8086-SSE/s_f32UIToCommonNaN.c
d152bc457b655725185bdff42b36bb96d6e6715e - src/common/softfloat/source/8086-SSE/s_commonNaNToF16UI.c
1dd1b424087d9c872684df0c1b4063b077992d5f - src/common/softfloat/source/8086-SSE/s_f64UIToCommonNaN.c
252c816378fddab616b1f2a61e9fedd549224483 - src/common/softfloat/source/8086-SSE/s_commonNaNToF64UI.c
21a11759ed2afd746a47c4d78b67640c2d052165 - src/common/softfloat/source/8086-SSE/s_commonNaNToF32UI.c
0cbae7a5abc336331d460cbd3640d2cda02af434 - src/common/softfloat/source/8086-SSE/softfloat_raiseFlags.c
4cd1d6cfca3936a39aab9bc0eb622f5c7c848be1 - src/common/softfloat/source/include/softfloat_types.h
1ded4df85ff5fa904fa54c27d681265425be1658 - src/common/softfloat/source/include/primitiveTypes.h
9645e179cf888bcd0e3836e8126b204b4b42b315 - src/common/softfloat/source/include/softfloat.h
de09949a0ca5cd2a84b882b5b5c874d01d3ae11a - src/common/softfloat/source/include/primitives.h
f36c896cfa01f1de9f9420189319e4e00c7fc52a - src/common/softfloat/source/include/internals.h
a71d2c98bc2dc5445436cd96ac5c7e6a57efcf84 - src/nvidia/Makefile
c5f16fdf43ca3d2845d120c219d1da11257072b0 - src/nvidia/nv-kernel.ld
1a98a2aaf386cd3d03b4b5513d6a511c60f71c2c - src/nvidia/arch/nvalloc/unix/include/nv-reg.h
4750735d6f3b334499c81d499a06a654a052713d - src/nvidia/arch/nvalloc/unix/include/nv-caps.h
3c61881e9730a8a1686e422358cdfff59616b670 - src/nvidia/arch/nvalloc/unix/include/nv_escape.h
2d644a3f78bcda50e813b25156e9df07ec6da7b8 - src/nvidia/arch/nvalloc/unix/include/nv.h
e69045379ed58dc0110d16d17eb39a6f600f0d1d - src/nvidia/arch/nvalloc/unix/include/nv-ioctl-lockless-diag.h
ae7d5cb2c57beeea12724e09d957e233a71c12a1 - src/nvidia/arch/nvalloc/unix/include/nv-priv.h
507d35d1d4c5ba94ef975f75e16c63244d6cd650 - src/nvidia/arch/nvalloc/unix/include/nv-ioctl.h
1e89b4a52a5cdc6cac511ff148c7448d53cf5d5c - src/nvidia/arch/nvalloc/unix/include/os_custom.h
499e72dad20bcc283ee307471f8539b315211da4 - src/nvidia/arch/nvalloc/unix/include/nv-unix-nvos-params-wrappers.h
5f2a30347378f2ed028c9fb7c8abea9b6032141c - src/nvidia/arch/nvalloc/unix/include/osapi.h
c9120c6a33932c7514608601f82ea85d2386b84f - src/nvidia/arch/nvalloc/unix/include/os-interface.h
ddfedb3b81feb09ea9daadf1a7f63f6309ee6e3b - src/nvidia/arch/nvalloc/unix/include/rmobjexportimport.h
9c7b09c55aabbd670c860bdaf8ec9e8ff254b5e9 - src/nvidia/arch/nvalloc/unix/include/nv-kernel-rmapi-ops.h
1d8b347e4b92c340a0e9eac77e0f63b9fb4ae977 - src/nvidia/arch/nvalloc/unix/include/nv-ioctl-numbers.h
3a26838c4edd3525daa68ac6fc7b06842dc6fc07 - src/nvidia/arch/nvalloc/unix/include/nv-gpu-info.h
7188b83b28051b40cda60f05cacfa12b94ade4dc - src/nvidia/arch/nvalloc/unix/include/osfuncs.h
8f725a01c2a29658580936a87bdd33308030a332 - src/nvidia/arch/nvalloc/unix/src/os.c
63edc719390a814eb70290e709634d133ad198cc - src/nvidia/arch/nvalloc/unix/src/osmemdesc.c
11c6d988bccbdf49ac241d77e6363c7843a0191f - src/nvidia/arch/nvalloc/unix/src/power-management-tegra.c
6ca29f3d6b38fb5d05ff222cd1b79ade811a74b2 - src/nvidia/arch/nvalloc/unix/src/osunix.c
7ce04b5b6d90c9a433af667c8644b8e328af9968 - src/nvidia/arch/nvalloc/unix/src/unix_console.c
b5b409625fde1b640e4e93276e35248f0fccfa4c - src/nvidia/arch/nvalloc/unix/src/gcc_helper.c
16e1482d8a9287bc2fd3da28dd62066e4e3ff92b - src/nvidia/arch/nvalloc/unix/src/exports-stubs.c
15920addb99f39201a7a7cc9c4e7a9e22c13d118 - src/nvidia/arch/nvalloc/unix/src/osinit.c
b7f20cd0a65957e5f5639cb561ca14893ee024cb - src/nvidia/arch/nvalloc/unix/src/osapi.c
eccfc4f261fd8531254eb2961120073aac9847db - src/nvidia/arch/nvalloc/unix/src/rmobjexportimport.c
690927567b5344c8030e2c52d91f824bb94e956c - src/nvidia/arch/nvalloc/unix/src/registry.c
a28937330829b4f27a9da5e2c3776ceb293b6085 - src/nvidia/arch/nvalloc/unix/src/os-hypervisor-stubs.c
69d2719c759456a22ccc4de470e5d15cf0c3d26c - src/nvidia/arch/nvalloc/unix/src/escape.c
d1089d8ee0ffcdbf73a42d7c4edb90769aa79d8c - src/nvidia/arch/nvalloc/common/inc/nvrangetypes.h
b417d06ed1845f5ed69181d8eb9de6b6a87fa973 - src/nvidia/arch/nvalloc/common/inc/nv-firmware.h
e181d568b36f4d6e717d6d26c7bbe4b4ed968f4f - src/nvidia/generated/g_gpu_mgmt_api_nvoc.c
73a37ad59b9b13b61eb944748b6c2ba3cad7b630 - src/nvidia/generated/g_traceable_nvoc.h
eefa27872e4acde78a18211b8ab51bc5436b6cfe - src/nvidia/generated/g_nv_debug_dump_nvoc.h
47bed9b41213c837c4ca08aaaefe079b84dfd52f - src/nvidia/generated/g_client_nvoc.c
0a6b27d74e5e4ba872d77bfd369ddb5772abd8f8 - src/nvidia/generated/g_event_buffer_nvoc.h
653b72892f7c3ce7fd3e28690863ef89826b5314 - src/nvidia/generated/g_context_dma_nvoc.c
6771b718fe182d524864f55fa23f145012205d5b - src/nvidia/generated/g_objtmr_nvoc.h
bc3759a264528b7ab329e6813cdf37aeedf86279 - src/nvidia/generated/g_allclasses.h
33932ed2752329a63bcafd88f00e69203c3621c0 - src/nvidia/generated/g_gpu_mgr_nvoc.h
2239839c8a780a87e786439a49ab63e25d25001a - src/nvidia/generated/g_rmconfig_util.h
17c69e14076324c230bbe68b55141089c1f4d10e - src/nvidia/generated/g_os_desc_mem_nvoc.h
47f006ce959471f8ecd2a7b05d83d854610a521b - src/nvidia/generated/g_system_mem_nvoc.c
906af83650985c58b63fe3e1f24b75b5ac62d90d - src/nvidia/generated/g_gpu_nvoc.c
b459db8ccf299f7bda0fa9fa18ef1e3aeb2996eb - src/nvidia/generated/g_gpu_user_shared_data_nvoc.c
8db5b2345278ce409562ca35754447d353dd54d7 - src/nvidia/generated/g_rs_resource_nvoc.h
170a42c047d0085873a48db0d83d59feb8dc327f - src/nvidia/generated/g_binary_api_nvoc.c
a1bfb789c1e23bac2b7a31255b7d738e40a290f2 - src/nvidia/generated/g_mem_nvoc.h
fc7f913eab7ef26b877606e0593928784c3121ec - src/nvidia/generated/g_device_nvoc.c
d960a819d29d7e968eaab0e7a29897426b7ba646 - src/nvidia/generated/g_io_vaspace_nvoc.h
261e6dfca63b12cb12e97a2f0c4447a3954dbe0a - src/nvidia/generated/g_rpc-structures.h
b9f25e208f5ea6f566dbd9cbcaaa30cd0786c31b - src/nvidia/generated/g_client_nvoc.h
9b0d4695e84ec959790dd553944cb44685c5c251 - src/nvidia/generated/g_event_nvoc.h
10645f82dd031d0aa6f4a3dfc039ef776f2fdee9 - src/nvidia/generated/g_hal_nvoc.h
a4213261e7f2ae0014f7056c33ab04bacf07c9de - src/nvidia/generated/g_resource_fwd_decls_nvoc.h
693cd3e7b93e9377634800ff2b3669939ba10603 - src/nvidia/generated/g_kernel_head_nvoc.h
d0a43a5d4941392b3c6c1b5a0d156edc26559ded - src/nvidia/generated/g_disp_inst_mem_nvoc.c
3c7d16d75ef53c09d7076c55976e71fd17a3f483 - src/nvidia/generated/g_subdevice_nvoc.h
d2a8f1901d17c711f0f40dc32289ede7d9b440c7 - src/nvidia/generated/rmconfig.h
57431742e2f1bbefc9142db49a84f4e8264e4673 - src/nvidia/generated/g_mem_list_nvoc.h
f9bdef39159a8475626a0edcbc3a53505a0ff80a - src/nvidia/generated/g_os_hal.h
b0f47afbc6aefce339db95801f48823989abad8a - src/nvidia/generated/g_mem_desc_nvoc.h
61cb019a28b25479d65022226623be2d20f32429 - src/nvidia/generated/g_nv_name_released.h
1ca8ad4d9216aef1df145358c48e7ca533927e25 - src/nvidia/generated/g_objtmr_nvoc.c
97bab26b95f21f4618fd023284b20dd4d5a76ad4 - src/nvidia/generated/g_disp_capabilities_nvoc.h
12cb2f4228fe81762587413c7f346f3d271d9b6b - src/nvidia/generated/g_eng_state_nvoc.h
2cac1d138a8bcf99e70068f50698f6cdd3dc57dd - src/nvidia/generated/g_syncpoint_mem_nvoc.c
14336cd31573538728e0bf17941681b9d91d2b12 - src/nvidia/generated/g_gpu_access_nvoc.c
14450b18d002d4e1786d4630ef4f1994c07ef188 - src/nvidia/generated/g_odb.h
d47bc1508583e02dc8234efce85fb7803dbd3d97 - src/nvidia/generated/g_hypervisor_nvoc.h
85580813dbcf78bf4aeecf5e55054447396dcfe3 - src/nvidia/generated/g_gpu_db_nvoc.c
a42b32adb0533fafb2de6b127c7e1939029cdeb5 - src/nvidia/generated/g_system_nvoc.c
8f1b0c4a6b75280b5155aef8490c95237bbf6f97 - src/nvidia/generated/g_gpu_group_nvoc.h
42fac2ccb00006825e7d42a6b23264870365ace6 - src/nvidia/generated/g_gpu_user_shared_data_nvoc.h
631ac1d7bfa00f66e699937b8cabc0cbbc26d151 - src/nvidia/generated/g_rs_server_nvoc.c
0b2233e5cb68257231dd94310559bc09635c8279 - src/nvidia/generated/g_generic_engine_nvoc.c
c2eae693c1b8d8502db368048f3b1c45d0576dc5 - src/nvidia/generated/g_chips2halspec_nvoc.h
0097015ef25011bee849966ef5248d206ab0f816 - src/nvidia/generated/g_gpu_resource_nvoc.h
b18ed7a5d71571b57266995f0d30317814e8bd6e - src/nvidia/generated/g_gpu_access_nvoc.h
81f915ae199df67c1884bfc18f3d23f20941af6a - src/nvidia/generated/g_dce_client_nvoc.c
87510f9f25364673fedfd1d820aedc85852ef5df - src/nvidia/generated/g_rpc-message-header.h
dad5def7d6c24268ac1e1a75038cbf33900745ff - src/nvidia/generated/g_binary_api_nvoc.h
35889e5f6bdc996fa95c76d05e7b8902328d450b - src/nvidia/generated/g_rs_client_nvoc.h
92c99fd64caa9f78664ed1fd54313ee82e2cf9c7 - src/nvidia/generated/g_disp_channel_nvoc.h
d3b89f97bb0f4c5c0ca44e74040aab24c70ae06f - src/nvidia/generated/g_generic_engine_nvoc.h
f1e98f21f75eaba821fe16f2410921a4fd7c54ee - src/nvidia/generated/g_mem_mgr_nvoc.h
803eb8b520597468e3dc99ecd29ffc1027dfe4be - src/nvidia/generated/g_context_dma_nvoc.h
7f89931ecb53fb0b88da1be5489fe50e3d7897c3 - src/nvidia/generated/g_resserv_nvoc.h
549314acf103e21a4cab113114f719626202a19f - src/nvidia/generated/g_tmr_nvoc.c
9b8e6b29a48ff022dda092cc8139dbe5ac6dedd8 - src/nvidia/generated/g_rs_client_nvoc.c
6742231d4f59cc03ed822b80fb3995d1821de488 - src/nvidia/generated/g_standard_mem_nvoc.c
0e15fddc0426c42f3d22e5cb5609b5193adb7145 - src/nvidia/generated/g_standard_mem_nvoc.h
24fe74bdc3aa966907752a24a7d6bff2c74abd4f - src/nvidia/generated/g_console_mem_nvoc.h
4f3ff51033e4ef9491e8b345ffea36dfb5122055 - src/nvidia/generated/g_chips2halspec_nvoc.c
5a46be3060122eca672dc3bf11bdb6e68700b5e4 - src/nvidia/generated/g_gpu_halspec_nvoc.h
e4ccb216aafed837a37fca90284b0a0413b3080d - src/nvidia/generated/g_kernel_head_nvoc.c
c010d93fd293ec399a0cd05662a177e7251c7b1e - src/nvidia/generated/g_event_nvoc.c
1268ee54592c8ae1078b72bfaff882549efbcd3c - src/nvidia/generated/g_disp_capabilities_nvoc.c
dc922421b0f41b7b8f0219caa623c099fc3f083d - src/nvidia/generated/g_ioaccess_nvoc.h
a44899c21c77899b3b8deb7b2613b16841bbf397 - src/nvidia/generated/g_gpu_mgr_nvoc.c
431796f7485743a0848883a204676424b4a3b65f - src/nvidia/generated/g_hal.h
97ce053e6b047ecd0803a7571d061516de9d95ff - src/nvidia/generated/g_hal_mgr_nvoc.c
1d66bab50a7d39faa2b0fec469a4512d2c7610d5 - src/nvidia/generated/g_rmconfig_util.c
bfb7c703aa0e55ed5df9310a233861e43ef5c828 - src/nvidia/generated/g_prereq_tracker_nvoc.h
ecb4db5b676f0541c851ba9454577812e1a07023 - src/nvidia/generated/g_object_nvoc.c
b5d4219786bd77483ce70a770caac52db51566cc - src/nvidia/generated/g_ioaccess_nvoc.c
61d09dd789fc4159344cec4c02ff9db13cd246eb - src/nvidia/generated/g_hal_mgr_nvoc.h
dbf11a9f931cfac248c3e6006bedeadb3d062670 - src/nvidia/generated/g_gpu_group_nvoc.c
155b6249c4fd472218cef640fa0a665cec10bfa4 - src/nvidia/generated/g_disp_sf_user_nvoc.h
cf2a81f40855ceb13b0dc18fb1ee790ba939bfb2 - src/nvidia/generated/g_event_buffer_nvoc.c
e70cc806acae6fc1c3f4ffc283ded8351f3482c4 - src/nvidia/generated/g_hda_codec_api_nvoc.c
19d73b04597bca6d3a7dd82d327e6cbf4a591a65 - src/nvidia/generated/g_eng_state_nvoc.c
a044b01f708a5690f1796579904539791e24d5a3 - src/nvidia/generated/g_hda_codec_api_nvoc.h
8a76494ebc5809ed30c31a9afa2a46bf2463e6e5 - src/nvidia/generated/g_dce_client_nvoc.h
9b4cf69383d0a7b7492b2fa28983cfe4d88c3263 - src/nvidia/generated/g_vaspace_nvoc.h
262192e794cba0bb120cbfe75ee037e868e34ef3 - src/nvidia/generated/g_subdevice_nvoc.c
93f9738c0e8aa715592306ddf023adf6b548dcc4 - src/nvidia/generated/g_nvh_state.h
6aea089965620df057ab6b900496590ca26772b2 - src/nvidia/generated/g_virt_mem_mgr_nvoc.c
fcb89aff81d5e2b0a4a39069356ee4644bf53b2b - src/nvidia/generated/g_os_nvoc.c
3b0e038829647cfe0d8807579db33416a420d1d2 - src/nvidia/generated/g_chips2halspec.h
b378d336af4d5cb4b1fb13b85042fad1fe02f4cc - src/nvidia/generated/g_journal_nvoc.h
eb95c379eec668bfd697bcd4977d4f18da0b56bb - src/nvidia/generated/g_device_nvoc.h
8e8c58d6e99de01acf926026506ab91499109dd4 - src/nvidia/generated/g_gpu_nvoc.h
734ea4782083e4a7b940722577dc75177446eed1 - src/nvidia/generated/g_io_vaspace_nvoc.c
bdb198b18c700dc396f73191a8e696d106a1f716 - src/nvidia/generated/g_resource_nvoc.h
7c698deeb69b4e92af3c7c4e6fc6274b75dab05c - src/nvidia/generated/g_disp_channel_nvoc.c
31270057a91fcd2dc7dbf1abed9e3f67d8db1787 - src/nvidia/generated/g_rmconfig_private.h
44bcd3503d90703a33a7bb9c75b41111d092c5f8 - src/nvidia/generated/g_client_resource_nvoc.c
574adefb17ee3e2a7d85262f8ce4d8b4bc4367b4 - src/nvidia/generated/g_gpu_halspec_nvoc.c
c1652e6cc404f23660ee440b61c6d0b9149ff593 - src/nvidia/generated/g_gpu_resource_nvoc.c
aac0c7df733e179f2a5906ab66b302a5bee82cbe - src/nvidia/generated/g_gpu_db_nvoc.h
09597f23d6a5440258656be81e7e6709390128f8 - src/nvidia/generated/g_hal_private.h
5274a731ecccd2ad0e57761831523e25cd742676 - src/nvidia/generated/g_sdk-structures.h
b35821f54f7ec965edd25a60e58d7639cd19df19 - src/nvidia/generated/g_hal_archimpl.h
f5ad33480e2b73c6ff2bfd586e027f19318a597c - src/nvidia/generated/g_disp_console_mem_nvoc.h
af86a67a1c33acc193efa6dba8bc46ebe5dbb5eb - src/nvidia/generated/g_gpu_class_list.c
c5021789fed61a37794ade5a3632a8eb37c0c27f - src/nvidia/generated/g_kern_disp_nvoc.h
8b5821085e5aabc00408e7a90e78b2471de6797e - src/nvidia/generated/g_os_nvoc.h
87c14e1c1a8f37f139f6a99efaf7752d6db48db5 - src/nvidia/generated/g_kern_disp_nvoc.c
a97bf85ce6681aae086e0415aecaebf0208bfebb - src/nvidia/generated/g_tmr_nvoc.h
d44164b90bdf5ed4a2ce9a5d13f680b8a997a5cb - src/nvidia/generated/g_disp_objs_nvoc.h
3b08d4bb1612bb193cd2f26229b119cc43284879 - src/nvidia/generated/g_rs_server_nvoc.h
ddc0ac4e1d8b8aef15e147f1f85f8df37c196763 - src/nvidia/generated/g_hal_register.h
aac848bd48955659eb5e07fcac70e6fe3c3a137a - src/nvidia/generated/g_hal_nvoc.c
b3b3ee6b514249e553187dc14a98f74bdd9fa6c6 - src/nvidia/generated/g_virt_mem_mgr_nvoc.h
16c7821c01a4e728d66a25ca6eb824ce85ff908e - src/nvidia/generated/g_rs_resource_nvoc.c
5c65c680b77a501fd98460c4ce8fecd7ed95be14 - src/nvidia/generated/g_mem_mgr_nvoc.c
4a99aba1b2a7bd0d5fb8ef6de414e14858d068ba - src/nvidia/generated/g_console_mem_nvoc.c
142a5e1b07a3bbe2952b27f4a65a133f5a100dc3 - src/nvidia/generated/g_prereq_tracker_nvoc.c
c8d6ddc934e0c4ae3fd2d2dc81d0d1a91c8b8d52 - src/nvidia/generated/g_disp_inst_mem_nvoc.h
76b1f545e3712a2f8e7c31b101acd9dd682c52f8 - src/nvidia/generated/g_traceable_nvoc.c
c0750d49486dcf1718083d5deaef16c718b9a909 - src/nvidia/generated/g_eng_desc_nvoc.h
ad695d35b837b970b8f50a280d400ffed5067c0f - src/nvidia/generated/g_os_desc_mem_nvoc.c
b114f65bcee6bda607f4549827ccb298f7449c03 - src/nvidia/generated/g_disp_objs_nvoc.c
b0089bee11caa0d8994b39eaecfb42ca3507de37 - src/nvidia/generated/g_syncpoint_mem_nvoc.h
b30dc7b4114007f7649e18a7be2d829a3752447a - src/nvidia/generated/g_mem_nvoc.c
06094e14a41e58c8a687bc8b64197a73c0c2b61a - src/nvidia/generated/g_system_nvoc.h
125b688444f16d9cb3902a9f79959c05c12397e3 - src/nvidia/generated/g_disp_sf_user_nvoc.c
67df2bc381609f290f173ea73f3e8125ac073888 - src/nvidia/generated/g_gpu_mgmt_api_nvoc.h
71185f1534d3c53954c271566b610045aef3ed98 - src/nvidia/generated/g_system_mem_nvoc.h
47ced25e3252d402b9a5c30115705d16651ab460 - src/nvidia/generated/g_object_nvoc.h
a4d3356c085ac066331092ca8abc714eae503abc - src/nvidia/generated/g_disp_console_mem_nvoc.c
493a547850d9e7cdf74350de0e42aef2f66869a9 - src/nvidia/generated/g_client_resource_nvoc.h
e41a55d75416e6d9978d2cf788553acdb9336afd - src/nvidia/generated/g_resource_nvoc.c
ac3965eea078f1998c3a3041f14212578682e599 - src/nvidia/generated/g_vaspace_nvoc.c
3b1586e0aebb66d31190be64b1109232ee3467bf - src/nvidia/generated/g_ref_count_nvoc.h
fff3ebc8527b34f8c463daad4d20ee5e33321344 - src/nvidia/inc/lib/ref_count.h
ec26741397ebd68078e8b5e34da3b3c889681b70 - src/nvidia/inc/lib/base_utils.h
f8d9eb5f6a6883de962b63b4b7de35c01b20182f - src/nvidia/inc/lib/protobuf/prb.h
601edb7333b87349d791d430f1cac84fb6fbb919 - src/nvidia/inc/lib/zlib/inflate.h
083667047714a008219fa41b3a7deb9803bbe48a - src/nvidia/inc/libraries/poolalloc.h
8dd7f2d9956278ed036bbc288bff4dde86a9b509 - src/nvidia/inc/libraries/eventbufferproducer.h
1b28bd0ee2e560ca2854a73a3ee5fb1cf713d013 - src/nvidia/inc/libraries/nvoc/utility.h
3919368b5b4cdd72d7da49801232048b5e786845 - src/nvidia/inc/libraries/nvoc/prelude.h
e35ff9733ea7fbffe0641399ccb0fd92a492e30d - src/nvidia/inc/libraries/nvoc/runtime.h
85b30b26f790b55f5370bbe9bb07349c62353841 - src/nvidia/inc/libraries/nvoc/object.h
664ff0e10e893923b70425fa49c9c48ed0735573 - src/nvidia/inc/libraries/nvoc/rtti.h
56b8bae7756ed36d0831f76f95033f74eaab01db - src/nvidia/inc/libraries/prereq_tracker/prereq_tracker.h
a5e6f98ac5fb53fd26ee429c65b73fa1a4715631 - src/nvidia/inc/libraries/ioaccess/ioaccess.h
c314121149d3b28e58a62e2ccf81bf6904d1e4bc - src/nvidia/inc/libraries/utils/nvmacro.h
d0458cdc61eb650d57429f9ae58e60a62ab93025 - src/nvidia/inc/libraries/utils/nvrange.h
1aabd992631089ec24621835e046ddf2e2fd4232 - src/nvidia/inc/libraries/utils/nvbitvector.h
9aa5870d052a45c2489a6ea1a4f2e30fbc52d6be - src/nvidia/inc/libraries/utils/nv_enum.h
d229861edca62007af83b86aa7fc1c77e957aa6f - src/nvidia/inc/libraries/utils/nvprintf.h
77db350059fa3326500af4269f09e1f02c1ab07b - src/nvidia/inc/libraries/utils/nvassert.h
9f76ab27650b137566bf49202857c3195674d44a - src/nvidia/inc/libraries/containers/map.h
63a8244e13f9217461f624ab46281716ef42b20f - src/nvidia/inc/libraries/containers/ringbuf.h
5f116730f8b7a46e9875850e9b6ffb2a908ad6c2 - src/nvidia/inc/libraries/containers/btree.h
fc211c8276ebcee194080140b5f3c30fba3dfe49 - src/nvidia/inc/libraries/containers/queue.h
67ecfa8adcb2b5bb5eb8e425bc5889390fd77ca8 - src/nvidia/inc/libraries/containers/list.h
1dacc1c1efc757c12e4c64eac171474a798b86fd - src/nvidia/inc/libraries/containers/eheap_old.h
4c8c52993d4a99f7552cd10e8c1fc8aea0330a4a - src/nvidia/inc/libraries/containers/vector.h
a23790cded20fe2347c19083f2b7430aeb26ab27 - src/nvidia/inc/libraries/containers/type_safety.h
5cabf8b70c3bb188022db16f6ff96bcae7d7fe21 - src/nvidia/inc/libraries/containers/multimap.h
f97ea1dce9d593ecc599df510c98054db2b2d1a2 - src/nvidia/inc/libraries/nvlog/nvlog_printf.h
2eb9b0121765c0a3e1085f41a3d47c89e7d5dcb0 - src/nvidia/inc/libraries/nvlog/nvlog.h
d2c035e67e295b8f33f0fc52d9c30e43c5d7c2ba - src/nvidia/inc/libraries/nvlog/internal/nvlog_printf_internal.h
7f623508b3f3631ce89dad6d8762f593b1ac0d71 - src/nvidia/inc/libraries/tls/tls.h
87a130551593551380ac3e408f8044cc0423c01a - src/nvidia/inc/libraries/nvport/nvport.h
2487ffc1eb1e50b27ba07e0581da543d80bdaa72 - src/nvidia/inc/libraries/nvport/safe.h
199df020beb31a865f19ceec20f8f758e757c39a - src/nvidia/inc/libraries/nvport/debug.h
147d47ef4bd860394d1d8ae82c68d97887e2898b - src/nvidia/inc/libraries/nvport/core.h
6d698ca4fc5e48c525f214a57e1de0cc4aa9e36b - src/nvidia/inc/libraries/nvport/thread.h
6065fa9a525d80f9b61acb19e476066823df0700 - src/nvidia/inc/libraries/nvport/sync.h
a1d93b6ec8ff01a3c2651e772a826ee11a7781d7 - src/nvidia/inc/libraries/nvport/util.h
fb5a011275328b7c1edc55abc62e604462b37673 - src/nvidia/inc/libraries/nvport/atomic.h
0fe8c0bd2791b105baf7cad7a90797ed9f743115 - src/nvidia/inc/libraries/nvport/memory.h
f31ed19d0588861b8c2b1489dd4e70d430110db5 - src/nvidia/inc/libraries/nvport/crypto.h
4e25b80a74aad3f6403d7c34cd55f0ed58824888 - src/nvidia/inc/libraries/nvport/cpu.h
7d8efe42c402cbbdd1710ef1f7498bf3e883a743 - src/nvidia/inc/libraries/nvport/string.h
23afbd04f4e4b3301edcfdec003c8e936d898e38 - src/nvidia/inc/libraries/nvport/inline/debug_unix_kernel_os.h
9596b274389ea56acff6ca81db8201f41f2dd39d - src/nvidia/inc/libraries/nvport/inline/atomic_clang.h
a8c9b83169aceb5f97d9f7a411db449496dc18f6 - src/nvidia/inc/libraries/nvport/inline/util_generic.h
bbece45965ffbc85fbd383a8a7c30890c6074b21 - src/nvidia/inc/libraries/nvport/inline/util_gcc_clang.h
254e86ee0c1d5c0ad652bc1f3182b46f6d5c0f3b - src/nvidia/inc/libraries/nvport/inline/memory_tracking.h
1d6a239ed6c8dab1397f056a81ff456141ec7f9c - src/nvidia/inc/libraries/nvport/inline/util_valist.h
f267235fd8690e1b1d7485d3a815841607683671 - src/nvidia/inc/libraries/nvport/inline/safe_generic.h
645734ed505a4d977490e54b26cdf49657e20506 - src/nvidia/inc/libraries/nvport/inline/sync_tracking.h
ba267abed142db81efe7807b53c26ab4345da286 - src/nvidia/inc/libraries/nvport/inline/atomic_gcc.h
2dec1c73507f66736674d203cc4a00813ccb11bc - src/nvidia/inc/libraries/resserv/rs_domain.h
290f84ec0b699931373eea3cd84437faf578e4a3 - src/nvidia/inc/libraries/resserv/resserv.h
3e431d72308a8b5fc423901a09079904a644b96e - src/nvidia/inc/libraries/resserv/rs_server.h
98fa7e07b6b41d1ba4ace1de93b7d7ddfd1d7c20 - src/nvidia/inc/libraries/resserv/rs_resource.h
1d04abec9438189995cb2a675f4e35a79599aae4 - src/nvidia/inc/libraries/resserv/rs_client.h
cd033fe116a41285a979e629a2ee7b11ec99369f - src/nvidia/inc/libraries/resserv/rs_access_rights.h
df174d6b4f718ef699ca6f38c16aaeffa111ad3c - src/nvidia/inc/libraries/resserv/rs_access_map.h
5fd1da24ae8263c43dc5dada4702564b6f0ca3d9 - src/nvidia/inc/os/dce_rm_client_ipc.h
c6efd51b8b8447829a0867cd7fb7a5a5a2fb1e3d - src/nvidia/inc/kernel/diagnostics/traceable.h
fd780f85cb1cd0fd3914fa31d1bd4933437b791d - src/nvidia/inc/kernel/diagnostics/tracer.h
7e75b5d99376fba058b31996d49449f8fe62d3f0 - src/nvidia/inc/kernel/diagnostics/profiler.h
7615ac3a83d0ad23b2160ff8ad90bec9eb1f3c6c - src/nvidia/inc/kernel/diagnostics/journal.h
b259f23312abe56d34a8f0da36ef549ef60ba5b0 - src/nvidia/inc/kernel/diagnostics/nv_debug_dump.h
3a28bf1692efb34d2161907c3781401951cc2d4f - src/nvidia/inc/kernel/diagnostics/journal_structs.h
8ef620afdf720259cead00d20fae73d31e59c2f7 - src/nvidia/inc/kernel/virtualization/hypervisor/hypervisor.h
f60f647bcf307f7639bccb99cb0244c7314115a1 - src/nvidia/inc/kernel/os/os_stub.h
408c0340350b813c3cba17fd36171075e156df72 - src/nvidia/inc/kernel/os/os.h
c8496199cd808ed4c79d8e149961e721ad96714e - src/nvidia/inc/kernel/os/capability.h
cda75171ca7d8bf920aab6d56ef9aadec16fd15d - src/nvidia/inc/kernel/os/nv_memory_type.h
497492340cea19a93b62da69ca2000b811c8f5d6 - src/nvidia/inc/kernel/rmapi/event_buffer.h
1399c6dc08b96577bb778e66730e7f4bcf8e7256 - src/nvidia/inc/kernel/rmapi/rmapi.h
b4bae9ea958b4d014908459e08c93319784c47dd - src/nvidia/inc/kernel/rmapi/event.h
99a27d87c7f1487f8df5781d284c2e9a83525892 - src/nvidia/inc/kernel/rmapi/binary_api.h
61e3704cd51161c9804cb168d5ce4553b7311973 - src/nvidia/inc/kernel/rmapi/resource.h
2baec15f4c68a9c59dd107a0db288e39914e6737 - src/nvidia/inc/kernel/rmapi/client.h
ac9288d75555180c1d5dd6dd7e0e11fb57a967f2 - src/nvidia/inc/kernel/rmapi/exports.h
7646fc9f1d17b29747b457655d65f7cae80ccc33 - src/nvidia/inc/kernel/rmapi/control.h
7e1200e609082316ed4bc2d0d925e15396b695a5 - src/nvidia/inc/kernel/rmapi/mapping_list.h
4453fe6463e3155063f2bdbf36f44697606a80a5 - src/nvidia/inc/kernel/rmapi/client_resource.h
aab23ad58777406fa75b55778adc747f17c1afdb - src/nvidia/inc/kernel/rmapi/rs_utils.h
6f0f62525d2b966a24adaaabf19e79e6efc4e572 - src/nvidia/inc/kernel/rmapi/rmapi_utils.h
a92dbf2870fe0df245ea8967f2f6a68f5075ecaf - src/nvidia/inc/kernel/rmapi/resource_fwd_decls.h
2724476b61b1790f1b7c293cc86e8a268125e11c - src/nvidia/inc/kernel/rmapi/param_copy.h
2b23f2dbd8f3f63a17a1b63ebb40a2fd7fd8801a - src/nvidia/inc/kernel/rmapi/alloc_size.h
5e9928552086947b10092792db4a8c4c57a84adf - src/nvidia/inc/kernel/platform/acpi_common.h
3e11362627f9ad55e7d657da7929562230220591 - src/nvidia/inc/kernel/platform/sli/sli.h
93f40859dc710fd965a643da1d176790cc8886d5 - src/nvidia/inc/kernel/core/locks.h
bdc4ab675c6f6c4bd77c3aaf08aa5c865b186802 - src/nvidia/inc/kernel/core/hal.h
42596ff1ef62df0b439e8a1e73c71b495dcf311a - src/nvidia/inc/kernel/core/printf.h
457c02092adfc1587d6e3cd866e28c567acbc43a - src/nvidia/inc/kernel/core/info_block.h
bffae4da6a1f9b7dc7c879587fd674b49b46dac1 - src/nvidia/inc/kernel/core/core.h
37f267155ddfc3db38f110dbb0397f0463d055ff - src/nvidia/inc/kernel/core/strict.h
b00302aec7e4f4e3b89a2f699f8b1f18fc17b1ba - src/nvidia/inc/kernel/core/hal_mgr.h
2b41b4346b7d07ca8d505574ea0f9aad6910dd69 - src/nvidia/inc/kernel/core/prelude.h
ce992cb08e286a88c491ee8e64019ad5f8493d1b - src/nvidia/inc/kernel/core/thread_state.h
b5859c7862fb3eeb266f7213845885789801194a - src/nvidia/inc/kernel/core/system.h
ce3302c1890e2f7990434f7335cb619b12dee854 - src/nvidia/inc/kernel/gpu/gpu_resource_desc.h
7010ff346c27b6453c091f5577672b8b1821808d - src/nvidia/inc/kernel/gpu/gpu_access.h
10ba0b9d4c67c8027b391073dab8dc4388f32fd7 - src/nvidia/inc/kernel/gpu/nvbitmask.h
ac5842e58bf82bb8f0b738695f9b459709f03b92 - src/nvidia/inc/kernel/gpu/gpu_shared_data_map.h
1938fd2511213c8003864d879cf1c41ae1169a5f - src/nvidia/inc/kernel/gpu/gpu_uuid.h
bf894a769c46d5d173e3875cd9667bb3fe82feb9 - src/nvidia/inc/kernel/gpu/gpu_timeout.h
f17b704f2489ffedcc057d4a6da77c42ece42923 - src/nvidia/inc/kernel/gpu/gpu_resource.h
28d0d82b58ef13662e8896d3bbc42d340836294e - src/nvidia/inc/kernel/gpu/gpu_user_shared_data.h
6b27c9edf93f29a31787d9acaaefb2cefc31e7d4 - src/nvidia/inc/kernel/gpu/gpu_device_mapping.h
426c6ab6cecc3b1ba540b01309d1603301a86db1 - src/nvidia/inc/kernel/gpu/eng_desc.h
ce5439e2066933d7d1045b7813ef0195b55e78fc - src/nvidia/inc/kernel/gpu/gpu_engine_type.h
c33ab6494c9423c327707fce2bcb771328984a3c - src/nvidia/inc/kernel/gpu/gpu_halspec.h
57a4a0d006588395c0b8b6d447acd7b4a9eeeb30 - src/nvidia/inc/kernel/gpu/kern_gpu_power.h
0d29e997f13d314ea320898ffb40b7a3a58898e2 - src/nvidia/inc/kernel/gpu/gpu_child_list.h
0e8353854e837f0ef0fbf0d5ff5d7a25aa1eef7c - src/nvidia/inc/kernel/gpu/eng_state.h
76b24227c65570898c19e16bf35b2cad143f3d05 - src/nvidia/inc/kernel/gpu/gpu.h
a9c2b16261b46eb0f86fc611b8b3b5118e2b4e59 - src/nvidia/inc/kernel/gpu/gpu_acpi_data.h
f2947fefcaf0611cd80c2c88ce3fdea70953c1ed - src/nvidia/inc/kernel/gpu/gpu_child_class_defs.h
efc50bb2ff6ccf1b7715fd413ca680034920758e - src/nvidia/inc/kernel/gpu/subdevice/generic_engine.h
24d01769b39a6dd62574a95fad64443b05872151 - src/nvidia/inc/kernel/gpu/subdevice/subdevice.h
576216219d27aa887beeccefc22bcead4d1234d7 - src/nvidia/inc/kernel/gpu/disp/kern_disp.h
277a2719f8c063037c6a9ed55ade2b1cb17f48ae - src/nvidia/inc/kernel/gpu/disp/disp_capabilities.h
51a209575d3e3fe8feb7269ece7df0846e18ca2a - src/nvidia/inc/kernel/gpu/disp/kern_disp_type.h
61711ed293ee6974a6ed9a8a3732ae5fedcdc666 - src/nvidia/inc/kernel/gpu/disp/kern_disp_max.h
be7da8d1106ee14ff808d86abffb86794299b2df - src/nvidia/inc/kernel/gpu/disp/disp_objs.h
74bc902cd00b17da3a1dfa7fd3ebc058de439b76 - src/nvidia/inc/kernel/gpu/disp/disp_channel.h
b39826404d84e0850aa3385691d8dde6e30d70d4 - src/nvidia/inc/kernel/gpu/disp/disp_sf_user.h
f758ea5f9cbd23a678290ef0b8d98d470e3499e0 - src/nvidia/inc/kernel/gpu/disp/vblank_callback/vblank.h
9a33a37c6cea9bad513aa14c942c689f28f7c0d8 - src/nvidia/inc/kernel/gpu/disp/head/kernel_head.h
5179f01acf7e9e251552dc17c0dcd84f7d341d82 - src/nvidia/inc/kernel/gpu/disp/inst_mem/disp_inst_mem.h
57388b52df54a785b2d7118774df5433603adb24 - src/nvidia/inc/kernel/gpu/disp/console_mem/disp_console_mem.h
70c31f5c6997542d0a4693b4ad7a6539cc3ec421 - src/nvidia/inc/kernel/gpu/gsp/message_queue.h
7b7cf3b6459711065d1b849bf5acaea10b6400ca - src/nvidia/inc/kernel/gpu/intr/intr_common.h
1e3bebe46b7f2f542eedace554a4156b3afb51f1 - src/nvidia/inc/kernel/gpu/audio/hda_codec_api.h
97d0a067e89251672f191788abe81cf26dcb335f - src/nvidia/inc/kernel/gpu/device/device.h
889ba18a43cc2b5c5e970a90ddcb770ce873b785 - src/nvidia/inc/kernel/gpu/mem_mgr/mem_desc.h
6756126ddd616d6393037bebf371fceacaf3a9f1 - src/nvidia/inc/kernel/gpu/mem_mgr/context_dma.h
e4c67260b5cb693d695ad3d8aa96aaed45688322 - src/nvidia/inc/kernel/gpu/mem_mgr/virt_mem_allocator_common.h
20416f7239833dcaa743bbf988702610e9251289 - src/nvidia/inc/kernel/gpu/mem_mgr/mem_mgr.h
983bf02af93d39384c8b3ef0306193b63d8e82d9 - src/nvidia/inc/kernel/gpu/mem_mgr/mem_utils.h
c2957c7f40cc454ba12fd954397fcea5d95ccae5 - src/nvidia/inc/kernel/gpu/mem_mgr/rm_page_size.h
9cef17543abaa167299c57e8f043cb4b975cf640 - src/nvidia/inc/kernel/gpu/mem_mgr/heap_base.h
ce4e0f7177f46f4fc507a68b635e5395a3f7dde6 - src/nvidia/inc/kernel/gpu/dce_client/dce_client.h
2c48d7335bdb0b7ea88b78216c0aeab2e11e00c1 - src/nvidia/inc/kernel/gpu_mgr/gpu_mgmt_api.h
5b151d0d97b83c9fb76b76c476947f9e15e774ad - src/nvidia/inc/kernel/gpu_mgr/gpu_mgr.h
e188d9f2d042ffe029b96d8fbb16c79a0fc0fb01 - src/nvidia/inc/kernel/gpu_mgr/gpu_db.h
ea32018e3464bb1ac792e39227badf482fa2dc67 - src/nvidia/inc/kernel/gpu_mgr/gpu_group.h
02d6a37ef1bb057604cb98a905fa02429f200c96 - src/nvidia/inc/kernel/mem_mgr/mem.h
a5f49a031db4171228a27482d091283e84632ace - src/nvidia/inc/kernel/mem_mgr/system_mem.h
d15991bc770c5ab41fe746995294c5213efa056b - src/nvidia/inc/kernel/mem_mgr/io_vaspace.h
5ae08b2077506cbc41e40e1b3672e615ce9d910f - src/nvidia/inc/kernel/mem_mgr/vaspace.h
0ce5d6370c086d2944b2e8d31ff72a510d98dc8f - src/nvidia/inc/kernel/mem_mgr/virt_mem_mgr.h
7ea2f63fba8468fb30c9d2fa014a99dfbb440518 - src/nvidia/inc/kernel/mem_mgr/console_mem.h
4c386104eaead66c66df11258c3f1182b46e96ee - src/nvidia/inc/kernel/mem_mgr/syncpoint_mem.h
1a08e83fd6f0a072d6887c60c529e29211bcd007 - src/nvidia/inc/kernel/mem_mgr/os_desc_mem.h
2d4afabd63699feec3aea5e89601db009fc51a08 - src/nvidia/inc/kernel/mem_mgr/standard_mem.h
6f9edcff7ad34c4e85ec7c0b8d79c175009d438c - src/nvidia/kernel/inc/objrpc.h
253baf641e4e29ede6a49129c2dd1415b7e5d9bd - src/nvidia/kernel/inc/nvpcf.h
1feab39692ea8796ac7675f4780dfd51e6e16326 - src/nvidia/kernel/inc/objtmr.h
0cff83f4fdcc8d025cd68e0a12faaeead09fa03b - src/nvidia/kernel/inc/tmr.h
961ed81de50e67eadf163a3a8008ce1fde1d880c - src/nvidia/kernel/inc/vgpu/rpc_hal_stubs.h
6006a612fcd546de794676da19fc431ddd0410e5 - src/nvidia/kernel/inc/vgpu/rpc.h
b5f3932b9f6e7223e8c755155b60be98fd0a21df - src/nvidia/kernel/inc/vgpu/rpc_global_enums.h
3477a139633890d3fdd2e5e02044e1a293566e3d - src/nvidia/kernel/inc/vgpu/rpc_headers.h
31deee778df2651d3d21b4d9c8ab180b8dc1ff14 - src/nvidia/kernel/inc/vgpu/rpc_vgpu.h
24928c8b4e8b238f1921a1699f3af59bcff994ed - src/nvidia/src/lib/base_utils.c
a6134d6f5f3e3b0b4c274eb3b2d0a146644c842b - src/nvidia/src/lib/zlib/inflate.c
4cfe1ebd2ad6968ed513025aed61ecf2127aa683 - src/nvidia/src/libraries/nvoc/src/runtime.c
d3e5f13be70c8e458401ec9bdad007dfadedcc11 - src/nvidia/src/libraries/nvbitvector/nvbitvector.c
0e7a9b9c697f260438ca5fda8527b0f4edc2de13 - src/nvidia/src/libraries/prereq_tracker/prereq_tracker.c
619f9f6df576ad20d32c30fd9a69733dc5c19da8 - src/nvidia/src/libraries/eventbuffer/eventbufferproducer.c
ee7ea17829dfbbf9e6cd8d6c6fb2ada086b5d36e - src/nvidia/src/libraries/ioaccess/ioaccess.c
cf48c6335eb7ff27cd7cae0faad77dd98669ad95 - src/nvidia/src/libraries/utils/nvassert.c
864bd314450490b687a652335a44fb407835152c - src/nvidia/src/libraries/containers/ringbuf.c
c8f4cf70923179b7c2aaa6bd6b3eedc195655abe - src/nvidia/src/libraries/containers/vector.c
8991136ccb86f511f60254955ac3d86072b071f2 - src/nvidia/src/libraries/containers/map.c
6553a1c368e9d9709fb89b5e43524757f786c58b - src/nvidia/src/libraries/containers/queue.c
23c328fc27ad0317efe6ccd2da71cfd9db9da236 - src/nvidia/src/libraries/containers/multimap.c
5940d69147d1376b03cd96fa69796360b279ae97 - src/nvidia/src/libraries/containers/list.c
9c80df385a47834da4f92dc11053ca40a37a7fe7 - src/nvidia/src/libraries/containers/btree/btree.c
ea3254ebd278d9efb7dd348e52370d780c23cd94 - src/nvidia/src/libraries/containers/eheap/eheap_old.c
cccb1fedee02a240692688090e00ac1e289dec9e - src/nvidia/src/libraries/tls/tls.c
a045a19d750d48387640ab659bb30f724c34b8c8 - src/nvidia/src/libraries/nvport/util/util_unix_kernel_os.c
d047abe66dd8a459c15224cc056fc6f2176b0c6a - src/nvidia/src/libraries/nvport/util/util_gcc_clang.c
f0c486c1ad0f7d9516b13a02d52b4d857d8865b1 - src/nvidia/src/libraries/nvport/util/util_compiler_switch.c
9b69fbf3efea6ba58f9ba7cb0189c9264c994657 - src/nvidia/src/libraries/nvport/sync/sync_common.h
eb8b5fcab51c47f58a37958ddb38ff90991bcbbe - src/nvidia/src/libraries/nvport/sync/sync_unix_kernel_os.c
b2ae1406c94779f575d3e2233a7ab248ac10e74f - src/nvidia/src/libraries/nvport/sync/inc/sync_unix_kernel_os_def.h
3e3ab114d56dfcecc2886d8f9cdb8f365c5093c7 - src/nvidia/src/libraries/nvport/memory/memory_tracking.c
c5a16e5bb7d304ffe5e83d7b27226cbecdbc7ce1 - src/nvidia/src/libraries/nvport/memory/memory_unix_kernel_os.c
caff00b37e7f58fde886abcc2737c08526fa089e - src/nvidia/src/libraries/nvport/memory/memory_generic.h
8f41e7127a65102f0035c03536c701b7ecdaa909 - src/nvidia/src/libraries/nvport/string/string_generic.c
b387005657f81538fab5962d4aabbc5dc681aa1b - src/nvidia/src/libraries/nvport/core/core.c
702c73446bba35f88249cfe609ac0ca39dbd80ff - src/nvidia/src/libraries/nvport/crypto/crypto_random_xorshift.c
9ca28a5af5663dec54b4cd35f48a8a3d8e52e25f - src/nvidia/src/libraries/nvport/cpu/cpu_common.c
a305654bafc883ad28a134a04e83bbd409e0fc06 - src/nvidia/src/libraries/nvport/cpu/cpu_common.h
099c17e5931d5d881d8248ec68041fa0bbc2a9bc - src/nvidia/src/libraries/nvport/thread/thread_unix_kernel_os.c
1f2e9d09e658474b36d0b0ecd9380d0d2bcc86b2 - src/nvidia/src/libraries/resserv/src/rs_domain.c
f55556cd2392f55f2609ef69fca1caf2dd348e3f - src/nvidia/src/libraries/resserv/src/rs_server.c
dac54d97b38ad722198ec918668f175dc5122e4e - src/nvidia/src/libraries/resserv/src/rs_access_map.c
310a8d3442285113f4ba672ba7fcc7f2aa295c6a - src/nvidia/src/libraries/resserv/src/rs_client.c
522da5465e5596d48cf6393c329811f3c708be19 - src/nvidia/src/libraries/resserv/src/rs_resource.c
0c9581aa68a77cb9977a7fbcfd2077ccb618206e - src/nvidia/src/libraries/resserv/src/rs_access_rights.c
8192d2364dc63171b51f6ced5b1726125f1a8ff6 - src/nvidia/src/kernel/diagnostics/nvlog.c
b3a29311cc22e2dae686f8ed2df6bc828aa826cf - src/nvidia/src/kernel/diagnostics/profiler.c
fc39cb6ac6e9d73bd1ab98890e6b253217d6cc90 - src/nvidia/src/kernel/diagnostics/nvlog_printf.c
1fad27934185df50c1d91b5536d0df437618382f - src/nvidia/src/kernel/os/os_init.c
c8c4af5a28740f1e66ff4e6e9c47fc6c981ce46b - src/nvidia/src/kernel/os/os_timer.c
0e0c1b862bdba245297ffd4f725001fa2439cddf - src/nvidia/src/kernel/os/os_sanity.c
0f10f992879cdea2a2e3d5f19589ad66b518a872 - src/nvidia/src/kernel/os/os_stubs.c
b4dc306ae4d4f8850571e2fbbed0114d63f1ba93 - src/nvidia/src/kernel/rmapi/entry_points.c
bac6ef63d11e87f9a4af3318d5be6860f861a0b9 - src/nvidia/src/kernel/rmapi/rpc_common.c
96f763eef08f1954d3f07639053db2cde2a01e39 - src/nvidia/src/kernel/rmapi/rmapi.c
ac6a5b3adf15eac4a7bd9ae24981f6f5fc727097 - src/nvidia/src/kernel/rmapi/deprecated_context.h
0bded8ce6e3e81de589c4e6fbb611085c705dfcd - src/nvidia/src/kernel/rmapi/event_notification.c
7a4e3a3369efd50c9d80eaa73c48852edd6e6966 - src/nvidia/src/kernel/rmapi/rs_utils.c
a2ad052692006f70e97fd3d186f19c7ddfe80c4c - src/nvidia/src/kernel/rmapi/deprecated_context.c
9b1453ed00d80034a0d2e3e918d31dbe939177b0 - src/nvidia/src/kernel/rmapi/rmapi_utils.c
8cc578a1e5f534e911ba4b49b58352ef9ea57772 - src/nvidia/src/kernel/rmapi/client.c
c59a08852553b5843beec8138caa8e2141d3d759 - src/nvidia/src/kernel/rmapi/resource_desc_flags.h
25ac4188ba55b098321700828a9386a8a6e9f80b - src/nvidia/src/kernel/rmapi/event_buffer.c
7fdf8e379fd2a5eeae0981bf7328163379279c29 - src/nvidia/src/kernel/rmapi/rmapi_stubs.c
79a130d1e1e10881ea1e5f5d8dfcb84ceb53b0f2 - src/nvidia/src/kernel/rmapi/client_resource.c
b28d140f1bfe0aac770127e8391400d44d5582e3 - src/nvidia/src/kernel/rmapi/rmapi_finn.c
682977753c878ccee6279e539cf11bee2b548752 - src/nvidia/src/kernel/rmapi/resource_desc.c
bb67ea7ef87ff0148473ebf1165e3afd59d63b20 - src/nvidia/src/kernel/rmapi/sharing.c
3b53d6b8ef183702327b4bc3a96aa06f67475ddc - src/nvidia/src/kernel/rmapi/param_copy.c
996a104e06ba0a173eba0099f2c02ff0b085e23d - src/nvidia/src/kernel/rmapi/resource_list.h
d964061679e6f3da0e6e6c3b8e0eb93eb31fd3dc - src/nvidia/src/kernel/rmapi/resource.c
19d3213dc7471e7a7d4ff379494f724869638d28 - src/nvidia/src/kernel/rmapi/mapping_cpu.c
f04faaeeeda2d799207fd7e0877a2bb6d5363c13 - src/nvidia/src/kernel/rmapi/mapping.c
a418377318e121a2b2f83f3961da74f09a2123d0 - src/nvidia/src/kernel/rmapi/event.c
5166298f09865066535a3e04c111354ceaefbcbc - src/nvidia/src/kernel/rmapi/control.c
2aa207714971c97d9486c1ed48a3123e40b6c4ff - src/nvidia/src/kernel/rmapi/rmapi_cache.c
cb6835f318c0d871d72185e0ac410d03d788654a - src/nvidia/src/kernel/rmapi/binary_api.c
b001f31a373973b7a4568c411e261aa8f7487441 - src/nvidia/src/kernel/rmapi/alloc_free.c
d6b3b8ac45ede7530028848749820d2cbe0f5d55 - src/nvidia/src/kernel/rmapi/resource_desc.h
c4eeb6d566366ab2b9532f109632d4e14539332c - src/nvidia/src/kernel/rmapi/entry_points.h
fb2a191dc60c1232c198b1ff9a302883302ca526 - src/nvidia/src/kernel/rmapi/resource_list_required_includes.h
afbf166f49a964873a13e19b787cae33813f9de5 - src/nvidia/src/kernel/core/hal_mgr.c
df7ac5873dc42eafc335a1ddba095fbc8cd1d708 - src/nvidia/src/kernel/core/locks_common.c
61691e21cdabc8919d7b41142c97f510db9c0cc6 - src/nvidia/src/kernel/core/locks_minimal.c
db40522057f29afe6624e33468879e5e9813f07c - src/nvidia/src/kernel/core/system.c
8adbda67510ec9fab31edd681c51ddfb7b190d7d - src/nvidia/src/kernel/core/thread_state.c
afa03f17393b28b9fc791bf09c4d35833447808d - src/nvidia/src/kernel/core/hal/hal.c
c38181e1361a59e3252ae446a0e8761363db35e7 - src/nvidia/src/kernel/core/hal/hals_all.c
8eac3ea49f9a53063f7106211e5236372d87bdaf - src/nvidia/src/kernel/core/hal/info_block.c
cf85f6ecacf40fa649de2c443595e2313fa364d6 - src/nvidia/src/kernel/gpu/device.c
bfcdb98c6541f95c3a37aaa25e9ca51ec2a0b9c1 - src/nvidia/src/kernel/gpu/eng_state.c
1653c7b99cfc86db6692d9d8d6de19f1b24b9071 - src/nvidia/src/kernel/gpu/gpu_uuid.c
04405af0ee123eb4491b8333aa4018950ea65935 - src/nvidia/src/kernel/gpu/gpu.c
ceb3639a86578b9d823a00a9a6553f278acb558f - src/nvidia/src/kernel/gpu/gpu_resource.c
bca16e8ff1697e953a54a3a3de4273f5584ac0df - src/nvidia/src/kernel/gpu/device_ctrl.c
493e90398cb78a3f24d2f271bbedebd8c682d7c1 - src/nvidia/src/kernel/gpu/gpu_gspclient.c
6fa4ba2da905692cd39ec09054f2bd6621aa2a7a - src/nvidia/src/kernel/gpu/gpu_resource_desc.c
4e1be780ac696a61f056933e5550040a2d42c6bd - src/nvidia/src/kernel/gpu/gpu_device_mapping.c
3229e9f5d2779147d337e9c6a7b6f518079f1709 - src/nvidia/src/kernel/gpu/gpu_timeout.c
c2228fbf8366e197aec9bb75ad2c01b267aedeb7 - src/nvidia/src/kernel/gpu/gpu_user_shared_data.c
207b32d1423f3666feeedb85d38fa7a924c1f7a9 - src/nvidia/src/kernel/gpu/device_share.c
a4225e0074c1aee00d082f69231d1d8e7d812347 - src/nvidia/src/kernel/gpu/gpu_access.c
29458992dabff6c2550e0202b11dc47cd7f66cd5 - src/nvidia/src/kernel/gpu/gpu_engine_type.c
89543f7085fbc2ca01b5a8baae33b5de921c79e9 - src/nvidia/src/kernel/gpu/gpu_t234d_kernel.c
cb9af9dcd3931eb62bfdb4872c4e3001ff9def26 - src/nvidia/src/kernel/gpu/gpu_rmapi.c
ba49fc89b1a453aca3a79f51d3250c7c0a667327 - src/nvidia/src/kernel/gpu/subdevice/subdevice.c
c9ec73f6e2f2e87371b97ec47a65c3874dd4949a - src/nvidia/src/kernel/gpu/subdevice/subdevice_ctrl_gpu_kernel.c
086e9a51757c3989dfe0bf89ca6c0b9c7734104a - src/nvidia/src/kernel/gpu/subdevice/generic_engine.c
3d0b8b3dabe8aab7884f1ddec7ef4f9715de31ad - src/nvidia/src/kernel/gpu/subdevice/subdevice_ctrl_event_kernel.c
d852ad5a6af96e173832833379ae9d38baaed47f - src/nvidia/src/kernel/gpu/subdevice/subdevice_ctrl_timer_kernel.c
611098328a114b66c6dcea4a8ea710887db006c4 - src/nvidia/src/kernel/gpu/arch/t23x/kern_gpu_t234d.c
ceb516c8064e1df2d18897f98f5c8ea58e907973 - src/nvidia/src/kernel/gpu/disp/disp_capabilities.c
8ce824bfdb06f08567a29ee5e175106c32611182 - src/nvidia/src/kernel/gpu/disp/disp_channel.c
c3d94d9a49e1c0dffd8987d9b007a9cef91be561 - src/nvidia/src/kernel/gpu/disp/disp_object_kern_ctrl_minimal.c
6437dd659a38c62cd81fb59f229bd94e59f37e71 - src/nvidia/src/kernel/gpu/disp/disp_sf_user.c
e5ae629f9b7d4346624da085edde80fda18c679d - src/nvidia/src/kernel/gpu/disp/kern_disp.c
681499b2c86582cd110ede079d757c5797c4b458 - src/nvidia/src/kernel/gpu/disp/disp_common_kern_ctrl_minimal.c
1533c870f3e6521f180eb967f7144a62a727d125 - src/nvidia/src/kernel/gpu/disp/disp_objs.c
0156d5407cf877b8f5c79823d3c83ead54b6385c - src/nvidia/src/kernel/gpu/disp/head/kernel_head.c
8a418dce9fbeb99d5d6e175ed8c88811866f3450 - src/nvidia/src/kernel/gpu/disp/arch/v04/kern_disp_0402.c
e7f143390807f3f4d4bf6586068378a9f5a75d57 - src/nvidia/src/kernel/gpu/disp/arch/v03/kern_disp_0300.c
84fdcdf90d9a656a572774fb8330f7a1fa9f59e2 - src/nvidia/src/kernel/gpu/disp/inst_mem/disp_inst_mem.c
629566bf98be863b12e6dc6aab53d8f5ea13988c - src/nvidia/src/kernel/gpu/disp/inst_mem/arch/v03/disp_inst_mem_0300.c
d9ecaa221da6120a6149292cc1ab9ff50caca3fa - src/nvidia/src/kernel/gpu/disp/console_mem/disp_console_mem.c
cffbdcaacd4fd5be809fc81bd76a384920781391 - src/nvidia/src/kernel/gpu/timer/timer.c
17e9f2af953c3cf96d0eee9cfea3aad6e540c3cf - src/nvidia/src/kernel/gpu/timer/timer_ostimer.c
1f4d15f959df38f4f6ea48c7b10fc859c6e04b12 - src/nvidia/src/kernel/gpu/audio/hda_codec_api.c
c6e78a54a1b8d4ca6fe4b01d83e3199ea41606d7 - src/nvidia/src/kernel/gpu/mem_mgr/context_dma.c
f30ae0e8e1e32d0adb7e52b8995c277637b6bc2a - src/nvidia/src/kernel/gpu/mem_mgr/mem_utils.c
3c463773f2f970b1764edb231d349164fe4341fc - src/nvidia/src/kernel/gpu/mem_mgr/mem_desc.c
2bb921b462c4b50d1f42b39b4728374c7433c8cb - src/nvidia/src/kernel/gpu/mem_mgr/arch/turing/mem_mgr_tu102_base.c
cc1249dcc4c4530c59f0aa314dbcd8f7a69be009 - src/nvidia/src/kernel/gpu/dce_client/dce_client_rpc.c
7f9874d9af6b937dac888a3ebb55a82c2a5de71b - src/nvidia/src/kernel/gpu/dce_client/dce_client.c
d5d8ff429d3bda7103bafcb2dca94678efc8ddd8 - src/nvidia/src/kernel/gpu_mgr/gpu_group.c
719d890f8160efe57e4c3267db65885ebb66cd03 - src/nvidia/src/kernel/gpu_mgr/gpu_db.c
37d1e3dd86e6409b8e461f90386e013194c9e4d1 - src/nvidia/src/kernel/gpu_mgr/gpu_mgmt_api.c
36b3993cc05598590bc6356bab5ea7c0a2efd2f0 - src/nvidia/src/kernel/gpu_mgr/gpu_mgr.c
ed8316b9cbfe13336af1f8e4cd0b492a21af44b9 - src/nvidia/src/kernel/mem_mgr/syncpoint_mem.c
e75d8a0eb4c22e11ececd24a43ad034bb76f12ce - src/nvidia/src/kernel/mem_mgr/standard_mem.c
c53834dec3041617296e4d124647b363455e1264 - src/nvidia/src/kernel/mem_mgr/console_mem.c
38b2ed45dc7d7d7172f6d0fd2be31b43e49e41d5 - src/nvidia/src/kernel/mem_mgr/virt_mem_mgr.c
a14b8d9a6e029d8a5c571283b520645a562b5c2c - src/nvidia/src/kernel/mem_mgr/vaspace.c
5b9048e62581a3fbb0227d1a46c4ee8d8397bf5b - src/nvidia/src/kernel/mem_mgr/mem_mgr_internal.h
630200d06b6588d7fa8c5b1ea16146e8281163d7 - src/nvidia/src/kernel/mem_mgr/io_vaspace.c
223b7541c7904067914a01e4aa3e589fd1690cb6 - src/nvidia/src/kernel/mem_mgr/system_mem.c
623dad3ec0172ed7b3818caece0db5687d587ff3 - src/nvidia/src/kernel/mem_mgr/os_desc_mem.c
3080c8404e554eba5eac3f6482ed6094d25ccdef - src/nvidia/src/kernel/mem_mgr/mem.c
75d3a4e35230b114a2a233be8235f19220d953a4 - src/nvidia/interface/nvrm_registry.h
3f7b20e27e6576ee1f2f0557d269697a0b8af7ec - src/nvidia/interface/nv-firmware-registry.h
d02ee5bb3f19dffd8b5c30dc852cea243bcdf399 - src/nvidia/interface/acpidsmguids.h
60c7cafce7bd5240e8409e3c5b71214262347efc - src/nvidia/interface/acpigenfuncs.h
bff92c9767308a13df1d0858d5f9c82af155679a - src/nvidia/interface/nvacpitypes.h
f7b69924dbdf53be6cd184583145726aa65d3acd - src/nvidia/interface/deprecated/rmapi_deprecated_utils.c
7dec210405c35d200be24bd1c0c81fcc6c3f93bf - src/nvidia/interface/deprecated/rmapi_deprecated.h
d81ef382635d0c4de47dfa3d709e0702f371ceb7 - src/nvidia/interface/rmapi/src/g_finn_rm_api.c
80545889e3c9967fd0ae12a65005be31bac354f2 - src/nvidia-modeset/Makefile
7e1249c1d187aec5891eabe5bacae2189d33dc55 - src/nvidia-modeset/lib/nvkms-sync.c
c3ab6005d7083e90145cac66addf815c4f93d9a0 - src/nvidia-modeset/lib/nvkms-format.c
b8854261256a801af52d1201081afa9c17486a96 - src/nvidia-modeset/include/nvkms-3dvision.h
ebafc51b2b274cd1818e471850a5efa9618eb17d - src/nvidia-modeset/include/nvkms-prealloc.h
0739ffa368efb761544295c03bc0ad633b5a3349 - src/nvidia-modeset/include/nvkms-flip-workarea.h
fa829f1cd3b73f194f39879c48962b703f640b65 - src/nvidia-modeset/include/nvkms-vrr.h
49af4a8fa95d0e595deacadbca5360f097722e7f - src/nvidia-modeset/include/nvkms-evo1.h
496b94af536dd912866a05f7b2da53050b50c2f5 - src/nvidia-modeset/include/nvkms-prealloc-types.h
c1c7047929aafc849a924c7fa9f8bc206b8e7524 - src/nvidia-modeset/include/g_nvkms-evo-states.h
412d8028a548e67e9ef85cb7d3f88385e70c56f9 - src/nvidia-modeset/include/nvkms-console-restore.h
fa8dbffe58d345634ab1ea8743ed29c9ec169f36 - src/nvidia-modeset/include/nvkms-dpy.h
81fcc817dfb8ae1f98b63d2c1acacc303fedb554 - src/nvidia-modeset/include/nvkms-dpy-override.h
a79cfb74026085b0aa612c0ae6789083e196bbc2 - src/nvidia-modeset/include/nvkms-evo-states.h
70d9251f331bbf28f5c5bbdf939ebad94db9362d - src/nvidia-modeset/include/nvkms-softfloat.h
6e3681d5caa36312804c91630eaaf510eda897d2 - src/nvidia-modeset/include/nvkms-dma.h
eb5248c4b0b51e7aecd2de87e496253b3b235c70 - src/nvidia-modeset/include/nvkms-utils-flip.h
377dd4a29b2ea5937a9b8fc3fba0c9e4ef92992e - src/nvidia-modeset/include/nvkms-cursor.h
ec1374d339746b73bc7c7614695fde68c156074a - src/nvidia-modeset/include/nvkms-rm.h
0449c65467d54097b65d60eec670450b126b07c1 - src/nvidia-modeset/include/nvkms-modeset.h
be6e0e97c1e7ffc0daa2f14ef7b05b9f9c11dc16 - src/nvidia-modeset/include/nvkms-attributes.h
07ac47b52b1b42c143501c4a95a88a3f86f5be03 - src/nvidia-modeset/include/nvkms-hdmi.h
6b21a68e254becdd2641bc456f194f54c23abe51 - src/nvidia-modeset/include/nvkms-framelock.h
c90e4393f568d96bc98cb52a93bfc3fdea10658d - src/nvidia-modeset/include/nvkms-modeset-workarea.h
ae03509966df56d98fa72b7528ab43ec2b258381 - src/nvidia-modeset/include/nvkms-utils.h
f5f3b11c78a8b0eef40c09e1751615a47f516edb - src/nvidia-modeset/include/nvkms-hal.h
d05ef9a837f2927fe387e7d157ea76c7ef567807 - src/nvidia-modeset/include/nvkms-lut.h
1b75646c99c748f9070208eb58f0082812eabbd9 - src/nvidia-modeset/include/nvkms-private.h
6fa4708e4f6dfe63f149a1c70fa84bf9df01026a - src/nvidia-modeset/include/nvkms-evo.h
4a94381bd8c24b09193577d3f05d6d61f178e1cf - src/nvidia-modeset/include/nvkms-ctxdma.h
11bae7c491bbb0ba4cad94b645d47c384191fa5c - src/nvidia-modeset/include/nvkms-flip.h
00d2f2fa1f7c96757f67b9ca3ff1c2699a493bd0 - src/nvidia-modeset/include/nvkms-modeset-types.h
260b6ef87c755e55a803adad4ce49f2d57315f9a - src/nvidia-modeset/include/nvkms-event.h
35fa1444c57f7adbbddddc612237f3ad38cdd78f - src/nvidia-modeset/include/nvkms-rmapi.h
118d0ea84ff81de16fbdc2c7daf249ee5c82ed6e - src/nvidia-modeset/include/nvkms-modepool.h
62be8578b3eec01438014f11a1b1b210b09d6ce6 - src/nvidia-modeset/include/nvkms-types.h
4a33d410f090fd4f4dfc9a6de285f8e8fb1c9ced - src/nvidia-modeset/include/nvkms-surface.h
b0d407b0413453ec71481f84cc448d090b90d609 - src/nvidia-modeset/include/nvkms-evo3.h
8c7e0e15c1038fe518e98d8f86fafb250b10a1d2 - src/nvidia-modeset/include/nvkms-stereo.h
cdf54b0d423f94f04d6f33b672c131125c13d260 - src/nvidia-modeset/include/nvkms-hw-flip.h
c386632dbdc0e89019d5618f132dbcb3dff4dafb - src/nvidia-modeset/include/dp/nvdp-device.h
4625828efd425e1b29835ab91fcc3d2d85e92389 - src/nvidia-modeset/include/dp/nvdp-connector-event-sink.h
a8fbb7a071c0e7b326f384fed7547e7b6ec81c3e - src/nvidia-modeset/include/dp/nvdp-timer.h
ae43c46687d16b93189047d9eeed933a67e5571f - src/nvidia-modeset/include/dp/nvdp-connector.h
727bd77cfbc9ac4989c2ab7eec171ceb516510aa - src/nvidia-modeset/kapi/include/nvkms-kapi-notifiers.h
d77e520819f0fa8a775542f493af03f9f2aafc47 - src/nvidia-modeset/kapi/include/nvkms-kapi-internal.h
277738dc6ab009b77546355299cadabc5144fc5c - src/nvidia-modeset/kapi/src/nvkms-kapi.c
01d943d6edb0c647c2b8dbc44460948665b03e7a - src/nvidia-modeset/kapi/src/nvkms-kapi-notifiers.c
ce42ceac4c4cf9d249d66ab57ae2f435cd9623fc - src/nvidia-modeset/kapi/src/nvkms-kapi-sync.c
80c2c9a2a05beb0202239db8b0dd7080ff21c194 - src/nvidia-modeset/kapi/interface/nvkms-kapi-private.h
23e71bf8f57bc6777ee6ee419dfdd44d7a2a3c6e - src/nvidia-modeset/kapi/interface/nvkms-kapi.h
26144f7b6e9358a5418735c5c357c964047b52ca - src/nvidia-modeset/src/nvkms-modeset.c
5f559582336ab0e252f25039d43b114a6630758c - src/nvidia-modeset/src/nvkms-evo.c
aa185dd37a2ece9f7698c9076ec5c9fc79b6a476 - src/nvidia-modeset/src/nvkms-hw-flip.c
6a35b80a6995777dc9500cac9659e6f0f0c12d23 - src/nvidia-modeset/src/nvkms-cursor3.c
4f973e22225946be9c5c726a06ea3ad915ec4a03 - src/nvidia-modeset/src/nvkms-rm.c
30ad7839985dea46e6b6d43499210a3056da51ad - src/nvidia-modeset/src/nvkms-utils-flip.c
6a84fae64ca00bc8b5d9ae75c291140f23d8fd4d - src/nvidia-modeset/src/nvkms-evo3.c
c13871725cc47dfb99b3d66ed41a57d2ea5f8f97 - 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
9e4d3e3505a84d8634a2ef2307628a8fe551a4c3 - src/nvidia-modeset/src/nvkms-surface.c
bd2e4a6102432d4ac1faf92b5d3db29e9e3cfafc - src/nvidia-modeset/src/nvkms-utils.c
6d41c9f84cc9ce2d16812e94a3fba055b3fc7308 - src/nvidia-modeset/src/nvkms-conf.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
d01a59a7c22d3998f1cf97f2812c6f99dab4c097 - 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
795ddaec1aa05d152eedd28a3bc82ca49e44a72f - src/nvidia-modeset/src/nvkms-attributes.c
65b02b48caff2a9100b8c5614f91d42fb20da9c0 - src/nvidia-modeset/src/nvkms-dpy-override.c
9fea40b7b55d6ebf3f73b5d469751c873ffbe7c0 - src/nvidia-modeset/src/nvkms-dma.c
da726d20eea99a96af4c10aace88f419e8ee2a34 - src/nvidia-modeset/src/nvkms-event.c
2fabe1c14116a2b07f24d01710394ee84a6e3914 - src/nvidia-modeset/src/nvkms-3dvision.c
3261fd9a1eb14f7f3fb0917757b1e2704d4abbd2 - src/nvidia-modeset/src/nvkms-hw-states.c
c799d52bdc792efc377fb5cd307b0eb445c44d6a - src/nvidia-modeset/src/nvkms-cursor2.c
03fb499633c485e0559da79500d4e66ea50e8d8f - src/nvidia-modeset/src/nvkms-framelock.c
df59641109db4529eed62cf156b1815a3e67ba05 - src/nvidia-modeset/src/nvkms-vrr.c
05ca4acdfeb9b99eccc7e222846fc688473322ae - src/nvidia-modeset/src/nvkms-rmapi-dgpu.c
f754a27436fd1e1fa103de6110224c21ad7ea9f4 - src/nvidia-modeset/src/nvkms-pow.c
f4a02d5b6cb1fa5d461514b21e13002ad9cfa1a4 - src/nvidia-modeset/src/nvkms-evo1.c
3b4843e97ce186b05df6b6f19b463818d769bfcb - src/nvidia-modeset/src/nvkms-console-restore.c
933829ff39c6d1fe41bd82a5af177f5059b4b69e - src/nvidia-modeset/src/nvkms-modepool.c
403e6dbff0a607c2aecf3204c56633bd7b612ae2 - src/nvidia-modeset/src/nvkms-stereo.c
93ab81a362c4ba29ed817dd14fbd75f2b36b62b8 - src/nvidia-modeset/src/nvkms-lut.c
f96cd982b4c05351faa31d04ac30d6fa7c866bcb - src/nvidia-modeset/src/dp/nvdp-timer.cpp
6b985fc50b5040ce1a81418bed73a60edb5d3289 - src/nvidia-modeset/src/dp/nvdp-timer.hpp
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
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
372ea4c8e7bbc0bdeb899e6f163c8f20c663ad22 - src/nvidia-modeset/os-interface/include/nvidia-modeset-os-interface.h
0a0650835e8835d32418891a2fd25031f5d8770e - src/nvidia-modeset/os-interface/include/nvkms.h
7987b3cd8d56be40767c76286d78cf5962cd166c - src/nvidia-modeset/interface/nvkms-api.h
b986bc6591ba17a74ad81ec4c93347564c6d5165 - src/nvidia-modeset/interface/nvkms-format.h
2ea1436104463c5e3d177e8574c3b4298976d37e - src/nvidia-modeset/interface/nvkms-ioctl.h
1e9c09285aabbfd1010e786f08494cba36658a0d - src/nvidia-modeset/interface/nvkms-api-types.h
8e3e74d2b3f45381e7b0012d930cf451cbd1728f - src/nvidia-modeset/interface/nvkms-sync.h

Change-Id: Ie610e543d6546d83061b7f8106aa598f6371fdfa
This commit is contained in:
svcmobrel-release
2024-10-24 13:41:30 -07:00
parent 95cde7ef1c
commit ad05f6ecb9
62 changed files with 5210 additions and 585 deletions

View File

@@ -10,7 +10,7 @@ ec5f1eb408e0b650158e0310fb1ddd8e9b323a6f - CONTRIBUTING.md
af3ee56442f16029cb9b13537477c384226b22fc - CODE_OF_CONDUCT.md af3ee56442f16029cb9b13537477c384226b22fc - CODE_OF_CONDUCT.md
41123f5c3015f9a14cf35b7c75c5b720f5fbed07 - kernel-open/Kbuild 41123f5c3015f9a14cf35b7c75c5b720f5fbed07 - kernel-open/Kbuild
4f4410c3c8db46e5a98d7a35f7d909a49de6cb43 - kernel-open/Makefile 4f4410c3c8db46e5a98d7a35f7d909a49de6cb43 - kernel-open/Makefile
aca7afeeee3cd44b43a8cc8aebacdffd0da96ff9 - kernel-open/conftest.sh 4f39cccb3a96d6a8be929f524e48e673aaa0093f - kernel-open/conftest.sh
0b1508742a1c5a04b6c3a4be1b48b506f4180848 - kernel-open/dkms.conf 0b1508742a1c5a04b6c3a4be1b48b506f4180848 - kernel-open/dkms.conf
19a5da412ce1557b721b8550a4a80196f6162ba6 - kernel-open/common/inc/os_dsi_panel_props.h 19a5da412ce1557b721b8550a4a80196f6162ba6 - kernel-open/common/inc/os_dsi_panel_props.h
4750735d6f3b334499c81d499a06a654a052713d - kernel-open/common/inc/nv-caps.h 4750735d6f3b334499c81d499a06a654a052713d - kernel-open/common/inc/nv-caps.h
@@ -53,10 +53,10 @@ d25291d32caef187daf3589ce4976e4fa6bec70d - kernel-open/common/inc/nv-time.h
4856fe869a5f3141e5d7f7d1b0a6affad94cbc31 - kernel-open/common/inc/nv-pci.h 4856fe869a5f3141e5d7f7d1b0a6affad94cbc31 - kernel-open/common/inc/nv-pci.h
95bf694a98ba78d5a19e66463b8adda631e6ce4c - kernel-open/common/inc/nvstatus.h 95bf694a98ba78d5a19e66463b8adda631e6ce4c - kernel-open/common/inc/nvstatus.h
b15c5fe5d969414640a2cb374b707c230e7597e4 - kernel-open/common/inc/nv-hash.h b15c5fe5d969414640a2cb374b707c230e7597e4 - kernel-open/common/inc/nv-hash.h
ba72879894c335c61a67f7bae9f6ea94c3b74e1f - kernel-open/common/inc/nvkms-kapi.h 23e71bf8f57bc6777ee6ee419dfdd44d7a2a3c6e - kernel-open/common/inc/nvkms-kapi.h
f428218ee6f5d0289602495a1cfb287db4fb0823 - kernel-open/common/inc/nv_uvm_interface.h f428218ee6f5d0289602495a1cfb287db4fb0823 - kernel-open/common/inc/nv_uvm_interface.h
1e7eec6561b04d2d21c3515987aaa116e9401c1f - kernel-open/common/inc/nv-kernel-interface-api.h 1e7eec6561b04d2d21c3515987aaa116e9401c1f - kernel-open/common/inc/nv-kernel-interface-api.h
314f2400c5f4342ebec578c24689329ab79e497d - kernel-open/common/inc/nvkms-api-types.h 1e9c09285aabbfd1010e786f08494cba36658a0d - kernel-open/common/inc/nvkms-api-types.h
c9120c6a33932c7514608601f82ea85d2386b84f - kernel-open/common/inc/os-interface.h c9120c6a33932c7514608601f82ea85d2386b84f - kernel-open/common/inc/os-interface.h
ceac0fe7333f3a67b8fb63de42ab567dd905949f - kernel-open/common/inc/nv-ioctl-numa.h ceac0fe7333f3a67b8fb63de42ab567dd905949f - kernel-open/common/inc/nv-ioctl-numa.h
c75bfc368c6ce3fc2c1a0c5062834e90d822b365 - kernel-open/common/inc/nv-memdbg.h c75bfc368c6ce3fc2c1a0c5062834e90d822b365 - kernel-open/common/inc/nv-memdbg.h
@@ -148,12 +148,12 @@ c276be3eb63bb451edfe9ed13859c251530743e6 - kernel-open/nvidia/hal/library/cryptl
d5ddc354e191d6178625b0df8e8b34e8c3e4c474 - kernel-open/nvidia/library/spdm_lib_config.h d5ddc354e191d6178625b0df8e8b34e8c3e4c474 - kernel-open/nvidia/library/spdm_lib_config.h
19b5d633f4560d545f622ada0dd352d5aa02c651 - kernel-open/nvidia/library/cryptlib.h 19b5d633f4560d545f622ada0dd352d5aa02c651 - kernel-open/nvidia/library/cryptlib.h
7398ff33b24fa58315cc40776bc3451e090aa437 - kernel-open/nvidia/internal/libspdm_lib_config.h 7398ff33b24fa58315cc40776bc3451e090aa437 - kernel-open/nvidia/internal/libspdm_lib_config.h
487db563f4e5153ffc976fc2aa26636ebb4cd534 - kernel-open/nvidia-drm/nvidia-drm-crtc.h 44b9140286d2917ff7896b98f02d2d87bce58ee2 - kernel-open/nvidia-drm/nvidia-drm-crtc.h
7c1eb7d5d928bb5677634cedde4a234266d4344d - kernel-open/nvidia-drm/nvidia-drm-linux.c 7c1eb7d5d928bb5677634cedde4a234266d4344d - kernel-open/nvidia-drm/nvidia-drm-linux.c
8b2063f0cc2e328f4f986c2ce556cfb626c89810 - kernel-open/nvidia-drm/nvidia-drm-utils.c 8b2063f0cc2e328f4f986c2ce556cfb626c89810 - kernel-open/nvidia-drm/nvidia-drm-utils.c
6d65ea9f067e09831a8196022bfe00a145bec270 - kernel-open/nvidia-drm/nvidia-drm-gem-dma-buf.h 6d65ea9f067e09831a8196022bfe00a145bec270 - kernel-open/nvidia-drm/nvidia-drm-gem-dma-buf.h
f454b9ae53a2c308d6909d197c2b9a6543f7d8c3 - kernel-open/nvidia-drm/nvidia-drm-gem-nvkms-memory.c f454b9ae53a2c308d6909d197c2b9a6543f7d8c3 - kernel-open/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
4d390f6b4c50510ffa5aca47977ec12e47b3947c - kernel-open/nvidia-drm/nvidia-drm-modeset.c 69f2ad23a2df1e20a38c60d251673db8bffcbd9e - kernel-open/nvidia-drm/nvidia-drm-modeset.c
23586447526d9ffedd7878b6cf5ba00139fadb5e - kernel-open/nvidia-drm/nvidia-drm-gem-user-memory.h 23586447526d9ffedd7878b6cf5ba00139fadb5e - kernel-open/nvidia-drm/nvidia-drm-gem-user-memory.h
99642b76e9a84b5a1d2e2f4a8c7fb7bcd77a44fd - kernel-open/nvidia-drm/nvidia-drm.h 99642b76e9a84b5a1d2e2f4a8c7fb7bcd77a44fd - kernel-open/nvidia-drm/nvidia-drm.h
66b33e4ac9abe09835635f6776c1222deefad741 - kernel-open/nvidia-drm/nvidia-drm-fb.h 66b33e4ac9abe09835635f6776c1222deefad741 - kernel-open/nvidia-drm/nvidia-drm-fb.h
@@ -162,8 +162,8 @@ c52acdbc07f16aa78570d9e6a7f62e493264fde1 - kernel-open/nvidia-drm/nvidia-drm-hel
ae6efc1bbec8a5e948b7244f4801f0b4b398f203 - kernel-open/nvidia-drm/nvidia-drm.c ae6efc1bbec8a5e948b7244f4801f0b4b398f203 - kernel-open/nvidia-drm/nvidia-drm.c
86666530006fc4446d7e3bbe175ce9d3350d8d81 - kernel-open/nvidia-drm/nvidia-drm-ioctl.h 86666530006fc4446d7e3bbe175ce9d3350d8d81 - kernel-open/nvidia-drm/nvidia-drm-ioctl.h
511ea7cd9e7778c6adc028ae13377c1a8856b72a - kernel-open/nvidia-drm/nvidia-drm-format.c 511ea7cd9e7778c6adc028ae13377c1a8856b72a - kernel-open/nvidia-drm/nvidia-drm-format.c
14b62226771ac7d69ea048b567bcf22ab6a59cb7 - kernel-open/nvidia-drm/nvidia-drm-drv.h aedc8183ac255b270f74899cf9fd1c974fdbf00b - kernel-open/nvidia-drm/nvidia-drm-drv.h
b91df730fba3c2f9401321557bb1bc2e64bbf980 - kernel-open/nvidia-drm/nvidia-drm-connector.h 624b30dc76058cc3a0797a86ffa5da46803e3ace - kernel-open/nvidia-drm/nvidia-drm-connector.h
646e6b03521587cc1a02617afd697183e5d1a83a - kernel-open/nvidia-drm/nv-kthread-q.c 646e6b03521587cc1a02617afd697183e5d1a83a - kernel-open/nvidia-drm/nv-kthread-q.c
d9221522e02e18b037b8929fbc075dc3c1e58654 - kernel-open/nvidia-drm/nv-pci-table.c d9221522e02e18b037b8929fbc075dc3c1e58654 - kernel-open/nvidia-drm/nv-pci-table.c
eb98761cdc99141ad937966e5533c57189db376a - kernel-open/nvidia-drm/nvidia-drm-fence.h eb98761cdc99141ad937966e5533c57189db376a - kernel-open/nvidia-drm/nvidia-drm-fence.h
@@ -171,7 +171,7 @@ eca70b3b8146903ec678a60eebb0462e6ccf4569 - kernel-open/nvidia-drm/nvidia-drm-enc
b1bc97e6e0564f1526dedaf8bb68d081fc509cc7 - kernel-open/nvidia-drm/nvidia-drm-helper.h b1bc97e6e0564f1526dedaf8bb68d081fc509cc7 - kernel-open/nvidia-drm/nvidia-drm-helper.h
2a48c9643c836a1b0a0c133afa9439b4f5ce0feb - kernel-open/nvidia-drm/nvidia-drm-os-interface.h 2a48c9643c836a1b0a0c133afa9439b4f5ce0feb - kernel-open/nvidia-drm/nvidia-drm-os-interface.h
b83e4c3ba825a75233eaedb0ac33feed74a53ab7 - kernel-open/nvidia-drm/nvidia-drm-gem-user-memory.c b83e4c3ba825a75233eaedb0ac33feed74a53ab7 - kernel-open/nvidia-drm/nvidia-drm-gem-user-memory.c
b8128c6806ef60d0f0c59bd93ee84fc0fdf47f62 - kernel-open/nvidia-drm/nvidia-drm-drv.c 77339943a9d60e01708aae95c258476831f0b8fb - kernel-open/nvidia-drm/nvidia-drm-drv.c
203295380efca7e422746805437b05ce22505424 - kernel-open/nvidia-drm/nvidia-drm-gem.c 203295380efca7e422746805437b05ce22505424 - kernel-open/nvidia-drm/nvidia-drm-gem.c
c1a318e90decef16aa29768ea5c8946becc5a4a0 - kernel-open/nvidia-drm/nvidia-drm-encoder.c c1a318e90decef16aa29768ea5c8946becc5a4a0 - kernel-open/nvidia-drm/nvidia-drm-encoder.c
8bedc7374d7a43250e49fb09139c511b489d45e3 - kernel-open/nvidia-drm/nv-pci-table.h 8bedc7374d7a43250e49fb09139c511b489d45e3 - kernel-open/nvidia-drm/nv-pci-table.h
@@ -179,16 +179,16 @@ c1a318e90decef16aa29768ea5c8946becc5a4a0 - kernel-open/nvidia-drm/nvidia-drm-enc
ec550cba2bebff2c5054b6e12fc43d81e37ade48 - kernel-open/nvidia-drm/nvidia-dma-fence-helper.h ec550cba2bebff2c5054b6e12fc43d81e37ade48 - kernel-open/nvidia-drm/nvidia-dma-fence-helper.h
e362c64aa67b47becdbf5c8ba2a245e135adeedf - kernel-open/nvidia-drm/nvidia-drm-gem-dma-buf.c e362c64aa67b47becdbf5c8ba2a245e135adeedf - kernel-open/nvidia-drm/nvidia-drm-gem-dma-buf.c
492a1b0b02dcd2d60f05ac670daeeddcaa4b0da5 - kernel-open/nvidia-drm/nvidia-dma-resv-helper.h 492a1b0b02dcd2d60f05ac670daeeddcaa4b0da5 - kernel-open/nvidia-drm/nvidia-dma-resv-helper.h
61c61f91d1a29d6f7794a67eac337152b58aaac0 - kernel-open/nvidia-drm/nvidia-drm-connector.c b59e4cccbc405babf7cf230455b5b089e81b03bc - kernel-open/nvidia-drm/nvidia-drm-connector.c
97b6c56b1407de976898e0a8b5a8f38a5211f8bb - kernel-open/nvidia-drm/nvidia-drm-format.h 97b6c56b1407de976898e0a8b5a8f38a5211f8bb - kernel-open/nvidia-drm/nvidia-drm-format.h
b4cdad1b38e8fdac0f2c3ef8ebeb73a83973eed1 - kernel-open/nvidia-drm/nvidia-drm-priv.h 6859a86572262b38ae7a905f21921e9ceb74523d - kernel-open/nvidia-drm/nvidia-drm-priv.h
deb00fa4d1de972d93d8e72355d81ba87044c86f - kernel-open/nvidia-drm/nvidia-drm-fence.c deb00fa4d1de972d93d8e72355d81ba87044c86f - kernel-open/nvidia-drm/nvidia-drm-fence.c
8a8b431f45bd0fe477759c1527d792cb9a1fa3f5 - kernel-open/nvidia-drm/nvidia-drm-gem.h 8a8b431f45bd0fe477759c1527d792cb9a1fa3f5 - kernel-open/nvidia-drm/nvidia-drm-gem.h
6528efa1f8061678b8543c5c0be8761cab860858 - kernel-open/nvidia-drm/nvidia-drm-modeset.h 1b7c0e4bc236101b930a9a95a622c0031c56978d - kernel-open/nvidia-drm/nvidia-drm-modeset.h
7e87b94b550dbfba205959932a22cf943a4adb26 - kernel-open/nvidia-drm/nvidia-drm.Kbuild 7ba9a7661d0227a2f8a8b96614e40302dfcd8c37 - kernel-open/nvidia-drm/nvidia-drm.Kbuild
40b5613d1fbbe6b74bff67a5d07974ad321f75f0 - kernel-open/nvidia-drm/nvidia-drm-utils.h 40b5613d1fbbe6b74bff67a5d07974ad321f75f0 - kernel-open/nvidia-drm/nvidia-drm-utils.h
8da06bd922850e840c94ed380e3b92c63aecbf70 - kernel-open/nvidia-drm/nvidia-drm-fb.c 8da06bd922850e840c94ed380e3b92c63aecbf70 - kernel-open/nvidia-drm/nvidia-drm-fb.c
2f49d56a57e1dcb1ded646bf606172890a0f2dc7 - kernel-open/nvidia-drm/nvidia-drm-crtc.c 53f37dd6d99d4bc8227db5d532e2f1309723468b - kernel-open/nvidia-drm/nvidia-drm-crtc.c
372ea4c8e7bbc0bdeb899e6f163c8f20c663ad22 - kernel-open/nvidia-modeset/nvidia-modeset-os-interface.h 372ea4c8e7bbc0bdeb899e6f163c8f20c663ad22 - kernel-open/nvidia-modeset/nvidia-modeset-os-interface.h
e02497b93f0f13d8e1624ff2effe417ec63bc2b0 - kernel-open/nvidia-modeset/nvidia-modeset-linux.c e02497b93f0f13d8e1624ff2effe417ec63bc2b0 - kernel-open/nvidia-modeset/nvidia-modeset-linux.c
0a0650835e8835d32418891a2fd25031f5d8770e - kernel-open/nvidia-modeset/nvkms.h 0a0650835e8835d32418891a2fd25031f5d8770e - kernel-open/nvidia-modeset/nvkms.h
@@ -252,7 +252,7 @@ f968cd35ce1d1d8e3bc2f669025e6b1042b35354 - src/common/sdk/nvidia/inc/class/cl00d
941a031920c0b3bb16473a6a3d4ba8c52c1259d7 - src/common/sdk/nvidia/inc/class/cl917e.h 941a031920c0b3bb16473a6a3d4ba8c52c1259d7 - src/common/sdk/nvidia/inc/class/cl917e.h
cb610aaae807d182b4a2ee46b9b43ebfa4a49a08 - src/common/sdk/nvidia/inc/class/clc57e.h cb610aaae807d182b4a2ee46b9b43ebfa4a49a08 - src/common/sdk/nvidia/inc/class/clc57e.h
9e1d2f90d77e23f1d2163a8f8d8d747058e21947 - src/common/sdk/nvidia/inc/class/cl9010.h 9e1d2f90d77e23f1d2163a8f8d8d747058e21947 - src/common/sdk/nvidia/inc/class/cl9010.h
7c8e1f1055f9522cfb2935ea0aae612ef172c26e - src/common/sdk/nvidia/inc/class/clc370_notification.h 5f4e91808d6289265c73f07072eb9cd028e87428 - src/common/sdk/nvidia/inc/class/clc370_notification.h
36c6162356ac39346c8900b1e0074e4b614d4b5a - src/common/sdk/nvidia/inc/class/clc370.h 36c6162356ac39346c8900b1e0074e4b614d4b5a - src/common/sdk/nvidia/inc/class/clc370.h
5df0ce4eb733554e963eb3c7938396f58f2dd4d5 - src/common/sdk/nvidia/inc/class/cl2081.h 5df0ce4eb733554e963eb3c7938396f58f2dd4d5 - src/common/sdk/nvidia/inc/class/cl2081.h
2e3d5c71793820d90973d547d8afdf41ff989f89 - src/common/sdk/nvidia/inc/class/clc67a.h 2e3d5c71793820d90973d547d8afdf41ff989f89 - src/common/sdk/nvidia/inc/class/clc67a.h
@@ -381,8 +381,8 @@ d2992c1a9aac5b1b5cfefcca72e9a2401190158c - src/common/sdk/nvidia/inc/ctrl/ctrl00
456707a5de78815fc6a33f2da7e2a2a45ccc4884 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073internal.h 456707a5de78815fc6a33f2da7e2a2a45ccc4884 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073internal.h
abed22b35137e2d40399eb4ed01724aa789cb635 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073event.h abed22b35137e2d40399eb4ed01724aa789cb635 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073event.h
505860d3cd6f7d5144f97195b9fb32dd5b8f74aa - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dp.h 505860d3cd6f7d5144f97195b9fb32dd5b8f74aa - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dp.h
f9f404124a718ace14803ebe84efe752fcef816b - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073specific.h 51cbe71bafc97e853c2b75147d7e9cb5cf72cefa - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073specific.h
ff78c1bb58b1946f3e75e053be9f2b5de443e2f4 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073system.h 8e807c3771f3d37885d4066d95ec71c05234b5ec - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073system.h
52f251090780737f14eb993150f3ae73be303921 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dpu.h 52f251090780737f14eb993150f3ae73be303921 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dpu.h
77eb4fab61225663a3f49b868c983d5d532ca184 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073svp.h 77eb4fab61225663a3f49b868c983d5d532ca184 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073svp.h
6ca26c7149455e43f32e8b83b74f4a34a24a2d29 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073base.h 6ca26c7149455e43f32e8b83b74f4a34a24a2d29 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073base.h
@@ -504,7 +504,7 @@ bbcecae47807b4578baa460da4147328140ecfcd - src/common/inc/swref/published/nv_ref
64c123c90018c5ee122b02b02cbccfcd5ec32cab - src/common/inc/swref/published/t23x/t234/dev_fuse.h 64c123c90018c5ee122b02b02cbccfcd5ec32cab - src/common/inc/swref/published/t23x/t234/dev_fuse.h
4de33a60116ce3fa3f440db105561eddc21ce375 - src/common/shared/nvstatus/nvstatus.c 4de33a60116ce3fa3f440db105561eddc21ce375 - src/common/shared/nvstatus/nvstatus.c
750ecc85242882a9e428d5a5cf1a64f418d59c5f - src/common/displayport/inc/dp_object.h 750ecc85242882a9e428d5a5cf1a64f418d59c5f - src/common/displayport/inc/dp_object.h
72f91aac76264d34ce778489f5ce839e03833db8 - src/common/displayport/inc/dp_messages.h a6ff1a7aee138f6771c5b0bbedb593a2641e1114 - src/common/displayport/inc/dp_messages.h
80380945c76c58648756446435d615f74630f2da - src/common/displayport/inc/dp_timeout.h 80380945c76c58648756446435d615f74630f2da - src/common/displayport/inc/dp_timeout.h
cdb1e7797c250b0a7c0449e2df5ce71e42b83432 - src/common/displayport/inc/dp_merger.h cdb1e7797c250b0a7c0449e2df5ce71e42b83432 - src/common/displayport/inc/dp_merger.h
070b4f6216f19feebb6a67cbb9c3eb22dc60cf74 - src/common/displayport/inc/dp_buffer.h 070b4f6216f19feebb6a67cbb9c3eb22dc60cf74 - src/common/displayport/inc/dp_buffer.h
@@ -513,58 +513,60 @@ cdb1e7797c250b0a7c0449e2df5ce71e42b83432 - src/common/displayport/inc/dp_merger.
e27519c72e533a69f7433638a1d292fb9df8772e - src/common/displayport/inc/dp_crc.h e27519c72e533a69f7433638a1d292fb9df8772e - src/common/displayport/inc/dp_crc.h
325818d0a4d1b15447923e2ed92c938d293dc079 - src/common/displayport/inc/dp_hostimp.h 325818d0a4d1b15447923e2ed92c938d293dc079 - src/common/displayport/inc/dp_hostimp.h
29ee5f4ef6670f06e96c07b36c11e3bad8bee6aa - src/common/displayport/inc/dp_address.h 29ee5f4ef6670f06e96c07b36c11e3bad8bee6aa - src/common/displayport/inc/dp_address.h
36e80dd13c5adc64c3adc9a931d5ebbf922e9502 - src/common/displayport/inc/dp_groupimpl.h f9149d441628fb2ad4fa630f74b9ca43ce710ba7 - src/common/displayport/inc/dp_groupimpl.h
8d8a5f0160922b6630fa796789c5d59cce94d9e0 - src/common/displayport/inc/dp_configcaps.h 8d8a5f0160922b6630fa796789c5d59cce94d9e0 - src/common/displayport/inc/dp_configcaps.h
e70068249ebb59040a3e3be1fc4248d714550e61 - src/common/displayport/inc/dp_evoadapter.h 570d78b90c470b48d47592a76404c190a0480023 - src/common/displayport/inc/dp_evoadapter.h
01f1dd58ed5bb12503fa45be7a6657cde0a857e2 - src/common/displayport/inc/dp_guid.h 01f1dd58ed5bb12503fa45be7a6657cde0a857e2 - src/common/displayport/inc/dp_guid.h
cca426d571c6b01f7953180e2e550e55c629f0f4 - src/common/displayport/inc/dp_auxretry.h cca426d571c6b01f7953180e2e550e55c629f0f4 - src/common/displayport/inc/dp_auxretry.h
11487c992494f502d1c48ff00982998504336800 - src/common/displayport/inc/dp_internal.h 11487c992494f502d1c48ff00982998504336800 - src/common/displayport/inc/dp_internal.h
f6e1b0850f5ed0f23f263d4104523d9290bb8669 - src/common/displayport/inc/dp_vrr.h f6e1b0850f5ed0f23f263d4104523d9290bb8669 - src/common/displayport/inc/dp_vrr.h
2f134665b274bb223c3f74e0ec5c6a0392fa6387 - src/common/displayport/inc/dp_discovery.h 2f134665b274bb223c3f74e0ec5c6a0392fa6387 - src/common/displayport/inc/dp_discovery.h
07d22f84e6a386dad251761278a828dab64b6dd5 - src/common/displayport/inc/dp_bitstream.h 07d22f84e6a386dad251761278a828dab64b6dd5 - src/common/displayport/inc/dp_bitstream.h
2a81681efef7ffced62c6d64cfdbc455d85fdb0a - src/common/displayport/inc/dp_mainlink.h 6617a20b016f0cd3278e37617d093b900a6b6afd - src/common/displayport/inc/dp_mainlink.h
9a0aa25938adf3bda9451aeab67fb04e266d771d - src/common/displayport/inc/dp_deviceimpl.h 96f8faea51e03cb6dd421e8c2b0a80d5a6ba8b93 - src/common/displayport/inc/dp_deviceimpl.h
eb9cdbb0a907926b1afd2a551ec19830f06ae205 - src/common/displayport/inc/dp_splitter.h eb9cdbb0a907926b1afd2a551ec19830f06ae205 - src/common/displayport/inc/dp_splitter.h
5bd3706ceea585df76a75dda7f9581b91ee8f998 - src/common/displayport/inc/dp_tracing.h 5bd3706ceea585df76a75dda7f9581b91ee8f998 - src/common/displayport/inc/dp_tracing.h
4a098c4d09dedc33b86748d5fe9a30d097675e9f - src/common/displayport/inc/dp_list.h 4a098c4d09dedc33b86748d5fe9a30d097675e9f - src/common/displayport/inc/dp_list.h
7b7d9a137027fbbedfc041465987fa4ed4198ce4 - src/common/displayport/inc/dp_edid.h 7b7d9a137027fbbedfc041465987fa4ed4198ce4 - src/common/displayport/inc/dp_edid.h
379d3933c90eaf9c35a0bad2bd6af960a321465f - src/common/displayport/inc/dp_wardatabase.h 379d3933c90eaf9c35a0bad2bd6af960a321465f - src/common/displayport/inc/dp_wardatabase.h
d876d77caef3541ae05f310857f3d32e642fba04 - src/common/displayport/inc/dp_auxdefs.h 800e4cb73c649c3c5ad56a8116a8de66aedd487c - src/common/displayport/inc/dp_auxdefs.h
e2075486b392d6b231f2f133922ac096ca4bc095 - src/common/displayport/inc/dp_ringbuffer.h e2075486b392d6b231f2f133922ac096ca4bc095 - src/common/displayport/inc/dp_ringbuffer.h
d0b72ca2db108478bba75393c7255356da0e8233 - src/common/displayport/inc/dp_regkeydatabase.h 2c60a5ee5d2a248e51a0ea740395f377d2e51e25 - src/common/displayport/inc/dp_regkeydatabase.h
36d3c602cbbf0a52d574f841ba1b75125ec3b24a - src/common/displayport/inc/dp_linkconfig.h cd9d3f57a9212166eba32b25cebc866a8d5bc026 - src/common/displayport/inc/dp_qse.h
72711e7f688ee25510fca0e7eef6a4a99bb0aff3 - src/common/displayport/inc/dp_linkconfig.h
e02e5621eaea52a2266a86dcd587f4714680caf4 - src/common/displayport/inc/dp_linkedlist.h e02e5621eaea52a2266a86dcd587f4714680caf4 - src/common/displayport/inc/dp_linkedlist.h
2067e2ca3b86014c3e6dfc51d6574d87ae12d907 - src/common/displayport/inc/dp_timer.h 2067e2ca3b86014c3e6dfc51d6574d87ae12d907 - src/common/displayport/inc/dp_timer.h
a3fc03562a3fa0968ab8d4a50424465174392f0e - src/common/displayport/inc/dp_connectorimpl.h c953ceae3005d389fb0873d8c3cc3783c7b2d885 - src/common/displayport/inc/dp_connectorimpl.h
34e808f745eaaff13aeb4e6cde1a8ce35f7b9def - src/common/displayport/inc/dp_connector.h 4a445c98d9541a53f77af2ffa154501793c01fe4 - src/common/displayport/inc/dp_connector.h
c2f5f82ddf1d0b5c976264ceb14fe9b67bf12851 - src/common/displayport/inc/dp_messagecodings.h 660ba146cf1242947eac3e2ded50ef4387ca8f35 - src/common/displayport/inc/dp_messagecodings.h
df11366a5bcfb641025f12cddf9b5e8c2ed008de - src/common/displayport/inc/dp_watermark.h df11366a5bcfb641025f12cddf9b5e8c2ed008de - src/common/displayport/inc/dp_watermark.h
020194b85245bad5de4dfe372a7ccb0c247d6ede - src/common/displayport/inc/dptestutil/dp_testmessage.h d2b00a849a81f6c6092e3b2c4e7ed20fcee62b39 - src/common/displayport/inc/dptestutil/dp_testmessage.h
70b155b0da07a92ede884a9cec715f67e6b5c3e8 - src/common/displayport/src/dp_list.cpp 70b155b0da07a92ede884a9cec715f67e6b5c3e8 - src/common/displayport/src/dp_list.cpp
37eabb1ab51cb38660eb24e294c63c8320750b96 - src/common/displayport/src/dp_sst_edid.cpp 37eabb1ab51cb38660eb24e294c63c8320750b96 - src/common/displayport/src/dp_sst_edid.cpp
fea946e5320e7de8e9229bca8d4a6a14b9e8db59 - src/common/displayport/src/dp_crc.cpp fea946e5320e7de8e9229bca8d4a6a14b9e8db59 - src/common/displayport/src/dp_crc.cpp
fbd877bac2efc8ee33e4e108e61c961e1fc42f44 - src/common/displayport/src/dp_messagecodings.cpp d199166ebfe00628b9c4894a97c3bb9f09d355e5 - src/common/displayport/src/dp_messagecodings.cpp
aa2e56f6c66bf91c2b4a6030de2d29480f69710e - src/common/displayport/src/dp_wardatabase.cpp aa2e56f6c66bf91c2b4a6030de2d29480f69710e - src/common/displayport/src/dp_wardatabase.cpp
de264916d0e3e873a4c624f237ea228469d0a980 - src/common/displayport/src/dp_watermark.cpp de264916d0e3e873a4c624f237ea228469d0a980 - src/common/displayport/src/dp_watermark.cpp
e874ffeaeb6deec57605bf91eaa2af116a9762bd - src/common/displayport/src/dp_bitstream.cpp e874ffeaeb6deec57605bf91eaa2af116a9762bd - src/common/displayport/src/dp_bitstream.cpp
818efd113374de206a36ccf2bf594b4e433a0b85 - src/common/displayport/src/dp_evoadapter.cpp f3d79cc73199a2250ac8219f0a696512f4e67d63 - src/common/displayport/src/dp_evoadapter.cpp
56ee9318a7b51a04baa1d25d7d9a798c733dc1bc - src/common/displayport/src/dp_vrr.cpp 56ee9318a7b51a04baa1d25d7d9a798c733dc1bc - src/common/displayport/src/dp_vrr.cpp
d991afdb694634e9df756184b5951739fc3fd0ab - src/common/displayport/src/dp_auxretry.cpp d991afdb694634e9df756184b5951739fc3fd0ab - src/common/displayport/src/dp_auxretry.cpp
554e6b7dadbb68ac0f3d2e368ca3fd90832ea254 - src/common/displayport/src/dp_discovery.cpp 554e6b7dadbb68ac0f3d2e368ca3fd90832ea254 - src/common/displayport/src/dp_discovery.cpp
45da2aabdaf6b5b2bf17a3deeb045feed1545415 - src/common/displayport/src/dp_messages.cpp 45da2aabdaf6b5b2bf17a3deeb045feed1545415 - src/common/displayport/src/dp_messages.cpp
719d2ddbfb8555636496cb5dd74ee6776059db92 - src/common/displayport/src/dp_timer.cpp 719d2ddbfb8555636496cb5dd74ee6776059db92 - src/common/displayport/src/dp_timer.cpp
ca92fed27d4c5ca5e9495df08e63d5f446e7f24b - src/common/displayport/src/dp_deviceimpl.cpp 1923346b4f1209a8ceaf30d240f1b05717149be4 - src/common/displayport/src/dp_deviceimpl.cpp
98cec6b663cf630c789e9823675cbb4948e1ba5e - src/common/displayport/src/dp_edid.cpp 98cec6b663cf630c789e9823675cbb4948e1ba5e - src/common/displayport/src/dp_edid.cpp
f4493ab7efc7030b4cd17bf792981a9dca497e29 - src/common/displayport/src/dp_groupimpl.cpp 6a27fd2443690afb573116c13d3f976348dee298 - src/common/displayport/src/dp_groupimpl.cpp
e10ed809c1ddb7e67f0d7caf88802f291c8567ef - src/common/displayport/src/dp_qse.cpp
4803cde0fffcf89fed46d6deaeba5c96c669a908 - src/common/displayport/src/dp_messageheader.cpp 4803cde0fffcf89fed46d6deaeba5c96c669a908 - src/common/displayport/src/dp_messageheader.cpp
9f31213ab8037d7bb18c96a67d2630d61546544a - src/common/displayport/src/dp_mst_edid.cpp 9f31213ab8037d7bb18c96a67d2630d61546544a - src/common/displayport/src/dp_mst_edid.cpp
f56f92e32710b0342805b785d34ba1a9f2a54ed3 - src/common/displayport/src/dp_guid.cpp f56f92e32710b0342805b785d34ba1a9f2a54ed3 - src/common/displayport/src/dp_guid.cpp
d2f8d43d650d9c0b4a8d9b8070087f13efdaac79 - src/common/displayport/src/dp_connectorimpl.cpp b487eed6e639a1aa485b06255beef61e112f24b3 - src/common/displayport/src/dp_connectorimpl.cpp
f83b3c17e9f26651f12c8835a682abdd66aed3a2 - src/common/displayport/src/dp_splitter.cpp f83b3c17e9f26651f12c8835a682abdd66aed3a2 - src/common/displayport/src/dp_splitter.cpp
1543bbaba8f3e149239cf44be3c0d080c624d5ba - src/common/displayport/src/dp_buffer.cpp 1543bbaba8f3e149239cf44be3c0d080c624d5ba - src/common/displayport/src/dp_buffer.cpp
fa4f4869d3d63c0180f30ae3736600a6627284c6 - src/common/displayport/src/dp_merger.cpp fa4f4869d3d63c0180f30ae3736600a6627284c6 - src/common/displayport/src/dp_merger.cpp
b18924b1d50232b92223355f608fcca1b6d7ff46 - src/common/displayport/src/dp_configcaps.cpp b18924b1d50232b92223355f608fcca1b6d7ff46 - src/common/displayport/src/dp_configcaps.cpp
fe8007b3d98dad71b17595ecb67af77b198827a0 - src/common/displayport/src/dptestutil/dp_testmessage.cpp a0b68fce10eb0b95518cfd291e2d282872225295 - src/common/displayport/src/dptestutil/dp_testmessage.cpp
54c516f23671ec703a4e000f700c16dce640367a - src/common/modeset/timing/nvt_dmt.c 54c516f23671ec703a4e000f700c16dce640367a - src/common/modeset/timing/nvt_dmt.c
890d8c2898a3277b0fed360301c2dc2688724f47 - src/common/modeset/timing/nvt_util.c 890d8c2898a3277b0fed360301c2dc2688724f47 - src/common/modeset/timing/nvt_util.c
cc04c12ebe4e2f7e31d0619ddd16db0c46b9db9e - src/common/modeset/timing/nvtiming.h cc04c12ebe4e2f7e31d0619ddd16db0c46b9db9e - src/common/modeset/timing/nvtiming.h
@@ -835,7 +837,7 @@ c5021789fed61a37794ade5a3632a8eb37c0c27f - src/nvidia/generated/g_kern_disp_nvoc
8b5821085e5aabc00408e7a90e78b2471de6797e - src/nvidia/generated/g_os_nvoc.h 8b5821085e5aabc00408e7a90e78b2471de6797e - src/nvidia/generated/g_os_nvoc.h
87c14e1c1a8f37f139f6a99efaf7752d6db48db5 - src/nvidia/generated/g_kern_disp_nvoc.c 87c14e1c1a8f37f139f6a99efaf7752d6db48db5 - src/nvidia/generated/g_kern_disp_nvoc.c
a97bf85ce6681aae086e0415aecaebf0208bfebb - src/nvidia/generated/g_tmr_nvoc.h a97bf85ce6681aae086e0415aecaebf0208bfebb - src/nvidia/generated/g_tmr_nvoc.h
779103a57f68832641a7616ea8c5608780cfc155 - src/nvidia/generated/g_disp_objs_nvoc.h d44164b90bdf5ed4a2ce9a5d13f680b8a997a5cb - src/nvidia/generated/g_disp_objs_nvoc.h
3b08d4bb1612bb193cd2f26229b119cc43284879 - src/nvidia/generated/g_rs_server_nvoc.h 3b08d4bb1612bb193cd2f26229b119cc43284879 - src/nvidia/generated/g_rs_server_nvoc.h
ddc0ac4e1d8b8aef15e147f1f85f8df37c196763 - src/nvidia/generated/g_hal_register.h ddc0ac4e1d8b8aef15e147f1f85f8df37c196763 - src/nvidia/generated/g_hal_register.h
aac848bd48955659eb5e07fcac70e6fe3c3a137a - src/nvidia/generated/g_hal_nvoc.c aac848bd48955659eb5e07fcac70e6fe3c3a137a - src/nvidia/generated/g_hal_nvoc.c
@@ -848,7 +850,7 @@ c8d6ddc934e0c4ae3fd2d2dc81d0d1a91c8b8d52 - src/nvidia/generated/g_disp_inst_mem_
76b1f545e3712a2f8e7c31b101acd9dd682c52f8 - src/nvidia/generated/g_traceable_nvoc.c 76b1f545e3712a2f8e7c31b101acd9dd682c52f8 - src/nvidia/generated/g_traceable_nvoc.c
c0750d49486dcf1718083d5deaef16c718b9a909 - src/nvidia/generated/g_eng_desc_nvoc.h c0750d49486dcf1718083d5deaef16c718b9a909 - src/nvidia/generated/g_eng_desc_nvoc.h
ad695d35b837b970b8f50a280d400ffed5067c0f - src/nvidia/generated/g_os_desc_mem_nvoc.c ad695d35b837b970b8f50a280d400ffed5067c0f - src/nvidia/generated/g_os_desc_mem_nvoc.c
e3078050c80bf14c9f91f12b43eab48af94c9ec5 - src/nvidia/generated/g_disp_objs_nvoc.c b114f65bcee6bda607f4549827ccb298f7449c03 - src/nvidia/generated/g_disp_objs_nvoc.c
b0089bee11caa0d8994b39eaecfb42ca3507de37 - src/nvidia/generated/g_syncpoint_mem_nvoc.h b0089bee11caa0d8994b39eaecfb42ca3507de37 - src/nvidia/generated/g_syncpoint_mem_nvoc.h
b30dc7b4114007f7649e18a7be2d829a3752447a - src/nvidia/generated/g_mem_nvoc.c b30dc7b4114007f7649e18a7be2d829a3752447a - src/nvidia/generated/g_mem_nvoc.c
06094e14a41e58c8a687bc8b64197a73c0c2b61a - src/nvidia/generated/g_system_nvoc.h 06094e14a41e58c8a687bc8b64197a73c0c2b61a - src/nvidia/generated/g_system_nvoc.h
@@ -1149,7 +1151,7 @@ c6e78a54a1b8d4ca6fe4b01d83e3199ea41606d7 - src/nvidia/src/kernel/gpu/mem_mgr/con
f30ae0e8e1e32d0adb7e52b8995c277637b6bc2a - src/nvidia/src/kernel/gpu/mem_mgr/mem_utils.c f30ae0e8e1e32d0adb7e52b8995c277637b6bc2a - src/nvidia/src/kernel/gpu/mem_mgr/mem_utils.c
3c463773f2f970b1764edb231d349164fe4341fc - src/nvidia/src/kernel/gpu/mem_mgr/mem_desc.c 3c463773f2f970b1764edb231d349164fe4341fc - src/nvidia/src/kernel/gpu/mem_mgr/mem_desc.c
2bb921b462c4b50d1f42b39b4728374c7433c8cb - src/nvidia/src/kernel/gpu/mem_mgr/arch/turing/mem_mgr_tu102_base.c 2bb921b462c4b50d1f42b39b4728374c7433c8cb - src/nvidia/src/kernel/gpu/mem_mgr/arch/turing/mem_mgr_tu102_base.c
5a053caaa8eb655d9e0f7ab42ec1b3f0b72fb787 - src/nvidia/src/kernel/gpu/dce_client/dce_client_rpc.c cc1249dcc4c4530c59f0aa314dbcd8f7a69be009 - src/nvidia/src/kernel/gpu/dce_client/dce_client_rpc.c
7f9874d9af6b937dac888a3ebb55a82c2a5de71b - src/nvidia/src/kernel/gpu/dce_client/dce_client.c 7f9874d9af6b937dac888a3ebb55a82c2a5de71b - src/nvidia/src/kernel/gpu/dce_client/dce_client.c
d5d8ff429d3bda7103bafcb2dca94678efc8ddd8 - src/nvidia/src/kernel/gpu_mgr/gpu_group.c d5d8ff429d3bda7103bafcb2dca94678efc8ddd8 - src/nvidia/src/kernel/gpu_mgr/gpu_group.c
719d890f8160efe57e4c3267db65885ebb66cd03 - src/nvidia/src/kernel/gpu_mgr/gpu_db.c 719d890f8160efe57e4c3267db65885ebb66cd03 - src/nvidia/src/kernel/gpu_mgr/gpu_db.c
@@ -1178,7 +1180,7 @@ d81ef382635d0c4de47dfa3d709e0702f371ceb7 - src/nvidia/interface/rmapi/src/g_finn
c3ab6005d7083e90145cac66addf815c4f93d9a0 - src/nvidia-modeset/lib/nvkms-format.c c3ab6005d7083e90145cac66addf815c4f93d9a0 - src/nvidia-modeset/lib/nvkms-format.c
b8854261256a801af52d1201081afa9c17486a96 - src/nvidia-modeset/include/nvkms-3dvision.h b8854261256a801af52d1201081afa9c17486a96 - src/nvidia-modeset/include/nvkms-3dvision.h
ebafc51b2b274cd1818e471850a5efa9618eb17d - src/nvidia-modeset/include/nvkms-prealloc.h ebafc51b2b274cd1818e471850a5efa9618eb17d - src/nvidia-modeset/include/nvkms-prealloc.h
8a0ced82697c32b97a80fa3366704014879610e7 - src/nvidia-modeset/include/nvkms-flip-workarea.h 0739ffa368efb761544295c03bc0ad633b5a3349 - src/nvidia-modeset/include/nvkms-flip-workarea.h
fa829f1cd3b73f194f39879c48962b703f640b65 - src/nvidia-modeset/include/nvkms-vrr.h fa829f1cd3b73f194f39879c48962b703f640b65 - src/nvidia-modeset/include/nvkms-vrr.h
49af4a8fa95d0e595deacadbca5360f097722e7f - src/nvidia-modeset/include/nvkms-evo1.h 49af4a8fa95d0e595deacadbca5360f097722e7f - src/nvidia-modeset/include/nvkms-evo1.h
496b94af536dd912866a05f7b2da53050b50c2f5 - src/nvidia-modeset/include/nvkms-prealloc-types.h 496b94af536dd912866a05f7b2da53050b50c2f5 - src/nvidia-modeset/include/nvkms-prealloc-types.h
@@ -1192,7 +1194,7 @@ a79cfb74026085b0aa612c0ae6789083e196bbc2 - src/nvidia-modeset/include/nvkms-evo-
eb5248c4b0b51e7aecd2de87e496253b3b235c70 - src/nvidia-modeset/include/nvkms-utils-flip.h eb5248c4b0b51e7aecd2de87e496253b3b235c70 - src/nvidia-modeset/include/nvkms-utils-flip.h
377dd4a29b2ea5937a9b8fc3fba0c9e4ef92992e - src/nvidia-modeset/include/nvkms-cursor.h 377dd4a29b2ea5937a9b8fc3fba0c9e4ef92992e - src/nvidia-modeset/include/nvkms-cursor.h
ec1374d339746b73bc7c7614695fde68c156074a - src/nvidia-modeset/include/nvkms-rm.h ec1374d339746b73bc7c7614695fde68c156074a - src/nvidia-modeset/include/nvkms-rm.h
d57ae79509c667e8d16a4756d85e3564c1b1ac34 - src/nvidia-modeset/include/nvkms-modeset.h 0449c65467d54097b65d60eec670450b126b07c1 - src/nvidia-modeset/include/nvkms-modeset.h
be6e0e97c1e7ffc0daa2f14ef7b05b9f9c11dc16 - src/nvidia-modeset/include/nvkms-attributes.h be6e0e97c1e7ffc0daa2f14ef7b05b9f9c11dc16 - src/nvidia-modeset/include/nvkms-attributes.h
07ac47b52b1b42c143501c4a95a88a3f86f5be03 - src/nvidia-modeset/include/nvkms-hdmi.h 07ac47b52b1b42c143501c4a95a88a3f86f5be03 - src/nvidia-modeset/include/nvkms-hdmi.h
6b21a68e254becdd2641bc456f194f54c23abe51 - src/nvidia-modeset/include/nvkms-framelock.h 6b21a68e254becdd2641bc456f194f54c23abe51 - src/nvidia-modeset/include/nvkms-framelock.h
@@ -1201,14 +1203,14 @@ ae03509966df56d98fa72b7528ab43ec2b258381 - src/nvidia-modeset/include/nvkms-util
f5f3b11c78a8b0eef40c09e1751615a47f516edb - src/nvidia-modeset/include/nvkms-hal.h f5f3b11c78a8b0eef40c09e1751615a47f516edb - src/nvidia-modeset/include/nvkms-hal.h
d05ef9a837f2927fe387e7d157ea76c7ef567807 - src/nvidia-modeset/include/nvkms-lut.h d05ef9a837f2927fe387e7d157ea76c7ef567807 - src/nvidia-modeset/include/nvkms-lut.h
1b75646c99c748f9070208eb58f0082812eabbd9 - src/nvidia-modeset/include/nvkms-private.h 1b75646c99c748f9070208eb58f0082812eabbd9 - src/nvidia-modeset/include/nvkms-private.h
15dddd9307fa7ac201bd9ebc1e35e6ac0d2cf6c9 - src/nvidia-modeset/include/nvkms-evo.h 6fa4708e4f6dfe63f149a1c70fa84bf9df01026a - src/nvidia-modeset/include/nvkms-evo.h
4a94381bd8c24b09193577d3f05d6d61f178e1cf - src/nvidia-modeset/include/nvkms-ctxdma.h 4a94381bd8c24b09193577d3f05d6d61f178e1cf - src/nvidia-modeset/include/nvkms-ctxdma.h
11bae7c491bbb0ba4cad94b645d47c384191fa5c - src/nvidia-modeset/include/nvkms-flip.h 11bae7c491bbb0ba4cad94b645d47c384191fa5c - src/nvidia-modeset/include/nvkms-flip.h
041f03c5a566d8549843405cd3e6e0a3520d014d - src/nvidia-modeset/include/nvkms-modeset-types.h 00d2f2fa1f7c96757f67b9ca3ff1c2699a493bd0 - src/nvidia-modeset/include/nvkms-modeset-types.h
260b6ef87c755e55a803adad4ce49f2d57315f9a - src/nvidia-modeset/include/nvkms-event.h 260b6ef87c755e55a803adad4ce49f2d57315f9a - src/nvidia-modeset/include/nvkms-event.h
35fa1444c57f7adbbddddc612237f3ad38cdd78f - src/nvidia-modeset/include/nvkms-rmapi.h 35fa1444c57f7adbbddddc612237f3ad38cdd78f - src/nvidia-modeset/include/nvkms-rmapi.h
118d0ea84ff81de16fbdc2c7daf249ee5c82ed6e - src/nvidia-modeset/include/nvkms-modepool.h 118d0ea84ff81de16fbdc2c7daf249ee5c82ed6e - src/nvidia-modeset/include/nvkms-modepool.h
472c68eb149714b9fe9a5c3b052f60144e9ba297 - src/nvidia-modeset/include/nvkms-types.h 62be8578b3eec01438014f11a1b1b210b09d6ce6 - src/nvidia-modeset/include/nvkms-types.h
4a33d410f090fd4f4dfc9a6de285f8e8fb1c9ced - src/nvidia-modeset/include/nvkms-surface.h 4a33d410f090fd4f4dfc9a6de285f8e8fb1c9ced - src/nvidia-modeset/include/nvkms-surface.h
b0d407b0413453ec71481f84cc448d090b90d609 - src/nvidia-modeset/include/nvkms-evo3.h b0d407b0413453ec71481f84cc448d090b90d609 - src/nvidia-modeset/include/nvkms-evo3.h
8c7e0e15c1038fe518e98d8f86fafb250b10a1d2 - src/nvidia-modeset/include/nvkms-stereo.h 8c7e0e15c1038fe518e98d8f86fafb250b10a1d2 - src/nvidia-modeset/include/nvkms-stereo.h
@@ -1218,33 +1220,33 @@ c386632dbdc0e89019d5618f132dbcb3dff4dafb - src/nvidia-modeset/include/dp/nvdp-de
a8fbb7a071c0e7b326f384fed7547e7b6ec81c3e - src/nvidia-modeset/include/dp/nvdp-timer.h a8fbb7a071c0e7b326f384fed7547e7b6ec81c3e - src/nvidia-modeset/include/dp/nvdp-timer.h
ae43c46687d16b93189047d9eeed933a67e5571f - src/nvidia-modeset/include/dp/nvdp-connector.h ae43c46687d16b93189047d9eeed933a67e5571f - src/nvidia-modeset/include/dp/nvdp-connector.h
727bd77cfbc9ac4989c2ab7eec171ceb516510aa - src/nvidia-modeset/kapi/include/nvkms-kapi-notifiers.h 727bd77cfbc9ac4989c2ab7eec171ceb516510aa - src/nvidia-modeset/kapi/include/nvkms-kapi-notifiers.h
27612b72a77ac67cd468ac7f15948d2ad78defed - src/nvidia-modeset/kapi/include/nvkms-kapi-internal.h d77e520819f0fa8a775542f493af03f9f2aafc47 - src/nvidia-modeset/kapi/include/nvkms-kapi-internal.h
8a6f30959567fa85df3ded73a5c54c67a23b5fd3 - src/nvidia-modeset/kapi/src/nvkms-kapi.c 277738dc6ab009b77546355299cadabc5144fc5c - src/nvidia-modeset/kapi/src/nvkms-kapi.c
01d943d6edb0c647c2b8dbc44460948665b03e7a - src/nvidia-modeset/kapi/src/nvkms-kapi-notifiers.c 01d943d6edb0c647c2b8dbc44460948665b03e7a - src/nvidia-modeset/kapi/src/nvkms-kapi-notifiers.c
ce42ceac4c4cf9d249d66ab57ae2f435cd9623fc - src/nvidia-modeset/kapi/src/nvkms-kapi-sync.c ce42ceac4c4cf9d249d66ab57ae2f435cd9623fc - src/nvidia-modeset/kapi/src/nvkms-kapi-sync.c
80c2c9a2a05beb0202239db8b0dd7080ff21c194 - src/nvidia-modeset/kapi/interface/nvkms-kapi-private.h 80c2c9a2a05beb0202239db8b0dd7080ff21c194 - src/nvidia-modeset/kapi/interface/nvkms-kapi-private.h
ba72879894c335c61a67f7bae9f6ea94c3b74e1f - src/nvidia-modeset/kapi/interface/nvkms-kapi.h 23e71bf8f57bc6777ee6ee419dfdd44d7a2a3c6e - src/nvidia-modeset/kapi/interface/nvkms-kapi.h
89bd2f4757d3b901071e523a981903834cca2d7f - src/nvidia-modeset/src/nvkms-modeset.c 26144f7b6e9358a5418735c5c357c964047b52ca - src/nvidia-modeset/src/nvkms-modeset.c
b7232f4b4b8f0d4c395c241c451fc17b6ab84d7f - src/nvidia-modeset/src/nvkms-evo.c 5f559582336ab0e252f25039d43b114a6630758c - src/nvidia-modeset/src/nvkms-evo.c
7d0e38f9d79e0c928bdc67276b8ecb0c18470b88 - src/nvidia-modeset/src/nvkms-hw-flip.c aa185dd37a2ece9f7698c9076ec5c9fc79b6a476 - src/nvidia-modeset/src/nvkms-hw-flip.c
6a35b80a6995777dc9500cac9659e6f0f0c12d23 - src/nvidia-modeset/src/nvkms-cursor3.c 6a35b80a6995777dc9500cac9659e6f0f0c12d23 - src/nvidia-modeset/src/nvkms-cursor3.c
710b38a93fee94fa4659309451bd4e7baa7ff0d6 - src/nvidia-modeset/src/nvkms-rm.c 4f973e22225946be9c5c726a06ea3ad915ec4a03 - src/nvidia-modeset/src/nvkms-rm.c
30ad7839985dea46e6b6d43499210a3056da51ad - src/nvidia-modeset/src/nvkms-utils-flip.c 30ad7839985dea46e6b6d43499210a3056da51ad - src/nvidia-modeset/src/nvkms-utils-flip.c
1769a95e465762c8efa53cf17c40679754292003 - src/nvidia-modeset/src/nvkms-evo3.c 6a84fae64ca00bc8b5d9ae75c291140f23d8fd4d - src/nvidia-modeset/src/nvkms-evo3.c
b13bd89b5ac60ceab56e9c2398cf7668375ab7ad - src/nvidia-modeset/src/nvkms-flip.c c13871725cc47dfb99b3d66ed41a57d2ea5f8f97 - src/nvidia-modeset/src/nvkms-flip.c
3e723edf2a0a2f4f93032feb4aeaaf7fd0acddfa - src/nvidia-modeset/src/g_nvkms-evo-states.c 3e723edf2a0a2f4f93032feb4aeaaf7fd0acddfa - src/nvidia-modeset/src/g_nvkms-evo-states.c
761c8540278a1ffb9fe4aa0adb1b4ee95524787a - src/nvidia-modeset/src/nvkms-hal.c 761c8540278a1ffb9fe4aa0adb1b4ee95524787a - src/nvidia-modeset/src/nvkms-hal.c
9e4d3e3505a84d8634a2ef2307628a8fe551a4c3 - src/nvidia-modeset/src/nvkms-surface.c 9e4d3e3505a84d8634a2ef2307628a8fe551a4c3 - src/nvidia-modeset/src/nvkms-surface.c
bd2e4a6102432d4ac1faf92b5d3db29e9e3cfafc - src/nvidia-modeset/src/nvkms-utils.c bd2e4a6102432d4ac1faf92b5d3db29e9e3cfafc - src/nvidia-modeset/src/nvkms-utils.c
6d41c9f84cc9ce2d16812e94a3fba055b3fc7308 - src/nvidia-modeset/src/nvkms-conf.c 6d41c9f84cc9ce2d16812e94a3fba055b3fc7308 - src/nvidia-modeset/src/nvkms-conf.c
9a8746ee4a4e772b8ac13f06dc0de8a250fdb4c7 - src/nvidia-modeset/src/nvkms-ctxdma.c 9a8746ee4a4e772b8ac13f06dc0de8a250fdb4c7 - src/nvidia-modeset/src/nvkms-ctxdma.c
eb99e694dc088194091e33ed73c01b745c3b939e - src/nvidia-modeset/src/nvkms-hdmi.c e7a717712eb5f710df2c735013f27b0c03ae276c - src/nvidia-modeset/src/nvkms-hdmi.c
2fa9d9b3cbeeb9406f2dd51a4f4a5d53844a31c9 - src/nvidia-modeset/src/nvkms-dpy.c 2fa9d9b3cbeeb9406f2dd51a4f4a5d53844a31c9 - src/nvidia-modeset/src/nvkms-dpy.c
083cd2c0d7e9e0f351e15a5ad85cdbd50a583d13 - src/nvidia-modeset/src/nvkms.c d01a59a7c22d3998f1cf97f2812c6f99dab4c097 - src/nvidia-modeset/src/nvkms.c
dff88ceaf95239b51b60af915f92e389bb844425 - src/nvidia-modeset/src/nvkms-cursor.c dff88ceaf95239b51b60af915f92e389bb844425 - src/nvidia-modeset/src/nvkms-cursor.c
2b304663f2a005b5ccdecfafb69a3407f2feeb18 - src/nvidia-modeset/src/nvkms-evo2.c 2b304663f2a005b5ccdecfafb69a3407f2feeb18 - src/nvidia-modeset/src/nvkms-evo2.c
94e9c19b7b6a5e56fd46b0885e7dd6fe698fe2df - src/nvidia-modeset/src/nvkms-prealloc.c 94e9c19b7b6a5e56fd46b0885e7dd6fe698fe2df - src/nvidia-modeset/src/nvkms-prealloc.c
54b41301663dc9fdc45d24c7a43ad4a980821f9d - src/nvidia-modeset/src/nvkms-attributes.c 795ddaec1aa05d152eedd28a3bc82ca49e44a72f - src/nvidia-modeset/src/nvkms-attributes.c
65b02b48caff2a9100b8c5614f91d42fb20da9c0 - src/nvidia-modeset/src/nvkms-dpy-override.c 65b02b48caff2a9100b8c5614f91d42fb20da9c0 - src/nvidia-modeset/src/nvkms-dpy-override.c
9fea40b7b55d6ebf3f73b5d469751c873ffbe7c0 - src/nvidia-modeset/src/nvkms-dma.c 9fea40b7b55d6ebf3f73b5d469751c873ffbe7c0 - src/nvidia-modeset/src/nvkms-dma.c
da726d20eea99a96af4c10aace88f419e8ee2a34 - src/nvidia-modeset/src/nvkms-event.c da726d20eea99a96af4c10aace88f419e8ee2a34 - src/nvidia-modeset/src/nvkms-event.c
@@ -1256,7 +1258,7 @@ df59641109db4529eed62cf156b1815a3e67ba05 - src/nvidia-modeset/src/nvkms-vrr.c
05ca4acdfeb9b99eccc7e222846fc688473322ae - src/nvidia-modeset/src/nvkms-rmapi-dgpu.c 05ca4acdfeb9b99eccc7e222846fc688473322ae - src/nvidia-modeset/src/nvkms-rmapi-dgpu.c
f754a27436fd1e1fa103de6110224c21ad7ea9f4 - src/nvidia-modeset/src/nvkms-pow.c f754a27436fd1e1fa103de6110224c21ad7ea9f4 - src/nvidia-modeset/src/nvkms-pow.c
f4a02d5b6cb1fa5d461514b21e13002ad9cfa1a4 - src/nvidia-modeset/src/nvkms-evo1.c f4a02d5b6cb1fa5d461514b21e13002ad9cfa1a4 - src/nvidia-modeset/src/nvkms-evo1.c
6f2eb25d57d2dc3c1e5db869cfbdf556878d3332 - src/nvidia-modeset/src/nvkms-console-restore.c 3b4843e97ce186b05df6b6f19b463818d769bfcb - src/nvidia-modeset/src/nvkms-console-restore.c
933829ff39c6d1fe41bd82a5af177f5059b4b69e - src/nvidia-modeset/src/nvkms-modepool.c 933829ff39c6d1fe41bd82a5af177f5059b4b69e - src/nvidia-modeset/src/nvkms-modepool.c
403e6dbff0a607c2aecf3204c56633bd7b612ae2 - src/nvidia-modeset/src/nvkms-stereo.c 403e6dbff0a607c2aecf3204c56633bd7b612ae2 - src/nvidia-modeset/src/nvkms-stereo.c
93ab81a362c4ba29ed817dd14fbd75f2b36b62b8 - src/nvidia-modeset/src/nvkms-lut.c 93ab81a362c4ba29ed817dd14fbd75f2b36b62b8 - src/nvidia-modeset/src/nvkms-lut.c
@@ -1271,8 +1273,8 @@ a2a4b7063fa903cc434163ebceb7c8d48f703c33 - src/nvidia-modeset/src/dp/nvdp-connec
69fed95ab3954dd5cb26590d02cd8ba09cdff1ac - src/nvidia-modeset/src/dp/nvdp-connector-event-sink.hpp 69fed95ab3954dd5cb26590d02cd8ba09cdff1ac - src/nvidia-modeset/src/dp/nvdp-connector-event-sink.hpp
372ea4c8e7bbc0bdeb899e6f163c8f20c663ad22 - src/nvidia-modeset/os-interface/include/nvidia-modeset-os-interface.h 372ea4c8e7bbc0bdeb899e6f163c8f20c663ad22 - src/nvidia-modeset/os-interface/include/nvidia-modeset-os-interface.h
0a0650835e8835d32418891a2fd25031f5d8770e - src/nvidia-modeset/os-interface/include/nvkms.h 0a0650835e8835d32418891a2fd25031f5d8770e - src/nvidia-modeset/os-interface/include/nvkms.h
5c987d408208e74a7e0e50d79e96508b07955d8e - src/nvidia-modeset/interface/nvkms-api.h 7987b3cd8d56be40767c76286d78cf5962cd166c - src/nvidia-modeset/interface/nvkms-api.h
b986bc6591ba17a74ad81ec4c93347564c6d5165 - src/nvidia-modeset/interface/nvkms-format.h b986bc6591ba17a74ad81ec4c93347564c6d5165 - src/nvidia-modeset/interface/nvkms-format.h
2ea1436104463c5e3d177e8574c3b4298976d37e - src/nvidia-modeset/interface/nvkms-ioctl.h 2ea1436104463c5e3d177e8574c3b4298976d37e - src/nvidia-modeset/interface/nvkms-ioctl.h
314f2400c5f4342ebec578c24689329ab79e497d - src/nvidia-modeset/interface/nvkms-api-types.h 1e9c09285aabbfd1010e786f08494cba36658a0d - src/nvidia-modeset/interface/nvkms-api-types.h
8e3e74d2b3f45381e7b0012d930cf451cbd1728f - src/nvidia-modeset/interface/nvkms-sync.h 8e3e74d2b3f45381e7b0012d930cf451cbd1728f - src/nvidia-modeset/interface/nvkms-sync.h

View File

@@ -55,6 +55,7 @@ typedef NvU32 NvKmsFrameLockHandle;
typedef NvU32 NvKmsDeferredRequestFifoHandle; typedef NvU32 NvKmsDeferredRequestFifoHandle;
typedef NvU32 NvKmsSwapGroupHandle; typedef NvU32 NvKmsSwapGroupHandle;
typedef NvU32 NvKmsVblankSyncObjectHandle; typedef NvU32 NvKmsVblankSyncObjectHandle;
typedef NvU32 NvKmsVblankIntrCallbackHandle;
struct NvKmsSize { struct NvKmsSize {
NvU16 width; NvU16 width;
@@ -545,6 +546,36 @@ enum NvKmsInputColorRange {
NVKMS_INPUT_COLORRANGE_FULL = 2, NVKMS_INPUT_COLORRANGE_FULL = 2,
}; };
enum NvKmsOutputColorimetry {
NVKMS_OUTPUT_COLORIMETRY_DEFAULT = 0,
NVKMS_OUTPUT_COLORIMETRY_SRGB = 1,
NVKMS_OUTPUT_COLORIMETRY_BT601 = 2,
NVKMS_OUTPUT_COLORIMETRY_BT709 = 3,
NVKMS_OUTPUT_COLORIMETRY_BT2020 = 4,
NVKMS_OUTPUT_COLORIMETRY_BT2100 = 5,
};
/*! Values for the NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE attribute. */
enum NvKmsDpyAttributeRequestedColorSpaceValue {
NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE_RGB = 0,
NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE_YCbCr422 = 1,
NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE_YCbCr444 = 2,
};
/*!
* * Values for the NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_RANGE and
* * NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_RANGE attributes.
* */
enum NvKmsDpyAttributeColorRangeValue {
NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_FULL = 0,
NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_LIMITED = 1,
};
enum NvKmsInputColorSpace { enum NvKmsInputColorSpace {
/* Unknown colorspace; no de-gamma will be applied */ /* Unknown colorspace; no de-gamma will be applied */
NVKMS_INPUT_COLORSPACE_NONE = 0, NVKMS_INPUT_COLORSPACE_NONE = 0,
@@ -558,19 +589,17 @@ enum NvKmsInputColorSpace {
/* sRGB colorspace with sRGB gamma transfer function */ /* sRGB colorspace with sRGB gamma transfer function */
NVKMS_INPUT_COLORSPACE_SRGB = 3, NVKMS_INPUT_COLORSPACE_SRGB = 3,
/* Rec601 colorspace with Rec601 gamma transfer function */
NVKMS_INPUT_COLORSPACE_BT601 = 4,
/* Rec709 colorspace with Rec709 gamma transfer function */ /* Rec709 colorspace with Rec709 gamma transfer function */
NVKMS_INPUT_COLORSPACE_REC709 = 4, NVKMS_INPUT_COLORSPACE_BT709 = 5,
/* Rec709 colorspace with linear (identity) gamma */ /* Rec709 colorspace with linear (identity) gamma */
NVKMS_INPUT_COLORSPACE_REC709_LINEAR = 5 NVKMS_INPUT_COLORSPACE_BT709_LINEAR = 6,
};
enum NvKmsOutputColorSpace { /* Rec2020 colorspace with Rec2020 gamma transfer function */
/* Unknown colorspace; no re-gamma will be applied */ NVKMS_INPUT_COLORSPACE_BT2020 = 7,
NVKMS_OUTPUT_COLORSPACE_NONE = 0,
/* sRGB gamma transfer function will be applied */
NVKMS_OUTPUT_COLORSPACE_SRGB = 1
}; };
enum NvKmsOutputTf { enum NvKmsOutputTf {
@@ -661,4 +690,6 @@ struct NvKmsSuperframeInfo {
} view[NVKMS_MAX_SUPERFRAME_VIEWS]; } view[NVKMS_MAX_SUPERFRAME_VIEWS];
}; };
typedef void (*NVVBlankIntrCallbackProc)(NvU64 param1, NvU64 param2);
#endif /* NVKMS_API_TYPES_H */ #endif /* NVKMS_API_TYPES_H */

View File

@@ -248,6 +248,7 @@ struct NvKmsKapiLayerConfig {
NvU16 dstWidth, dstHeight; NvU16 dstWidth, dstHeight;
enum NvKmsInputColorSpace inputColorSpace; enum NvKmsInputColorSpace inputColorSpace;
enum NvKmsInputColorRange inputColorRange;
}; };
struct NvKmsKapiLayerRequestedConfig { struct NvKmsKapiLayerRequestedConfig {
@@ -301,6 +302,10 @@ struct NvKmsKapiHeadModeSetConfig {
struct NvKmsKapiDisplayMode mode; struct NvKmsKapiDisplayMode mode;
NvBool vrrEnabled; NvBool vrrEnabled;
enum NvKmsOutputColorimetry colorimetry;
enum NvKmsDpyAttributeColorRangeValue outputColorRange;
}; };
struct NvKmsKapiHeadRequestedConfig { struct NvKmsKapiHeadRequestedConfig {
@@ -309,6 +314,8 @@ struct NvKmsKapiHeadRequestedConfig {
NvBool activeChanged : 1; NvBool activeChanged : 1;
NvBool displaysChanged : 1; NvBool displaysChanged : 1;
NvBool modeChanged : 1; NvBool modeChanged : 1;
NvBool colorrangeChanged: 1;
NvBool colorimetryChanged : 1;
} flags; } flags;
struct NvKmsKapiCursorRequestedConfig cursorRequestedConfig; struct NvKmsKapiCursorRequestedConfig cursorRequestedConfig;
@@ -1397,6 +1404,18 @@ struct NvKmsKapiFunctionsTable {
( (
NvKmsKapiSuspendResumeCallbackFunc *function NvKmsKapiSuspendResumeCallbackFunc *function
); );
struct NvKmsKapiVblankIntrCallback*
(*RegisterVblankIntrCallback)(struct NvKmsKapiDevice *device,
const NvU32 head,
NVVBlankIntrCallbackProc pCallback,
NvU64 param1,
NvU64 param2);
void (*UnregisterVblankIntrCallback)(
struct NvKmsKapiDevice *device,
const NvU32 head,
struct NvKmsKapiVblankIntrCallback *pCallback);
}; };
/** @} */ /** @} */

View File

@@ -5767,24 +5767,6 @@ compile_test() {
compile_check_conftest "$CODE" "NV_MM_PASID_SET_PRESENT" "" "functions" compile_check_conftest "$CODE" "NV_MM_PASID_SET_PRESENT" "" "functions"
;; ;;
drm_crtc_state_has_no_vblank)
#
# Determine if the 'drm_crtc_state' structure has 'no_vblank'.
#
# drm_crtc_state::no_vblank was added by commit b25c60af7a877
# ("drm/crtc: Add a generic infrastructure to fake VBLANK events")
# in 4.18.0-rc3 (2018-07-03).
#
CODE="
#include <drm/drm_crtc.h>
void conftest_drm_crtc_state_has_no_vblank(void) {
struct drm_crtc_state foo;
(void)foo.no_vblank;
}"
compile_check_conftest "$CODE" "NV_DRM_CRTC_STATE_HAS_NO_VBLANK" "" "types"
;;
drm_mode_config_has_allow_fb_modifiers) drm_mode_config_has_allow_fb_modifiers)
# #
# Determine if the 'drm_mode_config' structure has # Determine if the 'drm_mode_config' structure has

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved. * Copyright (c) 2015- 2024, NVIDIA CORPORATION. All rights reserved.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"), * copy of this software and associated documentation files (the "Software"),
@@ -216,6 +216,51 @@ done:
return status; return status;
} }
static void nv_drm_connector_reset(struct drm_connector *connector)
{
struct nv_drm_device *nv_dev = to_nv_device(connector->dev);
struct nv_drm_connector_state * nv_connector_state =
nv_drm_calloc(1, sizeof(*nv_connector_state));
if (!nv_connector_state) {
return;
}
__drm_atomic_helper_connector_reset(connector, &nv_connector_state->base);
}
static struct drm_connector_state* nv_drm_connector_atomic_duplicate_state(struct drm_connector *connector)
{
struct nv_drm_connector_state *nv_drm_old_connector_state =
to_nv_drm_connector_state(connector->state);
struct nv_drm_connector_state *nv_drm_new_connector_state =
nv_drm_calloc(1, sizeof(*nv_drm_new_connector_state));
if (!nv_drm_new_connector_state) {
return NULL;
}
__drm_atomic_helper_connector_duplicate_state(connector, &nv_drm_new_connector_state->base);
nv_drm_new_connector_state->output_colorrange = nv_drm_old_connector_state->output_colorrange;
nv_drm_new_connector_state->op_colorrange_changed = false;
return &nv_drm_new_connector_state->base;
}
static void nv_drm_connector_atomic_destroy_state(
struct drm_connector *connector,
struct drm_connector_state *state)
{
struct nv_drm_connector_state *nv_drm_connector_state =
to_nv_drm_connector_state(state);
__drm_atomic_helper_connector_destroy_state(state);
nv_drm_free(nv_drm_connector_state);
}
static void __nv_drm_connector_force(struct drm_connector *connector) static void __nv_drm_connector_force(struct drm_connector *connector)
{ {
__nv_drm_connector_detect_internal(connector); __nv_drm_connector_detect_internal(connector);
@@ -227,17 +272,60 @@ nv_drm_connector_detect(struct drm_connector *connector, bool force)
return __nv_drm_connector_detect_internal(connector); return __nv_drm_connector_detect_internal(connector);
} }
static int nv_drm_connector_atomic_get_property(
struct drm_connector *connector,
const struct drm_connector_state *state,
struct drm_property *property,
uint64_t *val)
{
struct nv_drm_device *nv_dev = to_nv_device(connector->dev);
const struct nv_drm_connector_state *nv_drm_connector_state =
to_nv_drm_connector_state_const(state);
if (property == nv_dev->nv_output_colorrange_property) {
*val = nv_drm_connector_state->output_colorrange;
} else {
return -EINVAL;
}
return 0;
}
static int nv_drm_connector_atomic_set_property(
struct drm_connector *connector,
struct drm_connector_state *state,
struct drm_property *property,
uint64_t val)
{
struct nv_drm_device *nv_dev = to_nv_device(connector->dev);
struct nv_drm_connector_state *nv_drm_connector_state =
to_nv_drm_connector_state(state);
if (property == nv_dev->nv_output_colorrange_property) {
if (val != nv_drm_connector_state->output_colorrange) {
nv_drm_connector_state->output_colorrange = val;
nv_drm_connector_state->op_colorrange_changed = true;
}
} else {
return -EINVAL;
}
return 0;
}
static struct drm_connector_funcs nv_connector_funcs = { static struct drm_connector_funcs nv_connector_funcs = {
#if defined NV_DRM_ATOMIC_HELPER_CONNECTOR_DPMS_PRESENT #if defined NV_DRM_ATOMIC_HELPER_CONNECTOR_DPMS_PRESENT
.dpms = drm_atomic_helper_connector_dpms, .dpms = drm_atomic_helper_connector_dpms,
#endif #endif
.destroy = nv_drm_connector_destroy, .destroy = nv_drm_connector_destroy,
.reset = drm_atomic_helper_connector_reset, .reset = nv_drm_connector_reset,
.force = __nv_drm_connector_force, .force = __nv_drm_connector_force,
.detect = nv_drm_connector_detect, .detect = nv_drm_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, .atomic_duplicate_state = nv_drm_connector_atomic_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state, .atomic_destroy_state = nv_drm_connector_atomic_destroy_state,
.atomic_get_property = nv_drm_connector_atomic_get_property,
.atomic_set_property = nv_drm_connector_atomic_set_property,
}; };
static int nv_drm_connector_get_modes(struct drm_connector *connector) static int nv_drm_connector_get_modes(struct drm_connector *connector)
@@ -349,10 +437,89 @@ nv_drm_connector_best_encoder(struct drm_connector *connector)
return NULL; return NULL;
} }
static int
nv_drm_connector_atomic_check(struct drm_connector *connector,
struct drm_atomic_state *state)
{
struct drm_connector_state *new_connector_state =
drm_atomic_get_new_connector_state(state, connector);
struct drm_connector_state *old_connector_state =
drm_atomic_get_old_connector_state(state, connector);
struct nv_drm_device *nv_dev = to_nv_device(connector->dev);
const struct nv_drm_connector_state *nv_drm_new_connector_state =
to_nv_drm_connector_state_const(new_connector_state);
const struct nv_drm_connector_state *nv_drm_old_connector_state =
to_nv_drm_connector_state_const(old_connector_state);
struct drm_crtc *crtc = new_connector_state->crtc;
struct drm_crtc_state *crtc_state;
struct nv_drm_crtc_state *nv_crtc_state;
struct NvKmsKapiHeadRequestedConfig *req_config;
if (!crtc) {
return 0;
}
crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
nv_crtc_state = to_nv_crtc_state(crtc_state);
req_config = &nv_crtc_state->req_config;
if ((nv_drm_new_connector_state->op_colorrange_changed == true) ||
(nv_drm_old_connector_state->output_colorrange != nv_drm_new_connector_state->output_colorrange)) {
switch (nv_drm_new_connector_state->output_colorrange) {
case NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_FULL:
case NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_LIMITED:
req_config->modeSetConfig.outputColorRange =
nv_drm_new_connector_state->output_colorrange;
req_config->flags.colorrangeChanged = true;
break;
default:
NV_DRM_DEV_LOG_ERR(nv_dev, "Unsupported ouput color range");
return -EINVAL;
}
}
req_config->flags.colorimetryChanged =
(old_connector_state->colorspace != new_connector_state->colorspace);
switch (new_connector_state->colorspace) {
case DRM_MODE_COLORIMETRY_DEFAULT:
req_config->modeSetConfig.colorimetry =
NVKMS_OUTPUT_COLORIMETRY_DEFAULT;
break;
case DRM_MODE_COLORIMETRY_XVYCC_601:
case DRM_MODE_COLORIMETRY_SYCC_601:
case DRM_MODE_COLORIMETRY_OPYCC_601:
req_config->modeSetConfig.colorimetry =
NVKMS_OUTPUT_COLORIMETRY_BT601;
break;
case DRM_MODE_COLORIMETRY_BT709_YCC:
case DRM_MODE_COLORIMETRY_XVYCC_709:
req_config->modeSetConfig.colorimetry =
NVKMS_OUTPUT_COLORIMETRY_BT709;
break;
case DRM_MODE_COLORIMETRY_BT2020_RGB:
case DRM_MODE_COLORIMETRY_BT2020_YCC:
req_config->modeSetConfig.colorimetry =
NVKMS_OUTPUT_COLORIMETRY_BT2100;
break;
default:
// XXX HDR TODO: Add support for more color spaces
NV_DRM_DEV_LOG_ERR(nv_dev, "Unsupported color space");
return -EINVAL;
}
return 0;
}
static const struct drm_connector_helper_funcs nv_connector_helper_funcs = { static const struct drm_connector_helper_funcs nv_connector_helper_funcs = {
.get_modes = nv_drm_connector_get_modes, .get_modes = nv_drm_connector_get_modes,
.mode_valid = nv_drm_connector_mode_valid, .mode_valid = nv_drm_connector_mode_valid,
.best_encoder = nv_drm_connector_best_encoder, .best_encoder = nv_drm_connector_best_encoder,
.atomic_check = nv_drm_connector_atomic_check,
}; };
static struct drm_connector* static struct drm_connector*
@@ -363,16 +530,18 @@ nv_drm_connector_new(struct drm_device *dev,
{ {
struct nv_drm_device *nv_dev = to_nv_device(dev); struct nv_drm_device *nv_dev = to_nv_device(dev);
struct nv_drm_connector *nv_connector = NULL; struct nv_drm_connector *nv_connector = NULL;
struct nv_drm_connector_state *nv_connector_state = NULL;
int ret = -ENOMEM; int ret = -ENOMEM;
if ((nv_connector = nv_drm_calloc(1, sizeof(*nv_connector))) == NULL) { if ((nv_connector = nv_drm_calloc(1, sizeof(*nv_connector))) == NULL) {
goto failed; goto failed;
} }
if ((nv_connector->base.state = if ((nv_connector_state = nv_drm_calloc(1, sizeof(*nv_connector_state))) == NULL) {
nv_drm_calloc(1, sizeof(*nv_connector->base.state))) == NULL) {
goto failed_state_alloc; goto failed_state_alloc;
} }
nv_connector->base.state = &nv_connector_state->base;
nv_connector->base.state->connector = &nv_connector->base; nv_connector->base.state->connector = &nv_connector->base;
nv_connector->physicalIndex = physicalIndex; nv_connector->physicalIndex = physicalIndex;
@@ -405,6 +574,23 @@ nv_drm_connector_new(struct drm_device *dev,
DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT; DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT;
} }
/* attach nvidia defined connector properties */
drm_object_attach_property(&nv_connector->base.base,
nv_dev->nv_output_colorrange_property,
NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_FULL);
if (nv_connector->type == NVKMS_CONNECTOR_TYPE_HDMI) {
if (drm_mode_create_hdmi_colorspace_property(&nv_connector->base) == 0) {
drm_connector_attach_colorspace_property(&nv_connector->base);
}
drm_connector_attach_hdr_output_metadata_property(&nv_connector->base);
} else if (nv_connector->type == NVKMS_CONNECTOR_TYPE_DP) {
if (drm_mode_create_dp_colorspace_property(&nv_connector->base) == 0) {
drm_connector_attach_colorspace_property(&nv_connector->base);
}
drm_connector_attach_hdr_output_metadata_property(&nv_connector->base);
}
/* Register connector with DRM subsystem */ /* Register connector with DRM subsystem */
ret = drm_connector_register(&nv_connector->base); ret = drm_connector_register(&nv_connector->base);

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. * Copyright (c) 2016 - 2024, NVIDIA CORPORATION. All rights reserved.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"), * copy of this software and associated documentation files (the "Software"),
@@ -77,6 +77,24 @@ static inline struct nv_drm_connector *to_nv_connector(
return container_of(connector, struct nv_drm_connector, base); return container_of(connector, struct nv_drm_connector, base);
} }
struct nv_drm_connector_state {
struct drm_connector_state base;
enum NvKmsDpyAttributeColorRangeValue output_colorrange;
NvBool op_colorrange_changed;
};
static inline struct nv_drm_connector_state *to_nv_drm_connector_state(
struct drm_connector_state *state)
{
return container_of(state, struct nv_drm_connector_state, base);
}
static inline const struct nv_drm_connector_state *to_nv_drm_connector_state_const(
const struct drm_connector_state *state)
{
return container_of(state, const struct nv_drm_connector_state, base);
}
static inline void nv_drm_connector_mark_connection_status_dirty( static inline void nv_drm_connector_mark_connection_status_dirty(
struct nv_drm_connector *nv_connector) struct nv_drm_connector *nv_connector)
{ {

View File

@@ -48,6 +48,8 @@
#include <linux/host1x-next.h> #include <linux/host1x-next.h>
#endif #endif
#include <drm/drm_vblank.h>
#if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA) #if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA)
static int static int
nv_drm_atomic_replace_property_blob_from_id(struct drm_device *dev, nv_drm_atomic_replace_property_blob_from_id(struct drm_device *dev,
@@ -339,6 +341,9 @@ plane_req_config_update(struct drm_plane *plane,
req_config->config.inputColorSpace = req_config->config.inputColorSpace =
nv_drm_plane_state->input_colorspace; nv_drm_plane_state->input_colorspace;
req_config->config.inputColorRange =
nv_drm_plane_state->input_colorrange;
req_config->config.syncptParams.preSyncptSpecified = false; req_config->config.syncptParams.preSyncptSpecified = false;
req_config->config.syncptParams.postSyncptRequested = false; req_config->config.syncptParams.postSyncptRequested = false;
@@ -609,6 +614,9 @@ static int nv_drm_plane_atomic_set_property(
} else if (property == nv_dev->nv_input_colorspace_property) { } else if (property == nv_dev->nv_input_colorspace_property) {
nv_drm_plane_state->input_colorspace = val; nv_drm_plane_state->input_colorspace = val;
return 0; return 0;
} else if (property == nv_dev->nv_input_colorrange_property) {
nv_drm_plane_state->input_colorrange = val;
return 0;
} }
#if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA) #if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA)
else if (property == nv_dev->nv_hdr_output_metadata_property) { else if (property == nv_dev->nv_hdr_output_metadata_property) {
@@ -638,6 +646,9 @@ static int nv_drm_plane_atomic_get_property(
} else if (property == nv_dev->nv_input_colorspace_property) { } else if (property == nv_dev->nv_input_colorspace_property) {
*val = nv_drm_plane_state->input_colorspace; *val = nv_drm_plane_state->input_colorspace;
return 0; return 0;
} else if (property == nv_dev->nv_input_colorrange_property) {
*val = nv_drm_plane_state->input_colorrange;
return 0;
} }
#if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA) #if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA)
else if (property == nv_dev->nv_hdr_output_metadata_property) { else if (property == nv_dev->nv_hdr_output_metadata_property) {
@@ -700,6 +711,7 @@ nv_drm_plane_atomic_duplicate_state(struct drm_plane *plane)
nv_plane_state->fd_user_ptr = nv_old_plane_state->fd_user_ptr; nv_plane_state->fd_user_ptr = nv_old_plane_state->fd_user_ptr;
nv_plane_state->input_colorspace = nv_old_plane_state->input_colorspace; nv_plane_state->input_colorspace = nv_old_plane_state->input_colorspace;
nv_plane_state->input_colorrange = nv_old_plane_state->input_colorrange;
#if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA) #if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA)
nv_plane_state->hdr_output_metadata = nv_old_plane_state->hdr_output_metadata; nv_plane_state->hdr_output_metadata = nv_old_plane_state->hdr_output_metadata;
@@ -856,7 +868,6 @@ nv_drm_atomic_crtc_duplicate_state(struct drm_crtc *crtc)
__drm_atomic_helper_crtc_duplicate_state(crtc, &nv_state->base); __drm_atomic_helper_crtc_duplicate_state(crtc, &nv_state->base);
INIT_LIST_HEAD(&nv_state->nv_flip->list_entry); INIT_LIST_HEAD(&nv_state->nv_flip->list_entry);
INIT_LIST_HEAD(&nv_state->nv_flip->deferred_flip_list);
nv_drm_crtc_duplicate_req_head_modeset_config( nv_drm_crtc_duplicate_req_head_modeset_config(
&(to_nv_crtc_state(crtc->state)->req_config), &(to_nv_crtc_state(crtc->state)->req_config),
@@ -888,6 +899,41 @@ static void nv_drm_atomic_crtc_destroy_state(struct drm_crtc *crtc,
nv_drm_free(nv_state); nv_drm_free(nv_state);
} }
static int nv_drm_crtc_enable_vblank(struct drm_crtc *crtc)
{
struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc);
struct nv_drm_device *nv_dev = to_nv_device(nv_crtc->base.dev);
while (!mutex_trylock(&nv_crtc->vblank_q_lock)) {
cpu_relax();
}
if (nv_crtc->vblank_enabled) {
goto done;
}
nv_crtc->vblank_enabled = true;
nv_kthread_q_schedule_q_item(&nv_dev->nv_kthread_q, &nv_crtc->enable_vblank_q_item);
done:
mutex_unlock(&nv_crtc->vblank_q_lock);
return 0;
}
static void nv_drm_crtc_disable_vblank(struct drm_crtc *crtc)
{
struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc);
struct nv_drm_device *nv_dev = to_nv_device(nv_crtc->base.dev);
while (!mutex_trylock(&nv_crtc->vblank_q_lock)) {
cpu_relax();
}
if (!nv_crtc->vblank_enabled) {
goto done;
}
nv_crtc->vblank_enabled = false;
nv_kthread_q_schedule_q_item(&nv_dev->nv_kthread_q, &nv_crtc->disable_vblank_q_item);
done:
mutex_unlock(&nv_crtc->vblank_q_lock);
}
static struct drm_crtc_funcs nv_crtc_funcs = { static struct drm_crtc_funcs nv_crtc_funcs = {
.set_config = drm_atomic_helper_set_config, .set_config = drm_atomic_helper_set_config,
.page_flip = drm_atomic_helper_page_flip, .page_flip = drm_atomic_helper_page_flip,
@@ -895,6 +941,8 @@ static struct drm_crtc_funcs nv_crtc_funcs = {
.destroy = nv_drm_crtc_destroy, .destroy = nv_drm_crtc_destroy,
.atomic_duplicate_state = nv_drm_atomic_crtc_duplicate_state, .atomic_duplicate_state = nv_drm_atomic_crtc_duplicate_state,
.atomic_destroy_state = nv_drm_atomic_crtc_destroy_state, .atomic_destroy_state = nv_drm_atomic_crtc_destroy_state,
.enable_vblank = nv_drm_crtc_enable_vblank,
.disable_vblank = nv_drm_crtc_disable_vblank,
}; };
/* /*
@@ -1020,6 +1068,11 @@ static void nv_drm_plane_install_properties(
NVKMS_INPUT_COLORSPACE_NONE); NVKMS_INPUT_COLORSPACE_NONE);
} }
if (nv_dev->nv_input_colorrange_property) {
drm_object_attach_property(
&plane->base, nv_dev->nv_input_colorrange_property,
NVKMS_INPUT_COLORRANGE_DEFAULT);
}
#if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA) #if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA)
if (supportsHDR && nv_dev->nv_hdr_output_metadata_property) { if (supportsHDR && nv_dev->nv_hdr_output_metadata_property) {
drm_object_attach_property( drm_object_attach_property(
@@ -1166,6 +1219,7 @@ nv_drm_plane_create(struct drm_device *dev,
plane = &nv_plane->base; plane = &nv_plane->base;
nv_plane->defaultCompositionMode = defaultCompositionMode; nv_plane->defaultCompositionMode = defaultCompositionMode;
nv_plane->head = head;
nv_plane->layer_idx = layer_idx; nv_plane->layer_idx = layer_idx;
if ((nv_plane_state = if ((nv_plane_state =
@@ -1235,6 +1289,44 @@ failed:
return ERR_PTR(ret); return ERR_PTR(ret);
} }
void nv_drm_crtc_vblank_callback(NvU64 param1, NvU64 param2)
{
struct nv_drm_crtc *nv_crtc = (void*)(NvUPtr)param1;
struct drm_crtc *crtc = &nv_crtc->base;
drm_handle_vblank(crtc->dev, drm_crtc_index(crtc));
}
static void nv_drm_vblank_enable_fn(void *t)
{
struct nv_drm_crtc *nv_crtc = t;
struct nv_drm_device *nv_dev = to_nv_device(nv_crtc->base.dev);
mutex_lock(&nv_crtc->vblank_q_lock);
if (nv_crtc->vblank_enabled &&
(nv_crtc->vblankIntrCallback == NULL)) {
nv_crtc->vblankIntrCallback =
nvKms->RegisterVblankIntrCallback(nv_dev->pDevice, nv_crtc->head,
nv_drm_crtc_vblank_callback, (NvU64)(NvUPtr)nv_crtc, 0);
}
mutex_unlock(&nv_crtc->vblank_q_lock);
}
static void nv_drm_vblank_disable_fn(void *t)
{
struct nv_drm_crtc *nv_crtc = t;
struct nv_drm_device *nv_dev = to_nv_device(nv_crtc->base.dev);
mutex_lock(&nv_crtc->vblank_q_lock);
if (!nv_crtc->vblank_enabled &&
(nv_crtc->vblankIntrCallback != NULL)) {
nvKms->UnregisterVblankIntrCallback(nv_dev->pDevice, nv_crtc->head,
nv_crtc->vblankIntrCallback);
nv_crtc->vblankIntrCallback = NULL;
}
mutex_unlock(&nv_crtc->vblank_q_lock);
}
/* /*
* Add drm crtc for given head and supported enum NvKmsSurfaceMemoryFormats. * Add drm crtc for given head and supported enum NvKmsSurfaceMemoryFormats.
*/ */
@@ -1261,9 +1353,12 @@ static struct drm_crtc *__nv_drm_crtc_create(struct nv_drm_device *nv_dev,
nv_crtc->head = head; nv_crtc->head = head;
INIT_LIST_HEAD(&nv_crtc->flip_list); INIT_LIST_HEAD(&nv_crtc->flip_list);
spin_lock_init(&nv_crtc->flip_list_lock); mutex_init(&nv_crtc->vblank_q_lock);
nv_crtc->modeset_permission_filep = NULL; nv_crtc->modeset_permission_filep = NULL;
nv_kthread_q_item_init(&nv_crtc->disable_vblank_q_item, nv_drm_vblank_disable_fn, nv_crtc);
nv_kthread_q_item_init(&nv_crtc->enable_vblank_q_item, nv_drm_vblank_enable_fn, nv_crtc);
ret = drm_crtc_init_with_planes(nv_dev->dev, ret = drm_crtc_init_with_planes(nv_dev->dev,
&nv_crtc->base, &nv_crtc->base,
primary_plane, cursor_plane, primary_plane, cursor_plane,

View File

@@ -41,20 +41,16 @@
struct nv_drm_crtc { struct nv_drm_crtc {
NvU32 head; NvU32 head;
bool vblank_enabled;
/** /**
* @flip_list: * @flip_list:
* *
* List of flips pending to get processed by __nv_drm_handle_flip_event(). * List of flips pending to get processed by __nv_drm_handle_flip_event().
* Protected by @flip_list_lock. * Protected by @vblank_q_lock.
*/ */
struct list_head flip_list; struct list_head flip_list;
/** struct mutex vblank_q_lock;
* @flip_list_lock:
*
* Spinlock to protect @flip_list.
*/
spinlock_t flip_list_lock;
/** /**
* @modeset_permission_filep: * @modeset_permission_filep:
@@ -63,6 +59,11 @@ struct nv_drm_crtc {
*/ */
struct drm_file *modeset_permission_filep; struct drm_file *modeset_permission_filep;
struct NvKmsKapiVblankIntrCallback *vblankIntrCallback;
nv_kthread_q_item_t disable_vblank_q_item;
nv_kthread_q_item_t enable_vblank_q_item;
struct drm_crtc base; struct drm_crtc base;
}; };
@@ -85,33 +86,29 @@ struct nv_drm_flip {
*/ */
struct drm_pending_vblank_event *event; struct drm_pending_vblank_event *event;
/** /**
* @pending_events * @plane_mask
* *
* Number of HW events pending to signal completion of the state * Bitmask of drm_plane_mask(plane) of planes attached to the completion of
* update. * the state update.
*/ */
uint32_t pending_events; uint32_t plane_mask;
/** /**
* @pending_events_plane_mask
*
* Bitmask of drm_plane_mask(plane) of planes for which HW events are
* pending before signaling the completion of the state update.
*/
uint32_t pending_events_plane_mask;
/**
* @list_entry: * @list_entry:
* *
* Entry on the per-CRTC &nv_drm_crtc.flip_list. Protected by * Entry on the per-CRTC &nv_drm_crtc.flip_list. Protected by
* &nv_drm_crtc.flip_list_lock. * &nv_drm_crtc.vblank_q_lock.
*/ */
struct list_head list_entry; struct list_head list_entry;
/**
* @deferred_flip_list
*
* List flip objects whose processing is deferred until processing of
* this flip object. Protected by &nv_drm_crtc.flip_list_lock.
* nv_drm_atomic_commit() gets last flip object from
* nv_drm_crtc:flip_list and add deferred flip objects into
* @deferred_flip_list, __nv_drm_handle_flip_event() processes
* @deferred_flip_list.
*/
struct list_head deferred_flip_list;
}; };
struct nv_drm_crtc_state { struct nv_drm_crtc_state {
@@ -164,6 +161,8 @@ struct nv_drm_plane {
*/ */
enum NvKmsCompositionBlendingMode defaultCompositionMode; enum NvKmsCompositionBlendingMode defaultCompositionMode;
NvU32 head;
/** /**
* @layer_idx * @layer_idx
* *
@@ -184,6 +183,7 @@ struct nv_drm_plane_state {
struct drm_plane_state base; struct drm_plane_state base;
s32 __user *fd_user_ptr; s32 __user *fd_user_ptr;
enum NvKmsInputColorSpace input_colorspace; enum NvKmsInputColorSpace input_colorspace;
enum NvKmsInputColorRange input_colorrange;
#if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA) #if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA)
struct drm_property_blob *hdr_output_metadata; struct drm_property_blob *hdr_output_metadata;
#endif #endif
@@ -226,46 +226,29 @@ struct nv_drm_crtc *nv_drm_crtc_lookup(struct nv_drm_device *nv_dev, NvU32 head)
return NULL; return NULL;
} }
static inline
struct nv_drm_plane *nv_drm_plane_lookup(struct nv_drm_device *nv_dev, NvU32 head, NvU32 layer)
{
struct drm_plane *plane;
nv_drm_for_each_plane(plane, nv_dev->dev) {
struct nv_drm_plane *nv_plane = to_nv_plane(plane);
if ((nv_plane->head == head) && (nv_plane->layer_idx == layer)) {
return nv_plane;
}
}
return NULL;
}
/** /**
* nv_drm_crtc_enqueue_flip - Enqueue nv_drm_flip object to flip_list of crtc. * nv_drm_crtc_enqueue_flip - Enqueue nv_drm_flip object to flip_list of crtc.
*/ */
static inline void nv_drm_crtc_enqueue_flip(struct nv_drm_crtc *nv_crtc, static inline void nv_drm_crtc_enqueue_flip(struct nv_drm_crtc *nv_crtc,
struct nv_drm_flip *nv_flip) struct nv_drm_flip *nv_flip)
{ {
spin_lock(&nv_crtc->flip_list_lock); spin_lock(&nv_crtc->base.dev->event_lock);
list_add(&nv_flip->list_entry, &nv_crtc->flip_list); list_add(&nv_flip->list_entry, &nv_crtc->flip_list);
spin_unlock(&nv_crtc->flip_list_lock); spin_unlock(&nv_crtc->base.dev->event_lock);
}
/**
* nv_drm_crtc_dequeue_flip - Dequeue nv_drm_flip object to flip_list of crtc.
*/
static inline
struct nv_drm_flip *nv_drm_crtc_dequeue_flip(struct nv_drm_crtc *nv_crtc)
{
struct nv_drm_flip *nv_flip = NULL;
uint32_t pending_events = 0;
spin_lock(&nv_crtc->flip_list_lock);
nv_flip = list_first_entry_or_null(&nv_crtc->flip_list,
struct nv_drm_flip, list_entry);
if (likely(nv_flip != NULL)) {
/*
* Decrement pending_event count and dequeue flip object if
* pending_event count becomes 0.
*/
pending_events = --nv_flip->pending_events;
if (!pending_events) {
list_del(&nv_flip->list_entry);
}
}
spin_unlock(&nv_crtc->flip_list_lock);
if (WARN_ON(nv_flip == NULL) || pending_events) {
return NULL;
}
return nv_flip;
} }
void nv_drm_enumerate_crtcs_and_planes( void nv_drm_enumerate_crtcs_and_planes(

View File

@@ -94,6 +94,8 @@
#include <drm/drm_atomic_helper.h> #include <drm/drm_atomic_helper.h>
#endif #endif
#include "nv-kthread-q.h"
static int nv_drm_revoke_modeset_permission(struct drm_device *dev, static int nv_drm_revoke_modeset_permission(struct drm_device *dev,
struct drm_file *filep, struct drm_file *filep,
NvU32 dpyId); NvU32 dpyId);
@@ -111,6 +113,16 @@ static const char* nv_get_input_colorspace_name(
return "IEC 61966-2-2 linear FP"; return "IEC 61966-2-2 linear FP";
case NVKMS_INPUT_COLORSPACE_BT2100_PQ: case NVKMS_INPUT_COLORSPACE_BT2100_PQ:
return "ITU-R BT.2100-PQ YCbCr"; return "ITU-R BT.2100-PQ YCbCr";
case NVKMS_INPUT_COLORSPACE_SRGB:
return "IEC 61966-2-1 RGB";
case NVKMS_INPUT_COLORSPACE_BT601:
return "ITU-R BT.601-7";
case NVKMS_INPUT_COLORSPACE_BT709:
return "ITU-R BT.709-6";
case NVKMS_INPUT_COLORSPACE_BT709_LINEAR:
return "ITU-R BT.709-6 linear";
case NVKMS_INPUT_COLORSPACE_BT2020:
return "ITU-R BT.2020-2";
default: default:
/* We shoudn't hit this */ /* We shoudn't hit this */
WARN_ON("Unsupported input colorspace"); WARN_ON("Unsupported input colorspace");
@@ -118,6 +130,38 @@ static const char* nv_get_input_colorspace_name(
} }
}; };
static const char* nv_get_input_colorrange_name(
enum NvKmsInputColorRange colorRange)
{
switch (colorRange) {
case NVKMS_INPUT_COLORRANGE_DEFAULT:
return "Default";
case NVKMS_INPUT_COLORRANGE_LIMITED:
return "Input Color range Limited";
case NVKMS_INPUT_COLORRANGE_FULL:
return "Input Color range Full";
default:
/* We shoudn't hit this */
WARN_ON("Unsupported input Color range");
return "None";
}
};
static const char* nv_get_output_colorrange_name(
enum NvKmsDpyAttributeColorRangeValue colorRange)
{
switch (colorRange) {
case NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_FULL:
return "Output Color range Full";
case NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_LIMITED:
return "Output Color range Limited";
default:
/* We shoudn't hit this */
WARN_ON("Unsupported output colorrange");
return "None";
}
};
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
static void nv_drm_output_poll_changed(struct drm_device *dev) static void nv_drm_output_poll_changed(struct drm_device *dev)
@@ -226,10 +270,10 @@ static void nv_drm_event_callback(const struct NvKmsKapiEvent *event)
event->u.dynamicDisplayConnected.display); event->u.dynamicDisplayConnected.display);
break; break;
case NVKMS_EVENT_TYPE_FLIP_OCCURRED: case NVKMS_EVENT_TYPE_FLIP_OCCURRED:
nv_drm_handle_flip_occurred( nv_drm_handle_flip_event(
nv_dev, nv_dev,
event->u.flipOccurred.head, event->u.flipOccurred.head,
event->u.flipOccurred.layer); event->u.flipOccurred.layer, true);
break; break;
default: default:
break; break;
@@ -360,14 +404,11 @@ static void nv_drm_enumerate_encoders_and_connectors
*/ */
static int nv_drm_create_properties(struct nv_drm_device *nv_dev) static int nv_drm_create_properties(struct nv_drm_device *nv_dev)
{ {
struct drm_prop_enum_list enum_list[3] = { }; struct drm_prop_enum_list list_cs[8] = { };
struct drm_prop_enum_list list_input_cr[3] = { };
struct drm_prop_enum_list list_output_cr[2] = { };
int i, len = 0; int i, len = 0;
for (i = 0; i < 3; i++) {
enum_list[len].type = i;
enum_list[len].name = nv_get_input_colorspace_name(i);
len++;
}
if (nv_dev->supportsSyncpts) { if (nv_dev->supportsSyncpts) {
nv_dev->nv_out_fence_property = nv_dev->nv_out_fence_property =
@@ -378,14 +419,47 @@ static int nv_drm_create_properties(struct nv_drm_device *nv_dev)
} }
} }
for (i = 0; i < 8; i++) {
list_cs[len].type = i;
list_cs[len].name = nv_get_input_colorspace_name(i);
len++;
}
nv_dev->nv_input_colorspace_property = nv_dev->nv_input_colorspace_property =
drm_property_create_enum(nv_dev->dev, 0, "NV_INPUT_COLORSPACE", drm_property_create_enum(nv_dev->dev, 0, "NV_INPUT_COLORSPACE",
enum_list, len); list_cs, len);
if (nv_dev->nv_input_colorspace_property == NULL) { if (nv_dev->nv_input_colorspace_property == NULL) {
NV_DRM_LOG_ERR("Failed to create NV_INPUT_COLORSPACE property"); NV_DRM_LOG_ERR("Failed to create NV_INPUT_COLORSPACE property");
return -ENOMEM; return -ENOMEM;
} }
for (i = 0, len = 0; i < 3; i++) {
list_input_cr[len].type = i;
list_input_cr[len].name = nv_get_input_colorrange_name(i);
len++;
}
nv_dev->nv_input_colorrange_property =
drm_property_create_enum(nv_dev->dev, 0, "NV_INPUT_COLORRANGE",
list_input_cr, len);
if (nv_dev->nv_input_colorrange_property == NULL) {
NV_DRM_LOG_ERR("Failed to create NV_INPUT_COLORRANGE property");
return -ENOMEM;
}
for (i = 0, len = 0; i < 2; i++) {
list_output_cr[len].type = i;
list_output_cr[len].name = nv_get_output_colorrange_name(i);
len++;
}
nv_dev->nv_output_colorrange_property =
drm_property_create_enum(nv_dev->dev, 0, "NV_OUTPUT_COLORRANGE",
list_output_cr, len);
if (nv_dev->nv_output_colorrange_property == NULL) {
NV_DRM_LOG_ERR("Failed to create NV_OUTPUT_COLORRANGE property");
return -ENOMEM;
}
#if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA) #if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA)
nv_dev->nv_hdr_output_metadata_property = nv_dev->nv_hdr_output_metadata_property =
drm_property_create(nv_dev->dev, DRM_MODE_PROP_BLOB, drm_property_create(nv_dev->dev, DRM_MODE_PROP_BLOB,
@@ -555,9 +629,9 @@ static int nv_drm_load(struct drm_device *dev, unsigned long flags)
nv_drm_enumerate_encoders_and_connectors(nv_dev); nv_drm_enumerate_encoders_and_connectors(nv_dev);
#if !defined(NV_DRM_CRTC_STATE_HAS_NO_VBLANK) nv_kthread_q_init(&nv_dev->nv_kthread_q, "nvidia-drm-nv-thread-q");
drm_vblank_init(dev, dev->mode_config.num_crtc); drm_vblank_init(dev, dev->mode_config.num_crtc);
#endif
/* /*
* Trigger hot-plug processing, to update connection status of * Trigger hot-plug processing, to update connection status of
@@ -618,6 +692,8 @@ static void __nv_drm_unload(struct drm_device *dev)
drm_kms_helper_poll_fini(dev); drm_kms_helper_poll_fini(dev);
nv_kthread_q_stop(&nv_dev->nv_kthread_q);
/* Clean up mode configuration */ /* Clean up mode configuration */
drm_mode_config_cleanup(dev); drm_mode_config_cleanup(dev);

View File

@@ -24,6 +24,7 @@
#define __NVIDIA_DRM_DRV_H__ #define __NVIDIA_DRM_DRV_H__
#include "nvidia-drm-conftest.h" #include "nvidia-drm-conftest.h"
#include "nv-kthread-q.h"
#if defined(NV_DRM_AVAILABLE) #if defined(NV_DRM_AVAILABLE)

View File

@@ -85,28 +85,32 @@ void nv_drm_atomic_state_free(struct drm_atomic_state *state)
* function is called after drm_atomic_helper_swap_state(), therefore new state * function is called after drm_atomic_helper_swap_state(), therefore new state
* is swapped into current state. * is swapped into current state.
*/ */
static bool __will_generate_flip_event(struct drm_crtc *crtc, static void __get_events_plane_mask(struct drm_crtc *crtc,
struct drm_crtc_state *old_crtc_state) struct drm_crtc_state *old_crtc_state,
unsigned int *plane_mask,
unsigned int *pending_events_plane_mask)
{ {
struct drm_crtc_state *new_crtc_state = crtc->state; struct drm_crtc_state *new_crtc_state = crtc->state;
struct nv_drm_crtc_state *nv_new_crtc_state =
to_nv_crtc_state(new_crtc_state);
struct drm_plane_state *old_plane_state = NULL; struct drm_plane_state *old_plane_state = NULL;
struct drm_plane *plane = NULL; struct drm_plane *plane = NULL;
int i; int i;
*plane_mask = 0x0;
*pending_events_plane_mask = 0x0;
if (!old_crtc_state->active && !new_crtc_state->active) { if (!old_crtc_state->active && !new_crtc_state->active) {
/* /*
* crtc is not active in old and new states therefore all planes are * crtc is not active in old and new states therefore all planes are
* disabled, hardware can not generate flip events. * disabled, hardware can not generate flip events.
*/ */
return false; return;
} }
/* Find out whether primary & overlay flip done events will be generated. */ /* Find out whether primary & overlay flip done events will be generated. */
nv_drm_for_each_plane_in_state(old_crtc_state->state, nv_drm_for_each_plane_in_state(old_crtc_state->state,
plane, old_plane_state, i) { plane, old_plane_state, i) {
if (old_plane_state->crtc != crtc) { if ((old_plane_state->crtc != crtc) &&
(plane->state->crtc != crtc)) {
continue; continue;
} }
@@ -114,16 +118,16 @@ static bool __will_generate_flip_event(struct drm_crtc *crtc,
continue; continue;
} }
*plane_mask |= NVBIT(plane->index);
/* /*
* Hardware generates flip event for only those * Hardware generates flip event for only those
* planes which were active previously. * planes which were active previously.
*/ */
if (old_crtc_state->active && old_plane_state->fb != NULL) { if (old_crtc_state->active && old_plane_state->fb != NULL) {
nv_new_crtc_state->nv_flip->pending_events++; *pending_events_plane_mask |= NVBIT(plane->index);
} }
} }
return nv_new_crtc_state->nv_flip->pending_events != 0;
} }
static int __nv_drm_put_back_post_fence_fd( static int __nv_drm_put_back_post_fence_fd(
@@ -268,23 +272,35 @@ nv_drm_atomic_apply_modeset_config(struct drm_device *dev,
struct nv_drm_crtc_state *nv_new_crtc_state = struct nv_drm_crtc_state *nv_new_crtc_state =
to_nv_crtc_state(new_crtc_state); to_nv_crtc_state(new_crtc_state);
if (!old_crtc_state->active && new_crtc_state->active) {
drm_crtc_vblank_on(crtc);
}
nv_new_crtc_state->nv_flip->event = new_crtc_state->event; nv_new_crtc_state->nv_flip->event = new_crtc_state->event;
nv_new_crtc_state->nv_flip->pending_events = 0;
new_crtc_state->event = NULL; new_crtc_state->event = NULL;
/* __get_events_plane_mask(crtc, old_crtc_state,
* If flip event will be generated by hardware &nv_new_crtc_state->nv_flip->plane_mask,
* then defer flip object processing to flip event from hardware. &nv_new_crtc_state->nv_flip->pending_events_plane_mask);
*/
if (__will_generate_flip_event(crtc, old_crtc_state)) { if (nv_new_crtc_state->nv_flip->event != NULL) {
drm_crtc_vblank_get(crtc);
}
nv_drm_crtc_enqueue_flip(nv_crtc, nv_drm_crtc_enqueue_flip(nv_crtc,
nv_new_crtc_state->nv_flip); nv_new_crtc_state->nv_flip);
nv_new_crtc_state->nv_flip = NULL; nv_new_crtc_state->nv_flip = NULL;
}
#if defined(NV_DRM_CRTC_STATE_HAS_VRR_ENABLED) #if defined(NV_DRM_CRTC_STATE_HAS_VRR_ENABLED)
requested_config->headRequestedConfig[nv_crtc->head].modeSetConfig.vrrEnabled = new_crtc_state->vrr_enabled; requested_config->headRequestedConfig[nv_crtc->head].modeSetConfig.vrrEnabled = new_crtc_state->vrr_enabled;
#endif #endif
if (new_crtc_state->mode_changed) {
struct drm_vblank_crtc *vblank = &dev->vblank[drm_crtc_index(crtc)];
spin_lock_irq(&dev->vbl_lock);
vblank->inmodeset = 0x2;
spin_unlock_irq(&dev->vbl_lock);
}
} }
} }
@@ -294,6 +310,8 @@ nv_drm_atomic_apply_modeset_config(struct drm_device *dev,
* to be presented. * to be presented.
*/ */
nv_drm_write_combine_flush(); nv_drm_write_combine_flush();
nv_kthread_q_flush(&nv_dev->nv_kthread_q);
} }
if (!nvKms->applyModeSetConfig(nv_dev->pDevice, if (!nvKms->applyModeSetConfig(nv_dev->pDevice,
@@ -303,6 +321,26 @@ nv_drm_atomic_apply_modeset_config(struct drm_device *dev,
return -EINVAL; return -EINVAL;
} }
if (commit) {
nv_drm_for_each_crtc_in_state(state, crtc, crtc_state, i) {
struct drm_crtc_state *new_crtc_state = crtc->state;
struct drm_crtc_state *old_crtc_state = crtc_state;
if (new_crtc_state->mode_changed) {
struct drm_vblank_crtc *vblank = &dev->vblank[drm_crtc_index(crtc)];
spin_lock_irq(&dev->vbl_lock);
vblank->inmodeset = 0x0;
spin_unlock_irq(&dev->vbl_lock);
}
if (old_crtc_state->active && !new_crtc_state->active) {
drm_crtc_vblank_off(crtc);
}
}
}
if (commit && nv_dev->supportsSyncpts) { if (commit && nv_dev->supportsSyncpts) {
nv_drm_for_each_crtc_in_state(state, crtc, crtc_state, i) { nv_drm_for_each_crtc_in_state(state, crtc, crtc_state, i) {
/*! loop over affected crtcs and get NvKmsKapiModeSetReplyConfig */ /*! loop over affected crtcs and get NvKmsKapiModeSetReplyConfig */
@@ -333,6 +371,43 @@ done:
return ret; return ret;
} }
static void nv_drm_update_vblank_timestamp(struct nv_drm_crtc *nv_crtc)
{
/* If high-precision query is unsupported, DRM core resets vblank
* timestamp to 0 to mark it invalid in drm_crtc_vblank_on. It's
* possible that the initial event sending to userspace with 0
* timestamp before 1st valid vblank timestamp updated by
* drm_handle_vblank. Update timestamp for such case only.
*/
struct drm_crtc *crtc = &nv_crtc->base;
if (!crtc->funcs->get_vblank_timestamp) {
ktime_t t_vblank = 0;
drm_crtc_vblank_count_and_time(crtc, &t_vblank);
if (t_vblank == 0) {
struct drm_vblank_crtc *vblank = &crtc->dev->vblank[drm_crtc_index(crtc)];
write_seqlock(&vblank->seqlock);
vblank->time = ktime_get();
write_sequnlock(&vblank->seqlock);
}
}
}
static void nv_drm_send_completion_event(struct nv_drm_crtc *nv_crtc,
struct nv_drm_flip *nv_flip_pos)
{
WARN_ON(nv_flip_pos->pending_events_plane_mask);
if (nv_flip_pos->event != NULL) {
nv_drm_update_vblank_timestamp(nv_crtc);
drm_crtc_send_vblank_event(&nv_crtc->base, nv_flip_pos->event);
drm_crtc_vblank_put(&nv_crtc->base);
}
list_del(&nv_flip_pos->list_entry);
nv_drm_free(nv_flip_pos);
}
/** /**
* __nv_drm_handle_flip_event - handle flip occurred event * __nv_drm_handle_flip_event - handle flip occurred event
* @nv_crtc: crtc on which flip has been occurred * @nv_crtc: crtc on which flip has been occurred
@@ -340,48 +415,71 @@ done:
* This handler dequeues the first nv_drm_flip from the crtc's flip_list, * This handler dequeues the first nv_drm_flip from the crtc's flip_list,
* generates an event if requested at flip time, and frees the nv_drm_flip. * generates an event if requested at flip time, and frees the nv_drm_flip.
*/ */
static void __nv_drm_handle_flip_event(struct nv_drm_crtc *nv_crtc) void nv_drm_handle_flip_event(struct nv_drm_device *nv_dev, NvU32 head, NvU32 layer, bool process_pending)
{ {
struct nv_drm_crtc *nv_crtc = nv_drm_crtc_lookup(nv_dev, head);
struct nv_drm_plane *nv_plane = nv_drm_plane_lookup(nv_dev, head, layer);
struct drm_device *dev = nv_crtc->base.dev; struct drm_device *dev = nv_crtc->base.dev;
struct nv_drm_device *nv_dev = to_nv_device(dev); struct nv_drm_flip *nv_flip_pos, *nv_flip_n;
struct nv_drm_flip *nv_flip; const uint32_t plane_mask = NVBIT(nv_plane->base.index);
bool process_pending_crtc = true;
/*
* Acquire event_lock before nv_flip object dequeue, otherwise immediate
* flip event delivery from nv_drm_atomic_commit() races ahead and
* messes up with event delivery order.
*/
spin_lock(&dev->event_lock); spin_lock(&dev->event_lock);
nv_flip = nv_drm_crtc_dequeue_flip(nv_crtc); list_for_each_entry_safe(nv_flip_pos, nv_flip_n, &nv_crtc->flip_list, list_entry) {
if (likely(nv_flip != NULL)) {
struct nv_drm_flip *nv_deferred_flip, *nv_next_deferred_flip;
if (nv_flip->event != NULL) { if (!(nv_flip_pos->plane_mask & plane_mask)) {
drm_crtc_send_vblank_event(&nv_crtc->base, nv_flip->event); if (nv_flip_pos->plane_mask) {
process_pending_crtc = false;
} }
/* if (process_pending_crtc && !nv_flip_pos->plane_mask) {
* Process flips that were deferred until processing of this nv_flip nv_drm_send_completion_event(nv_crtc, nv_flip_pos);
* object.
*/
list_for_each_entry_safe(nv_deferred_flip,
nv_next_deferred_flip,
&nv_flip->deferred_flip_list, list_entry) {
if (nv_deferred_flip->event != NULL) {
drm_crtc_send_vblank_event(&nv_crtc->base,
nv_deferred_flip->event);
} }
list_del(&nv_deferred_flip->list_entry);
nv_drm_free(nv_deferred_flip); continue;
}
if (!process_pending && (nv_flip_pos->pending_events_plane_mask &
plane_mask)) {
break;
}
if (nv_flip_pos->pending_events_plane_mask & plane_mask) {
process_pending = false;
}
nv_flip_pos->pending_events_plane_mask &= ~plane_mask;
nv_flip_pos->plane_mask &= ~plane_mask;
if (!nv_flip_pos->plane_mask) {
nv_drm_send_completion_event(nv_crtc, nv_flip_pos);
} else {
process_pending_crtc = false;
} }
} }
spin_unlock(&dev->event_lock); spin_unlock(&dev->event_lock);
wake_up_all(&nv_dev->flip_event_wq); wake_up(&nv_dev->flip_event_wq);
nv_drm_free(nv_flip); WARN_ON(process_pending);
}
static void nv_drm_crtc_handle_completion_event(struct nv_drm_device *nv_dev, struct nv_drm_crtc *nv_crtc)
{
struct drm_device *dev = nv_crtc->base.dev;
struct nv_drm_flip *nv_flip_pos, *nv_flip_n;
spin_lock(&dev->event_lock);
list_for_each_entry_safe(nv_flip_pos, nv_flip_n, &nv_crtc->flip_list, list_entry) {
if (nv_flip_pos->plane_mask) {
break;
} else {
nv_drm_send_completion_event(nv_crtc, nv_flip_pos);
}
}
spin_unlock(&dev->event_lock);
wake_up(&nv_dev->flip_event_wq);
} }
int nv_drm_atomic_commit(struct drm_device *dev, int nv_drm_atomic_commit(struct drm_device *dev,
@@ -393,6 +491,8 @@ int nv_drm_atomic_commit(struct drm_device *dev,
int i; int i;
struct drm_crtc *crtc = NULL; struct drm_crtc *crtc = NULL;
struct drm_crtc_state *crtc_state = NULL; struct drm_crtc_state *crtc_state = NULL;
struct drm_plane *plane = NULL;
struct drm_plane_state *plane_state = NULL;
struct nv_drm_device *nv_dev = to_nv_device(dev); struct nv_drm_device *nv_dev = to_nv_device(dev);
/* /*
@@ -476,52 +576,22 @@ int nv_drm_atomic_commit(struct drm_device *dev,
goto done; goto done;
} }
nv_drm_for_each_plane_in_state(state, plane, plane_state, i) {
struct nv_drm_plane *nv_plane = to_nv_plane(plane);
if (plane->type == DRM_PLANE_TYPE_CURSOR) {
continue;
}
nv_drm_handle_flip_event(nv_dev, nv_plane->head,
nv_plane->layer_idx, false);
}
nv_drm_for_each_crtc_in_state(state, crtc, crtc_state, i) { nv_drm_for_each_crtc_in_state(state, crtc, crtc_state, i) {
struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc); struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc);
struct nv_drm_crtc_state *nv_new_crtc_state = nv_drm_crtc_handle_completion_event(nv_dev, nv_crtc);
to_nv_crtc_state(crtc->state);
/*
* If nv_drm_atomic_apply_modeset_config() hasn't consumed the flip
* object, no event will be generated for this flip, and we need process
* it:
*/
if (nv_new_crtc_state->nv_flip != NULL) {
/*
* First, defer processing of all pending flips for this crtc until
* last flip in the queue has been processed. This is to ensure a
* correct order in event delivery.
*/
spin_lock(&nv_crtc->flip_list_lock);
if (!list_empty(&nv_crtc->flip_list)) {
struct nv_drm_flip *nv_last_flip =
list_last_entry(&nv_crtc->flip_list,
struct nv_drm_flip, list_entry);
list_add(&nv_new_crtc_state->nv_flip->list_entry,
&nv_last_flip->deferred_flip_list);
nv_new_crtc_state->nv_flip = NULL;
}
spin_unlock(&nv_crtc->flip_list_lock);
} }
if (nv_new_crtc_state->nv_flip != NULL) { nv_drm_for_each_crtc_in_state(state, crtc, crtc_state, i) {
/* struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc);
* Then, if no more pending flips for this crtc, deliver event for the
* current flip.
*/
if (nv_new_crtc_state->nv_flip->event != NULL) {
spin_lock(&dev->event_lock);
drm_crtc_send_vblank_event(crtc,
nv_new_crtc_state->nv_flip->event);
spin_unlock(&dev->event_lock);
}
nv_drm_free(nv_new_crtc_state->nv_flip);
nv_new_crtc_state->nv_flip = NULL;
}
if (!nonblock) { if (!nonblock) {
/* /*
@@ -555,9 +625,6 @@ int nv_drm_atomic_commit(struct drm_device *dev,
NV_DRM_DEV_LOG_ERR( NV_DRM_DEV_LOG_ERR(
nv_dev, nv_dev,
"Flip event timeout on head %u", nv_crtc->head); "Flip event timeout on head %u", nv_crtc->head);
while (!list_empty(&nv_crtc->flip_list)) {
__nv_drm_handle_flip_event(nv_crtc);
}
} }
} }
} }
@@ -576,16 +643,4 @@ done:
return 0; return 0;
} }
void nv_drm_handle_flip_occurred(struct nv_drm_device *nv_dev,
NvU32 head, NvU32 plane)
{
struct nv_drm_crtc *nv_crtc = nv_drm_crtc_lookup(nv_dev, head);
if (NV_DRM_WARN(nv_crtc == NULL)) {
return;
}
__nv_drm_handle_flip_event(nv_crtc);
}
#endif #endif

View File

@@ -42,9 +42,7 @@ int nv_drm_atomic_check(struct drm_device *dev,
int nv_drm_atomic_commit(struct drm_device *dev, int nv_drm_atomic_commit(struct drm_device *dev,
struct drm_atomic_state *state, bool nonblock); struct drm_atomic_state *state, bool nonblock);
void nv_drm_handle_flip_event(struct nv_drm_device *nv_dev, NvU32 head, NvU32 layer, bool process_pending);
void nv_drm_handle_flip_occurred(struct nv_drm_device *nv_dev,
NvU32 head, NvU32 plane);
int nv_drm_shut_down_all_crtcs(struct drm_device *dev); int nv_drm_shut_down_all_crtcs(struct drm_device *dev);

View File

@@ -153,11 +153,15 @@ struct nv_drm_device {
struct drm_property *nv_out_fence_property; struct drm_property *nv_out_fence_property;
struct drm_property *nv_input_colorspace_property; struct drm_property *nv_input_colorspace_property;
struct drm_property *nv_input_colorrange_property;
struct drm_property *nv_output_colorrange_property;
#if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA) #if defined(NV_DRM_HAS_HDR_OUTPUT_METADATA)
struct drm_property *nv_hdr_output_metadata_property; struct drm_property *nv_hdr_output_metadata_property;
#endif #endif
struct nv_drm_device *next; struct nv_drm_device *next;
nv_kthread_q_t nv_kthread_q;
}; };
static inline struct nv_drm_device *to_nv_device( static inline struct nv_drm_device *to_nv_device(

View File

@@ -127,7 +127,6 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += drm_crtc_atomic_check_has_atomic_state_arg
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_gem_object_vmap_has_map_arg NV_CONFTEST_TYPE_COMPILE_TESTS += drm_gem_object_vmap_has_map_arg
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_plane_atomic_check_has_atomic_state_arg NV_CONFTEST_TYPE_COMPILE_TESTS += drm_plane_atomic_check_has_atomic_state_arg
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_device_has_pdev NV_CONFTEST_TYPE_COMPILE_TESTS += drm_device_has_pdev
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_crtc_state_has_no_vblank
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_mode_config_has_allow_fb_modifiers NV_CONFTEST_TYPE_COMPILE_TESTS += drm_mode_config_has_allow_fb_modifiers
NV_CONFTEST_TYPE_COMPILE_TESTS += drm_has_hdr_output_metadata NV_CONFTEST_TYPE_COMPILE_TESTS += drm_has_hdr_output_metadata
NV_CONFTEST_TYPE_COMPILE_TESTS += dma_resv_add_fence NV_CONFTEST_TYPE_COMPILE_TESTS += dma_resv_add_fence

View File

@@ -1 +1 @@
rel-36_eng_2024-08-29 rel-36_eng_2024-10-24

View File

@@ -34,16 +34,6 @@
#define DPCD_MESSAGEBOX_SIZE 48 #define DPCD_MESSAGEBOX_SIZE 48
//
// This definitions are being used for orin Hdcp opensourcing. Ideally this
// should be replaced with build flags. Bug ID: 200733434
//
#define DP_OPTION_HDCP_SUPPORT_ENABLE 1 /* HDCP Enable */
#define DP_OPTION_HDCP_12_ENABLED 1 /* DP1.2 HDCP ENABLE */
#define DP_OPTION_QSE_ENABLED 1 /* Remove here when QSE p4r check-in */
// //
// If a message is outstanding for at least 4 seconds // If a message is outstanding for at least 4 seconds
// assume no reply is coming through // assume no reply is coming through
@@ -77,6 +67,9 @@
#define HDCP_AUTHENTICATION_COOLDOWN_HPD 3000// 3 sec for first stream Add #define HDCP_AUTHENTICATION_COOLDOWN_HPD 3000// 3 sec for first stream Add
#define HDCP_CPIRQ_RXSTATUS_COOLDOWN 20 // 20ms between attempts #define HDCP_CPIRQ_RXSTATUS_COOLDOWN 20 // 20ms between attempts
#define HDCP_QSEANDSETECF_RETRIES 6 // 6 retries as authentication retires
#define HDCP_QSEANDSETECF_COOLDOWN 3000// 3 sec between attempts as authentication period
// Need to re-submit Stream Validation request to falcon microcontroller after 1 sec if current request fails // Need to re-submit Stream Validation request to falcon microcontroller after 1 sec if current request fails
#define HDCP_STREAM_VALIDATION_RESUBMIT_COOLDOWN 1000 #define HDCP_STREAM_VALIDATION_RESUBMIT_COOLDOWN 1000
@@ -86,6 +79,12 @@
// //
#define HDCP_STREAM_VALIDATION_REQUEST_COOLDOWN 8000 #define HDCP_STREAM_VALIDATION_REQUEST_COOLDOWN 8000
//
// Wait till 1 sec to check if still have active QSE message then send QSE message or queue
// to check next time. 1sec should be enough that sink reply QSE request.
//
#define HDCP_SEND_QSE_MESSAGE_COOLDOWN 1000
#define DPCD_OUI_NVIDIA 0x00044B #define DPCD_OUI_NVIDIA 0x00044B
// //

View File

@@ -330,6 +330,7 @@ namespace DisplayPort
virtual void destroy() = 0; // Destroy the group object virtual void destroy() = 0; // Destroy the group object
// Toggles the encryption status for the stream. // Toggles the encryption status for the stream.
virtual bool hdcpSetEncrypted(bool encrypted, NvU8 streamType = NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NvBool bForceClear = NV_FALSE, NvBool bAddStreamBack = NV_FALSE) = 0;
// Returns whether encryption is currently enabled. // Returns whether encryption is currently enabled.
virtual bool hdcpGetEncrypted() = 0; virtual bool hdcpGetEncrypted() = 0;
@@ -657,6 +658,8 @@ namespace DisplayPort
virtual void resetDp11ProtocolForced() = 0; virtual void resetDp11ProtocolForced() = 0;
virtual bool isDp11ProtocolForced() = 0; virtual bool isDp11ProtocolForced() = 0;
// Operates at the Link Level. Causes reauthentication of the entire link.
virtual void hdcpRenegotiate(NvU64 cN, NvU64 cKsv) = 0;
virtual bool getHDCPAbortCodesDP12(NvU32 &hdcpAbortCodesDP12) = 0; virtual bool getHDCPAbortCodesDP12(NvU32 &hdcpAbortCodesDP12) = 0;
virtual bool getOuiSink(unsigned &ouiId, char * modelName, virtual bool getOuiSink(unsigned &ouiId, char * modelName,

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 1993-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -42,6 +42,7 @@
#include "dp_discovery.h" #include "dp_discovery.h"
#include "dp_groupimpl.h" #include "dp_groupimpl.h"
#include "dp_deviceimpl.h" #include "dp_deviceimpl.h"
#include "dp_qse.h"
#include "./dptestutil/dp_testmessage.h" #include "./dptestutil/dp_testmessage.h"
// HDCP abort codes // HDCP abort codes
@@ -69,6 +70,8 @@ static inline unsigned getDataClockMultiplier(NvU64 linkRate, NvU64 laneCount)
namespace DisplayPort namespace DisplayPort
{ {
class QSENonceGenerator;
typedef enum typedef enum
{ {
DP_TRANSPORT_MODE_INIT = 0, DP_TRANSPORT_MODE_INIT = 0,
@@ -126,6 +129,7 @@ namespace DisplayPort
bool bPConConnected; // HDMI2.1-Protocol Converter (Support SRC control mode) connected. bool bPConConnected; // HDMI2.1-Protocol Converter (Support SRC control mode) connected.
bool bSkipAssessLinkForPCon; // Skip assessLink() for PCON. DD will call assessFRLLink later. bool bSkipAssessLinkForPCon; // Skip assessLink() for PCON. DD will call assessFRLLink later.
bool bHdcpAuthOnlyOnDemand; // True if only initiate Hdcp authentication on demand and MST won't auto-trigger authenticate at device attach. bool bHdcpAuthOnlyOnDemand; // True if only initiate Hdcp authentication on demand and MST won't auto-trigger authenticate at device attach.
bool bHdcpStrmEncrEnblOnlyOnDemand; // True if only initiate Hdcp Stream Encryption Enable on demand and MST won't auto-trigger.
bool bReassessMaxLink; // Retry assessLink() if the first assessed link config is lower than the panel max config. bool bReassessMaxLink; // Retry assessLink() if the first assessed link config is lower than the panel max config.
bool constructorFailed; bool constructorFailed;
@@ -175,6 +179,7 @@ namespace DisplayPort
List activeGroups; List activeGroups;
LinkedList<GroupImpl> intransitionGroups; LinkedList<GroupImpl> intransitionGroups;
LinkedList<GroupImpl> addStreamMSTIntransitionGroups; LinkedList<GroupImpl> addStreamMSTIntransitionGroups;
LinkedList<GroupImpl> hdcpEnableTransitionGroups;
List inactiveGroups; List inactiveGroups;
// Compound query // Compound query
@@ -233,6 +238,15 @@ namespace DisplayPort
Device * lastDeviceSetForVbios; Device * lastDeviceSetForVbios;
QSENonceGenerator * qseNonceGenerator;
// Tells whether requests made by library to Downstream Device (i.e QSE messages sent to Branch Device) and RM
// (i.e KSV validation and Stream Validation requests sent by library to RM after getting QSE message reply from Downstream)
// during querying stream status is valid or not.
bool bValidQSERequest;
ListElement * message; // Outstanding QSE message pointer for which Stream Validation submission failed.
NvU8 * clientId; // ClientId of the group for which Stream Validation submission failed.
// Flag which gets set when ACPI init is done. DD calls notifyAcpiInitDone to tell client that ACPI init is completed // Flag which gets set when ACPI init is done. DD calls notifyAcpiInitDone to tell client that ACPI init is completed
// & client can now initiate DDC EDID read for a device which supports EDID through SBIOS // & client can now initiate DDC EDID read for a device which supports EDID through SBIOS
bool bAcpiInitDone; bool bAcpiInitDone;
@@ -295,6 +309,9 @@ namespace DisplayPort
// //
bool bNoFallbackInPostLQA; bool bNoFallbackInPostLQA;
// Flag to tell whether to send QSE after stream encryption on
bool bIsEncryptionQseValid;
bool bReportDeviceLostBeforeNew; bool bReportDeviceLostBeforeNew;
bool bEnableAudioBeyond48K; bool bEnableAudioBeyond48K;
bool bDisableSSC; bool bDisableSSC;
@@ -425,6 +442,8 @@ namespace DisplayPort
char tagHDCPReauthentication; char tagHDCPReauthentication;
char tagDelayedHdcpCapRead; char tagDelayedHdcpCapRead;
char tagDelayedHDCPCPIrqHandling; char tagDelayedHDCPCPIrqHandling;
char tagSendQseMessage;
char tagHDCPStreamEncrEnable;
// //
// Enable disable TMDS mode // Enable disable TMDS mode
@@ -545,6 +564,7 @@ namespace DisplayPort
bool allocateTimeslice(GroupImpl * targetGroup); bool allocateTimeslice(GroupImpl * targetGroup);
void freeTimeslice(GroupImpl * targetGroup); void freeTimeslice(GroupImpl * targetGroup);
void flushTimeslotsToHardware(); void flushTimeslotsToHardware();
void hdcpRenegotiate(NvU64 cN, NvU64 cKsv);
bool getHDCPAbortCodesDP12(NvU32 &hdcpAbortCodesDP12); bool getHDCPAbortCodesDP12(NvU32 &hdcpAbortCodesDP12);
bool getOuiSink(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision); bool getOuiSink(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision);
bool hdcpValidateKsv(const NvU8 *ksv, NvU32 Size); bool hdcpValidateKsv(const NvU8 *ksv, NvU32 Size);

View File

@@ -34,6 +34,7 @@
#include "dp_edid.h" #include "dp_edid.h"
#include "dp_list.h" #include "dp_list.h"
#include "dp_auxdefs.h" #include "dp_auxdefs.h"
#include "dp_qse.h"
#include "dp_vrr.h" #include "dp_vrr.h"
namespace DisplayPort namespace DisplayPort

View File

@@ -178,6 +178,7 @@ namespace DisplayPort
unsigned maxNumHztSlices; unsigned maxNumHztSlices;
unsigned lineBufferBitDepth; unsigned lineBufferBitDepth;
}_DSC; }_DSC;
NV0073_CTRL_SPECIFIC_HDCP_CTRL_PARAMS paramsHdcpCtrl;
private: private:
void initializeRegkeyDatabase(); void initializeRegkeyDatabase();
@@ -332,6 +333,13 @@ namespace DisplayPort
virtual bool dscCrcTransaction(NvBool bEnable, gpuDscCrc *data, NvU16 *headIndex); virtual bool dscCrcTransaction(NvBool bEnable, gpuDscCrc *data, NvU16 *headIndex);
void triggerACT(); void triggerACT();
void configureAndTriggerECF(NvU64 ecf, NvBool bForceClearEcf = NV_FALSE, NvBool bAddStreamBack = NV_FALSE); // This function program as well as trigger ECF on branch devices.
virtual void disableAlternateScramblerReset();
void configureHDCPDisableAuthentication();
void configureHDCPAbortAuthentication(AbortAuthReason abortAuthReason);
bool setStreamType(unsigned streamIndex, NvU8 streamType, bool * bNeedReNegotiate);
void configureHDCPValidateLink(HDCPValidateData &hdcpValidateData, NvU64 cN = HDCP_DUMMY_CN, NvU64 cKsv = HDCP_DUMMY_CKSV);
void forwardPendingKsvListReady(NvBool bKsvListReady);
void configureHDCPRenegotiate(NvU64 cN = HDCP_DUMMY_CN, NvU64 cKsv = HDCP_DUMMY_CKSV, bool bForceReAuth = false, void configureHDCPRenegotiate(NvU64 cN = HDCP_DUMMY_CN, NvU64 cKsv = HDCP_DUMMY_CKSV, bool bForceReAuth = false,
bool bRxIDMsgPending = false); bool bRxIDMsgPending = false);
void configureHDCPGetHDCPState(HDCPState &hdcpState); void configureHDCPGetHDCPState(HDCPState &hdcpState);

View File

@@ -37,11 +37,14 @@
namespace DisplayPort namespace DisplayPort
{ {
class StreamEncryptionStatusDetection;
struct GroupImpl : public Group, ListElement, Timer::TimerCallback struct GroupImpl : public Group, ListElement, Timer::TimerCallback
{ {
ConnectorImpl * parent; ConnectorImpl * parent;
LinkedList<Device> members; LinkedList<Device> members;
StreamEncryptionStatusDetection * streamEncryptionStatusDetection;
NvU8 clientId[CLIENT_ID_SIZE];
List elements; List elements;
unsigned headIndex; unsigned headIndex;
unsigned streamIndex; unsigned streamIndex;
@@ -50,6 +53,7 @@ namespace DisplayPort
bool bIsHeadShutdownNeeded; // Set if head shutdown is requested during modeset bool bIsHeadShutdownNeeded; // Set if head shutdown is requested during modeset
bool hdcpEnabled; bool hdcpEnabled;
bool hdcpPreviousStatus; bool hdcpPreviousStatus;
bool qseEncryptionStatusMismatch;
bool bWaitForDeAllocACT; bool bWaitForDeAllocACT;
bool bDeferredPayloadAlloc; bool bDeferredPayloadAlloc;
ModesetInfo lastModesetInfo; ModesetInfo lastModesetInfo;
@@ -75,6 +79,7 @@ namespace DisplayPort
bIsHeadShutdownNeeded(true), bIsHeadShutdownNeeded(true),
hdcpEnabled(false), hdcpEnabled(false),
hdcpPreviousStatus(false), hdcpPreviousStatus(false),
qseEncryptionStatusMismatch(false),
bWaitForDeAllocACT(false), bWaitForDeAllocACT(false),
dscModeRequest(DSC_MODE_NONE), dscModeRequest(DSC_MODE_NONE),
dscModeActive(DSC_MODE_NONE), dscModeActive(DSC_MODE_NONE),
@@ -82,11 +87,22 @@ namespace DisplayPort
singleHeadMultiStreamMode(DP_SINGLE_HEAD_MULTI_STREAM_MODE_NONE), singleHeadMultiStreamMode(DP_SINGLE_HEAD_MULTI_STREAM_MODE_NONE),
headAttached(false) headAttached(false)
{ {
if (isFirmwareGroup)
streamEncryptionStatusDetection = 0;
else
{
streamEncryptionStatusDetection = new StreamEncryptionStatusDetection(this, parent);
}
timeslot.count = 0; timeslot.count = 0;
} }
~GroupImpl() ~GroupImpl()
{ {
if (streamEncryptionStatusDetection)
{
delete streamEncryptionStatusDetection;
streamEncryptionStatusDetection = 0;
}
} }
virtual void insert(Device * dev); virtual void insert(Device * dev);
@@ -104,9 +120,14 @@ namespace DisplayPort
char tagHDCPReauthentication; char tagHDCPReauthentication;
char tagStreamValidation; char tagStreamValidation;
char tagMSTQSEandSetECF;
unsigned QSESetECFRetries; // Retry counter for MST QSE and set ECF.
virtual void hdcpMSTQSEandSetECF();
unsigned authRetries; // Retry counter for the authentication. unsigned authRetries; // Retry counter for the authentication.
virtual void expired(const void * tag); virtual void expired(const void * tag);
virtual bool hdcpSetEncrypted(bool encrypted, NvU8 streamType = NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NvBool bForceClear = NV_FALSE, NvBool bAddStreamBack = NV_FALSE);
virtual bool hdcpGetEncrypted(); virtual bool hdcpGetEncrypted();
virtual void destroy(); virtual void destroy();
void cancelHdcpCallbacks(); void cancelHdcpCallbacks();

View File

@@ -202,6 +202,9 @@ namespace DisplayPort
struct HDCPValidateData struct HDCPValidateData
{ {
NvU8 vP[NV0073_CTRL_HDCP_VPRIME_SIZE];
NvU64 aN;
NvU64 mP;
}; };
typedef enum typedef enum

View File

@@ -186,6 +186,18 @@ namespace DisplayPort
// HDCP Renegotiate and trigger ACT. // HDCP Renegotiate and trigger ACT.
// //
virtual void configureHDCPRenegotiate(NvU64 cN = HDCP_DUMMY_CN, NvU64 cKsv = HDCP_DUMMY_CKSV, bool bForceReAuth = false, bool bRxIDMsgPending = false) = 0; virtual void configureHDCPRenegotiate(NvU64 cN = HDCP_DUMMY_CN, NvU64 cKsv = HDCP_DUMMY_CKSV, bool bForceReAuth = false, bool bRxIDMsgPending = false) = 0;
// HDCP set ECF
virtual void configureAndTriggerECF(NvU64 ecf, NvBool bForceClearEcf = NV_FALSE, NvBool bAddStreamBack = NV_FALSE) = 0;
//
// Enable of disable alternate scrambler SR (ASSR)
//
// (used for embedded displayport)
virtual void disableAlternateScramblerReset() = 0;
virtual void configureHDCPDisableAuthentication() = 0;
virtual void configureHDCPAbortAuthentication(AbortAuthReason abortAuthReason) = 0;
virtual bool setStreamType(unsigned streamIndex, NvU8 streamType, bool * bNeedReNegotiate) = 0;
virtual void configureHDCPValidateLink(HDCPValidateData &hdcpValidateData, NvU64 cN = HDCP_DUMMY_CN, NvU64 cKsv = HDCP_DUMMY_CKSV) = 0;
virtual void forwardPendingKsvListReady(NvBool bKsvListReady) = 0;
virtual void triggerACT() = 0; virtual void triggerACT() = 0;
virtual void configureHDCPGetHDCPState(HDCPState &hdcpState) = 0; virtual void configureHDCPGetHDCPState(HDCPState &hdcpState) = 0;

View File

@@ -133,6 +133,7 @@ namespace DisplayPort
{ {
StreamUnconnected = 0, StreamUnconnected = 0,
NonAuthLegacyDevice = 1, // TV or CRT NonAuthLegacyDevice = 1, // TV or CRT
Non12CPOrNonQSE = 2, // DVI/HDMI or DP 1.1 sink/repeater
DP_MST = 4 DP_MST = 4
}OutputSinkType; }OutputSinkType;
@@ -557,6 +558,105 @@ namespace DisplayPort
SinkEventNotifyMessage(MessageReceiverEventSink * sink, unsigned requestId); SinkEventNotifyMessage(MessageReceiverEventSink * sink, unsigned requestId);
}; };
//
// QUERY_STREAM_ENCRYPTION_STATUS 0x38
//
class QueryStreamEncryptionMessage : public MessageManager::Message
{
virtual ParseResponseStatus parseResponseAck(EncodedMessage * message,
BitStreamReader * reader);
private:
struct QSES_REPLY
{
StreamState streamState;
bool repeaterFuncPresent;
bool encryption;
bool authentication;
OutputSinkType sinkType;
OutputCPType cpType;
bool signedLPrime;
NvU8 streamId;
} reply;
bool bIsHdcp22Qse;
public:
QueryStreamEncryptionMessage() :
Message(NV_DP_SBMSG_REQUEST_ID_QUERY_STREAM_ENCRYPTION_STATUS,
NV_DP_SBMSG_PRIORITY_LEVEL_DEFAULT)
{
dpMemZero(&reply, sizeof(reply));
bIsHdcp22Qse = false;
}
void set(const Address & target,
unsigned streamId,
NvU8* clientId,
StreamEvent streamEvent,
bool streamEventMask,
StreamBehavior streamBehavior,
bool streamBehaviorMask);
NvU8 getStreamId()
{
return reply.streamId;
}
void getReply(void *p)
{
*(struct QSES_REPLY *)p = reply;
}
NvU16 getStreamStatus()
{
NvU16 streamStatus = 0;
streamStatus = (NvU16)reply.streamState;
if (reply.repeaterFuncPresent)
streamStatus |= 1 << (1 ? NV_DP_HDCP_STREAM_REPEATER);
if (reply.encryption)
streamStatus |= 1 << (1 ? NV_DP_HDCP_STREAM_ENCRYPTION);
if (reply.authentication)
streamStatus |= 1 << (1 ? NV_DP_HDCP_STREAM_AUTHENTICATION);
if (reply.sinkType != StreamUnconnected)
{
if (reply.sinkType & DP_MST)
{
streamStatus |= 1 << (1 ? NV_DP_HDCP_STREAM_OUTPUT_SINK_MULTI);
}
if (reply.sinkType & Non12CPOrNonQSE)
{
streamStatus |= 1 << (1 ? NV_DP_HDCP_STREAM_OUTPUT_SINK_NON_DP1_2_CP);
}
if (reply.sinkType & NonAuthLegacyDevice)
{
streamStatus |= 1 << (1 ? NV_DP_HDCP_STREAM_OUTPUT_SINK_LEGACY);
}
}
if (reply.cpType == HDCP1x)
{
streamStatus |= 1 << (1 ? NV_DP_HDCP_STREAM_OUTPUT_CP_TYPE_HDCP1X);
}
else if (reply.cpType == HDCP2x)
{
streamStatus |= 1 << (1 ? NV_DP_HDCP_STREAM_OUTPUT_CP_TYPE_HDCP2X);
}
return streamStatus;
}
void setHdcp22Qse(bool bHdcp22Qse)
{
bIsHdcp22Qse = bHdcp22Qse;
}
};
} }
#endif //INCLUDED_DP_MESSAGECODINGS_H #endif //INCLUDED_DP_MESSAGECODINGS_H

View File

@@ -153,6 +153,58 @@ namespace DisplayPort
mergerDownReply.mailboxInterrupt(); mergerDownReply.mailboxInterrupt();
} }
void clearNotYetSentQSEDownRequest()
{
for (ListElement * i = notYetSentDownRequest.begin(); i!=notYetSentDownRequest.end(); )
{
Message * m = (Message *)i;
i = i->next; // Do this first since we may unlink the current node
if (m->requestIdentifier ==
NV_DP_SBMSG_REQUEST_ID_QUERY_STREAM_ENCRYPTION_STATUS)
{
notYetSentDownRequest.remove(m);
m->parent = 0;
}
}
}
bool isAnyAwaitingQSEReplyDownRequest()
{
bool bQSEAwaiting = false;
for (ListElement * i = awaitingReplyDownRequest.begin(); i!=awaitingReplyDownRequest.end(); )
{
Message * m = (Message *)i;
i = i->next; // Do this first since we may unlink the current node
if (m->requestIdentifier ==
NV_DP_SBMSG_REQUEST_ID_QUERY_STREAM_ENCRYPTION_STATUS)
{
// We break because there could be only one outstanding QSE message at any time.
bQSEAwaiting = true;
break;
}
}
return bQSEAwaiting;
}
void clearAwaitingQSEReplyDownRequest()
{
for (ListElement * i = awaitingReplyDownRequest.begin(); i!=awaitingReplyDownRequest.end(); )
{
Message * m = (Message *)i;
i = i->next; // Do this first since we may unlink the current node
if (m->requestIdentifier ==
NV_DP_SBMSG_REQUEST_ID_QUERY_STREAM_ENCRYPTION_STATUS)
{
awaitingReplyDownRequest.remove(m);
m->parent = 0;
break;
}
}
}
MessageManager(DPCDHAL * hal, Timer * timer) MessageManager(DPCDHAL * hal, Timer * timer)
: timer(timer), hal(hal), : timer(timer), hal(hal),
splitterDownRequest(hal, timer), splitterDownRequest(hal, timer),

View File

@@ -0,0 +1,109 @@
/*
* SPDX-FileCopyrightText: Copyright (c) 2010-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/******************************* DisplayPort *******************************\
* *
* Module: dp_qse.h *
* Class definition for HDCP Query Stream Encryption and relative reading.*
* *
\***************************************************************************/
#ifndef INCLUDED_DP_QSE_H
#define INCLUDED_DP_QSE_H
#include "dp_messagecodings.h"
#include "dp_auxdefs.h"
namespace DisplayPort
{
#define CLIENT_ID_SIZE 7
struct CLIENTID
{
NvU8 data[CLIENT_ID_SIZE];
CLIENTID()
{
dpMemZero(&data, sizeof(data));
}
};
enum QSE_REASON
{
qseReason_Generic,
qseReason_Ssc
};
class QSENonceGenerator: public Object
{
NvU32 previousRandomLSB;
NvU32 previousRandomMSB;
//
// Linear congruential random number generator
// Seed values chosen from numerical methods
//
NvU64 random();
public:
QSENonceGenerator():previousRandomLSB(0),previousRandomMSB(0)
{}
void clientIdBuilder(NvU64 aN);
// For every clientId generation we need to call makeClientId
void makeClientId(CLIENTID & clientId);
};
struct GroupImpl;
struct ConnectorImpl;
class StreamEncryptionStatusDetection : public Object, public MessageManager::Message::MessageEventSink, Timer::TimerCallback
{
GroupImpl * parent;
ConnectorImpl * connector;
QueryStreamEncryptionMessage qseMessage;
unsigned retriesSendQSEMessage;
QSE_REASON reason;
bool bIsHdcp22Qse;
bool bIsRepeater;
public:
StreamEncryptionStatusDetection(GroupImpl * parent, ConnectorImpl * connector):
parent(parent), connector(connector), retriesSendQSEMessage(0), bIsHdcp22Qse(false), bIsRepeater(false)
{}
~StreamEncryptionStatusDetection();
void sendQSEMessage(GroupImpl * group, QSE_REASON reasonId = qseReason_Generic);
void handleQSEDownReply();
void messageFailed(MessageManager::Message * from, NakData * nakData);
void messageCompleted(MessageManager::Message * from);
void expired(const void * tag);
bool handleQSEReplyValidation();
void resetQseMessageState();
void setHdcp22Qse(bool bHdcp22Qse);
};
struct DeviceImpl;
}
#endif // INCLUDED_DP_QSE_H

View File

@@ -34,6 +34,7 @@
#include "dp_auxdefs.h" #include "dp_auxdefs.h"
// Regkey Names // Regkey Names
#define NV_DP_REGKEY_DISABLE_QSES "DISABLE_QSES"
#define NV_DP_REGKEY_ENABLE_AUDIO_BEYOND_48K "ENABLE_AUDIO_BEYOND48K" #define NV_DP_REGKEY_ENABLE_AUDIO_BEYOND_48K "ENABLE_AUDIO_BEYOND48K"
#define NV_DP_REGKEY_OVERRIDE_DPCD_REV "OVERRIDE_DPCD_REV" #define NV_DP_REGKEY_OVERRIDE_DPCD_REV "OVERRIDE_DPCD_REV"
#define NV_DP_REGKEY_DISABLE_SSC "DISABLE_SSC" #define NV_DP_REGKEY_DISABLE_SSC "DISABLE_SSC"
@@ -85,6 +86,7 @@ struct DP_REGKEY_DATABASE
{ {
bool bInitialized; // set to true after the first EvoMainLink instance is constructed bool bInitialized; // set to true after the first EvoMainLink instance is constructed
// Below are regkey values // Below are regkey values
bool bQsesDisabled;
bool bAudioBeyond48kEnabled; bool bAudioBeyond48kEnabled;
NvU32 dpcdRevOveride; NvU32 dpcdRevOveride;
bool bSscDisabled; bool bSscDisabled;

View File

@@ -31,6 +31,9 @@
#include "dp_auxdefs.h" #include "dp_auxdefs.h"
#define DP_TESTMESSAGE_QSES 0x38
#include "dp_qse.h"
#include "dp_connector.h" #include "dp_connector.h"
#define DP_LPRIME_SIZE 20 #define DP_LPRIME_SIZE 20
@@ -48,8 +51,59 @@ namespace DisplayPort
// Request type enum. // Request type enum.
typedef enum typedef enum
{ {
DP_TESTMESSAGE_REQUEST_TYPE_QSES, // TestMessage from DPTestUtil.
} DP_TESTMESSAGE_REQUEST_TYPE; } DP_TESTMESSAGE_REQUEST_TYPE;
//
// NVAPI QSES reply message struct.
// Do NOT inherit any class, need keep consist with definition with Nvapi part,
// which is C STRUCT
//
typedef struct
{
StreamState streamState;
bool repeaterFuncPresent;
bool encryption;
bool authentication;
OutputSinkType sinkType;
OutputCPType cpType;
bool signedLPrime;
NvU8 streamId;
NvU8 LPrime[DP_LPRIME_SIZE];
} DP_TESTMESSAGE_REQUEST_QSES_OUTPUT;
//
// Version of QSES_OUTPUT that consistent with struct in dp_messageencodings.h
// ( without QSES Lprime).
//
// Considering nvapi backward compatibility, don't modify DP_TESTMESSAGE_REQUEST_QSES_OUTPUT
// definition but has internal version to sync up with dplib implementation.
//
// DPLib message implementation is using this version for now. TestMessage
// need this structure to safely copy info from QSES message structure.
//
typedef struct
{
StreamState streamState;
bool repeaterFuncPresent;
bool encryption;
bool authentication;
OutputSinkType sinkType;
OutputCPType cpType;
bool signedLPrime;
NvU8 streamId;
} DP_TESTMESSAGE_REQUEST_QSES_OUTPUT_V2;
typedef struct
{
// indicated what status to get, for DP, user need fill this
DP_TESTMESSAGE_REQUEST_TYPE requestType;
// stream id for QSES to get, user need file this
NvU32 streamID;
// replay buffer
DP_TESTMESSAGE_REQUEST_QSES_OUTPUT reply;
} DP_TESTMESSAGE_REQUEST_QSES_INPUT;
class TestMessage; class TestMessage;
struct ConnectorImpl; struct ConnectorImpl;
@@ -83,6 +137,10 @@ namespace DisplayPort
{ {
switch (requestType) switch (requestType)
{ {
case DP_TESTMESSAGE_REQUEST_TYPE_QSES:
{
return structSize == sizeof(DP_TESTMESSAGE_REQUEST_QSES_INPUT) ? true : false;
}
default: default:
return false; return false;
} }
@@ -92,8 +150,10 @@ namespace DisplayPort
// Data Structure for Generic Message. // Data Structure for Generic Message.
NvU32 replyBytes; NvU32 replyBytes;
void sendTestMsgQSES(void *pBuffer);
public: public:
DP_TESTMESSAGE_REQUEST_QSES_OUTPUT_V2 qsesReply;
DP_TESTMESSAGE_REQUEST_STATUS testMessageStatus; DP_TESTMESSAGE_REQUEST_STATUS testMessageStatus;
@@ -103,6 +163,14 @@ namespace DisplayPort
pConnector = 0; pConnector = 0;
pMsgManager = 0; pMsgManager = 0;
replyBytes = 0; replyBytes = 0;
qsesReply.streamState = DoesNotExist;
qsesReply.repeaterFuncPresent = 0;
qsesReply.encryption = 0;
qsesReply.authentication = 0;
qsesReply.sinkType = StreamUnconnected;
qsesReply.cpType = HDCP1x;
qsesReply.signedLPrime = 0;
qsesReply.streamId = '\0';
} }
DP_TESTMESSAGE_STATUS sendDPTestMessage(void *pBuffer, DP_TESTMESSAGE_STATUS sendDPTestMessage(void *pBuffer,
NvU32 requestSize, NvU32 requestSize,

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 1993-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -41,6 +41,8 @@
#include "dp_deviceimpl.h" #include "dp_deviceimpl.h"
#include "dp_connectorimpl.h" #include "dp_connectorimpl.h"
#include "dp_qse.h"
#include "dp_auxbus.h" #include "dp_auxbus.h"
#include "dpringbuffertypes.h" #include "dpringbuffertypes.h"
@@ -94,6 +96,7 @@ ConnectorImpl::ConnectorImpl(MainLink * main, AuxBus * auxBus, Timer * timer, Co
bFromResumeToNAB(false), bFromResumeToNAB(false),
bAttachOnResume(false), bAttachOnResume(false),
bHdcpAuthOnlyOnDemand(false), bHdcpAuthOnlyOnDemand(false),
bHdcpStrmEncrEnblOnlyOnDemand(false),
constructorFailed(false), constructorFailed(false),
policyModesetOrderMitigation(false), policyModesetOrderMitigation(false),
policyForceLTAtNAB(false), policyForceLTAtNAB(false),
@@ -111,6 +114,10 @@ ConnectorImpl::ConnectorImpl(MainLink * main, AuxBus * auxBus, Timer * timer, Co
bAudioOverRightPanel(false), bAudioOverRightPanel(false),
connectorActive(false), connectorActive(false),
firmwareGroup(0), firmwareGroup(0),
qseNonceGenerator(0),
bValidQSERequest(false),
message(0),
clientId(0),
bAcpiInitDone(false), bAcpiInitDone(false),
bIsUefiSystem(false), bIsUefiSystem(false),
bSkipLt(false), bSkipLt(false),
@@ -118,6 +125,7 @@ ConnectorImpl::ConnectorImpl(MainLink * main, AuxBus * auxBus, Timer * timer, Co
bDelayAfterD3(false), bDelayAfterD3(false),
bKeepOptLinkAlive(false), bKeepOptLinkAlive(false),
bNoFallbackInPostLQA(false), bNoFallbackInPostLQA(false),
bIsEncryptionQseValid(true),
LT2FecLatencyMs(0), LT2FecLatencyMs(0),
bFECEnable(false), bFECEnable(false),
bDscCapBasedOnParent(false), bDscCapBasedOnParent(false),
@@ -230,6 +238,62 @@ void ConnectorImpl::readRemoteHdcpCaps()
return; return;
} }
if (linkUseMultistream())
{
for (Device * i = enumDevices(0); i; i=enumDevices(i))
{
DeviceImpl * dev = (DeviceImpl *)i;
if (dev->isHDCPCap == False)
{
NvU8 portType;
NvU8 peerType;
bool bIsPortPresent;
peerType = dev->peerDevice;
bIsPortPresent = dev->hal->getDownstreamPort(&portType);
// Skip the Remote DPCD read if the DS is Dongle.
if (bIsPortPresent && (peerType == Dongle))
{
// BKSV of the dongle might not be ready in some cases.
// Setting it with Branch device value.
hal->getBKSV(&dev->BKSV[0]);
dev->nvBCaps[0] = dev->BCAPS[0] = 0x1;
dev->isHDCPCap = True;
dev->shadow.hdcpCapDone = false;
fireEvents();
continue;
}
//Issue a new Remote HDCP capability check
DP_ASSERT(dev->isDeviceHDCPDetectionAlive == false);
if((dev->deviceHDCPDetection = new DeviceHDCPDetection(dev, messageManager, timer)))
{
dev->isDeviceHDCPDetectionAlive = true;
dev->deviceHDCPDetection->start();
dev->shadow.hdcpCapDone = false;
if (hdcpCapsRetries < 1)
{
timer->queueCallback(this, &tagDelayedHdcpCapRead, 3000);
hdcpCapsRetries++;
}
}
else
{
// For the risk control, make the device as not HDCPCap.
DP_ASSERT(0 && "new failed");
dev->isDeviceHDCPDetectionAlive = false;
dev->isHDCPCap = False;
if (!dev->isMultistream())
dev->shadow.hdcpCapDone = true;
}
}
else
{
DP_LOG(("DPCONN> This DP1.2 device is HDCP capable"));
}
}
}
} }
void ConnectorImpl::discoveryDetectComplete() void ConnectorImpl::discoveryDetectComplete()
@@ -606,6 +670,20 @@ create:
{ {
if (isHDCPAuthOn) if (isHDCPAuthOn)
{ {
// Abort the Authentication
DP_LOG(("DP> Topology limited. Abort Authentication."));
isHDCPAuthOn = false;
isHopLimitExceeded = true;
for (ListElement * i = activeGroups.begin(); i != activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (group->hdcpEnabled)
{
group-> hdcpSetEncrypted(false);
}
}
main->configureHDCPAbortAuthentication(KSVTOP);
main->configureHDCPDisableAuthentication();
isHDCPAuthOn = false; isHDCPAuthOn = false;
} }
isHopLimitExceeded = true; isHopLimitExceeded = true;
@@ -893,6 +971,7 @@ ConnectorImpl::~ConnectorImpl()
delete discoveryManager; delete discoveryManager;
pendingEdidReads.clear(); pendingEdidReads.clear();
delete messageManager; delete messageManager;
delete qseNonceGenerator;
delete hal; delete hal;
} }
@@ -2069,6 +2148,128 @@ void ConnectorImpl::expired(const void * tag)
{ {
if (tag == &tagFireEvents) if (tag == &tagFireEvents)
fireEventsInternal(); fireEventsInternal();
else if (tag == &tagDelayedHdcpCapRead)
{
DP_LOG(("DPCONN> Delayed HDCP Cap read called."));
readRemoteHdcpCaps();
}
else if (tag == &tagHDCPStreamEncrEnable)
{
if (!(bHdcpStrmEncrEnblOnlyOnDemand))
{
while (!(hdcpEnableTransitionGroups.isEmpty()))
{
GroupImpl* curStrmEncrEnblGroup = hdcpEnableTransitionGroups.pop();
curStrmEncrEnblGroup->hdcpSetEncrypted(true);
}
}
}
else if (tag == &tagHDCPReauthentication)
{
if (authRetries < HDCP_AUTHENTICATION_RETRIES)
{
HDCPState hdcpState = {0};
main->configureHDCPGetHDCPState(hdcpState);
unsigned authDelay = (hdcpState.HDCP_State_22_Capable ?
HDCP22_AUTHENTICATION_COOLDOWN : HDCP_AUTHENTICATION_COOLDOWN);
// Don't fire any reauthentication if we're not done with the modeset
if (!intransitionGroups.isEmpty())
{
isHDCPAuthOn = false;
timer->queueCallback(this, &tagHDCPReauthentication,
authDelay);
return;
}
// Clear the ECF & Reauthentication here for the branch device.
NvU64 ecf = 0x0;
main->configureAndTriggerECF(ecf);
isHDCPAuthOn = false;
authRetries++;
isHDCPAuthTriggered = true;
main->configureHDCPRenegotiate();
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);
// Enable HDCP for Group
if (!(bHdcpStrmEncrEnblOnlyOnDemand))
{
timer->queueCallback(this, &tagHDCPStreamEncrEnable, 100);
}
}
else
{
timer->queueCallback(this, &tagHDCPReauthentication,
authDelay);
}
isHDCPReAuthPending = false;
}
else
{
isHDCPAuthOn = false;
}
}
else if (tag == &tagSendQseMessage)
{
if (this->messageManager->isAnyAwaitingQSEReplyDownRequest())
{
timer->queueCallback(this, &tagSendQseMessage, HDCP_SEND_QSE_MESSAGE_COOLDOWN);
}
else
{
for (ListElement * i = activeGroups.begin(); i != activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *) i;
if (group->hdcpEnabled)
{
group->streamEncryptionStatusDetection->sendQSEMessage(group, qseReason_Ssc);
timer->queueCallback(group, &(group->tagStreamValidation), HDCP_STREAM_VALIDATION_REQUEST_COOLDOWN);
}
}
}
}
else if (tag == &tagDelayedHDCPCPIrqHandling)
{
DP_LOG(("DPCONN> Delayed HDCP CPIRQ handling due to previous RxStatus read failed."));
if (handleCPIRQ())
{
hal->clearInterruptContentProtection();
}
else
{
hdcpCpIrqRxStatusRetries++;
if (hdcpCpIrqRxStatusRetries < HDCP_CPIRQ_RXSTAUS_RETRIES)
{
timer->queueCallback(this, &tagHDCPReauthentication, HDCP_CPIRQ_RXSTATUS_COOLDOWN);
}
else
{
DP_LOG(("DPCONN> Delayed HDCP CPIRQ RxStatus probe exceeds max retry and aborted."));
hal->clearInterruptContentProtection();
}
}
}
else else
DP_ASSERT(0); DP_ASSERT(0);
} }
@@ -2898,6 +3099,12 @@ bool ConnectorImpl::notifyAttachBegin(Group * target, // Gr
} }
// TODO: Need to check if we can completely remove DP_OPTION_HDCP_12_ENABLED and remove it // TODO: Need to check if we can completely remove DP_OPTION_HDCP_12_ENABLED and remove it
// Clean up: Clearing ECF
if (linkUseMultistream())
{
targetImpl->hdcpSetEncrypted(false, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NV_TRUE, NV_FALSE);
targetImpl->hdcpEnabled = false;
}
beforeAddStream(targetImpl); beforeAddStream(targetImpl);
@@ -3037,7 +3244,39 @@ void ConnectorImpl::notifyAttachEnd(bool modesetCancelled)
{ {
currentModesetDeviceGroup->hdcpEnabled = isHDCPAuthOn = false; currentModesetDeviceGroup->hdcpEnabled = isHDCPAuthOn = false;
} }
else if (!bHdcpAuthOnlyOnDemand)
{
currentModesetDeviceGroup->cancelHdcpCallbacks();
if (hdcpState.HDCP_State_Authenticated)
{
isHDCPAuthOn = true;
currentModesetDeviceGroup->hdcpSetEncrypted(true);
} }
else
{
currentModesetDeviceGroup->hdcpEnabled = isHDCPAuthOn = false;
}
}
}
//
// 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.
//
if (isDP12AuthCap && !isHopLimitExceeded && !isHDCPReAuthPending &&
!bHdcpAuthOnlyOnDemand)
{
isHDCPReAuthPending = true;
timer->queueCallback(this, &tagHDCPReauthentication, HDCP_AUTHENTICATION_COOLDOWN_HPD);
}
if (!bHdcpStrmEncrEnblOnlyOnDemand)
{
hdcpEnableTransitionGroups.insertFront(currentModesetDeviceGroup);
}
hdcpCapsRetries = 0;
timer->queueCallback(this, &tagDelayedHdcpCapRead, 2000);
fireEvents(); fireEvents();
} }
@@ -3066,6 +3305,20 @@ void ConnectorImpl::notifyDetachBegin(Group * target)
DP_ASSERT(0 && "Could not set the PHY_TEST_PATTERN"); DP_ASSERT(0 && "Could not set the PHY_TEST_PATTERN");
} }
//
// At this point Pixels are dropped we can clear ECF,
// Force Clear ECF is set to TRUE which will delete time slots and send ACT
//
if (linkUseMultistream())
{
if (!(bHdcpStrmEncrEnblOnlyOnDemand) && hdcpEnableTransitionGroups.contains(group))
{
hdcpEnableTransitionGroups.remove(group);
}
group->hdcpSetEncrypted(false, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NV_TRUE, NV_FALSE);
group->hdcpEnabled = false;
}
beforeDeleteStream(group); beforeDeleteStream(group);
// //
@@ -3145,6 +3398,17 @@ void ConnectorImpl::notifyDetachEnd(bool bKeepOdAlive)
{ {
currentModesetDeviceGroup->hdcpEnabled = false; currentModesetDeviceGroup->hdcpEnabled = false;
} }
//
// ToDo: Need to confirm the HW and UpStream SW behavior on DP1.2.
// For HW, we need to know whether ECF will be cleared by modeset or not.
// For UpStream Sw, we need to know whether the upstream will come to call off then encryption.
// TODO: Need to remove this as we are already disabling encryption in Notify Detach Begin
//
else if ((this->linkUseMultistream()) && (currentModesetDeviceGroup->hdcpEnabled))
{
currentModesetDeviceGroup->hdcpSetEncrypted(false, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NV_TRUE, NV_FALSE);
currentModesetDeviceGroup->hdcpEnabled = false;
}
// Update Vbios scratch register // Update Vbios scratch register
for (Device * d = currentModesetDeviceGroup->enumDevices(0); d; for (Device * d = currentModesetDeviceGroup->enumDevices(0); d;
@@ -3191,6 +3455,20 @@ void ConnectorImpl::notifyDetachEnd(bool bKeepOdAlive)
else else
{ {
// //
// - if EDP; disable ASSR after switching off the stream from head
// to prevent corruption (bug 926360)
// - disable ASSR before power down link (bug 1641174)
//
if (main->isEDP())
{
bool bPanelPowerOn;
// if eDP's power has been shutdown here, don't disable ASSR, else it will be turned on by LT.
if (main->getEdpPowerData(&bPanelPowerOn, NULL) && bPanelPowerOn)
{
main->disableAlternateScramblerReset();
}
}
//
// Power down the links as we have switched away from the monitor. // Power down the links as we have switched away from the monitor.
// For shared SOR case, we need this to keep SW stats in DP instances in sync. // For shared SOR case, we need this to keep SW stats in DP instances in sync.
// Only power down the link when it's not a compliance test device. // Only power down the link when it's not a compliance test device.
@@ -3858,6 +4136,7 @@ bool ConnectorImpl::handleCPIRQ()
{ {
NvBool bReAuthReq = NV_FALSE; NvBool bReAuthReq = NV_FALSE;
NvBool bRxIDMsgPending = NV_FALSE; NvBool bRxIDMsgPending = NV_FALSE;
NvBool bHdcp1xReadyPending = NV_FALSE;
DP_LOG(("DP> CP_IRQ HDCP ver:%s RxStatus:0x%2x HDCP Authenticated:%s Encryption:%s", DP_LOG(("DP> CP_IRQ HDCP ver:%s RxStatus:0x%2x HDCP Authenticated:%s Encryption:%s",
hdcpState.HDCP_State_22_Capable ? "2.2" : "1.x", hdcpState.HDCP_State_22_Capable ? "2.2" : "1.x",
bStatus, bStatus,
@@ -3908,6 +4187,10 @@ bool ConnectorImpl::handleCPIRQ()
{ {
bReAuthReq = NV_TRUE; bReAuthReq = NV_TRUE;
} }
if (FLD_TEST_DRF(_DPCD, _HDCP_BSTATUS, _READY, _TRUE, bStatus))
{
bHdcp1xReadyPending = NV_TRUE;
}
} }
if (bReAuthReq || bRxIDMsgPending) if (bReAuthReq || bRxIDMsgPending)
@@ -3940,8 +4223,41 @@ bool ConnectorImpl::handleCPIRQ()
sstPrim->main->configureHDCPGetHDCPState(hdcpState); sstPrim->main->configureHDCPGetHDCPState(hdcpState);
isHDCPAuthOn = hdcpState.HDCP_State_Authenticated; isHDCPAuthOn = hdcpState.HDCP_State_Authenticated;
} }
else
{
//
// Clear the ECF and issue another authentication and set ECF accordingly.
// The flash monitor is expected here.
//
if (bReAuthReq)
{
main->configureAndTriggerECF(0x0);
} }
main->configureHDCPRenegotiate(HDCP_DUMMY_CN, HDCP_DUMMY_CKSV,
!!bReAuthReq, !!bRxIDMsgPending);
// If reAuth, schedule callback to check state later.
if (bReAuthReq)
{
isHDCPAuthOn = false;
timer->queueCallback(this, &tagHDCPReauthentication, HDCP_AUTHENTICATION_COOLDOWN);
}
}
}
if (bHdcp1xReadyPending)
{
DP_LOG(("DP> CP_IRQ: HDCP1X READY notification."));
//
// Bug 200305105: Since RM HDCP1.x repeater authentication has polling
// loop to check RxStatus READY event, here CPIRQ handling to read RxStatus
// cause RM next polling read won't get the one-shot READY event anymore and
// repeater authentication fail. The fix is to forward the READY event that
// RM detect to continue authentication stage.
//
main->forwardPendingKsvListReady(bHdcp1xReadyPending);
}
return true; return true;
} }
else else
@@ -3953,6 +4269,106 @@ bool ConnectorImpl::handleCPIRQ()
void ConnectorImpl::handleSSC() void ConnectorImpl::handleSSC()
{ {
//
// Bit 2 : STREAM_STATUS_CHANGED
// When set to a indicates the source must re-check the Stream
// Status with the QUERY_STREAM_ENCRYPTION_STATUS
// message.
//
// i. Should trigger QueryStreamStatus on all HDCP enabled streams.
// 1. L will change when the KSV list changes (aka new device)
// 2. L will change when the encryption state changes
// a. The library should attempt to recover from this bad state as soon as possible.
// If the player catches it on its 1/2Hz callback, it will disrupt CP over the entire topology
// 3. The output of QueryStreamStatus must be passed down to RM for validation.
// The status is effectively and indirectly signed by M0, the secret value
// for the immediate link between GPU and first branch.
// 4. The stream status validation function in RM will update the encryption state that
// our hardware signs and returns to the player.
// Thus the DisplayDriver should pass any upstream status calls directly to RM.
//
// ii. Should watch out that the ready bit is cleared after Binfo read.
//
DP_LOG(("DP> SSC of DP_IRQ"));
//
// Enable SSC process by default except when regkey 'DISABLE_SSC' set to 1 in DD's path.
//
if (!bDisableSSC)
{
this->messageManager->clearNotYetSentQSEDownRequest();
timer->cancelCallback(this, &tagSendQseMessage);
if (!isLinkActive())
{
DP_LOG(("DP> SSC of DP_IRQ: Ignored with link down"));
return;
}
BInfo bInfo;
if (hal->getBinfo(bInfo))
{
if (bInfo.maxCascadeExceeded || bInfo.maxDevsExceeded)
{
// Abort the Authentication
DP_LOG(("DP> StreamStatusChanged: Topology limited. Abort Authentication."));
isHDCPAuthOn = false;
isHopLimitExceeded = true;
for (ListElement * i = activeGroups.begin(); i != activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (group->hdcpEnabled)
{
group->hdcpSetEncrypted(false);
}
}
main->configureHDCPAbortAuthentication(KSVTOP);
main->configureHDCPDisableAuthentication();
return;
}
HDCPValidateData hdcpValidateData = {0};
NvU64 aN;
main->configureHDCPValidateLink(hdcpValidateData);
aN = hdcpValidateData.aN;
this->qseNonceGenerator->clientIdBuilder(aN);
if (this->messageManager->isAnyAwaitingQSEReplyDownRequest())
{
// Mark waiting reply's QSE request as invalid.
this->bValidQSERequest = false;
// Queue callback to check if pending QSE exist and send QSE message.
timer->queueCallback(this, &tagSendQseMessage, HDCP_SEND_QSE_MESSAGE_COOLDOWN);
}
else
{
this->bValidQSERequest = true;
for (ListElement * i = activeGroups.begin(); i != activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *) i;
if (group->hdcpEnabled)
{
group->streamEncryptionStatusDetection->sendQSEMessage(group, qseReason_Ssc);
timer->queueCallback(group, &(group->tagStreamValidation), HDCP_STREAM_VALIDATION_REQUEST_COOLDOWN);
}
}
}
}
else
DP_ASSERT(0 && "Unable to get Binfo");
}
else
{
DP_LOG(("DP> StreamStatusChanged: SSC Disabled now."));
}
} }
void ConnectorImpl::handleHdmiLinkStatusChanged() void ConnectorImpl::handleHdmiLinkStatusChanged()
@@ -5918,6 +6334,8 @@ void ConnectorImpl::notifyLongPulseInternal(bool statusConnected)
delete messageManager; delete messageManager;
messageManager = 0; messageManager = 0;
discoveryManager = 0; discoveryManager = 0;
delete qseNonceGenerator;
qseNonceGenerator = 0;
cancelHdcpCallbacks(); cancelHdcpCallbacks();
if (hal->getSupportsMultistream() && main->hasMultistream()) if (hal->getSupportsMultistream() && main->hasMultistream())
@@ -5947,6 +6365,7 @@ void ConnectorImpl::notifyLongPulseInternal(bool statusConnected)
} }
discoveryManager = new DiscoveryManager(messageManager, this, timer, hal); discoveryManager = new DiscoveryManager(messageManager, this, timer, hal);
qseNonceGenerator = new QSENonceGenerator();
// Check and clear if any pending message here // Check and clear if any pending message here
if (hal->clearPendingMsg()) if (hal->clearPendingMsg())
@@ -5984,6 +6403,23 @@ void ConnectorImpl::notifyLongPulseInternal(bool statusConnected)
assessLink(); // Link assessment may re-add a stream assessLink(); // Link assessment may re-add a stream
// and must be done AFTER the messaging system // and must be done AFTER the messaging system
// is restored. // is restored.
//
// SOR should be able to authentication and enable link encrpytion without being connected to any
// head. From the RM code, it 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.
//
DP_ASSERT((isHDCPAuthOn == false) && (isDP12AuthCap == false));
HDCPState hdcpState = {0};
main->configureHDCPGetHDCPState(hdcpState);
if (hdcpState.HDCP_State_1X_Capable || hdcpState.HDCP_State_22_Capable)
{
isDP12AuthCap = true;
}
else
{
isDP12AuthCap = false;
}
discoveryManager->notifyLongPulse(true); discoveryManager->notifyLongPulse(true);
} }
else // SST case else // SST case
@@ -6189,6 +6625,15 @@ void ConnectorImpl::notifyLongPulseInternal(bool statusConnected)
bNoFallbackInPostLQA = false; bNoFallbackInPostLQA = false;
bDscCapBasedOnParent = false; bDscCapBasedOnParent = false;
isHDCPAuthOn = isDP12AuthCap = false;
delete qseNonceGenerator;
qseNonceGenerator =0;
cancelHdcpCallbacks();
// Disable the authentication on the main link
main->configureHDCPDisableAuthentication();
} }
completed: completed:
previousPlugged = statusConnected; previousPlugged = statusConnected;
@@ -6617,10 +7062,25 @@ void ConnectorImpl::notifyAcpiInitDone()
return; return;
} }
void ConnectorImpl::hdcpRenegotiate(NvU64 cN, NvU64 cKsv)
{
this->main->configureHDCPRenegotiate(cN, cKsv);
HDCPState hdcpState = {0};
this->main->configureHDCPGetHDCPState(hdcpState);
this->isHDCPAuthOn = hdcpState.HDCP_State_Authenticated;
}
bool ConnectorImpl::getHDCPAbortCodesDP12(NvU32 &hdcpAbortCodesDP12) bool ConnectorImpl::getHDCPAbortCodesDP12(NvU32 &hdcpAbortCodesDP12)
{ {
hdcpAbortCodesDP12 = 0; hdcpAbortCodesDP12 = 0;
if (isHopLimitExceeded)
{
hdcpAbortCodesDP12 = hdcpAbortCodesDP12 | HDCP_FLAGS_ABORT_HOP_LIMIT_EXCEEDED ;
}
// Video has also expressed the need of bRevoked but we don't think it's needed. Next RFR will have conclusion.
return true;
return false; return false;
} }
@@ -6658,6 +7118,10 @@ void ConnectorImpl::cancelHdcpCallbacks()
timer->cancelCallback(this, &tagHDCPReauthentication); // Cancel any queue the auth callback. timer->cancelCallback(this, &tagHDCPReauthentication); // Cancel any queue the auth callback.
timer->cancelCallback(this, &tagDelayedHdcpCapRead); // Cancel any HDCP cap callbacks. timer->cancelCallback(this, &tagDelayedHdcpCapRead); // Cancel any HDCP cap callbacks.
timer->cancelCallback(this, &tagHDCPStreamEncrEnable); // Cancel any queued the stream encr enable callback.
this->bValidQSERequest = false;
timer->cancelCallback(this, &tagSendQseMessage); // Cancel any queue the qse callback.
for (ListElement * i = activeGroups.begin(); i != activeGroups.end(); i = i->next) for (ListElement * i = activeGroups.begin(); i != activeGroups.end(); i = i->next)

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 1993-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -1302,6 +1302,24 @@ TriState DeviceImpl::hdcpAvailable()
{ {
return this->hdcpAvailableHop(); return this->hdcpAvailableHop();
} }
else
{
DeviceImpl *targetDevice = this;
while (targetDevice)
{
if (!targetDevice->hdcpAvailableHop())
{
return False;
}
else if (targetDevice->hdcpAvailableHop() == Indeterminate)
{
return Indeterminate;
}
targetDevice = targetDevice->parent;
}
return True;
}
return False; return False;
} }
@@ -2618,35 +2636,12 @@ DeviceHDCPDetection::start()
} }
else else
{ {
parent->isHDCPCap = False; goto NativeDPCDHDCPCAPRead;
waivePendingHDCPCapDoneNotification();
return;
} }
NativeDPCDHDCPCAPRead: NativeDPCDHDCPCAPRead:
BCaps bCaps = {0}; BCaps bCaps = {0};
parent->hal->getBCaps(bCaps, parent->BCAPS);
*(parent->nvBCaps) = *(parent->BCAPS);
if (bCaps.HDCPCapable)
{
NvU8 tempBKSV[HDCP_KSV_SIZE] = {0};
if (parent->hal->getBKSV(tempBKSV))
{
if (hdcpValidateKsv(tempBKSV, HDCP_KSV_SIZE))
{
for (unsigned i=0; i<HDCP_KSV_SIZE; i++)
parent->BKSV[i] = tempBKSV[i];
}
}
parent->isHDCPCap = True;
waivePendingHDCPCapDoneNotification();
return;
}
else
{
unsigned char hdcp22BCAPS[HDCP22_BCAPS_SIZE]; unsigned char hdcp22BCAPS[HDCP22_BCAPS_SIZE];
// Check if hdcp2.x only device and probe hdcp22Bcaps. // Check if hdcp2.x only device and probe hdcp22Bcaps.
@@ -2667,6 +2662,25 @@ NativeDPCDHDCPCAPRead:
waivePendingHDCPCapDoneNotification(); waivePendingHDCPCapDoneNotification();
return; return;
} }
else
{
parent->hal->getBCaps(bCaps, parent->BCAPS);
*(parent->nvBCaps) = *(parent->BCAPS);
if (bCaps.HDCPCapable)
{
NvU8 tempBKSV[HDCP_KSV_SIZE] = {0};
if (parent->hal->getBKSV(tempBKSV))
{
if (hdcpValidateKsv(tempBKSV, HDCP_KSV_SIZE))
{
for (unsigned i=0; i<HDCP_KSV_SIZE; i++)
parent->BKSV[i] = tempBKSV[i];
}
}
parent->isHDCPCap = True;
waivePendingHDCPCapDoneNotification();
return;
}
} }
parent->isHDCPCap = False; parent->isHDCPCap = False;
@@ -2674,8 +2688,16 @@ NativeDPCDHDCPCAPRead:
} }
else else
{ {
parent->isHDCPCap = False; parent->isHDCPCap = Indeterminate;
waivePendingHDCPCapDoneNotification(); Address parentAddress = parent->address.parent();
//For DP1.4 atomic messaging, HDCP detection can be delayed, so lowering the priority.
remote22BCapsReadMessage.setMessagePriority(NV_DP_SBMSG_PRIORITY_LEVEL_DEFAULT);
remote22BCapsReadMessage.set(parentAddress, parent->address.tail(), NV_DPCD_HDCP22_BCAPS_OFFSET, HDCP22_BCAPS_SIZE);
bCapsReadCompleted = false;
bBCapsReadMessagePending = true;
messageManager->post(&remote22BCapsReadMessage, this);
if (parent->connector)
parent->connector->incPendingRemoteHdcpDetection();
} }
} }
@@ -2705,7 +2727,67 @@ DeviceHDCPDetection::handleRemoteDpcdReadDownReply
Address::StringBuffer sb; Address::StringBuffer sb;
DP_USED(sb); DP_USED(sb);
if (from == &remoteBKSVReadMessage) if (from == &remote22BCapsReadMessage)
{
bCapsReadCompleted = true;
bBCapsReadMessagePending = false;
DP_LOG(("DP-QM> REMOTE_DPCD_READ(22BCaps) {%p} at '%s' completed",
(MessageManager::Message *)&remote22BCapsReadMessage,
parent->address.toString(sb)));
if (remote22BCapsReadMessage.replyNumOfBytesReadDPCD() != HDCP22_BCAPS_SIZE)
{
DP_ASSERT(0 && "Incomplete 22BCaps in remote DPCD read message");
parent->isHDCPCap = False;
// Destruct only when no message is pending
if (!(bBKSVReadMessagePending || bBCapsReadMessagePending))
{
parent->isDeviceHDCPDetectionAlive = false;
delete this;
}
return;
}
DP_ASSERT(remote22BCapsReadMessage.replyPortNumber() == parent->address.tail());
if (!!(*remote22BCapsReadMessage.replyGetData() & 0x2))
{
unsigned char hdcp22BCAPS;
bksvReadCompleted = true;
bBKSVReadMessagePending = false;
hdcp22BCAPS = *remote22BCapsReadMessage.replyGetData();
parent->nvBCaps[0] = FLD_SET_DRF_NUM(_DPCD, _HDCP_BCAPS_OFFSET,
_HDCP_CAPABLE, (hdcp22BCAPS & 0x2) ? 1 : 0,
parent->nvBCaps[0]) |
FLD_SET_DRF_NUM(_DPCD, _HDCP_BCAPS_OFFSET, _HDCP_REPEATER,
(hdcp22BCAPS & 0x1) ? 1 : 0, parent->nvBCaps[0]);
// hdcp22 will validate certificate's bksv directly.
isBCapsHDCP = isValidBKSV = true;
DP_LOG(("DP-QM> Device at '%s' is with valid 22BCAPS : %x",
parent->address.toString(sb), *remote22BCapsReadMessage.replyGetData()));
}
else
{
Address parentAddress = parent->address.parent();
//For DP1.4 atomic messaging, HDCP detection can be delayed, so lowering the priority.
remoteBKSVReadMessage.setMessagePriority(NV_DP_SBMSG_PRIORITY_LEVEL_DEFAULT);
remoteBKSVReadMessage.set(parentAddress, parent->address.tail(), NV_DPCD_HDCP_BKSV_OFFSET, HDCP_KSV_SIZE);
bksvReadCompleted = false;
bBKSVReadMessagePending = true;
messageManager->post(&remoteBKSVReadMessage, this);
//For DP1.4 atomic messaging, HDCP detection can be delayed, so lowering the priority.
remoteBCapsReadMessage.setMessagePriority(NV_DP_SBMSG_PRIORITY_LEVEL_DEFAULT);
remoteBCapsReadMessage.set(parentAddress, parent->address.tail(), NV_DPCD_HDCP_BCAPS_OFFSET, HDCP_BCAPS_SIZE);
bCapsReadCompleted = false;
bBCapsReadMessagePending = true;
messageManager->post(&remoteBCapsReadMessage, this);
}
}
else if (from == &remoteBKSVReadMessage)
{ {
bksvReadCompleted = true; bksvReadCompleted = true;
bBKSVReadMessagePending = false; bBKSVReadMessagePending = false;
@@ -2792,59 +2874,6 @@ DeviceHDCPDetection::handleRemoteDpcdReadDownReply
*(parent->nvBCaps) = *(parent->BCAPS); *(parent->nvBCaps) = *(parent->BCAPS);
} }
} }
else
{
DP_LOG(("DP-QM> Device at '%s' is without valid BKSV and BCAPS, thus try 22BCAPS"));
Address parentAddress = parent->address.parent();
remote22BCapsReadMessage.setMessagePriority(NV_DP_SBMSG_PRIORITY_LEVEL_DEFAULT);
remote22BCapsReadMessage.set(parentAddress, parent->address.tail(), NV_DPCD_HDCP22_BCAPS_OFFSET, HDCP22_BCAPS_SIZE);
bCapsReadCompleted = false;
bBCapsReadMessagePending = true;
messageManager->post(&remote22BCapsReadMessage, this);
}
}
}
else if (from == &remote22BCapsReadMessage)
{
bCapsReadCompleted = true;
bBCapsReadMessagePending = false;
DP_LOG(("DP-QM> REMOTE_DPCD_READ(22BCaps) {%p} at '%s' completed",
(MessageManager::Message *)&remote22BCapsReadMessage,
parent->address.toString(sb)));
if (remote22BCapsReadMessage.replyNumOfBytesReadDPCD() != HDCP22_BCAPS_SIZE)
{
DP_ASSERT(0 && "Incomplete 22BCaps in remote DPCD read message");
parent->isHDCPCap = False;
// Destruct only when no message is pending
if (!(bBKSVReadMessagePending || bBCapsReadMessagePending))
{
parent->isDeviceHDCPDetectionAlive = false;
delete this;
}
return;
}
DP_ASSERT(remote22BCapsReadMessage.replyPortNumber() == parent->address.tail());
if (!!(*remote22BCapsReadMessage.replyGetData() & 0x2))
{
unsigned char hdcp22BCAPS;
hdcp22BCAPS = *remote22BCapsReadMessage.replyGetData();
parent->nvBCaps[0] = FLD_SET_DRF_NUM(_DPCD, _HDCP_BCAPS_OFFSET,
_HDCP_CAPABLE, (hdcp22BCAPS & 0x2) ? 1 : 0,
parent->nvBCaps[0]) |
FLD_SET_DRF_NUM(_DPCD, _HDCP_BCAPS_OFFSET, _HDCP_REPEATER,
(hdcp22BCAPS & 0x1) ? 1 : 0, parent->nvBCaps[0]);
// hdcp22 will validate certificate's bksv directly.
isBCapsHDCP = isValidBKSV = true;
DP_LOG(("DP-QM> Device at '%s' is with valid 22BCAPS : %x",
parent->address.toString(sb), *remote22BCapsReadMessage.replyGetData()));
} }
} }

View File

@@ -31,6 +31,7 @@
#include "dp_internal.h" #include "dp_internal.h"
#include "dp_evoadapter.h" #include "dp_evoadapter.h"
#include "dp_auxdefs.h" #include "dp_auxdefs.h"
#include "dp_qse.h"
#include "dp_tracing.h" #include "dp_tracing.h"
#include "dp_vrr.h" #include "dp_vrr.h"
#include <nvmisc.h> #include <nvmisc.h>
@@ -74,6 +75,7 @@ const struct
DP_REG_VAL_TYPE valueType; DP_REG_VAL_TYPE valueType;
} DP_REGKEY_TABLE [] = } DP_REGKEY_TABLE [] =
{ {
{NV_DP_REGKEY_DISABLE_QSES, &dpRegkeyDatabase.bQsesDisabled, DP_REG_VAL_BOOL},
{NV_DP_REGKEY_ENABLE_AUDIO_BEYOND_48K, &dpRegkeyDatabase.bAudioBeyond48kEnabled, DP_REG_VAL_BOOL}, {NV_DP_REGKEY_ENABLE_AUDIO_BEYOND_48K, &dpRegkeyDatabase.bAudioBeyond48kEnabled, DP_REG_VAL_BOOL},
{NV_DP_REGKEY_OVERRIDE_DPCD_REV, &dpRegkeyDatabase.dpcdRevOveride, DP_REG_VAL_U32}, {NV_DP_REGKEY_OVERRIDE_DPCD_REV, &dpRegkeyDatabase.dpcdRevOveride, DP_REG_VAL_U32},
{NV_DP_REGKEY_DISABLE_SSC, &dpRegkeyDatabase.bSscDisabled, DP_REG_VAL_BOOL}, {NV_DP_REGKEY_DISABLE_SSC, &dpRegkeyDatabase.bSscDisabled, DP_REG_VAL_BOOL},
@@ -117,6 +119,7 @@ EvoMainLink::EvoMainLink(EvoInterface * provider, Timer * timer) :
_isLTPhyRepeaterSupported = true; _isLTPhyRepeaterSupported = true;
_rmPhyRepeaterCount = 0; _rmPhyRepeaterCount = 0;
dpMemZero(&_DSC, sizeof(_DSC)); dpMemZero(&_DSC, sizeof(_DSC));
dpMemZero(&paramsHdcpCtrl, sizeof(paramsHdcpCtrl));
// //
// Tell RM to hands off on the DisplayPort hardware // Tell RM to hands off on the DisplayPort hardware
@@ -325,14 +328,260 @@ void EvoMainLink::triggerACT()
provider->rmControl0073(NV0073_CTRL_CMD_DP_SEND_ACT, &params, sizeof params); provider->rmControl0073(NV0073_CTRL_CMD_DP_SEND_ACT, &params, sizeof params);
} }
void EvoMainLink::configureHDCPRenegotiate(NvU64 cN, NvU64 cKSV, bool bForceReAuth, bool bRxIDMsgPending){} void EvoMainLink::configureAndTriggerECF(NvU64 ecf, NvBool bForceClearEcf, NvBool bAddStreamBack)
{
NV0073_CTRL_CMD_DP_SET_ECF_PARAMS params = {0};
params.subDeviceInstance = this->subdeviceIndex;
params.sorIndex = provider->getSorIndex();
params.ecf = ecf;
//
// ForceClearECF will delete DP MST Time slots along with ECF from GA10X and Later
// if ADD Stream Back is set then it will add back same time slots after clearing ECF
// bForceClear = TRUE should be set to have significance for bAddStreamBack
// bForceClear will be only set in case of Detach Stream/Flush mode
// bAddStream will also be set only in case of QSES error scenario
// In all other cases these are set to FALSE
//
params.bForceClearEcf = bForceClearEcf;
params.bAddStreamBack = bAddStreamBack;
provider->rmControl0073(NV0073_CTRL_CMD_DP_SET_ECF, &params, sizeof params);
triggerACT();
// Wait for 1 link frame time for ECF to take effect i.e
// Wait Time = 1024 MTPs * 64 clocks/MTP * (1/162MHz) = 404.5 us.
// As the minimum time available for timer->sleep() is 1 ms hence taking that time
timer->sleep(1);
}
//TODO: we need to re-arch this code to remove from dp library
void EvoMainLink::configureHDCPRenegotiate(NvU64 cN, NvU64 cKSV, bool bForceReAuth, bool bRxIDMsgPending)
{
dpMemZero(&paramsHdcpCtrl, sizeof(paramsHdcpCtrl));
paramsHdcpCtrl.subDeviceInstance = this->subdeviceIndex;
paramsHdcpCtrl.displayId = this->displayId;
paramsHdcpCtrl.cN = cN;
paramsHdcpCtrl.cKsv = cKSV;
if (bForceReAuth)
{
paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_FORCE_REAUTH, _YES);
}
else
{
paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_FORCE_REAUTH, _NO);
}
if (bRxIDMsgPending)
{
paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_RXIDMSG_PENDING, _YES);
}
else
{
paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_RXIDMSG_PENDING, _NO);
}
paramsHdcpCtrl.cmd |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _CMD, _RENEGOTIATE);
provider->rmControl0073(NV0073_CTRL_CMD_SPECIFIC_HDCP_CTRL, &paramsHdcpCtrl, sizeof paramsHdcpCtrl);
}
void EvoMainLink::configureHDCPDisableAuthentication()
{
dpMemZero(&paramsHdcpCtrl, sizeof(paramsHdcpCtrl));
paramsHdcpCtrl.subDeviceInstance = this->subdeviceIndex;
paramsHdcpCtrl.displayId = this->displayId;
paramsHdcpCtrl.cmd |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _CMD, _DISABLE_AUTHENTICATION);
provider->rmControl0073(NV0073_CTRL_CMD_SPECIFIC_HDCP_CTRL, &paramsHdcpCtrl, sizeof paramsHdcpCtrl);
}
void EvoMainLink::configureHDCPAbortAuthentication(AbortAuthReason abortAuthReason)
{
dpMemZero(&paramsHdcpCtrl, sizeof(paramsHdcpCtrl));
paramsHdcpCtrl.subDeviceInstance = this->subdeviceIndex;
paramsHdcpCtrl.displayId = this->displayId;
paramsHdcpCtrl.cN = HDCP_DUMMY_CN;
paramsHdcpCtrl.cKsv = HDCP_DUMMY_CKSV;
switch (abortAuthReason)
{
case UNTRUST: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _UNTRUST); break; //Abort due to Kp mismatch
case UNRELBL: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _UNRELBL); break; //Abort due to repeated link failure
case KSV_LEN: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _KSV_LEN); break; //Abort due to KSV length
case KSV_SIG: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _KSV_SIG); break; //Abort due to KSV signature
case SRM_SIG: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _SRM_SIG); break; //Abort due to SRM signature
case SRM_REV: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _SRM_REV); break; //Abort due to SRM revocation
case NORDY: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _NORDY); break; //Abort due to repeater not ready
case KSVTOP: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _KSVTOP); break; //Abort due to KSV topology error
case BADBKSV: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _BADBKSV); break; //Abort due to invalid Bksv
default: paramsHdcpCtrl.flags |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _FLAGS_ABORT, _NONE); break; // Default value;
}
paramsHdcpCtrl.cmd |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _CMD, _ABORT_AUTHENTICATION);
provider->rmControl0073(NV0073_CTRL_CMD_SPECIFIC_HDCP_CTRL, &paramsHdcpCtrl, sizeof paramsHdcpCtrl);
}
void EvoMainLink::configureHDCPValidateLink(HDCPValidateData &hdcpValidateData, NvU64 cN, NvU64 cKsv)
{
dpMemZero(&paramsHdcpCtrl, sizeof(paramsHdcpCtrl));
paramsHdcpCtrl.subDeviceInstance = this->subdeviceIndex;
paramsHdcpCtrl.displayId = this->displayId;
paramsHdcpCtrl.linkCount = 1;
paramsHdcpCtrl.cN = cN;
paramsHdcpCtrl.cKsv = cKsv;
paramsHdcpCtrl.cmd |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _CMD, _VALIDATE_LINK);
provider->rmControl0073(NV0073_CTRL_CMD_SPECIFIC_HDCP_CTRL, &paramsHdcpCtrl, sizeof paramsHdcpCtrl);
for (unsigned i = 0; i < NV0073_CTRL_HDCP_VPRIME_SIZE; i++)
{
hdcpValidateData.vP[i] = paramsHdcpCtrl.vP[i];
}
hdcpValidateData.aN = paramsHdcpCtrl.aN[0]; // Only primary link An for DP use.
hdcpValidateData.mP = paramsHdcpCtrl.mP;
}
void EvoMainLink::configureHDCPGetHDCPState(HDCPState &hdcpState) void EvoMainLink::configureHDCPGetHDCPState(HDCPState &hdcpState)
{ {
// HDCP Not Supported NV0073_CTRL_SPECIFIC_GET_HDCP_STATE_PARAMS params = {0};
params.subDeviceInstance = this->subdeviceIndex;
params.displayId = this->displayId;
// Set CACHED to False, it will cause a hdcpStatusRead which gating the eng.
// params.flags = FLD_SET_DRF(0073_CTRL_SPECIFIC, _HDCP_STATE, _ENCRYPTING_CACHED, _TRUE, 0);
provider->rmControl0073(NV0073_CTRL_CMD_SPECIFIC_GET_HDCP_STATE, &params, sizeof params);
hdcpState.HDCP_State_1X_Capable = FLD_TEST_DRF(0073_CTRL_SPECIFIC,
_HDCP_STATE, _RECEIVER_CAPABLE, _YES, params.flags) ? true : false;
if (FLD_TEST_DRF(0073_CTRL_SPECIFIC, _HDCP_STATE, _REPEATER_CAPABLE,
_YES, params.flags) ||
FLD_TEST_DRF(0073_CTRL_SPECIFIC, _HDCP_STATE, _HDCP22_REPEATER_CAPABLE,
_YES, params.flags))
{
hdcpState.HDCP_State_Repeater_Capable = true;
}
else
{
hdcpState.HDCP_State_Repeater_Capable = false; hdcpState.HDCP_State_Repeater_Capable = false;
}
if (FLD_TEST_DRF(0073_CTRL_SPECIFIC, _HDCP_STATE, _HDCP22_RECEIVER_CAPABLE,
_YES, params.flags) ||
FLD_TEST_DRF(0073_CTRL_SPECIFIC, _HDCP_STATE, _HDCP22_REPEATER_CAPABLE,
_YES, params.flags))
{
hdcpState.HDCP_State_22_Capable = true;
}
else
{
hdcpState.HDCP_State_22_Capable = false; hdcpState.HDCP_State_22_Capable = false;
}
if (hdcpState.HDCP_State_22_Capable)
{
if (FLD_TEST_DRF(0073_CTRL_SPECIFIC, _HDCP_STATE, _HDCP22_ENCRYPTING,_YES, params.flags))
{
hdcpState.HDCP_State_Encryption = true;
}
else
{
hdcpState.HDCP_State_Encryption = false; hdcpState.HDCP_State_Encryption = false;
}
}
else
{
if (FLD_TEST_DRF(0073_CTRL_SPECIFIC, _HDCP_STATE,_ENCRYPTING, _YES, params.flags))
{
hdcpState.HDCP_State_Encryption = true;
}
else
{
hdcpState.HDCP_State_Encryption = false;
}
}
if (FLD_TEST_DRF(0073_CTRL_SPECIFIC, _HDCP_STATE, _AUTHENTICATED,
_YES, params.flags))
{
hdcpState.HDCP_State_Authenticated = true;
}
else
{
hdcpState.HDCP_State_Authenticated = false; hdcpState.HDCP_State_Authenticated = false;
}
}
void EvoMainLink::disableAlternateScramblerReset()
{
NV0073_CTRL_DP_ASSR_CTRL_PARAMS assrParams;
dpMemZero(&assrParams, sizeof(assrParams));
assrParams.subDeviceInstance = subdeviceIndex;
assrParams.displayId = displayId;
assrParams.cmd = DRF_DEF(0073_CTRL, _DP, _ASSR_CMD, _DISABLE);
NvU32 code = provider->rmControl0073(NV0073_CTRL_CMD_DP_ASSR_CTRL, &assrParams, sizeof(assrParams));
if (code != NVOS_STATUS_SUCCESS || assrParams.err)
{
DP_ASSERT(0 && "Unable to change scrambler reset");
}
}
bool EvoMainLink::setStreamType(unsigned streamIndex, NvU8 streamType, bool * bNeedReNegotiate)
{
dpMemZero(&paramsHdcpCtrl, sizeof(paramsHdcpCtrl));
paramsHdcpCtrl.subDeviceInstance = this->subdeviceIndex;
paramsHdcpCtrl.displayId = this->displayId;
paramsHdcpCtrl.streamIndex = streamIndex;
paramsHdcpCtrl.streamType = streamType;
//
// According to spec, Type1 content cannot be transmitted to repeater HDCP1.X downstream device.
// Thus RM provides option for client that force to type0 instead repeater blank the output with type1.
// TODO: check Playready/HWDRM behavior with this,
// 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.cmd |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _CMD,
_SET_TYPE);
*bNeedReNegotiate = false;
if (!provider->rmControl0073(NV0073_CTRL_CMD_SPECIFIC_HDCP_CTRL,
&paramsHdcpCtrl, sizeof paramsHdcpCtrl))
{
if (FLD_TEST_DRF(0073_CTRL_SPECIFIC, _HDCP_CTRL_FLAGS, _TYPE_CHANGED,
_YES, paramsHdcpCtrl.flags))
{
*bNeedReNegotiate = true;
}
return true;
}
else
{
DP_LOG(("DP_EVO> set stream type cmd failed!"));
return false;
}
}
void EvoMainLink::forwardPendingKsvListReady(NvBool bKsvListReady)
{
dpMemZero(&paramsHdcpCtrl, sizeof(paramsHdcpCtrl));
paramsHdcpCtrl.subDeviceInstance = this->subdeviceIndex;
paramsHdcpCtrl.displayId = this->displayId;
paramsHdcpCtrl.bPendingKsvListReady = bKsvListReady;
paramsHdcpCtrl.cmd |= DRF_DEF(0073_CTRL_SPECIFIC, _HDCP_CTRL, _CMD,
_FORWARD_KSVLIST_READY);
provider->rmControl0073(NV0073_CTRL_CMD_SPECIFIC_HDCP_CTRL, &paramsHdcpCtrl,
sizeof paramsHdcpCtrl);
} }
void EvoMainLink::configureSingleStream(NvU32 head, void EvoMainLink::configureSingleStream(NvU32 head,

View File

@@ -154,8 +154,42 @@ void GroupImpl::insert(Device * dev)
members.insertFront(di); members.insertFront(di);
// Is HDCP on for this group?
// YES? Disable HDCP (ECF)
this->hdcpPreviousStatus = this->hdcpEnabled;
if (this->hdcpEnabled)
{
NvU64 ecf = 0x0;
NvU64 countOnes = 0x0;
NvU64 mask = 0x0;
// Get the MASK for the all active groups which is ECF enabled.
for (ListElement * i = parent->activeGroups.begin(); i != parent->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (group->hdcpEnabled)
{
countOnes = (((NvU64)1) << group->timeslot.count) - 1;
mask = countOnes << group->timeslot.begin;
ecf |= mask;
}
}
countOnes = (((NvU64)1) << this->timeslot.count) - 1;
mask = countOnes << this->timeslot.begin;
ecf &= ~mask;
parent->main->configureAndTriggerECF(ecf);
this->hdcpEnabled = false;
}
update(dev, true); update(dev, true);
// After Add Stream, we turn the encryption back if it was on.
if (this->hdcpPreviousStatus)
{
hdcpSetEncrypted(true);
}
} }
void GroupImpl::remove(Device * dev) void GroupImpl::remove(Device * dev)
@@ -184,6 +218,11 @@ void GroupImpl::destroy()
// Cancel any queue the auth callback. // Cancel any queue the auth callback.
cancelHdcpCallbacks(); cancelHdcpCallbacks();
if (streamEncryptionStatusDetection)
{
delete streamEncryptionStatusDetection;
streamEncryptionStatusDetection = 0;
}
parent = this->parent; parent = this->parent;
if (parent) if (parent)
@@ -240,6 +279,8 @@ void GroupImpl::cancelHdcpCallbacks()
parent->timer->cancelCallback(this, &tagHDCPReauthentication); parent->timer->cancelCallback(this, &tagHDCPReauthentication);
parent->timer->cancelCallback(this, &tagStreamValidation); parent->timer->cancelCallback(this, &tagStreamValidation);
QSESetECFRetries = 0;
parent->timer->cancelCallback(this, &tagMSTQSEandSetECF);
} }
Device * GroupImpl::enumDevices(Device * previousDevice) Device * GroupImpl::enumDevices(Device * previousDevice)
@@ -287,12 +328,186 @@ void GroupImpl::expired(const void * tag)
DP_ASSERT(0 && "DP> Didn't get final notification." ); DP_ASSERT(0 && "DP> Didn't get final notification." );
} }
} }
else if (tag == &tagMSTQSEandSetECF)
{
if (QSESetECFRetries < HDCP_QSEANDSETECF_RETRIES)
{
HDCPState hdcpState = {0};
parent->main->configureHDCPGetHDCPState(hdcpState);
this->hdcpEnabled = parent->isHDCPAuthOn = hdcpState.HDCP_State_Authenticated;
// Wait till authenticated then enable QSE and set ECF.
if (parent->isHDCPAuthOn)
{
QSESetECFRetries = 0;
parent->timer->cancelCallback(this, &tagMSTQSEandSetECF);
hdcpMSTQSEandSetECF();
}
else
{
QSESetECFRetries++;
parent->timer->queueCallback(this, &tagMSTQSEandSetECF,
HDCP_QSEANDSETECF_COOLDOWN);
}
}
else
{
DP_ASSERT(0 && "MST HDCP not authenticated within timeout and fail to set ECF." );
}
}
} }
// bForceClear stands for bForceClearECF.
bool GroupImpl::hdcpSetEncrypted(bool encrypted, NvU8 streamType, NvBool bForceClear, NvBool bAddStreamBack)
{
if (encrypted == true)
{
bool bNeedReNegotiate = false;
HDCPState hdcpState = {0};
DP_LOG(("DP-GRP: enable encryption with type=%d.", streamType));
// enumerate the displays in the group and see if they are hdcp capable.
Device * d = 0;
bool isHdcpCapable = false;
for (d = ((Group*)this)->enumDevices(0); d != 0; d = ((Group*)this)->enumDevices(d))
{
NvU8 Bcaps = (NvU8)(((DeviceImpl*)d)->nvBCaps[0]);
if ((FLD_TEST_DRF(_DPCD, _HDCP_BCAPS_OFFSET, _HDCP_CAPABLE, _YES, Bcaps)) &&
(((DeviceImpl*)d)->isHDCPCap == True))
{
isHdcpCapable = true;
break;
}
}
if (isHdcpCapable == false)
{
DP_LOG(("DP-GRP: group does not contain a hdcp capable device."));
return false;
}
parent->main->configureHDCPGetHDCPState(hdcpState);
// Clear dplib authentication state if RM reports not authenticated.
if (!hdcpState.HDCP_State_Authenticated)
{
parent->isHDCPAuthOn = this->hdcpEnabled = false;
}
// Update stream content type and trigger negotiation if need.
if ((hdcpState.HDCP_State_22_Capable) &&
(false == parent->main->setStreamType(streamIndex, streamType, &bNeedReNegotiate)))
{
DP_LOG(("DP-GRP: group set stream type failed."));
return false;
}
if(!parent->isHDCPAuthOn || bNeedReNegotiate)
{
cancelHdcpCallbacks();
parent->main->configureHDCPRenegotiate();
parent->main->configureHDCPGetHDCPState(hdcpState);
if (hdcpState.HDCP_State_Encryption)
{
parent->isHDCPAuthOn = this->hdcpEnabled = true;
}
else
{
parent->isHDCPAuthOn = this->hdcpEnabled = false;
parent->timer->queueCallback(this, &tagHDCPReauthentication, HDCP_AUTHENTICATION_COOLDOWN);
}
}
else
{
// SST is done when it's authenticated.
if (!(parent->linkUseMultistream()))
return true;
}
if (parent->linkUseMultistream())
{
// Check if authenticated else wait it's authenticated then assigning ECF.
if(!parent->isHDCPAuthOn)
{
parent->timer->queueCallback(this, &tagMSTQSEandSetECF, HDCP_AUTHENTICATION_COOLDOWN);
return true;
}
else
{
parent->timer->cancelCallback(this, &tagMSTQSEandSetECF);
hdcpMSTQSEandSetECF();
}
}
}
else
{
if (parent->isHDCPAuthOn)
{
if (!(parent->linkUseMultistream()))
{
parent->main->configureHDCPDisableAuthentication();
parent->isHDCPAuthOn = this->hdcpEnabled = false;
}
else
{
NvU64 ecf = 0x0;
NvU64 countOnes = 0x0;
NvU64 mask = 0x0;
// Get the MASK for the all active groups which is ECF enabled.
for (ListElement * i = parent->activeGroups.begin(); i != parent->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (group->hdcpEnabled)
{
countOnes = (((NvU64)1) << group->timeslot.count) - 1;
mask = countOnes << group->timeslot.begin;
ecf |= mask;
}
}
//Just clear the ECF not turn off the auth.
for (ListElement * i = parent->activeGroups.begin(); i != parent->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (this->headIndex == group->headIndex)
{
DP_ASSERT(group->hdcpEnabled);
countOnes = (((NvU64)1) << group->timeslot.count) - 1;
mask = countOnes << group->timeslot.begin;
ecf &= ~mask;
}
}
parent->main->configureAndTriggerECF(ecf, bForceClear, bAddStreamBack);
for (ListElement * i = parent->activeGroups.begin(); i != parent->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (this->headIndex == group->headIndex)
{
group->hdcpEnabled = false;
}
}
}
}
else
return true;
}
return true;
}
//DP_OPTION_HDCP_SUPPORT_ENABLE
bool GroupImpl::hdcpGetEncrypted() bool GroupImpl::hdcpGetEncrypted()
{ {
// //
// Returns whether encryption is currently enabled // Returns whether encryption is currently enabled
// After the setECFencyption we just set the flag for this group and make the default as false.
// //
if (parent->isHDCPAuthOn) if (parent->isHDCPAuthOn)
{ {
@@ -304,6 +519,120 @@ bool GroupImpl::hdcpGetEncrypted()
} }
} }
void GroupImpl::hdcpMSTQSEandSetECF()
{
//
// We become passive and wait for the Stream_Status_Change coming.
// Otherwise, we might not have the change to get the update KSVlist to
// validate it. Before, Naresh's Stream_Status_Change p4r in.
// We just simple turn it on. (which can be the option for non-QSE
// (AKA intel/AMD plan) branch.)
//
//
// Enable sending QSES message only when regkey 'DISABLE_QSES' set to 0
// in DD's path.
// This is added to provide driver for ST and not to be productized.
//
if ((parent->bIsEncryptionQseValid) &&
(!parent->main->getRegkeyValue(NV_DP_REGKEY_DISABLE_QSES)))
{
for (ListElement * i = parent->activeGroups.begin();
i != parent->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (this->headIndex == group->headIndex)
{
HDCPValidateData hdcpValidateData = {0};
parent->main->configureHDCPValidateLink(hdcpValidateData);
parent->qseNonceGenerator->clientIdBuilder(hdcpValidateData.aN);
}
}
}
//
// Turn on the ECF set ECF on according to the group's active stream.
// Set flag for the goup for later getting status using.
//
NvU64 ecf = 0x0;
NvU64 countOnes = 0x0;
NvU64 mask = 0x0;
// Get the MASK for the all active groups which is ECF enabled.
for (ListElement * i = parent->activeGroups.begin();
i != parent->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (group->hdcpEnabled)
{
countOnes = (((NvU64)1) << group->timeslot.count) - 1;
mask = countOnes << group->timeslot.begin;
ecf |= mask;
}
}
for (ListElement * i = parent->activeGroups.begin();
i != parent->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (this->headIndex == group->headIndex)
{
countOnes = (((NvU64)1) << group->timeslot.count) - 1;
mask = countOnes << group->timeslot.begin;
ecf |= mask;
}
}
// Set the ECF with new added group.
parent->main->configureAndTriggerECF(ecf);
//
// Enable sending QSES message only when regkey 'DISABLE_QSES' set to 0 in
// DD's path.
// This is added to provide driver for ST and not to be productized.
//
if ((parent->bIsEncryptionQseValid) &&
(!parent->main->getRegkeyValue(NV_DP_REGKEY_DISABLE_QSES)))
{
for (ListElement * i = parent->activeGroups.begin();
i != parent->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (this->headIndex == group->headIndex)
{
if (NULL == group->streamEncryptionStatusDetection)
{
group->streamEncryptionStatusDetection =
new StreamEncryptionStatusDetection(group, parent);
}
if (group->streamEncryptionStatusDetection)
{
parent->bValidQSERequest = true;
group->streamEncryptionStatusDetection->sendQSEMessage(group);
parent->timer->queueCallback(group,
&(group->tagStreamValidation),
HDCP_STREAM_VALIDATION_REQUEST_COOLDOWN);
}
}
}
}
for (ListElement * i = parent->activeGroups.begin();
i != parent->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (this->headIndex == group->headIndex)
{
DP_ASSERT(group->hdcpEnabled == false);
group->hdcpEnabled = true;
}
}
}
void GroupImpl::updateVbiosScratchRegister(Device * lastDev) void GroupImpl::updateVbiosScratchRegister(Device * lastDev)
{ {
if (!parent->bDisableVbiosScratchRegisterUpdate && if (!parent->bDisableVbiosScratchRegisterUpdate &&

View File

@@ -668,6 +668,63 @@ bool SinkEventNotifyMessage::processByType(EncodedMessage * message, BitStreamRe
} }
//
// QUERY_STREAM_ENCRYPTION_STATUS 0x38
// Follow the SCR DP1.2 Query Stream Encryption Status Definition v0.4
//
void QueryStreamEncryptionMessage::set
(
const Address & target,
unsigned streamId,
NvU8* clientId,
StreamEvent streamEvent,
bool streamEventMask,
StreamBehavior streamBehavior,
bool streamBehaviorMask
)
{
clear();
BitStreamWriter writer(&encodedMessage.buffer, 0);
// Write request identifier
writer.write(0/*zero*/, 1);
writer.write(requestIdentifier, 7);
// Write message request body
writer.write(streamId, 8);
for (unsigned i=0; i<7; i++)
{
writer.write(clientId[i], 8);
}
writer.write(streamEvent, 2);
writer.write(streamEventMask?1:0, 1);
writer.write(streamBehavior, 2);
writer.write(streamBehaviorMask?1:0, 1);
writer.write(0 /*zeroes*/, 2);
encodedMessage.isPathMessage = false;
encodedMessage.isBroadcast = false;
encodedMessage.address = target;
}
ParseResponseStatus QueryStreamEncryptionMessage::parseResponseAck(EncodedMessage * message, BitStreamReader * reader)
{
reply.streamState = (StreamState)reader->readOrDefault(2 /*Stream_State*/, 0x0);
reply.repeaterFuncPresent = !!reader->readOrDefault(1 /*Stream_Repeater_Function*/, 0x0);
reply.encryption = !!reader->readOrDefault(1 /*Stream_Encryption */, 0x0);
reply.authentication = !!reader->readOrDefault(1 /*Stream_Authentication */, 0x0);
reader->readOrDefault(3 /*zero*/, 0);
reply.sinkType = (OutputSinkType)reader->readOrDefault(3 /*Stream_Output_Sink_Type*/, 0x0);
reply.cpType = (OutputCPType)reader->readOrDefault(2 /*Stream_Output_CP_Type*/, 0x0);
reader->readOrDefault(2 /*zeroes*/, 0);
reply.signedLPrime = !!reader->readOrDefault(1 /*Signed*/, 0x0);
reply.streamId = (NvU8)reader->readOrDefault(8/*Stream_ID*/, 0x0);
return ParseResponseSuccess;
}
I2cWriteTransaction::I2cWriteTransaction I2cWriteTransaction::I2cWriteTransaction
( (
unsigned WriteI2cDeviceId, unsigned WriteI2cDeviceId,

View File

@@ -0,0 +1,292 @@
/*
* SPDX-FileCopyrightText: Copyright (c) 2010-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/******************************* DisplayPort *******************************\
* *
* Module: dp_qse.cpp *
* The DP HDCP Query Stream Encryption. *
* *
\***************************************************************************/
#include "dp_auxdefs.h"
#include "dp_qse.h"
#include "dp_internal.h"
#include "dp_deviceimpl.h"
#include "dp_connectorimpl.h"
#include <nvmisc.h>
using namespace DisplayPort;
NvU64
QSENonceGenerator::random()
{
NvU64 randomNumber;
previousRandomLSB = static_cast<NvU32>(((NvU64)1664525 * previousRandomLSB + 1013904223));
previousRandomMSB = static_cast<NvU32>(((NvU64)1664525 * previousRandomMSB + 1013904223));
randomNumber = ((NvU64)previousRandomMSB << 32) | previousRandomLSB ;
return randomNumber;
}
void
QSENonceGenerator::clientIdBuilder
(
NvU64 aN
)
{
previousRandomMSB = (NvU32)(aN >> 32) ;
previousRandomLSB = (NvU32)(aN & 0xFFFFFFFF);
}
void
QSENonceGenerator::makeClientId
(
CLIENTID &clientId
)
{
// Generate 56 bit nonce
NvU64 rnd = random();
clientId.data[0] = static_cast<NvU8>( rnd & 0xFF);
clientId.data[1] = static_cast<NvU8>((rnd >> 8) & 0xFF);
clientId.data[2] = static_cast<NvU8>((rnd >> 16) & 0xFF);
clientId.data[3] = static_cast<NvU8>((rnd >> 24) & 0xFF);
clientId.data[4] = static_cast<NvU8>((rnd >> 32) & 0xFF);
clientId.data[5] = static_cast<NvU8>((rnd >> 40) & 0xFF);
clientId.data[6] = static_cast<NvU8>((rnd >> 48) & 0xFF);
}
StreamEncryptionStatusDetection::~StreamEncryptionStatusDetection()
{
connector->timer->cancelCallbacks(this);
}
void
StreamEncryptionStatusDetection::messageFailed
(
MessageManager::Message *from,
NakData *nakData
)
{
if (from == &qseMessage)
{
connector->messageManager->clearAwaitingQSEReplyDownRequest();
if ((retriesSendQSEMessage < DPCD_QUERY_STREAM_MESSAGE_RETRIES) &&
(nakData->reason == NakDefer || nakData->reason == NakTimeout))
{
connector->timer->cancelCallback(parent, &(parent->tagStreamValidation));
retriesSendQSEMessage++;
sendQSEMessage(parent);
connector->timer->queueCallback(parent, &(parent->tagStreamValidation), HDCP_STREAM_VALIDATION_REQUEST_COOLDOWN);
return;
}
//
// If message failed is called after all retries have expired then
// we should disable the HDCP.
//
else
{
DP_LOG(("DP-QSE> Downstream failed to handle %s QSES message",
reason == qseReason_Ssc ? "SSC" : "generic"));
//
// Non-QSE supported branch would get HDCP off if we honor QSES's result even w/o SSC from it.
// So to improve compatibility, we honor QSES's result to have HDCP off only if it's fired for SSC.
//
if (reason == qseReason_Ssc)
{
for (ListElement * i = connector->activeGroups.begin(); i != connector->activeGroups.end(); i = i->next)
{
GroupImpl * group = (GroupImpl *)i;
if (group->hdcpEnabled)
{
//
// In case of MST, time slots will be deleted and add back for clearing ECF
// This will lead to blank screen momentarily
// Similarly for all other QSES errors
//
group->hdcpSetEncrypted(false, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NV_TRUE, NV_TRUE);
}
}
connector->main->configureHDCPAbortAuthentication(KSV_SIG);
connector->main->configureHDCPDisableAuthentication();
// Clear HDCP cap for groups and connector and devices.
connector->isHDCPAuthOn = false;
}
else
{
connector->bIsEncryptionQseValid = false;
}
retriesSendQSEMessage = 0;
parent->streamValidationDone = true;
//Reset the MessageManager pointer state
resetQseMessageState();
}
}
}
void
StreamEncryptionStatusDetection::expired(
const void * tag
)
{
// Not required as of now.
}
void
StreamEncryptionStatusDetection::handleQSEDownReply()
{
if ((connector->bValidQSERequest) && (handleQSEReplyValidation()))
{
parent->streamValidationDone = true;
}
else
{
connector->bValidQSERequest = true;
parent->streamValidationDone = true;
}
}
void
StreamEncryptionStatusDetection::messageCompleted
(
MessageManager::Message *from
)
{
if (from == &qseMessage)
{
handleQSEDownReply();
//Reset the MessageManager pointer state
resetQseMessageState();
}
}
void
StreamEncryptionStatusDetection::sendQSEMessage
(
GroupImpl *group,
QSE_REASON reasonId
)
{
Address address(0);
CLIENTID clientId;
HDCPState hdcpState = {0};
// Get hdcp version to see if hdcp22 QSE or not.
connector->main->configureHDCPGetHDCPState(hdcpState);
setHdcp22Qse(hdcpState.HDCP_State_22_Capable);
// Check whether repeater or not.
bIsRepeater = hdcpState.HDCP_State_Repeater_Capable;
//Generate the Pseudo Random number
connector->qseNonceGenerator->makeClientId(clientId);
for (unsigned i = 0 ; i < CLIENT_ID_SIZE; i++)
{
group->clientId[i] = clientId.data[i];
}
this->reason = reasonId;
group->streamValidationDone = false;
qseMessage.set( address,
group->streamIndex,
clientId.data,
CP_IRQ_ON,
STREAM_EVENT_MASK_ON,
Force_Reauth,
STREAM_BEHAVIOUR_MASK_ON);
connector->messageManager->post(&qseMessage, this);
}
bool
StreamEncryptionStatusDetection::handleQSEReplyValidation()
{
if (parent->streamIndex != qseMessage.getStreamId())
{
DP_LOG(("DP-QSE> Query the active Stream ID %d, but reply Stream ID %d mismatch.", parent->streamIndex, qseMessage.getStreamId()));
parent->hdcpSetEncrypted(false, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NV_TRUE, NV_TRUE);
return false;
}
NvU16 streamStatus = 0;
streamStatus = qseMessage.getStreamStatus();
DP_LOG(("DP-QSE> Query the active Stream ID %d. The reply streamStatus: %d", parent->streamIndex, streamStatus));
NvU16 streamState = DRF_VAL(_DP, _HDCP, _STREAM_STATE, streamStatus);
if ((streamState == NV_DP_HDCP_STREAM_STATE_NO_EXIST) ||
(streamState == NV_DP_HDCP_STREAM_STATE_ERROR))
{
DP_LOG(("DP-QSE> Query the active Stream ID %d, but reply as Stream does not exist or Error/Reserved", parent->streamIndex));
parent->hdcpSetEncrypted(false, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NV_TRUE, NV_TRUE);
return false;
}
else if (streamState == NV_DP_HDCP_STREAM_STATE_NOT_ACTIVE)
{
DP_LOG(("DP-QSE> Query the active Stream ID %d, but reply as Stream does not exist or Error/Reserved", parent->streamIndex));
parent->hdcpSetEncrypted(false, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NV_TRUE, NV_TRUE);
return false;
}
NvU16 streamAuth = DRF_VAL(_DP, _HDCP, _STREAM_AUTHENTICATION, streamStatus);
if (streamAuth == NV_DP_HDCP_STREAM_AUTHENTICATION_OFF)
{
DP_LOG(("DP-QSE> Query the Stream ID %d, reply as not authentication all the way down", parent->streamIndex));
parent->hdcpSetEncrypted(false, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NV_TRUE, NV_TRUE);
return false;
}
// Watch here for not over reacting encryption policy here.
NvU16 streamEncrypt = DRF_VAL(_DP, _HDCP, _STREAM_ENCRYPTION, streamStatus);
if (streamEncrypt == NV_DP_HDCP_STREAM_ENCRYPTION_OFF)
{
if (parent->hdcpEnabled)
{
DP_LOG(("DP-QSE> Query the Stream ID %d, reply as not encryption all the way down", parent->streamIndex));
parent->qseEncryptionStatusMismatch = parent->hdcpEnabled;
parent->hdcpSetEncrypted(false, NV0073_CTRL_SPECIFIC_HDCP_CTRL_HDCP22_TYPE_0, NV_TRUE, NV_TRUE);
}
else
return false;
}
return true;
}
void
StreamEncryptionStatusDetection::resetQseMessageState()
{
qseMessage.clear();
}
void
StreamEncryptionStatusDetection::setHdcp22Qse(bool bHdcp22Qse)
{
bIsHdcp22Qse = bHdcp22Qse;
qseMessage.setHdcp22Qse(bHdcp22Qse);
}

View File

@@ -39,6 +39,11 @@ void DPTestMessageCompletion::messageFailed(MessageManager::Message * from, NakD
{ {
parent->testMessageStatus = DP_TESTMESSAGE_REQUEST_STATUS_DONE; parent->testMessageStatus = DP_TESTMESSAGE_REQUEST_STATUS_DONE;
if (from->getMsgType() == NV_DP_SBMSG_REQUEST_ID_QUERY_STREAM_ENCRYPTION_STATUS)
{
delete (QueryStreamEncryptionMessage *)from;
}
else
{ {
{ {
DP_ASSERT(0 && "unknown msg type when msg failed"); DP_ASSERT(0 && "unknown msg type when msg failed");
@@ -50,6 +55,12 @@ void DPTestMessageCompletion::messageCompleted(MessageManager::Message * from)
{ {
parent->testMessageStatus = DP_TESTMESSAGE_REQUEST_STATUS_DONE; parent->testMessageStatus = DP_TESTMESSAGE_REQUEST_STATUS_DONE;
if (from->getMsgType() == NV_DP_SBMSG_REQUEST_ID_QUERY_STREAM_ENCRYPTION_STATUS)
{
((QueryStreamEncryptionMessage *)from)->getReply(&parent->qsesReply);
delete (QueryStreamEncryptionMessage *)from;
}
else
{ {
{ {
DP_ASSERT(0 && "unknown msg type when msg complete"); DP_ASSERT(0 && "unknown msg type when msg complete");
@@ -62,6 +73,31 @@ MessageManager * TestMessage::getMessageManager()
return pMsgManager; return pMsgManager;
} }
//pBuffer should point to a DP_TESTMESSAGE_REQUEST_QSES_INPUT structure
void TestMessage::sendTestMsgQSES(void *pBuffer)
{
//Generate the Pseudo Random number
QSENonceGenerator qseNonceGenerator;
//for qses, send to the root branch
Address address(0);
CLIENTID clientId;
QueryStreamEncryptionMessage *pQseMessage = new QueryStreamEncryptionMessage();
DP_TESTMESSAGE_REQUEST_QSES_INPUT *pQSES =
(DP_TESTMESSAGE_REQUEST_QSES_INPUT *)pBuffer;
pQseMessage->set(address,
pQSES->streamID,
clientId.data,
CP_IRQ_ON,
STREAM_EVENT_MASK_ON,
Force_Reauth,
STREAM_BEHAVIOUR_MASK_ON);
pMsgManager->post(pQseMessage, &diagCompl);
}
// //
// The function request that the request struct size should be check first to ensure the right structure is used and // The function request that the request struct size should be check first to ensure the right structure is used and
// no BSOD will happen. // no BSOD will happen.
@@ -88,7 +124,45 @@ DP_TESTMESSAGE_STATUS TestMessage::sendDPTestMessage
if (!isValidStruct(type, requestSize)) if (!isValidStruct(type, requestSize))
return DP_TESTMESSAGE_STATUS_ERROR_INVALID_PARAM; return DP_TESTMESSAGE_STATUS_ERROR_INVALID_PARAM;
switch (type)
{
case DP_TESTMESSAGE_REQUEST_TYPE_QSES:
// new request, try send message
if (*pDpStatus == DP_TESTMESSAGE_REQUEST_STATUS_NEWREQUEST)
{
//there is still processing request, new one not allow now
if (testMessageStatus == DP_TESTMESSAGE_REQUEST_STATUS_PENDING)
{
*pDpStatus = DP_TESTMESSAGE_REQUEST_STATUS_ERROR; *pDpStatus = DP_TESTMESSAGE_REQUEST_STATUS_ERROR;
return DP_TESTMESSAGE_STATUS_ERROR; return DP_TESTMESSAGE_STATUS_ERROR;
}
else
{
sendTestMsgQSES(pBuffer);
//need change the DP lib status accordingly
*pDpStatus = DP_TESTMESSAGE_REQUEST_STATUS_PENDING;
testMessageStatus = DP_TESTMESSAGE_REQUEST_STATUS_PENDING;
}
}
//old request, check if request finished
else if(*pDpStatus == DP_TESTMESSAGE_REQUEST_STATUS_PENDING)
{
//already finished, fill in the data
if (testMessageStatus == DP_TESTMESSAGE_REQUEST_STATUS_DONE)
{
DP_TESTMESSAGE_REQUEST_QSES_INPUT *p =
(DP_TESTMESSAGE_REQUEST_QSES_INPUT *)pBuffer;
p->reply = *(DP_TESTMESSAGE_REQUEST_QSES_OUTPUT *)&qsesReply;
*pDpStatus = DP_TESTMESSAGE_REQUEST_STATUS_DONE;
}
//otherwise, just return and ask the user try again
}
break;
default:
*pDpStatus = DP_TESTMESSAGE_REQUEST_STATUS_ERROR;
return DP_TESTMESSAGE_STATUS_ERROR;
}
return DP_TESTMESSAGE_STATUS_SUCCESS;
} }

View File

@@ -34,7 +34,11 @@ extern "C" {
#define NVC370_NOTIFIERS_BEGIN NV5070_NOTIFIERS_MAXCOUNT #define NVC370_NOTIFIERS_BEGIN NV5070_NOTIFIERS_MAXCOUNT
#define NVC370_NOTIFIERS_RG_SEM_NOTIFICATION NVC370_NOTIFIERS_BEGIN + (0) #define NVC370_NOTIFIERS_RG_SEM_NOTIFICATION NVC370_NOTIFIERS_BEGIN + (0)
#define NVC370_NOTIFIERS_WIN_SEM_NOTIFICATION NVC370_NOTIFIERS_RG_SEM_NOTIFICATION + (1) #define NVC370_NOTIFIERS_WIN_SEM_NOTIFICATION NVC370_NOTIFIERS_RG_SEM_NOTIFICATION + (1)
#define NVC370_NOTIFIERS_MAXCOUNT NVC370_NOTIFIERS_WIN_SEM_NOTIFICATION + (1) #define NVC370_NOTIFIERS_RG_VBLANK_NOTIFICATION NVC370_NOTIFIERS_WIN_SEM_NOTIFICATION + (1)
#define NVC370_NOTIFIERS_MAXCOUNT NVC370_NOTIFIERS_RG_VBLANK_NOTIFICATION + (1)
// Store head in bits [15:8]. Bits [16:31] are used as NV01_EVENT_ flags and stripped out in _insertEventNotification
#define NVC370_NOTIFIERS_RG_VBLANK_NOTIFYINDEX(head) ((NVC370_NOTIFIERS_RG_VBLANK_NOTIFICATION) | (NVBIT(head + 8)))
#ifdef __cplusplus #ifdef __cplusplus
}; /* extern "C" */ }; /* extern "C" */

View File

File diff suppressed because it is too large Load Diff

View File

@@ -845,6 +845,175 @@ typedef struct NV0073_CTRL_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED_PARAMS {
#define NV0073_CTRL_CMD_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED (0x73015cU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED_PARAMS_MESSAGE_ID" */ #define NV0073_CTRL_CMD_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED (0x73015cU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED_PARAMS_MESSAGE_ID" */
/*
* To support RMCTRLs for BOARDOBJGRP_E255, we were required to increase the
* XAPI limit to 16K. It was observed that XP does NOT allow the static array
* size greater then 10K and this was causing the DVS failure. So we are using
* the OLD XAPI value i.e. 4K for NV0073_CTRL_SYSTEM_SRM_BUFFER_MAX while
* internally we are using the new updated XAPI value i.e. 16K.
*/
#define XAPI_ENVELOPE_MAX_PAYLOAD_SIZE_OLD 4096U
/*
* NV0073_CTRL_SYSTEM_SRM_CHUNK
*
* Several control commands require an SRM, which may be larger than the
* available buffer. Therefore, this structure is used to transfer the needed
* data.
*
* startByte
* Index of the byte in the SRM buffer at which the current chunk of data
* starts. If this value is 0, it indicates the start of a new SRM. A
* value other than 0 indicates additional data for an SRM.
* numBytes
* Size in bytes of the current chunk of data.
* totalBytes
* Size in bytes of the entire SRM.
* srmBuffer
* Buffer containing the current chunk of SRM data.
*/
/* Set max SRM size to the XAPI max, minus some space for other fields */
#define NV0073_CTRL_SYSTEM_SRM_BUFFER_MAX (0xe00U) /* finn: Evaluated from "(XAPI_ENVELOPE_MAX_PAYLOAD_SIZE_OLD - 512)" */
typedef struct NV0073_CTRL_SYSTEM_SRM_CHUNK {
NvU32 startByte;
NvU32 numBytes;
NvU32 totalBytes;
/* C form: NvU8 srmBuffer[NV0073_CTRL_SYSTEM_SRM_BUFFER_MAX]; */
NvU8 srmBuffer[NV0073_CTRL_SYSTEM_SRM_BUFFER_MAX];
} NV0073_CTRL_SYSTEM_SRM_CHUNK;
/*
* NV0073_CTRL_CMD_SYSTEM_VALIDATE_SRM
*
* Instructs the RM to validate the SRM for use by HDCP revocation. The SRM
* may be larger than the buffer provided by the API. In that case, the SRM is
* sent in chunks no larger than NV0073_CTRL_SYSTEM_SRM_BUFFER_MAX bytes.
*
* Upon completion of the validation, which is an asynchronous operation, the
* client will receive a <PLACE_HOLDER_EVENT> event. Alternatively, the client
* may poll for completion of SRM validation via
* NV0073_CTRL_CMD_SYSTEM_GET_SRM_STATUS.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
* srm
* A chunk of the SRM.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_NOT_SUPPORTED
* NV_ERR_NOT_READY
* NV_ERR_INVALID_ARGUMENT
* NV_WARN_MORE_PROCESSING_REQUIRED
* NV_ERR_INSUFFICIENT_RESOURCES
*/
#define NV0073_CTRL_CMD_SYSTEM_VALIDATE_SRM (0x73015eU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_VALIDATE_SRM_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SYSTEM_VALIDATE_SRM_PARAMS_MESSAGE_ID (0x5EU)
typedef struct NV0073_CTRL_SYSTEM_VALIDATE_SRM_PARAMS {
NvU32 subDeviceInstance;
NV0073_CTRL_SYSTEM_SRM_CHUNK srm;
} NV0073_CTRL_SYSTEM_VALIDATE_SRM_PARAMS;
/*
* NV0073_CTRL_CMD_SYSTEM_GET_SRM_STATUS
*
* Retrieves the status of the request to validate the SRM. If a request to
* validate an SRM is still pending, NV_ERR_NOT_READY will be
* returned and the status will not be updated.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
* status
* Result of the last SRM validation request.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_NOT_SUPPORTED
* NV_ERR_NOT_READY
*/
#define NV0073_CTRL_CMD_SYSTEM_GET_SRM_STATUS (0x73015fU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_SRM_STATUS_PARAMS_MESSAGE_ID" */
typedef enum NV0073_CTRL_SYSTEM_SRM_STATUS {
NV0073_CTRL_SYSTEM_SRM_STATUS_OK = 0, // Validation succeeded
NV0073_CTRL_SYSTEM_SRM_STATUS_FAIL = 1, // Validation request failed
NV0073_CTRL_SYSTEM_SRM_STATUS_BAD_FORMAT = 2, // Bad SRM format
NV0073_CTRL_SYSTEM_SRM_STATUS_INVALID = 3, // Bad SRM signature
} NV0073_CTRL_SYSTEM_SRM_STATUS;
#define NV0073_CTRL_SYSTEM_GET_SRM_STATUS_PARAMS_MESSAGE_ID (0x5FU)
typedef struct NV0073_CTRL_SYSTEM_GET_SRM_STATUS_PARAMS {
NvU32 subDeviceInstance;
NvU32 status;
} NV0073_CTRL_SYSTEM_GET_SRM_STATUS_PARAMS;
/*
* NV0073_CTRL_CMD_SYSTEM_HDCP_REVOCATION_CHECK
*
* Performs the HDCP revocation process. Given the supplied SRM, all attached
* devices will be checked to see if they are on the revocation list or not.
*
* srm
* The SRM to do the revocation check against. For SRMs larger than
* NV0073_CTRL_SYSTEM_SRM_BUFFER_MAX, the caller will need to break up the
* SRM into chunks and make multiple calls.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_NOT_SUPPORTED
* NV_ERR_NOT_READY
* NV_ERR_INVALID_ARGUMENT
* NV_WARN_MORE_PROCESSING_REQUIRED
* NV_ERR_INSUFFICIENT_RESOURCES
*/
#define NV0073_CTRL_CMD_SYSTEM_HDCP_REVOCATION_CHECK (0x730161U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_HDCP_REVOCATE_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SYSTEM_HDCP_REVOCATE_PARAMS_MESSAGE_ID (0x61U)
typedef struct NV0073_CTRL_SYSTEM_HDCP_REVOCATE_PARAMS {
NV0073_CTRL_SYSTEM_SRM_CHUNK srm;
} NV0073_CTRL_SYSTEM_HDCP_REVOCATE_PARAMS;
/*
* NV0073_CTRL_CMD_UPDATE_SRM
*
* Updates the SRM used by RM for HDCP revocation checks. The SRM must have
* been previously validated as authentic.
*
* srm
* The SRM data. For SRMs larger than NV0073_CTRL_SYSTEM_SRM_BUFFER_MAX,
* the caller will need to break up the SRM into chunks and make multiple
* calls.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_NOT_SUPPORTED
* NV_ERR_NOT_READY
* NV_ERR_INVALID_ARGUMENT
* NV_WARN_MORE_PROCESSING_REQUIRED
* NV_ERR_INSUFFICIENT_RESOURCES
*/
#define NV0073_CTRL_CMD_SYSTEM_UPDATE_SRM (0x730162U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_UPDATE_SRM_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SYSTEM_UPDATE_SRM_PARAMS_MESSAGE_ID (0x62U)
typedef struct NV0073_CTRL_SYSTEM_UPDATE_SRM_PARAMS {
NV0073_CTRL_SYSTEM_SRM_CHUNK srm;
} NV0073_CTRL_SYSTEM_UPDATE_SRM_PARAMS;
/* /*
* NV0073_CTRL_SYSTEM_CONNECTOR_INFO * NV0073_CTRL_SYSTEM_CONNECTOR_INFO

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 2013-2015 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 2013-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -237,7 +237,7 @@ NvBool nvChooseCurrentColorSpaceAndRangeEvo(
const NVDpyEvoRec *pDpyEvo, const NVDpyEvoRec *pDpyEvo,
const NVHwModeTimingsEvo *pHwTimings, const NVHwModeTimingsEvo *pHwTimings,
NvU8 hdmiFrlBpc, NvU8 hdmiFrlBpc,
enum NvKmsOutputTf tf, enum NvKmsOutputColorimetry colorimetry,
const enum NvKmsDpyAttributeRequestedColorSpaceValue requestedColorSpace, const enum NvKmsDpyAttributeRequestedColorSpaceValue requestedColorSpace,
const enum NvKmsDpyAttributeColorRangeValue requestedColorRange, const enum NvKmsDpyAttributeColorRangeValue requestedColorRange,
enum NvKmsDpyAttributeCurrentColorSpaceValue *pCurrentColorSpace, enum NvKmsDpyAttributeCurrentColorSpaceValue *pCurrentColorSpace,
@@ -247,6 +247,7 @@ NvBool nvChooseCurrentColorSpaceAndRangeEvo(
void nvUpdateCurrentHardwareColorSpaceAndRangeEvo( void nvUpdateCurrentHardwareColorSpaceAndRangeEvo(
NVDispEvoPtr pDispEvo, NVDispEvoPtr pDispEvo,
const NvU32 head, const NvU32 head,
const enum NvKmsOutputColorimetry colorimetry,
const enum NvKmsDpyAttributeCurrentColorSpaceValue colorSpace, const enum NvKmsDpyAttributeCurrentColorSpaceValue colorSpace,
const enum NvKmsDpyAttributeColorRangeValue colorRange, const enum NvKmsDpyAttributeColorRangeValue colorRange,
NVEvoUpdateState *pUpdateState); NVEvoUpdateState *pUpdateState);
@@ -359,6 +360,12 @@ void nvEvoPostModesetUnregisterFlipOccurredEvent(NVDispEvoRec *pDispEvo,
const NVEvoModesetUpdateState const NVEvoModesetUpdateState
*pModesetUpdate); *pModesetUpdate);
NvU32 nvEvoRegisterVBlankEvent(NVDispEvoRec *pDispEvo,
const NvU32 head,
NVVBlankIntrCallbackRec *cbRec);
void nvEvoUnregisterVBlankEvent(NVDispEvoRec *pDispEvo, NvU32 handle);
void nvEvoLockStateSetMergeMode(NVDispEvoPtr pDispEvo); void nvEvoLockStateSetMergeMode(NVDispEvoPtr pDispEvo);
void nvEvoEnableMergeModePreModeset(NVDispEvoRec *pDispEvo, void nvEvoEnableMergeModePreModeset(NVDispEvoRec *pDispEvo,

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 2020 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 2020 - 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -29,6 +29,7 @@
typedef struct { typedef struct {
struct { struct {
enum NvKmsOutputTf tf; enum NvKmsOutputTf tf;
enum NvKmsOutputColorimetry colorimetry;
enum NvKmsDpyAttributeCurrentColorSpaceValue colorSpace; enum NvKmsDpyAttributeCurrentColorSpaceValue colorSpace;
enum NvKmsDpyAttributeColorBpcValue colorBpc; enum NvKmsDpyAttributeColorBpcValue colorBpc;
enum NvKmsDpyAttributeColorRangeValue colorRange; enum NvKmsDpyAttributeColorRangeValue colorRange;

View File

@@ -37,12 +37,12 @@ typedef struct {
NVDpyIdList dpyIdList; NVDpyIdList dpyIdList;
NVAttributesSetEvoRec attributes; NVAttributesSetEvoRec attributes;
struct NvKmsSetLutCommonParams lut; struct NvKmsSetLutCommonParams lut;
enum NvKmsOutputColorSpace outputColorSpace;
NVDispStereoParamsEvoRec stereo; NVDispStereoParamsEvoRec stereo;
NVDscInfoEvoRec dscInfo; NVDscInfoEvoRec dscInfo;
NVDispHeadInfoFrameStateEvoRec infoFrame; NVDispHeadInfoFrameStateEvoRec infoFrame;
NvU8 allowFlipLockGroup; NvU8 allowFlipLockGroup;
enum NvKmsOutputTf tf; enum NvKmsOutputTf tf;
enum NvKmsOutputColorimetry colorimetry;
NvBool colorSpaceSpecified : 1; NvBool colorSpaceSpecified : 1;
NvBool colorRangeSpecified : 1; NvBool colorRangeSpecified : 1;
NvBool hs10bpcHint : 1; NvBool hs10bpcHint : 1;

View File

@@ -75,6 +75,16 @@ void nvApiHeadGetScanLine(const NVDispEvoRec *pDispEvo,
NvU16 *pScanLine, NvU16 *pScanLine,
NvBool *pInBlankingPeriod); NvBool *pInBlankingPeriod);
NVVBlankIntrCallbackRec*
nvApiHeadRegisterVBlankIntrCallback(NVDispEvoPtr pDispEvo,
const NvU32 apiHead,
NVVBlankIntrCallbackProc pCallback,
NvU64 param1,
NvU64 param2);
void nvApiHeadUnregisterVBlankIntrCallback(NVDispEvoPtr pDispEvo,
NVVBlankIntrCallbackRec *pCallback);
#ifdef __cplusplus #ifdef __cplusplus
}; };
#endif #endif

View File

@@ -693,6 +693,7 @@ typedef struct {
NvBool disableMidFrameAndDWCFWatermark; NvBool disableMidFrameAndDWCFWatermark;
enum NvKmsOutputTf tf; enum NvKmsOutputTf tf;
enum NvKmsOutputColorimetry colorimetry;
NvBool skipLayerPendingFlips[NVKMS_MAX_LAYERS_PER_HEAD]; NvBool skipLayerPendingFlips[NVKMS_MAX_LAYERS_PER_HEAD];
struct { struct {
@@ -701,6 +702,7 @@ typedef struct {
NvBool cursorPosition : 1; NvBool cursorPosition : 1;
NvBool tf : 1; NvBool tf : 1;
NvBool hdrStaticMetadata : 1; NvBool hdrStaticMetadata : 1;
NvBool colorimetry : 1;
NvBool layerPosition[NVKMS_MAX_LAYERS_PER_HEAD]; NvBool layerPosition[NVKMS_MAX_LAYERS_PER_HEAD];
NvBool layerSyncObjects[NVKMS_MAX_LAYERS_PER_HEAD]; NvBool layerSyncObjects[NVKMS_MAX_LAYERS_PER_HEAD];
@@ -928,9 +930,10 @@ enum NVKMS_GAMMA_LUT {
NVKMS_GAMMA_LUT_IDENTITY = 0, NVKMS_GAMMA_LUT_IDENTITY = 0,
NVKMS_GAMMA_LUT_SRGB = 1, NVKMS_GAMMA_LUT_SRGB = 1,
NVKMS_GAMMA_LUT_PQ = 2, NVKMS_GAMMA_LUT_PQ = 2,
NVKMS_GAMMA_LUT_BT709 = 3,
// Must be last, used to track number of colorspaces. // Must be last, used to track number of colorspaces.
NVKMS_GAMMA_LUT_LAST = 3, NVKMS_GAMMA_LUT_LAST = 4,
}; };
/* Device-specific EVO state (subdevice- and channel-independent) */ /* Device-specific EVO state (subdevice- and channel-independent) */
@@ -1747,6 +1750,8 @@ typedef struct _NVDispHeadStateEvoRec {
enum NvKmsOutputTf tf; enum NvKmsOutputTf tf;
enum NvKmsOutputColorimetry colorimetry;
struct { struct {
enum NvKmsHDROutputState outputState; enum NvKmsHDROutputState outputState;
struct NvKmsHDRStaticMetadata staticMetadata; struct NvKmsHDRStaticMetadata staticMetadata;
@@ -1758,8 +1763,6 @@ typedef struct _NVDispHeadStateEvoRec {
NvBool baseLutEnabled : 1; NvBool baseLutEnabled : 1;
} lut; } lut;
enum NvKmsOutputColorSpace outputColorSpace;
/* /*
* The api head can be mapped onto the N harware heads, a frame presented * The api head can be mapped onto the N harware heads, a frame presented
* by the api head gets split horizontally into N tiles, 'tilePosition' * by the api head gets split horizontally into N tiles, 'tilePosition'
@@ -1797,6 +1800,9 @@ typedef struct _NVDispApiHeadStateEvoRec {
NVAttributesSetEvoRec attributes; NVAttributesSetEvoRec attributes;
enum NvKmsOutputTf tf; enum NvKmsOutputTf tf;
enum NvKmsOutputColorimetry colorimetry;
nvkms_timer_handle_t *hdrToSdrTransitionTimer; nvkms_timer_handle_t *hdrToSdrTransitionTimer;
/* /*
@@ -1934,6 +1940,8 @@ typedef struct _NVDispEvoRec {
NvU32 vrrSetTimeoutEventUsageCount; NvU32 vrrSetTimeoutEventUsageCount;
NVOS10_EVENT_KERNEL_CALLBACK_EX vrrSetTimeoutCallback; NVOS10_EVENT_KERNEL_CALLBACK_EX vrrSetTimeoutCallback;
NvU32 vrrSetTimeoutEventHandle; NvU32 vrrSetTimeoutEventHandle;
NVListRec vblankIntrCallbackList[NVKMS_MAX_HEADS_PER_DISP];
} NVDispEvoRec; } NVDispEvoRec;
static inline NvU32 GetNextHwHead(NvU32 hwHeadsMask, const NvU32 prevHwHead) static inline NvU32 GetNextHwHead(NvU32 hwHeadsMask, const NvU32 prevHwHead)
@@ -1998,6 +2006,19 @@ typedef struct _NVVBlankCallbackRec {
NvU32 apiHead; NvU32 apiHead;
} NVVBlankCallbackRec; } NVVBlankCallbackRec;
typedef void (*NVVBlankIntrCallbackProc)(NvU64 param1, NvU64 param2);
typedef struct _NVVBlankIntrCallbackRec {
NVListRec vblankIntrCallbackListEntry;
NVVBlankIntrCallbackProc pCallback;
NvU32 apiHead;
NvU32 rmVBlankCallbackHandle;
NvU64 param1;
NvU64 param2;
struct nvkms_ref_ptr *ref_ptr;
NVOS10_EVENT_KERNEL_CALLBACK_EX vblankNotifierEventCallback;
} NVVBlankIntrCallbackRec;
typedef void (*NVRgLine1CallbackProc)(NVDispEvoRec *pDispEvo, typedef void (*NVRgLine1CallbackProc)(NVDispEvoRec *pDispEvo,
const NvU32 head, const NvU32 head,
NVRgLine1CallbackPtr pCallbackData); NVRgLine1CallbackPtr pCallbackData);

View File

@@ -55,6 +55,7 @@ typedef NvU32 NvKmsFrameLockHandle;
typedef NvU32 NvKmsDeferredRequestFifoHandle; typedef NvU32 NvKmsDeferredRequestFifoHandle;
typedef NvU32 NvKmsSwapGroupHandle; typedef NvU32 NvKmsSwapGroupHandle;
typedef NvU32 NvKmsVblankSyncObjectHandle; typedef NvU32 NvKmsVblankSyncObjectHandle;
typedef NvU32 NvKmsVblankIntrCallbackHandle;
struct NvKmsSize { struct NvKmsSize {
NvU16 width; NvU16 width;
@@ -545,6 +546,36 @@ enum NvKmsInputColorRange {
NVKMS_INPUT_COLORRANGE_FULL = 2, NVKMS_INPUT_COLORRANGE_FULL = 2,
}; };
enum NvKmsOutputColorimetry {
NVKMS_OUTPUT_COLORIMETRY_DEFAULT = 0,
NVKMS_OUTPUT_COLORIMETRY_SRGB = 1,
NVKMS_OUTPUT_COLORIMETRY_BT601 = 2,
NVKMS_OUTPUT_COLORIMETRY_BT709 = 3,
NVKMS_OUTPUT_COLORIMETRY_BT2020 = 4,
NVKMS_OUTPUT_COLORIMETRY_BT2100 = 5,
};
/*! Values for the NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE attribute. */
enum NvKmsDpyAttributeRequestedColorSpaceValue {
NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE_RGB = 0,
NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE_YCbCr422 = 1,
NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE_YCbCr444 = 2,
};
/*!
* * Values for the NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_RANGE and
* * NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_RANGE attributes.
* */
enum NvKmsDpyAttributeColorRangeValue {
NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_FULL = 0,
NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_LIMITED = 1,
};
enum NvKmsInputColorSpace { enum NvKmsInputColorSpace {
/* Unknown colorspace; no de-gamma will be applied */ /* Unknown colorspace; no de-gamma will be applied */
NVKMS_INPUT_COLORSPACE_NONE = 0, NVKMS_INPUT_COLORSPACE_NONE = 0,
@@ -558,19 +589,17 @@ enum NvKmsInputColorSpace {
/* sRGB colorspace with sRGB gamma transfer function */ /* sRGB colorspace with sRGB gamma transfer function */
NVKMS_INPUT_COLORSPACE_SRGB = 3, NVKMS_INPUT_COLORSPACE_SRGB = 3,
/* Rec601 colorspace with Rec601 gamma transfer function */
NVKMS_INPUT_COLORSPACE_BT601 = 4,
/* Rec709 colorspace with Rec709 gamma transfer function */ /* Rec709 colorspace with Rec709 gamma transfer function */
NVKMS_INPUT_COLORSPACE_REC709 = 4, NVKMS_INPUT_COLORSPACE_BT709 = 5,
/* Rec709 colorspace with linear (identity) gamma */ /* Rec709 colorspace with linear (identity) gamma */
NVKMS_INPUT_COLORSPACE_REC709_LINEAR = 5 NVKMS_INPUT_COLORSPACE_BT709_LINEAR = 6,
};
enum NvKmsOutputColorSpace { /* Rec2020 colorspace with Rec2020 gamma transfer function */
/* Unknown colorspace; no re-gamma will be applied */ NVKMS_INPUT_COLORSPACE_BT2020 = 7,
NVKMS_OUTPUT_COLORSPACE_NONE = 0,
/* sRGB gamma transfer function will be applied */
NVKMS_OUTPUT_COLORSPACE_SRGB = 1
}; };
enum NvKmsOutputTf { enum NvKmsOutputTf {
@@ -661,4 +690,6 @@ struct NvKmsSuperframeInfo {
} view[NVKMS_MAX_SUPERFRAME_VIEWS]; } view[NVKMS_MAX_SUPERFRAME_VIEWS];
}; };
typedef void (*NVVBlankIntrCallbackProc)(NvU64 param1, NvU64 param2);
#endif /* NVKMS_API_TYPES_H */ #endif /* NVKMS_API_TYPES_H */

View File

@@ -268,6 +268,8 @@ enum NvKmsIoctlCommand {
NVKMS_IOCTL_DISABLE_VBLANK_SYNC_OBJECT, NVKMS_IOCTL_DISABLE_VBLANK_SYNC_OBJECT,
NVKMS_IOCTL_NOTIFY_VBLANK, NVKMS_IOCTL_NOTIFY_VBLANK,
NVKMS_IOCTL_QUERY_VT_FB_DATA, NVKMS_IOCTL_QUERY_VT_FB_DATA,
NVKMS_IOCTL_REGISTER_VBLANK_INTR_CALLBACK,
NVKMS_IOCTL_UNREGISTER_VBLANK_INTR_CALLBACK,
}; };
@@ -748,6 +750,14 @@ struct NvKmsFlipCommonParams {
NvBool specified; NvBool specified;
} tf; } tf;
/*
* Specifies required output color space value.
*/
struct {
NvBool specified;
enum NvKmsOutputColorimetry val;
} colorimetry;
struct { struct {
struct { struct {
NvKmsSurfaceHandle handle[NVKMS_MAX_EYES]; NvKmsSurfaceHandle handle[NVKMS_MAX_EYES];
@@ -1760,22 +1770,6 @@ enum NvKmsAllowAdaptiveSync {
NVKMS_ALLOW_ADAPTIVE_SYNC_ALL, NVKMS_ALLOW_ADAPTIVE_SYNC_ALL,
}; };
/*! Values for the NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE attribute. */
enum NvKmsDpyAttributeRequestedColorSpaceValue {
NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE_RGB = 0,
NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE_YCbCr422 = 1,
NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_SPACE_YCbCr444 = 2,
};
/*!
* Values for the NV_KMS_DPY_ATTRIBUTE_REQUESTED_COLOR_RANGE and
* NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_RANGE attributes.
*/
enum NvKmsDpyAttributeColorRangeValue {
NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_FULL = 0,
NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_LIMITED = 1,
};
struct NvKmsSetModeOneHeadRequest { struct NvKmsSetModeOneHeadRequest {
/*! /*!
* The list of dpys to drive with this head; or, empty to disable * The list of dpys to drive with this head; or, empty to disable
@@ -1819,18 +1813,6 @@ struct NvKmsSetModeOneHeadRequest {
*/ */
struct NvKmsSetLutCommonParams lut; struct NvKmsSetLutCommonParams lut;
/*!
* If specified, this will determine the gamma encoding of the output.
* Note: this will take precendence over a custom output lut ramp if that
* is also supplied via the `lut` member variable above.
* Note: if neither this nor a custom OLUT is specified, the driver will
* default to an Identity OLUT (i.e. no regamma).
*/
struct {
NvBool specified;
enum NvKmsOutputColorSpace val;
} outputColorSpace;
/*! /*!
* Describe the surfaces to present on this head. * Describe the surfaces to present on this head.
*/ */
@@ -4067,4 +4049,40 @@ struct NvKmsNotifyVblankParams {
struct NvKmsNotifyVblankReply reply; /*! out */ struct NvKmsNotifyVblankReply reply; /*! out */
}; };
struct NvKmsRegisterVblankIntrCallbackRequest {
NvKmsDeviceHandle deviceHandle;
NvKmsDispHandle dispHandle;
NvU32 head;
NVVBlankIntrCallbackProc pCallback;
NvU64 param1;
NvU64 param2;
};
struct NvKmsRegisterVblankIntrCallbackReply {
NvKmsVblankIntrCallbackHandle callbackHandle;
};
struct NvKmsRegisterVblankIntrCallbackParams {
struct NvKmsRegisterVblankIntrCallbackRequest request; /*! in */
struct NvKmsRegisterVblankIntrCallbackReply reply; /*! out */
};
struct NvKmsUnregisterVblankIntrCallbackRequest {
NvKmsDeviceHandle deviceHandle;
NvKmsDispHandle dispHandle;
NvU32 head;
NvKmsVblankIntrCallbackHandle callbackHandle;
};
struct NvKmsUnregisterVblankIntrCallbackReply {
NvU32 padding;
};
struct NvKmsUnregisterVblankIntrCallbackParams {
struct NvKmsUnregisterVblankIntrCallbackRequest request; /*! in */
struct NvKmsUnregisterVblankIntrCallbackReply reply; /*! out */
};
#endif /* NVKMS_API_H */ #endif /* NVKMS_API_H */

View File

@@ -120,6 +120,10 @@ struct NvKmsKapiSurface {
NvKmsSurfaceHandle hKmsHandle; NvKmsSurfaceHandle hKmsHandle;
}; };
struct NvKmsKapiVblankIntrCallback {
NvKmsVblankIntrCallbackHandle hKmsHandle;
};
static inline void *nvKmsKapiCalloc(size_t nmem, size_t size) static inline void *nvKmsKapiCalloc(size_t nmem, size_t size)
{ {
return nvInternalAlloc(nmem * size, NV_TRUE); return nvInternalAlloc(nmem * size, NV_TRUE);

View File

@@ -248,6 +248,7 @@ struct NvKmsKapiLayerConfig {
NvU16 dstWidth, dstHeight; NvU16 dstWidth, dstHeight;
enum NvKmsInputColorSpace inputColorSpace; enum NvKmsInputColorSpace inputColorSpace;
enum NvKmsInputColorRange inputColorRange;
}; };
struct NvKmsKapiLayerRequestedConfig { struct NvKmsKapiLayerRequestedConfig {
@@ -301,6 +302,10 @@ struct NvKmsKapiHeadModeSetConfig {
struct NvKmsKapiDisplayMode mode; struct NvKmsKapiDisplayMode mode;
NvBool vrrEnabled; NvBool vrrEnabled;
enum NvKmsOutputColorimetry colorimetry;
enum NvKmsDpyAttributeColorRangeValue outputColorRange;
}; };
struct NvKmsKapiHeadRequestedConfig { struct NvKmsKapiHeadRequestedConfig {
@@ -309,6 +314,8 @@ struct NvKmsKapiHeadRequestedConfig {
NvBool activeChanged : 1; NvBool activeChanged : 1;
NvBool displaysChanged : 1; NvBool displaysChanged : 1;
NvBool modeChanged : 1; NvBool modeChanged : 1;
NvBool colorrangeChanged: 1;
NvBool colorimetryChanged : 1;
} flags; } flags;
struct NvKmsKapiCursorRequestedConfig cursorRequestedConfig; struct NvKmsKapiCursorRequestedConfig cursorRequestedConfig;
@@ -1397,6 +1404,18 @@ struct NvKmsKapiFunctionsTable {
( (
NvKmsKapiSuspendResumeCallbackFunc *function NvKmsKapiSuspendResumeCallbackFunc *function
); );
struct NvKmsKapiVblankIntrCallback*
(*RegisterVblankIntrCallback)(struct NvKmsKapiDevice *device,
const NvU32 head,
NVVBlankIntrCallbackProc pCallback,
NvU64 param1,
NvU64 param2);
void (*UnregisterVblankIntrCallback)(
struct NvKmsKapiDevice *device,
const NvU32 head,
struct NvKmsKapiVblankIntrCallback *pCallback);
}; };
/** @} */ /** @} */

View File

@@ -2631,6 +2631,9 @@ static NvBool NvKmsKapiOverlayLayerConfigToKms(
params->layer[layer].colorSpace.val = layerConfig->inputColorSpace; params->layer[layer].colorSpace.val = layerConfig->inputColorSpace;
params->layer[layer].colorSpace.specified = TRUE; params->layer[layer].colorSpace.specified = TRUE;
params->layer[layer].colorRange.val = layerConfig->inputColorRange;
params->layer[layer].colorRange.specified = TRUE;
AssignHDRMetadataConfig(layerConfig, layer, params); AssignHDRMetadataConfig(layerConfig, layer, params);
if (commit) { if (commit) {
@@ -2731,6 +2734,9 @@ static NvBool NvKmsKapiPrimaryLayerConfigToKms(
params->layer[NVKMS_MAIN_LAYER].colorSpace.val = layerConfig->inputColorSpace; params->layer[NVKMS_MAIN_LAYER].colorSpace.val = layerConfig->inputColorSpace;
params->layer[NVKMS_MAIN_LAYER].colorSpace.specified = TRUE; params->layer[NVKMS_MAIN_LAYER].colorSpace.specified = TRUE;
params->layer[NVKMS_MAIN_LAYER].colorRange.val = layerConfig->inputColorRange;
params->layer[NVKMS_MAIN_LAYER].colorRange.specified = TRUE;
AssignHDRMetadataConfig(layerConfig, NVKMS_MAIN_LAYER, params); AssignHDRMetadataConfig(layerConfig, NVKMS_MAIN_LAYER, params);
if (commit && changed) { if (commit && changed) {
@@ -2895,6 +2901,9 @@ static NvBool NvKmsKapiRequestedModeSetConfigToKms(
NvKmsKapiDisplayModeToKapi(&headModeSetConfig->mode, &paramsHead->mode); NvKmsKapiDisplayModeToKapi(&headModeSetConfig->mode, &paramsHead->mode);
paramsHead->colorRange = headModeSetConfig->outputColorRange;
paramsHead->colorRangeSpecified = NV_TRUE;
NvKmsKapiCursorConfigToKms(&headRequestedConfig->cursorRequestedConfig, NvKmsKapiCursorConfigToKms(&headRequestedConfig->cursorRequestedConfig,
&paramsHead->flip, &paramsHead->flip,
NV_TRUE /* bFromKmsSetMode */); NV_TRUE /* bFromKmsSetMode */);
@@ -2923,6 +2932,9 @@ static NvBool NvKmsKapiRequestedModeSetConfigToKms(
paramsHead->flip.tf.val = tf; paramsHead->flip.tf.val = tf;
paramsHead->flip.tf.specified = NV_TRUE; paramsHead->flip.tf.specified = NV_TRUE;
paramsHead->flip.colorimetry.specified = NV_TRUE;
paramsHead->flip.colorimetry.val = headModeSetConfig->colorimetry;
paramsHead->viewPortSizeIn.width = paramsHead->viewPortSizeIn.width =
headModeSetConfig->mode.timings.hVisible; headModeSetConfig->mode.timings.hVisible;
paramsHead->viewPortSizeIn.height = paramsHead->viewPortSizeIn.height =
@@ -3112,6 +3124,12 @@ static NvBool KmsFlip(
flipParams->tf.val = tf; flipParams->tf.val = tf;
flipParams->tf.specified = NV_TRUE; flipParams->tf.specified = NV_TRUE;
flipParams->colorimetry.specified =
headRequestedConfig->flags.colorimetryChanged;
if (flipParams->colorimetry.specified) {
flipParams->colorimetry.val = headModeSetConfig->colorimetry;
}
if (headModeSetConfig->vrrEnabled) { if (headModeSetConfig->vrrEnabled) {
params->request.allowVrr = NV_TRUE; params->request.allowVrr = NV_TRUE;
} }
@@ -3209,7 +3227,8 @@ static NvBool ApplyModeSetConfig(
bRequiredModeset = bRequiredModeset =
headRequestedConfig->flags.activeChanged || headRequestedConfig->flags.activeChanged ||
headRequestedConfig->flags.displaysChanged || headRequestedConfig->flags.displaysChanged ||
headRequestedConfig->flags.modeChanged; headRequestedConfig->flags.modeChanged ||
headRequestedConfig->flags.colorrangeChanged;
/* /*
* NVKMS flip ioctl could not validate flip configuration for an * NVKMS flip ioctl could not validate flip configuration for an
@@ -3374,6 +3393,94 @@ static void nvKmsKapiSetSuspendResumeCallback
pSuspendResumeFunc = function; pSuspendResumeFunc = function;
} }
static struct NvKmsKapiVblankIntrCallback*
RegisterVblankIntrCallback(struct NvKmsKapiDevice *device,
const NvU32 head,
NVVBlankIntrCallbackProc pCallbackProc,
NvU64 param1,
NvU64 param2)
{
struct NvKmsRegisterVblankIntrCallbackParams params = { };
NvBool status;
struct NvKmsKapiVblankIntrCallback *pCallback =
nvKmsKapiCalloc(1, sizeof(*pCallback));
if (pCallback == NULL) {
nvKmsKapiLogDebug(
"Failed to allocate memory for NVKMS vblank callback object on "
"NvKmsKapiDevice 0x%p",
device);
goto failed;
}
if (device->hKmsDevice == 0x0) {
goto done;
}
/* Create NVKMS surface */
params.request.deviceHandle = device->hKmsDevice;
params.request.dispHandle = device->hKmsDisp;
params.request.head = head;
params.request.pCallback = pCallbackProc;
params.request.param1 = param1;
params.request.param2 = param2;
status = nvkms_ioctl_from_kapi(device->pKmsOpen,
NVKMS_IOCTL_REGISTER_VBLANK_INTR_CALLBACK,
&params, sizeof(params));
if (!status) {
nvKmsKapiLogDeviceDebug(
device,
"Failed to register NVKMS vblank callback");
goto failed;
}
pCallback->hKmsHandle = params.reply.callbackHandle;
done:
return pCallback;
failed:
nvKmsKapiFree(pCallback);
return NULL;
}
static void UnregisterVblankIntrCallback(
struct NvKmsKapiDevice *device,
const NvU32 head,
struct NvKmsKapiVblankIntrCallback *pCallback)
{
struct NvKmsUnregisterVblankIntrCallbackParams params = { };
NvBool status;
if (device->hKmsDevice == 0x0) {
goto done;
}
params.request.deviceHandle = device->hKmsDevice;
params.request.dispHandle = device->hKmsDisp;
params.request.head = head;
params.request.callbackHandle = pCallback->hKmsHandle;
status = nvkms_ioctl_from_kapi(device->pKmsOpen,
NVKMS_IOCTL_UNREGISTER_VBLANK_INTR_CALLBACK,
&params, sizeof(params));
if (!status) {
nvKmsKapiLogDeviceDebug(
device,
"Failed to unregister NVKMS vblank callback registered for "
"NvKmsKapiVblankIntrCallback 0x%p",
pCallback);
}
done:
nvKmsKapiFree(pCallback);
}
NvBool nvKmsKapiGetFunctionsTableInternal NvBool nvKmsKapiGetFunctionsTableInternal
( (
struct NvKmsKapiFunctionsTable *funcsTable struct NvKmsKapiFunctionsTable *funcsTable
@@ -3455,6 +3562,8 @@ NvBool nvKmsKapiGetFunctionsTableInternal
funcsTable->setSemaphoreSurfaceValue = funcsTable->setSemaphoreSurfaceValue =
nvKmsKapiSetSemaphoreSurfaceValue; nvKmsKapiSetSemaphoreSurfaceValue;
funcsTable->setSuspendResumeCallback = nvKmsKapiSetSuspendResumeCallback; funcsTable->setSuspendResumeCallback = nvKmsKapiSetSuspendResumeCallback;
funcsTable->RegisterVblankIntrCallback = RegisterVblankIntrCallback;
funcsTable->UnregisterVblankIntrCallback = UnregisterVblankIntrCallback;
return NV_TRUE; return NV_TRUE;
} }

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 2013 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 2013 - 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -609,7 +609,6 @@ static void DpyPostColorSpaceOrRangeSetEvo(NVDpyEvoPtr pDpyEvo)
NVDispEvoRec *pDispEvo = pDpyEvo->pDispEvo; NVDispEvoRec *pDispEvo = pDpyEvo->pDispEvo;
NVDispApiHeadStateEvoRec *pApiHeadState; NVDispApiHeadStateEvoRec *pApiHeadState;
NvU8 hdmiFrlBpc; NvU8 hdmiFrlBpc;
enum NvKmsOutputTf tf;
NvU32 head; NvU32 head;
#if defined(DEBUG) #if defined(DEBUG)
NvU32 hwHead; NvU32 hwHead;
@@ -625,12 +624,10 @@ static void DpyPostColorSpaceOrRangeSetEvo(NVDpyEvoPtr pDpyEvo)
head = nvGetPrimaryHwHead(pDispEvo, pDpyEvo->apiHead); head = nvGetPrimaryHwHead(pDispEvo, pDpyEvo->apiHead);
hdmiFrlBpc = pDispEvo->headState[head].hdmiFrlBpc; hdmiFrlBpc = pDispEvo->headState[head].hdmiFrlBpc;
tf = pDispEvo->headState[head].tf;
#if defined(DEBUG) #if defined(DEBUG)
FOR_EACH_EVO_HW_HEAD_IN_MASK(pApiHeadState->hwHeadsMask, hwHead) { FOR_EACH_EVO_HW_HEAD_IN_MASK(pApiHeadState->hwHeadsMask, hwHead) {
nvAssert(pDispEvo->headState[head].timings.yuv420Mode == nvAssert(pDispEvo->headState[head].timings.yuv420Mode ==
pDispEvo->headState[hwHead].timings.yuv420Mode); pDispEvo->headState[hwHead].timings.yuv420Mode);
nvAssert(tf == pDispEvo->headState[hwHead].tf);
} }
#endif #endif
@@ -641,7 +638,7 @@ static void DpyPostColorSpaceOrRangeSetEvo(NVDpyEvoPtr pDpyEvo)
if (!nvChooseCurrentColorSpaceAndRangeEvo(pDpyEvo, if (!nvChooseCurrentColorSpaceAndRangeEvo(pDpyEvo,
&pDispEvo->headState[head].timings, &pDispEvo->headState[head].timings,
hdmiFrlBpc, hdmiFrlBpc,
tf, pApiHeadState->colorimetry,
pDpyEvo->requestedColorSpace, pDpyEvo->requestedColorSpace,
pDpyEvo->requestedColorRange, pDpyEvo->requestedColorRange,
&colorSpace, &colorSpace,
@@ -670,6 +667,7 @@ static void DpyPostColorSpaceOrRangeSetEvo(NVDpyEvoPtr pDpyEvo)
nvUpdateCurrentHardwareColorSpaceAndRangeEvo(pDispEvo, nvUpdateCurrentHardwareColorSpaceAndRangeEvo(pDispEvo,
head, head,
pApiHeadState->colorimetry,
pApiHeadState->attributes.colorSpace, pApiHeadState->attributes.colorSpace,
pApiHeadState->attributes.colorRange, pApiHeadState->attributes.colorRange,
&updateState); &updateState);

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 2016 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 2016 - 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -165,6 +165,10 @@ static void FlipBaseToNull(NVDevEvoPtr pDevEvo)
i++; i++;
nvAssert(i <= numFlipApiHeads); nvAssert(i <= numFlipApiHeads);
pRequestApiHead->colorimetry.specified = TRUE;
pRequestApiHead->colorimetry.val = NVKMS_OUTPUT_COLORIMETRY_DEFAULT;
for (layer = 0; layer < pDevEvo->apiHead[apiHead].numLayers; layer++) { for (layer = 0; layer < pDevEvo->apiHead[apiHead].numLayers; layer++) {
pRequestApiHead->layer[layer].surface.specified = TRUE; pRequestApiHead->layer[layer].surface.specified = TRUE;
// No need to specify sizeIn/sizeOut as we are flipping NULL surface. // No need to specify sizeIn/sizeOut as we are flipping NULL surface.

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 2014 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 2014 - 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -58,6 +58,7 @@
#include <ctrl/ctrl5070/ctrl5070system.h> // NV5070_CTRL_CMD_SYSTEM_GET_CAPS_V2 #include <ctrl/ctrl5070/ctrl5070system.h> // NV5070_CTRL_CMD_SYSTEM_GET_CAPS_V2
#include <ctrl/ctrl5070/ctrl5070or.h> // NV5070_CTRL_CMD_SET_SOR_FLUSH_MODE #include <ctrl/ctrl5070/ctrl5070or.h> // NV5070_CTRL_CMD_SET_SOR_FLUSH_MODE
#include <ctrl/ctrl0073/ctrl0073dp.h> // NV0073_CTRL_DP_CTRL #include <ctrl/ctrl0073/ctrl0073dp.h> // NV0073_CTRL_DP_CTRL
#include <class/clc370_notification.h> // NVC370_NOTIFIERS_RG_VBLANK_NOTIFICATION
#include "nvkms.h" #include "nvkms.h"
#include "nvkms-private.h" #include "nvkms-private.h"
@@ -2130,7 +2131,7 @@ NvBool nvChooseCurrentColorSpaceAndRangeEvo(
const NVDpyEvoRec *pDpyEvo, const NVDpyEvoRec *pDpyEvo,
const NVHwModeTimingsEvo *pHwTimings, const NVHwModeTimingsEvo *pHwTimings,
NvU8 hdmiFrlBpc, NvU8 hdmiFrlBpc,
enum NvKmsOutputTf tf, enum NvKmsOutputColorimetry colorimetry,
const enum NvKmsDpyAttributeRequestedColorSpaceValue requestedColorSpace, const enum NvKmsDpyAttributeRequestedColorSpaceValue requestedColorSpace,
const enum NvKmsDpyAttributeColorRangeValue requestedColorRange, const enum NvKmsDpyAttributeColorRangeValue requestedColorRange,
enum NvKmsDpyAttributeCurrentColorSpaceValue *pCurrentColorSpace, enum NvKmsDpyAttributeCurrentColorSpaceValue *pCurrentColorSpace,
@@ -2146,11 +2147,11 @@ NvBool nvChooseCurrentColorSpaceAndRangeEvo(
const NVColorFormatInfoRec colorFormatsInfo = const NVColorFormatInfoRec colorFormatsInfo =
nvGetColorFormatInfo(pDpyEvo); nvGetColorFormatInfo(pDpyEvo);
// XXX HDR TODO: Handle other transfer functions // XXX HDR TODO: Handle other colorimetries
// XXX HDR TODO: Handle YUV // XXX HDR TODO: Handle YUV
if (tf == NVKMS_OUTPUT_TF_PQ) { if (colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT2100) {
/* /*
* If the head is currently in PQ output mode, we override the * If the head is currently has BT2100 colorimetry, we override the
* requested color space with RGB. We cannot support yuv420Mode in * requested color space with RGB. We cannot support yuv420Mode in
* that configuration, so fail in that case. * that configuration, so fail in that case.
*/ */
@@ -2210,7 +2211,7 @@ NvBool nvChooseCurrentColorSpaceAndRangeEvo(
if ((newColorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_YCbCr444) || if ((newColorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_YCbCr444) ||
(newColorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_YCbCr422) || (newColorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_YCbCr422) ||
(newColorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_YCbCr420) || (newColorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_YCbCr420) ||
(tf == NVKMS_OUTPUT_TF_PQ)) { (colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT2100)) {
newColorRange = NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_LIMITED; newColorRange = NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_LIMITED;
} else if ((newColorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_RGB) && } else if ((newColorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_RGB) &&
(newColorBpc == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_BPC_6)) { (newColorBpc == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_BPC_6)) {
@@ -2234,9 +2235,9 @@ NvBool nvChooseCurrentColorSpaceAndRangeEvo(
} }
// 10 BPC required for HDR // 10 BPC required for HDR
// XXX HDR TODO: Handle other transfer functions // XXX HDR TODO: Handle other colorimetries
// XXX HDR TODO: Handle YUV // XXX HDR TODO: Handle YUV
if ((tf == NVKMS_OUTPUT_TF_PQ) && if ((colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT2100) &&
(newColorBpc < NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_BPC_10)) { (newColorBpc < NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_BPC_10)) {
return FALSE; return FALSE;
} }
@@ -2251,6 +2252,7 @@ NvBool nvChooseCurrentColorSpaceAndRangeEvo(
void nvUpdateCurrentHardwareColorSpaceAndRangeEvo( void nvUpdateCurrentHardwareColorSpaceAndRangeEvo(
NVDispEvoPtr pDispEvo, NVDispEvoPtr pDispEvo,
const NvU32 head, const NvU32 head,
enum NvKmsOutputColorimetry colorimetry,
const enum NvKmsDpyAttributeCurrentColorSpaceValue colorSpace, const enum NvKmsDpyAttributeCurrentColorSpaceValue colorSpace,
const enum NvKmsDpyAttributeColorRangeValue colorRange, const enum NvKmsDpyAttributeColorRangeValue colorRange,
NVEvoUpdateState *pUpdateState) NVEvoUpdateState *pUpdateState)
@@ -2261,7 +2263,7 @@ void nvUpdateCurrentHardwareColorSpaceAndRangeEvo(
nvAssert(pConnectorEvo != NULL); nvAssert(pConnectorEvo != NULL);
if (pHeadState->tf == NVKMS_OUTPUT_TF_PQ) { if (colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT2100) {
nvAssert(pHeadState->timings.yuv420Mode == NV_YUV420_MODE_NONE); nvAssert(pHeadState->timings.yuv420Mode == NV_YUV420_MODE_NONE);
nvAssert(colorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_RGB); nvAssert(colorSpace == NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_RGB);
nvAssert(colorRange == NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_LIMITED); nvAssert(colorRange == NV_KMS_DPY_ATTRIBUTE_COLOR_RANGE_LIMITED);
@@ -4389,6 +4391,77 @@ void nvEvoPostModesetUnregisterFlipOccurredEvent(NVDispEvoRec *pDispEvo,
} }
} }
static void
VBlankNotifierEventDeferredWork(void *dataPtr, NvU32 dataU32)
{
NVVBlankIntrCallbackRec *pVBlankIntrCallback = dataPtr;
pVBlankIntrCallback->pCallback(pVBlankIntrCallback->param1,
pVBlankIntrCallback->param2);
}
static void VBlankNotifierEvent(void *arg, void *pEventDataVoid,
NvU32 hEvent, NvU32 Data, NV_STATUS Status)
{
(void) nvkms_alloc_timer_with_ref_ptr(
VBlankNotifierEventDeferredWork, /* callback */
arg, /* argument (this is a ref_ptr to NVVBlankIntrCallbackRec) */
Data, /* dataU32 */
0); /* timeout: schedule the work immediately */
}
NvU32 nvEvoRegisterVBlankEvent(NVDispEvoRec *pDispEvo,
const NvU32 head,
NVVBlankIntrCallbackRec *cbRec)
{
NVDevEvoRec *pDevEvo = pDispEvo->pDevEvo;
NVEvoChannelPtr pChannel = pDevEvo->core;
NvU32 handle = 0;
///* XXX NVKMS TODO: need disp-scope in event */
if (pDispEvo->displayOwner != 0) {
return 0;
}
nvAssert(cbRec->rmVBlankCallbackHandle == 0);
handle = nvGenerateUnixRmHandle(&pDevEvo->handleAllocator);
if (!nvRmRegisterCallback(pDevEvo,
&cbRec->vblankNotifierEventCallback,
cbRec->ref_ptr,
pChannel->pb.channel_handle,
handle,
VBlankNotifierEvent,
NVC370_NOTIFIERS_RG_VBLANK_NOTIFYINDEX(head))) {
nvFreeUnixRmHandle(&pDevEvo->handleAllocator, handle);
handle = 0;
}
return handle;
}
void nvEvoUnregisterVBlankEvent(NVDispEvoRec *pDispEvo, NvU32 handle)
{
NVDevEvoRec *pDevEvo = pDispEvo->pDevEvo;
NVEvoChannelPtr pChannel = pDevEvo->core;
///* XXX NVKMS TODO: need disp-scope in event */
if (pDispEvo->displayOwner != 0) {
return;
}
if (handle == 0) {
return;
}
nvRmApiFree(nvEvoGlobal.clientHandle,
pChannel->pb.channel_handle,
handle);
nvFreeUnixRmHandle(&pDevEvo->handleAllocator,
handle);
}
static NvBool InitApiHeadState(NVDevEvoRec *pDevEvo) static NvBool InitApiHeadState(NVDevEvoRec *pDevEvo)
{ {
NVDispEvoRec *pDispEvo; NVDispEvoRec *pDispEvo;

View File

@@ -76,6 +76,10 @@
#define SRGB_EOTF_LUT_NUM_ENTRIES 935 #define SRGB_EOTF_LUT_NUM_ENTRIES 935
#define SRGB_OETF_LUT_NUM_ENTRIES 178 #define SRGB_OETF_LUT_NUM_ENTRIES 178
#define BT709_EOTF_LUT_NUM_ENTRIES 883
#define BT709_OETF_LUT_NUM_ENTRIES 228
#define PQ_EOTF_LUT_NUM_ENTRIES 508 #define PQ_EOTF_LUT_NUM_ENTRIES 508
#define PQ_OETF_LUT_NUM_ENTRIES 337 #define PQ_OETF_LUT_NUM_ENTRIES 337
@@ -351,17 +355,183 @@ static const NvU32 OetfPQ512SegSizesLog2[33] = {
5, 5,
}; };
static const NvU16 BT709EOTFLUTEntries[BT709_EOTF_LUT_NUM_ENTRIES] = {
0x0000, 0x1c72, 0x2072, 0x22ab, 0x2472, 0x2476, 0x247b, 0x247f, 0x2484,
0x2488, 0x248d, 0x2491, 0x2495, 0x249a, 0x249e, 0x24a3, 0x24a7, 0x24ac,
0x24b0, 0x24b5, 0x24b9, 0x24bd, 0x24c2, 0x24c6, 0x24cb, 0x24cf, 0x24d4,
0x24d8, 0x24dd, 0x24e1, 0x24e5, 0x24ea, 0x24ee, 0x24f3, 0x24f7, 0x24fc,
0x2500, 0x2505, 0x2509, 0x250d, 0x2512, 0x2516, 0x251b, 0x251f, 0x2524,
0x2528, 0x252d, 0x2531, 0x2535, 0x253a, 0x253e, 0x2543, 0x2547, 0x254c,
0x2550, 0x2555, 0x2559, 0x255d, 0x2562, 0x2566, 0x256b, 0x256f, 0x2574,
0x2578, 0x257d, 0x2581, 0x2585, 0x258a, 0x258e, 0x2593, 0x2597, 0x259c,
0x25a0, 0x25a5, 0x25a9, 0x25ad, 0x25b2, 0x25b6, 0x25bb, 0x25bf, 0x25bf,
0x25c4, 0x25c8, 0x25cc, 0x25d1, 0x25d5, 0x25da, 0x25de, 0x25e3, 0x25e7,
0x25ec, 0x25f0, 0x25f5, 0x25f9, 0x25fe, 0x2602, 0x2607, 0x260c, 0x2610,
0x2615, 0x2619, 0x261e, 0x2622, 0x2627, 0x262c, 0x2630, 0x2635, 0x263a,
0x263e, 0x2643, 0x2647, 0x264c, 0x2651, 0x2655, 0x265a, 0x265f, 0x2664,
0x2668, 0x266d, 0x2672, 0x2676, 0x267b, 0x2680, 0x2685, 0x2689, 0x268e,
0x2693, 0x2698, 0x269c, 0x26a1, 0x26a6, 0x26ab, 0x26b0, 0x26c3, 0x26d6,
0x26ea, 0x26fe, 0x2711, 0x2725, 0x2739, 0x274e, 0x2762, 0x2776, 0x278b,
0x27a0, 0x27b4, 0x27c9, 0x27de, 0x27f3, 0x2825, 0x2850, 0x287d, 0x28ab,
0x28ae, 0x28b1, 0x28b4, 0x28b7, 0x28ba, 0x28bd, 0x28bf, 0x28c2, 0x28c5,
0x28c8, 0x28cb, 0x28ce, 0x28d1, 0x28d4, 0x28d7, 0x28da, 0x28dd, 0x28e0,
0x28e3, 0x28e6, 0x28e9, 0x28ec, 0x28ef, 0x28f2, 0x28f5, 0x28f8, 0x28fb,
0x28fe, 0x2901, 0x2904, 0x2907, 0x290a, 0x290d, 0x2910, 0x2913, 0x2916,
0x2919, 0x291c, 0x291f, 0x2922, 0x2925, 0x2928, 0x292b, 0x292e, 0x2931,
0x2934, 0x2937, 0x293a, 0x293e, 0x2941, 0x2944, 0x2947, 0x294a, 0x294d,
0x2950, 0x2953, 0x2956, 0x2959, 0x295d, 0x2960, 0x2963, 0x2966, 0x2969,
0x296c, 0x296f, 0x2973, 0x2976, 0x2979, 0x297c, 0x297f, 0x2982, 0x2986,
0x2989, 0x298c, 0x298f, 0x2992, 0x2995, 0x2999, 0x299c, 0x299f, 0x29a2,
0x29a5, 0x29a9, 0x29ac, 0x29af, 0x29b2, 0x29b6, 0x29b9, 0x29bc, 0x29bf,
0x29c3, 0x29c6, 0x29c9, 0x29cc, 0x29d0, 0x29d3, 0x29d6, 0x29d9, 0x29dd,
0x29e0, 0x29e3, 0x29e7, 0x29ea, 0x29ed, 0x29f0, 0x29f4, 0x29f7, 0x29fa,
0x29fe, 0x2a01, 0x2a04, 0x2a08, 0x2a0b, 0x2a0e, 0x2a12, 0x2a15, 0x2a18,
0x2a1c, 0x2a1f, 0x2a22, 0x2a26, 0x2a29, 0x2a2d, 0x2a30, 0x2a33, 0x2a37,
0x2a3a, 0x2a3d, 0x2a74, 0x2aac, 0x2ae5, 0x2b1f, 0x2b5a, 0x2b96, 0x2bd3,
0x2c08, 0x2c48, 0x2c8a, 0x2c8e, 0x2c92, 0x2c96, 0x2c9b, 0x2c9f, 0x2ca3,
0x2ca7, 0x2cab, 0x2cb0, 0x2cb4, 0x2cb8, 0x2cbc, 0x2cc1, 0x2cc5, 0x2cc9,
0x2cce, 0x2cd2, 0x2cd6, 0x2cdb, 0x2cdf, 0x2ce3, 0x2ce8, 0x2cec, 0x2cf0,
0x2cf5, 0x2cf9, 0x2cfd, 0x2d02, 0x2d06, 0x2d0b, 0x2d0f, 0x2d14, 0x2d18,
0x2d1c, 0x2d21, 0x2d25, 0x2d2a, 0x2d2e, 0x2d33, 0x2d37, 0x2d3c, 0x2d40,
0x2d45, 0x2d49, 0x2d4e, 0x2d52, 0x2d57, 0x2d5c, 0x2d60, 0x2d65, 0x2d69,
0x2d6e, 0x2d73, 0x2d77, 0x2d7c, 0x2d80, 0x2d85, 0x2d8a, 0x2d8e, 0x2d93,
0x2d98, 0x2d9c, 0x2da1, 0x2da6, 0x2df2, 0x2e41, 0x2e55, 0x2e69, 0x2e7d,
0x2e91, 0x2ea6, 0x2ebb, 0x2ecf, 0x2ee4, 0x2f39, 0x2f91, 0x2fea, 0x3023,
0x3052, 0x3082, 0x30b3, 0x30e6, 0x30e7, 0x30e9, 0x30eb, 0x30ec, 0x30ee,
0x30ef, 0x30f1, 0x30f3, 0x30f4, 0x30f6, 0x30f7, 0x30f9, 0x30fb, 0x30fc,
0x30fe, 0x30ff, 0x3101, 0x3103, 0x3104, 0x3106, 0x3108, 0x3109, 0x310b,
0x310c, 0x310e, 0x3110, 0x3111, 0x3113, 0x3115, 0x3116, 0x3118, 0x3119,
0x311b, 0x311d, 0x311e, 0x3120, 0x3122, 0x3123, 0x3125, 0x3126, 0x3128,
0x312a, 0x312b, 0x312d, 0x312f, 0x3130, 0x3132, 0x3134, 0x3135, 0x3137,
0x3139, 0x313a, 0x313c, 0x313d, 0x313f, 0x3141, 0x3142, 0x3144, 0x3146,
0x3147, 0x3149, 0x314b, 0x314c, 0x314e, 0x3150, 0x3151, 0x3153, 0x3155,
0x3156, 0x3158, 0x315a, 0x315b, 0x315d, 0x315f, 0x3160, 0x3162, 0x3164,
0x3165, 0x3167, 0x3169, 0x316b, 0x316c, 0x316e, 0x3170, 0x3171, 0x3173,
0x3175, 0x3176, 0x3178, 0x317a, 0x317b, 0x317d, 0x317f, 0x3181, 0x3182,
0x3184, 0x3186, 0x3187, 0x3189, 0x318b, 0x318c, 0x318e, 0x3190, 0x3192,
0x3193, 0x3195, 0x3197, 0x3198, 0x319a, 0x319c, 0x319e, 0x319f, 0x31a1,
0x31a3, 0x31a4, 0x31a6, 0x31a8, 0x31aa, 0x31ab, 0x31ad, 0x31af, 0x31b0,
0x31b2, 0x31b4, 0x31b6, 0x31b7, 0x31b9, 0x31bb, 0x31c9, 0x31d7, 0x31e5,
0x31f3, 0x3201, 0x3210, 0x321e, 0x322c, 0x322e, 0x3230, 0x3232, 0x3234,
0x3235, 0x3237, 0x3239, 0x323b, 0x323d, 0x323e, 0x3240, 0x3242, 0x3244,
0x3246, 0x3248, 0x3249, 0x324b, 0x324d, 0x324f, 0x3251, 0x3253, 0x3254,
0x3256, 0x3258, 0x325a, 0x325c, 0x325e, 0x325f, 0x3261, 0x3263, 0x3265,
0x3267, 0x3269, 0x326a, 0x326c, 0x326e, 0x3270, 0x3272, 0x3274, 0x3276,
0x3277, 0x3279, 0x327b, 0x327d, 0x327f, 0x3281, 0x3283, 0x3284, 0x3286,
0x3288, 0x328a, 0x328c, 0x328e, 0x3290, 0x3292, 0x3293, 0x3295, 0x3297,
0x3299, 0x329b, 0x329d, 0x329f, 0x32a1, 0x32a2, 0x331d, 0x335c, 0x339d,
0x33de, 0x3411, 0x3455, 0x349c, 0x34e5, 0x34ef, 0x34f8, 0x3502, 0x350b,
0x3515, 0x351e, 0x3528, 0x3531, 0x3545, 0x3558, 0x356c, 0x3580, 0x35d0,
0x35fa, 0x3624, 0x362e, 0x3639, 0x3643, 0x364e, 0x3659, 0x3664, 0x366e,
0x3679, 0x36d2, 0x36ff, 0x372c, 0x378a, 0x37e9, 0x3826, 0x3858, 0x388c,
0x38c1, 0x38f8, 0x38f9, 0x38f9, 0x38fa, 0x38fb, 0x38fc, 0x38fd, 0x38fe,
0x38ff, 0x39ff, 0x3900, 0x3901, 0x3902, 0x3903, 0x3904, 0x3905, 0x3906,
0x3906, 0x3907, 0x3908, 0x3909, 0x390a, 0x390b, 0x390c, 0x390c, 0x390d,
0x390e, 0x390f, 0x3910, 0x3911, 0x3912, 0x3913, 0x3913, 0x3914, 0x3915,
0x3916, 0x3917, 0x3918, 0x3919, 0x391a, 0x391a, 0x391b, 0x391c, 0x391d,
0x391e, 0x391f, 0x3920, 0x3920, 0x3921, 0x3922, 0x3923, 0x3924, 0x3925,
0x3926, 0x3927, 0x3928, 0x3928, 0x3929, 0x392a, 0x392b, 0x392c, 0x392d,
0x392e, 0x392f, 0x392f, 0x3930, 0x3931, 0x3932, 0x3934, 0x3935, 0x3936,
0x3936, 0x3937, 0x3938, 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e,
0x393e, 0x393f, 0x3940, 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946,
0x3946, 0x3947, 0x3948, 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e,
0x394e, 0x394f, 0x3950, 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956,
0x3956, 0x3957, 0x3958, 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e,
0x395f, 0x395f, 0x3960, 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966,
0x3967, 0x3968, 0x3968, 0x396a, 0x396c, 0x396e, 0x3970, 0x3971, 0x3973,
0x3975, 0x3977, 0x3979, 0x397b, 0x397c, 0x397e, 0x3980, 0x3982, 0x3984,
0x3985, 0x3987, 0x3989, 0x398b, 0x398d, 0x398f, 0x3990, 0x3992, 0x3994,
0x3996, 0x3998, 0x399a, 0x399b, 0x399d, 0x399f, 0x39a1, 0x39a3, 0x39a5,
0x39a6, 0x39a8, 0x39aa, 0x39ac, 0x39ae, 0x39b0, 0x39b2, 0x39b3, 0x39b5,
0x39b7, 0x39b9, 0x39bb, 0x39bd, 0x39bf, 0x39c0, 0x39c2, 0x39c4, 0x39c6,
0x39c8, 0x39ca, 0x39cc, 0x39ce, 0x39cf, 0x39d1, 0x39d3, 0x39d5, 0x39d7,
0x39d9, 0x39db, 0x39dd, 0x39de, 0x39e0, 0x39e2, 0x39e4, 0x39e6, 0x39e8,
0x39ea, 0x39ec, 0x39ee, 0x39ef, 0x39f1, 0x39f3, 0x39f5, 0x39f7, 0x39f9,
0x39fb, 0x39fd, 0x39ff, 0x3a01, 0x3a03, 0x3a04, 0x3a06, 0x3a08, 0x3a0a,
0x3a0c, 0x3a0e, 0x3a10, 0x3a12, 0x3a14, 0x3a16, 0x3a18, 0x3a1a, 0x3a1b,
0x3a1d, 0x3a1f, 0x3a21, 0x3a23, 0x3a25, 0x3a27, 0x3a29, 0x3a2b, 0x3a2d,
0x3a2f, 0x3a31, 0x3a33, 0x3a35, 0x3a37, 0x3a39, 0x3a3a, 0x3a3c, 0x3a3e,
0x3a40, 0x3a42, 0x3a44, 0x3a46, 0x3a48, 0x3a4a, 0x3a4c, 0x3a4e, 0x3a50,
0x3a52, 0x3a54, 0x3a56, 0x3a58, 0x3a5a, 0x3a99, 0x3adb, 0x3b1d, 0x3b61,
0x3ba6, 0x3bec, 0x3c1a, 0x3c3f, 0x3c64, 0x3c8a, 0x3cb1, 0x3cd8, 0x3d00,
};
static const NvU16 BT709EOTFLUTVSSHeader[16] = {
0x6000, 0xb653, 0x3694, 0x0000,
0x124b, 0x467b, 0x6002, 0x0000,
0x8642, 0x0000, 0xbb00, 0x0000,
0x016d, 0x0000, 0x0000, 0x0000,
};
static const NvU16 BT709OETFLUTEntries[BT709_OETF_LUT_NUM_ENTRIES] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0004, 0x0004, 0x0008, 0x0010, 0x0024, 0x0048, 0x0090, 0x0120,
0x0240, 0x0480, 0x0900, 0x1200, 0x1224, 0x1248, 0x126c, 0x1290,
0x12b4, 0x12d8, 0x12fc, 0x1320, 0x1344, 0x1368, 0x138c, 0x13b0,
0x13d4, 0x13f8, 0x141c, 0x1440, 0x1464, 0x1488, 0x14ac, 0x14e0,
0x1504, 0x1528, 0x154c, 0x1570, 0x1594, 0x15b4, 0x15d8, 0x15fc,
0x1620, 0x1640, 0x1664, 0x1688, 0x16a8, 0x16cc, 0x16ec, 0x1710,
0x1730, 0x1754, 0x1774, 0x1798, 0x17b8, 0x17d8, 0x17fc, 0x181c,
0x183c, 0x185c, 0x1880, 0x18a0, 0x18c0, 0x18e0, 0x1900, 0x1920,
0x1940, 0x1960, 0x1980, 0x19a0, 0x19c0, 0x19e0, 0x1a00, 0x1a20,
0x1a40, 0x1a60, 0x1a80, 0x1aa0, 0x1abc, 0x1adc, 0x1afc, 0x1b1c,
0x1b38, 0x1b58, 0x1b78, 0x1b94, 0x1bb4, 0x1bd0, 0x1bf0, 0x1c10,
0x1c2c, 0x1c4c, 0x1c68, 0x1c88, 0x1ca4, 0x1cc0, 0x1ce0, 0x1cfc,
0x1d1c, 0x1d38, 0x1d54, 0x1d74, 0x1d90, 0x1dac, 0x1dc8, 0x1de8,
0x1e04, 0x1e20, 0x1e3c, 0x1e58, 0x1e78, 0x1e94, 0x1eb0, 0x1ecc,
0x1ee8, 0x1f04, 0x1f20, 0x1f3c, 0x1f58, 0x1f74, 0x1f90, 0x1fac,
0x1fc8, 0x1fe4, 0x2000, 0x201c, 0x2038, 0x2054, 0x206c, 0x2088,
0x20a4, 0x20c0, 0x20dc, 0x20f4, 0x2110, 0x212c, 0x2148, 0x2160,
0x217c, 0x2198, 0x21b0, 0x21cc, 0x2504, 0x280c, 0x2ae8, 0x2da4,
0x303c, 0x32bc, 0x3524, 0x3774, 0x39b0, 0x3bd8, 0x3df0, 0x3ffc,
0x41f8, 0x43e4, 0x45c8, 0x47a0, 0x496c, 0x4b2c, 0x4ce4, 0x4e94,
0x503c, 0x51dc, 0x5374, 0x5504, 0x5814, 0x5b08, 0x5de4, 0x60ac,
0x6364, 0x6608, 0x6898, 0x6b1c, 0x6d90, 0x6ff8, 0x7250, 0x74a0,
0x76e4, 0x7918, 0x7b48, 0x7d6c, 0x8198, 0x85a0, 0x8988, 0x8d58,
0x910c, 0x94a4, 0x9828, 0x9b98, 0x9ef4, 0xa23c, 0xa570, 0xa898,
0xabac, 0xaeb4, 0xb1ac, 0xb498, 0xba4c, 0xbfd0, 0xc528, 0xca5c,
0xcf68, 0xd454, 0xd924, 0xddd4, 0xe268, 0xe6e4, 0xeb48, 0xef94,
0xf3cc, 0xf7f0, 0xfc00, 0xfffc,
};
static const NvU16 BT709OETFLUTVSSHeader[16] = {
0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x923e, 0x0000,
0x0004, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000,
};
enum FMTCoeffType enum FMTCoeffType
{ {
FMT_COEFF_TYPE_IDENTITY = 0, FMT_COEFF_TYPE_IDENTITY = 0,
FMT_COEFF_TYPE_REC601_YUV_8BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC601_YUV_8BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC601_YUV_10BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC601_YUV_10BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC601_YUV_12BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC601_YUV_12BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC601_YUV_16BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC601_YUV_16BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC709_YUV_8BPC_LTD_TO_RGB_16BPC_FULL, FMT_COEFF_TYPE_REC709_YUV_8BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC709_YUV_8BPC_FULL_TO_RGB_16BPC_FULL, FMT_COEFF_TYPE_REC709_YUV_8BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC709_YUV_10BPC_LTD_TO_RGB_16BPC_FULL, FMT_COEFF_TYPE_REC709_YUV_10BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC709_YUV_10BPC_FULL_TO_RGB_16BPC_FULL, FMT_COEFF_TYPE_REC709_YUV_10BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC709_YUV_12BPC_LTD_TO_RGB_16BPC_FULL, FMT_COEFF_TYPE_REC709_YUV_12BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC709_YUV_12BPC_FULL_TO_RGB_16BPC_FULL, FMT_COEFF_TYPE_REC709_YUV_12BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC709_YUV_16BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC709_YUV_16BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC2020_YUV_8BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC2020_YUV_8BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC2020_YUV_10BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC2020_YUV_10BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC2020_YUV_12BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC2020_YUV_12BPC_FULL_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC2020_YUV_16BPC_LTD_TO_RGB_16BPC_FULL,
FMT_COEFF_TYPE_REC2020_YUV_16BPC_FULL_TO_RGB_16BPC_FULL,
// FMT is always identity for RGB to avoid possible calculation error. // FMT is always identity for RGB to avoid possible calculation error.
// must be the last entry // must be the last entry
@@ -372,6 +542,22 @@ static const NvU32 FMTMatrix[FMT_COEFF_TYPE_MAX][12] =
{ {
// FMT_COEFF_TYPE_IDENTITY // FMT_COEFF_TYPE_IDENTITY
{ 0x10000, 0, 0, 0, 0, 0x10000, 0, 0, 0, 0, 0x10000, 0 }, { 0x10000, 0, 0, 0, 0, 0x10000, 0, 0, 0, 0, 0x10000, 0 },
// FMT_COEFF_TYPE_REC601_YUV_8BPC_LTD_TO_RGB_16BPC_FULL
{ 0x19A29, 0x12B3C, 0, 0x1F2038, 0x1F2F14, 0x12B3C, 0x1F9B52, 0x8819, 0, 0x12B3C, 0x20668, 0x1EEA18 },
// FMT_COEFF_TYPE_REC601_YUV_8BPC_FULL_TO_RGB_16BPC_FULL
{ 0x1684C, 0x100FD, 0, 0x1F4D42, 0x1F487A, 0x100FD, 0x1FA790, 0x86EB, 0, 0x100FD, 0x1C762, 0x1F1E16 },
// FMT_COEFF_TYPE_REC601_YUV_10BPC_LTD_TO_RGB_16BPC_FULL
{ 0x19A29, 0x12B3C, 0, 0x1F2038, 0x1F2F14, 0x12B3C, 0x1F9B52, 0x8819, 0, 0x12B3C, 0x20668, 0x1EEA18 },
// FMT_COEFF_TYPE_REC601_YUV_10BPC_FULL_TO_RGB_16BPC_FULL
{ 0x1673E, 0x1003C, 0, 0x1F4CBB, 0x1F4903, 0x1003C, 0x1FA7D2, 0x8751, 0, 0x1003C, 0x1C60C, 0x1F1D6B },
// FMT_COEFF_TYPE_REC601_YUV_12BPC_LTD_TO_RGB_16BPC_FULL
{ 0x19A29, 0x12B3C, 0, 0x1F2038, 0x1F2F14, 0x12B3C, 0x1F9B52, 0x8819, 0, 0x12B3C, 0x20668, 0x1EEA18 },
// FMT_COEFF_TYPE_REC601_YUV_12BPC_FULL_TO_RGB_16BPC_FULL
{ 0x166FA, 0x1000C, 0, 0x1F4C99, 0x1F4926, 0x1000C, 0x1FA7E3, 0x876B, 0, 0x1000C, 0x1C5B7, 0x1F1D41 },
// FMT_COEFF_TYPE_REC601_YUV_16BPC_LTD_TO_RGB_16BPC_FULL
{ 0x19A29, 0x12B3C, 0, 0x1F2038, 0x1F2F14, 0x12B3C, 0x1F9B52, 0x8819, 0, 0x12B3C, 0x20668, 0x1EEA18 },
// FMT_COEFF_TYPE_REC601_YUV_16BPC_FULL_TO_RGB_16BPC_FULL
{ 0x166E5, 0xFFFD, 0, 0x1F4C8F, 0x1F4931, 0xFFFD, 0x1FA7E8, 0x8773, 0, 0xFFFD, 0x1C59C, 0x1F1D34 },
// FMT_COEFF_TYPE_REC709_YUV_8BPC_LTD_TO_RGB_16BPC_FULL // FMT_COEFF_TYPE_REC709_YUV_8BPC_LTD_TO_RGB_16BPC_FULL
{ 0x1CCB7, 0x12B3C, 0, 0x1F06F1, 0x1F770C, 0x12B3C, 0x1FC933, 0x4D2D, 0, 0x12B3C, 0x21EDD, 0x1EDDDE }, { 0x1CCB7, 0x12B3C, 0, 0x1F06F1, 0x1F770C, 0x12B3C, 0x1FC933, 0x4D2D, 0, 0x12B3C, 0x21EDD, 0x1EDDDE },
// FMT_COEFF_TYPE_REC709_YUV_8BPC_FULL_TO_RGB_16BPC_FULL // FMT_COEFF_TYPE_REC709_YUV_8BPC_FULL_TO_RGB_16BPC_FULL
@@ -384,6 +570,26 @@ static const NvU32 FMTMatrix[FMT_COEFF_TYPE_MAX][12] =
{ 0x1CCB7, 0x12B3C, 0, 0x1F06F1, 0x1F770C, 0x12B3C, 0x1FC933, 0x4D2D, 0, 0x12B3C, 0x21EDD, 0x1EDDDE }, { 0x1CCB7, 0x12B3C, 0, 0x1F06F1, 0x1F770C, 0x12B3C, 0x1FC933, 0x4D2D, 0, 0x12B3C, 0x21EDD, 0x1EDDDE },
// FMT_COEFF_TYPE_REC709_YUV_12BPC_FULL_TO_RGB_16BPC_FULL // FMT_COEFF_TYPE_REC709_YUV_12BPC_FULL_TO_RGB_16BPC_FULL
{ 0x19339, 0x1000C, 0, 0x1F367D, 0x1F8823, 0x1000C, 0x1FD009, 0x53DF, 0, 0x1000C, 0x1DB1F, 0x1F128E }, { 0x19339, 0x1000C, 0, 0x1F367D, 0x1F8823, 0x1000C, 0x1FD009, 0x53DF, 0, 0x1000C, 0x1DB1F, 0x1F128E },
// FMT_COEFF_TYPE_REC709_YUV_16BPC_LTD_TO_RGB_16BPC_FULL
{ 0x1CCB7, 0x12B3C, 0, 0x1F06F1, 0x1F770C, 0x12B3C, 0x1FC933, 0x4D2D, 0, 0x12B3C, 0x21EDD, 0x1EDDDE },
// FMT_COEFF_TYPE_REC709_YUV_16BPC_FULL_TO_RGB_16BPC_FULL
{ 0x19321, 0xFFFD, 0, 0x1F3671, 0x1F882A, 0xFFFD, 0x1FD00C, 0x53E4, 0, 0xFFFD, 0x1DB03, 0x1F1280 },
// FMT_COEFF_TYPE_REC2020_YUV_8BPC_LTD_TO_RGB_16BPC_FULL
{ 0x1AF66, 0x12B3C, 0, 0x1F1599, 0x1F58D9, 0x12B3C, 0x1FCFDC, 0x58F2, 0, 0x12B3C, 0x22669, 0x1EDA18 },
// FMT_COEFF_TYPE_REC2020_YUV_8BPC_FULL_TO_RGB_16BPC_FULL
{ 0x17AF4, 0x100FD, 0, 0x1F4401, 0x1F6D2B, 0x100FD, 0x1FD5B6, 0x5DD2, 0, 0x100FD, 0x1E37F, 0x1F1024 },
// FMT_COEFF_TYPE_REC2020_YUV_10BPC_LTD_TO_RGB_16BPC_FULL
{ 0x1AF66, 0x12B3C, 0, 0x1F1599, 0x1F58D9, 0x12B3C, 0x1FCFDC, 0x58F2, 0, 0x12B3C, 0x22669, 0x1EDA18 },
// FMT_COEFF_TYPE_REC2020_YUV_10BPC_FULL_TO_RGB_16BPC_FULL
{ 0x179D8, 0x1003C, 0, 0x1F4372, 0x1F6D99, 0x1003C, 0x1FD5D6, 0x5E19, 0, 0x1003C, 0x1E214, 0x1F0F6E },
// FMT_COEFF_TYPE_REC2020_YUV_12BPC_LTD_TO_RGB_16BPC_FULL
{ 0x1AF66, 0x12B3C, 0, 0x1F1599, 0x1F58D9, 0x12B3C, 0x1FCFDC, 0x58F2, 0, 0x12B3C, 0x22669, 0x1EDA18 },
// FMT_COEFF_TYPE_REC2020_YUV_12BPC_FULL_TO_RGB_16BPC_FULL
{ 0x17991, 0x1000C, 0, 0x1F434F, 0x1F6DB5, 0x1000C, 0x1FD5DE, 0x5E2B, 0, 0x1000C, 0x1E1BA, 0x1F0F41 },
// FMT_COEFF_TYPE_REC2020_YUV_16BPC_LTD_TO_RGB_16BPC_FULL
{ 0x1AF66, 0x12B3C, 0, 0x1F1599, 0x1F58D9, 0x12B3C, 0x1FCFDC, 0x58F2, 0, 0x12B3C, 0x22669, 0x1EDA18 },
// FMT_COEFF_TYPE_REC2020_YUV_16BPC_FULL_TO_RGB_16BPC_FULL
{ 0x1797B, 0xFFFD, 0, 0x1F4344, 0x1F6DBE, 0xFFFD, 0x1FD5E0, 0x5E30, 0, 0xFFFD, 0x1E19E, 0x1F0F33 },
}; };
static void SetCsc00MatrixC5(NVEvoChannelPtr pChannel, static void SetCsc00MatrixC5(NVEvoChannelPtr pChannel,
@@ -612,6 +818,16 @@ static const struct NvKmsCscMatrix Rec709RGBToLMS = {{
{ 0x8fc, 0x2818, 0xcef0, 0 }, { 0x8fc, 0x2818, 0xcef0, 0 },
}}; }};
/*
* This is a 3x4 matrix with S5.14 coefficients (truncated from S5.16
* SW-specified values).
*/
static const struct NvKmsCscMatrix Rec601RGBToLMS = {{
{ 0x49f0, 0x9dc4, 0x184c, 0 },
{ 0x28d4, 0xb5b0, 0x217c, 0 },
{ 0x8d4, 0x2644, 0xd0ec, 0 },
}};
/* /*
* This is a 3x4 matrix with S5.14 coefficients (truncated from S5.16 * This is a 3x4 matrix with S5.14 coefficients (truncated from S5.16
* SW-specified values). * SW-specified values).
@@ -622,6 +838,16 @@ static const struct NvKmsCscMatrix LMSToRec709RGB = {{
{ 0x1ffd00, 0x1fbc34, 0x146c4, 0 }, { 0x1ffd00, 0x1fbc34, 0x146c4, 0 },
}}; }};
/*
* This is a 3x4 matrix with S5.14 coefficients (truncated from S5.16
* SW-specified values).
*/
static const struct NvKmsCscMatrix LMSToRec601RGB = {{
{ 0x6a668, 0x1a3144, 0x2838, 0 },
{ 0x1e81cc, 0x2c31c, 0x1fbb28, 0 },
{ 0x1e4, 0x1fbd48, 0x14498, 0 },
}};
/* /*
* This is a 3x4 matrix with S5.14 coefficients (truncated from S5.16 * This is a 3x4 matrix with S5.14 coefficients (truncated from S5.16
* SW-specified values). * SW-specified values).
@@ -719,6 +945,8 @@ static void ConfigureCsc0C5(NVDevEvoPtr pDevEvo,
if (enable) { if (enable) {
if (colorspace == NVKMS_INPUT_COLORSPACE_BT2100_PQ) { if (colorspace == NVKMS_INPUT_COLORSPACE_BT2100_PQ) {
matrix = Rec2020RGBToLMS; matrix = Rec2020RGBToLMS;
} else if (colorspace == NVKMS_INPUT_COLORSPACE_BT601) {
matrix = Rec601RGBToLMS;
} else { } else {
matrix = Rec709RGBToLMS; matrix = Rec709RGBToLMS;
} }
@@ -1106,7 +1334,9 @@ static void ConfigureCsc1C5(NVDevEvoPtr pDevEvo,
// XXX HDR TODO: Support other transfer functions // XXX HDR TODO: Support other transfer functions
nvAssert(pHeadState->tf == NVKMS_OUTPUT_TF_PQ); nvAssert(pHeadState->tf == NVKMS_OUTPUT_TF_PQ);
matrix = LMSToRec2020RGB; matrix = LMSToRec2020RGB;
} else { } else if (pHeadState->colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT601) {
matrix = LMSToRec601RGB;
} else if (pHeadState->colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT709) {
matrix = LMSToRec709RGB; matrix = LMSToRec709RGB;
} }
@@ -1236,6 +1466,29 @@ static const NvU32* EvoGetFMTMatrixC5(
// Choose FMT matrix based on input colorspace, bpc, and colorrange. // Choose FMT matrix based on input colorspace, bpc, and colorrange.
if (pFormatInfo->isYUV) { if (pFormatInfo->isYUV) {
NvBool specifiedFull = (pHwState->colorRange == NVKMS_INPUT_COLORRANGE_FULL); NvBool specifiedFull = (pHwState->colorRange == NVKMS_INPUT_COLORRANGE_FULL);
switch (pHwState->colorSpace) {
case NVKMS_INPUT_COLORSPACE_BT601:
if (pFormatInfo->yuv.depthPerComponent == 8) {
if (specifiedFull) {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC601_YUV_8BPC_FULL_TO_RGB_16BPC_FULL];
} else {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC601_YUV_8BPC_LTD_TO_RGB_16BPC_FULL];
}
} else if (pFormatInfo->yuv.depthPerComponent == 10) {
if (specifiedFull) {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC601_YUV_10BPC_FULL_TO_RGB_16BPC_FULL];
} else {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC601_YUV_10BPC_LTD_TO_RGB_16BPC_FULL];
}
} else if (pFormatInfo->yuv.depthPerComponent == 12) {
if (specifiedFull) {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC601_YUV_12BPC_FULL_TO_RGB_16BPC_FULL];
} else {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC601_YUV_12BPC_LTD_TO_RGB_16BPC_FULL];
}
}
break;
case NVKMS_INPUT_COLORSPACE_BT709:
if (pFormatInfo->yuv.depthPerComponent == 8) { if (pFormatInfo->yuv.depthPerComponent == 8) {
if (specifiedFull) { if (specifiedFull) {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC709_YUV_8BPC_FULL_TO_RGB_16BPC_FULL]; retValue = FMTMatrix[FMT_COEFF_TYPE_REC709_YUV_8BPC_FULL_TO_RGB_16BPC_FULL];
@@ -1254,7 +1507,30 @@ static const NvU32* EvoGetFMTMatrixC5(
} else { } else {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC709_YUV_12BPC_LTD_TO_RGB_16BPC_FULL]; retValue = FMTMatrix[FMT_COEFF_TYPE_REC709_YUV_12BPC_LTD_TO_RGB_16BPC_FULL];
} }
}
break;
case NVKMS_INPUT_COLORSPACE_BT2100_PQ:
if (pFormatInfo->yuv.depthPerComponent == 8) {
if (specifiedFull) {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC2020_YUV_8BPC_FULL_TO_RGB_16BPC_FULL];
} else { } else {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC2020_YUV_8BPC_LTD_TO_RGB_16BPC_FULL];
}
} else if (pFormatInfo->yuv.depthPerComponent == 10) {
if (specifiedFull) {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC2020_YUV_10BPC_FULL_TO_RGB_16BPC_FULL];
} else {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC2020_YUV_10BPC_LTD_TO_RGB_16BPC_FULL];
}
} else if (pFormatInfo->yuv.depthPerComponent == 12) {
if (specifiedFull) {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC2020_YUV_12BPC_FULL_TO_RGB_16BPC_FULL];
} else {
retValue = FMTMatrix[FMT_COEFF_TYPE_REC2020_YUV_12BPC_LTD_TO_RGB_16BPC_FULL];
}
}
break;
default:
// Unsupported bit depth, fail silently by defaulting to identity. // Unsupported bit depth, fail silently by defaulting to identity.
retValue = FMTMatrix[FMT_COEFF_TYPE_IDENTITY]; retValue = FMTMatrix[FMT_COEFF_TYPE_IDENTITY];
} }
@@ -1414,6 +1690,13 @@ void nvEvoInitDefaultLutC5(NVDevEvoPtr pDevEvo)
pData = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_PQ]->subDeviceAddress[sd]; pData = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_PQ]->subDeviceAddress[sd];
EvoSetupPQEotfBaseLutC5(pData); EvoSetupPQEotfBaseLutC5(pData);
EvoSetupPQOetfOutputLutC5(pData); EvoSetupPQOetfOutputLutC5(pData);
// Polulate BT 709 ILUT (degamma) and OLUT (regamma).
pData = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_BT709]->subDeviceAddress[sd];
FillLut(pData->base, BT709EOTFLUTEntries,
BT709_EOTF_LUT_NUM_ENTRIES, BT709EOTFLUTVSSHeader);
FillLut(pData->output, BT709OETFLUTEntries,
BT709_OETF_LUT_NUM_ENTRIES, BT709OETFLUTVSSHeader);
} }
} }
@@ -4685,7 +4968,7 @@ EvoFlipC5Common(NVDevEvoPtr pDevEvo,
// Assert that the colorspace is a linear encoding. // Assert that the colorspace is a linear encoding.
nvAssert((pHwState->colorSpace == NVKMS_INPUT_COLORSPACE_SCRGB_LINEAR) || nvAssert((pHwState->colorSpace == NVKMS_INPUT_COLORSPACE_SCRGB_LINEAR) ||
(pHwState->colorSpace == NVKMS_INPUT_COLORSPACE_NONE) || (pHwState->colorSpace == NVKMS_INPUT_COLORSPACE_NONE) ||
(pHwState->colorSpace == NVKMS_INPUT_COLORSPACE_REC709_LINEAR)); (pHwState->colorSpace == NVKMS_INPUT_COLORSPACE_BT709_LINEAR));
ctxDma = 0; ctxDma = 0;
} else if (pHwState->colorSpace != NVKMS_INPUT_COLORSPACE_NONE) { } else if (pHwState->colorSpace != NVKMS_INPUT_COLORSPACE_NONE) {
switch (pHwState->colorSpace) { switch (pHwState->colorSpace) {
@@ -4694,7 +4977,15 @@ EvoFlipC5Common(NVDevEvoPtr pDevEvo,
lutSize = NV_LUT_VSS_HEADER_SIZE + PQ_EOTF_LUT_NUM_ENTRIES; lutSize = NV_LUT_VSS_HEADER_SIZE + PQ_EOTF_LUT_NUM_ENTRIES;
isLutModeVss = TRUE; isLutModeVss = TRUE;
break; break;
case NVKMS_INPUT_COLORSPACE_REC709: case NVKMS_INPUT_COLORSPACE_BT601:
// BT601 also uses the same degamma calculation as 709.
// Hence using the 709 degamma table for 601 also.
ctxDma = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_BT709]->surfaceDesc.ctxDmaHandle;
lutSize = NV_LUT_VSS_HEADER_SIZE + BT709_EOTF_LUT_NUM_ENTRIES;
isLutModeVss = TRUE;
break;
case NVKMS_INPUT_COLORSPACE_BT709:
// When the output is sRGB, We use sRGB degamma instead of // When the output is sRGB, We use sRGB degamma instead of
// Rec709 degamma because Rec709 gamma-encoded inputs are // Rec709 degamma because Rec709 gamma-encoded inputs are
// are designed to be compatible with sRGB in the sense // are designed to be compatible with sRGB in the sense
@@ -4708,19 +4999,29 @@ EvoFlipC5Common(NVDevEvoPtr pDevEvo,
// Therefore, given a gamma-encoded input signal, the // Therefore, given a gamma-encoded input signal, the
// de/regamma process is purely for conversion to and from // de/regamma process is purely for conversion to and from
// linear space for the sake of linear processing // linear space for the sake of linear processing
// operations. // operations
if (pHeadState->colorimetry == NVKMS_OUTPUT_COLORIMETRY_SRGB) {
ctxDma = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_SRGB]->surfaceDesc.ctxDmaHandle; ctxDma = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_SRGB]->surfaceDesc.ctxDmaHandle;
lutSize = NV_LUT_VSS_HEADER_SIZE + SRGB_EOTF_LUT_NUM_ENTRIES; lutSize = NV_LUT_VSS_HEADER_SIZE + SRGB_EOTF_LUT_NUM_ENTRIES;
} else { // If output is not sRGB, use BT709 degamma
ctxDma = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_BT709]->surfaceDesc.ctxDmaHandle;
lutSize = NV_LUT_VSS_HEADER_SIZE + BT709_EOTF_LUT_NUM_ENTRIES;
}
isLutModeVss = TRUE; isLutModeVss = TRUE;
break; break;
// TODO(mtrost): add support for Rec709 EOTF LUT when the output
// is not sRGB.
case NVKMS_INPUT_COLORSPACE_SRGB: case NVKMS_INPUT_COLORSPACE_SRGB:
ctxDma = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_SRGB]->surfaceDesc.ctxDmaHandle; ctxDma = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_SRGB]->surfaceDesc.ctxDmaHandle;
lutSize = NV_LUT_VSS_HEADER_SIZE + SRGB_EOTF_LUT_NUM_ENTRIES; lutSize = NV_LUT_VSS_HEADER_SIZE + SRGB_EOTF_LUT_NUM_ENTRIES;
isLutModeVss = TRUE; isLutModeVss = TRUE;
break; break;
case NVKMS_INPUT_COLORSPACE_REC709_LINEAR: case NVKMS_INPUT_COLORSPACE_BT2020:
// if bit depth is < 12, ELUT/OLUT are exactly same as BT709.
// TODO: Add a check for bit depth and use BT709 only if it is < 12.
ctxDma = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_BT709]->surfaceDesc.ctxDmaHandle;
lutSize = NV_LUT_VSS_HEADER_SIZE + BT709_EOTF_LUT_NUM_ENTRIES;
isLutModeVss = TRUE;
break;
case NVKMS_INPUT_COLORSPACE_BT709_LINEAR:
default: // XXX HDR TODO: Handle other colorspaces default: // XXX HDR TODO: Handle other colorspaces
ctxDma = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_IDENTITY]->surfaceDesc.ctxDmaHandle; ctxDma = pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_IDENTITY]->surfaceDesc.ctxDmaHandle;
lutSize = NV_LUT_VSS_HEADER_SIZE + NV_NUM_EVO_LUT_ENTRIES; lutSize = NV_LUT_VSS_HEADER_SIZE + NV_NUM_EVO_LUT_ENTRIES;
@@ -5401,7 +5702,7 @@ void nvSetupOutputLUT5(NVDevEvoPtr pDevEvo,
/* Use the default OLUT if the client didn't provide one */ /* Use the default OLUT if the client didn't provide one */
*pSurfaceDesc = &pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_IDENTITY]->surfaceDesc; *pSurfaceDesc = &pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_IDENTITY]->surfaceDesc;
// Choose the appropriate OLUT based on NvKmsOutputColorSpace. // Choose the appropriate OLUT based on NvKmsOutputColorimetry.
for (sd = 0; sd < pDevEvo->numSubDevices; sd++) { for (sd = 0; sd < pDevEvo->numSubDevices; sd++) {
if (pHeadState->hdr.outputState == NVKMS_HDR_OUTPUT_STATE_HDR) { if (pHeadState->hdr.outputState == NVKMS_HDR_OUTPUT_STATE_HDR) {
// XXX HDR TODO: Support other transfer functions // XXX HDR TODO: Support other transfer functions
@@ -5417,13 +5718,24 @@ void nvSetupOutputLUT5(NVDevEvoPtr pDevEvo,
* XXX HDR TODO: Assumes input is in this range, SDR is not. * XXX HDR TODO: Assumes input is in this range, SDR is not.
*/ */
*fpNormScale = 0xFFFFFFFF / 125; *fpNormScale = 0xFFFFFFFF / 125;
} else if (pHeadState->outputColorSpace == NVKMS_OUTPUT_COLORSPACE_SRGB) { } else if (pHeadState->colorimetry == NVKMS_OUTPUT_COLORIMETRY_SRGB) {
*isLutModeVss = TRUE; *isLutModeVss = TRUE;
*lutSize = SRGB_OETF_LUT_NUM_ENTRIES; *lutSize = SRGB_OETF_LUT_NUM_ENTRIES;
*pSurfaceDesc = &pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_SRGB]->surfaceDesc; *pSurfaceDesc = &pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_SRGB]->surfaceDesc;
// 0xFFFFFFFF / (100.0 / 80.0) which assumes a standard SDR luminance range. // 0xFFFFFFFF / (100.0 / 80.0) which assumes a standard SDR luminance range.
*fpNormScale = 0xcccccccc; *fpNormScale = 0xcccccccc;
} else if ((pHeadState->colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT601) ||
(pHeadState->colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT709) ||
(pHeadState->colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT2020)) {
// BT601, BT709 and BT2020 ( for bit depth < 12) uses exactly same
// OETF curve as BT709.
// TODO: Add a check for bit depth also for BT2020 case
*isLutModeVss = TRUE;
*lutSize = BT709_OETF_LUT_NUM_ENTRIES;
*pSurfaceDesc = &pDevEvo->lut.gammaLUTs[NVKMS_GAMMA_LUT_BT709]->surfaceDesc;
// For SDR fp Norm scale value is 0xFFFFFFFF
*fpNormScale = 0xFFFFFFFF;
} else { } else {
// If no output color space specified, or if the specified // If no output color space specified, or if the specified
// color space is NONE, use Identity OLUT. // color space is NONE, use Identity OLUT.
@@ -5473,7 +5785,7 @@ static void EvoSetLUTContextDmaC5(const NVDispEvoRec *pDispEvo,
// XXX HDR TODO: Enable custom output LUTs with HDR // XXX HDR TODO: Enable custom output LUTs with HDR
if ((pHeadState->hdr.outputState == NVKMS_HDR_OUTPUT_STATE_HDR) || if ((pHeadState->hdr.outputState == NVKMS_HDR_OUTPUT_STATE_HDR) ||
(pHeadState->outputColorSpace != NVKMS_OUTPUT_COLORSPACE_NONE)) { (pHeadState->colorimetry != NVKMS_OUTPUT_COLORIMETRY_DEFAULT)) {
enableOutputLut = FALSE; enableOutputLut = FALSE;
} }
@@ -8243,7 +8555,7 @@ NVEvoHAL nvEvoC6 = {
FALSE, /* supportsImageSharpening */ FALSE, /* supportsImageSharpening */
TRUE, /* supportsHDMIVRR */ TRUE, /* supportsHDMIVRR */
FALSE, /* supportsCoreChannelSurface */ FALSE, /* supportsCoreChannelSurface */
TRUE, /* supportsHDMIFRL */ FALSE, /* supportsHDMIFRL */
FALSE, /* supportsSetStorageMemoryLayout */ FALSE, /* supportsSetStorageMemoryLayout */
TRUE, /* supportsIndependentAcqRelSemaphore */ TRUE, /* supportsIndependentAcqRelSemaphore */
FALSE, /* supportsCoreLut */ FALSE, /* supportsCoreLut */

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 2014 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 2014 - 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -126,6 +126,12 @@ static NvBool UpdateProposedFlipStateOneApiHead(
const NVDispApiHeadStateEvoRec *pApiHeadState = const NVDispApiHeadStateEvoRec *pApiHeadState =
&pDispEvo->apiHeadState[apiHead]; &pDispEvo->apiHeadState[apiHead];
if (pParams->colorimetry.specified) {
pProposedApiHead->dirty.hdr = TRUE;
pProposedApiHead->hdr.colorimetry = pParams->colorimetry.val;
}
if (pParams->tf.specified) { if (pParams->tf.specified) {
const NVDpyEvoRec *pDpyEvo = const NVDpyEvoRec *pDpyEvo =
nvGetOneArbitraryDpyEvo(pApiHeadState->activeDpys, pDispEvo); nvGetOneArbitraryDpyEvo(pApiHeadState->activeDpys, pDispEvo);
@@ -156,7 +162,7 @@ static NvBool UpdateProposedFlipStateOneApiHead(
if (!nvChooseCurrentColorSpaceAndRangeEvo(pDpyEvo, if (!nvChooseCurrentColorSpaceAndRangeEvo(pDpyEvo,
&pApiHeadState->timings, &pApiHeadState->timings,
pDispEvo->headState[primaryHead].hdmiFrlBpc, pDispEvo->headState[primaryHead].hdmiFrlBpc,
pParams->tf.val, pProposedApiHead->hdr.colorimetry,
pDpyEvo->requestedColorSpace, pDpyEvo->requestedColorSpace,
pDpyEvo->requestedColorRange, pDpyEvo->requestedColorRange,
&pProposedApiHead->hdr.colorSpace, &pProposedApiHead->hdr.colorSpace,
@@ -353,6 +359,7 @@ static void InitNvKmsFlipWorkArea(const NVDevEvoRec *pDevEvo,
&pDispEvo->apiHeadState[apiHead]; &pDispEvo->apiHeadState[apiHead];
pProposedApiHead->hdr.tf = pApiHeadState->tf; pProposedApiHead->hdr.tf = pApiHeadState->tf;
pProposedApiHead->hdr.colorimetry = pApiHeadState->colorimetry;
pProposedApiHead->hdr.colorSpace = pProposedApiHead->hdr.colorSpace =
pApiHeadState->attributes.colorSpace; pApiHeadState->attributes.colorSpace;
pProposedApiHead->hdr.colorBpc = pProposedApiHead->hdr.colorBpc =
@@ -398,6 +405,7 @@ static void FlipEvoOneApiHead(NVDispEvoRec *pDispEvo,
nvUpdateCurrentHardwareColorSpaceAndRangeEvo( nvUpdateCurrentHardwareColorSpaceAndRangeEvo(
pDispEvo, pDispEvo,
head, head,
pProposedApiHead->hdr.colorimetry,
pProposedApiHead->hdr.colorSpace, pProposedApiHead->hdr.colorSpace,
pProposedApiHead->hdr.colorRange, pProposedApiHead->hdr.colorRange,
pUpdateState); pUpdateState);
@@ -420,6 +428,8 @@ static void FlipEvoOneApiHead(NVDispEvoRec *pDispEvo,
pApiHeadState->tf = pProposedApiHead->hdr.tf; pApiHeadState->tf = pProposedApiHead->hdr.tf;
pApiHeadState->colorimetry = pProposedApiHead->hdr.colorimetry;
nvUpdateInfoFrames(pDpyEvo); nvUpdateInfoFrames(pDpyEvo);
} }

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 2007 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 2007 - 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -68,7 +68,7 @@ static inline const NVT_EDID_CEA861_INFO *GetExt861(const NVParsedEdidEvoRec *pP
*/ */
static void CalculateVideoInfoFrameColorFormat( static void CalculateVideoInfoFrameColorFormat(
const NVAttributesSetEvoRec *pAttributesSet, const NVAttributesSetEvoRec *pAttributesSet,
enum NvKmsOutputTf tf, enum NvKmsOutputColorimetry colorimetry,
const NvU32 hdTimings, const NvU32 hdTimings,
NVT_VIDEO_INFOFRAME_CTRL *pCtrl, NVT_VIDEO_INFOFRAME_CTRL *pCtrl,
NVT_EDID_INFO *pEdidInfo) NVT_EDID_INFO *pEdidInfo)
@@ -76,10 +76,10 @@ static void CalculateVideoInfoFrameColorFormat(
NvBool sinkSupportsRGBQuantizationOverride = FALSE; NvBool sinkSupportsRGBQuantizationOverride = FALSE;
/* /*
* If NVKMS_OUTPUT_TF_PQ is enabled, we expect the colorSpace is RGB. This * If NVKMS_OUTPUT_COLORIMETRY_BT2100 is enabled, we expect the colorSpace is RGB. This
* is enforced when the colorSpace is selected. * is enforced when the colorSpace is selected.
*/ */
nvAssert((tf != NVKMS_OUTPUT_TF_PQ) || nvAssert((colorimetry != NVKMS_OUTPUT_COLORIMETRY_BT2100) ||
(pAttributesSet->colorSpace == (pAttributesSet->colorSpace ==
NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_RGB)); NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_RGB));
@@ -105,7 +105,7 @@ static void CalculateVideoInfoFrameColorFormat(
// sets video infoframe colorimetry. // sets video infoframe colorimetry.
switch (pAttributesSet->colorSpace) { switch (pAttributesSet->colorSpace) {
case NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_RGB: case NV_KMS_DPY_ATTRIBUTE_CURRENT_COLOR_SPACE_RGB:
if (tf == NVKMS_OUTPUT_TF_PQ) { if (colorimetry == NVKMS_OUTPUT_COLORIMETRY_BT2100) {
pCtrl->colorimetry = NVT_COLORIMETRY_BT2020RGB; pCtrl->colorimetry = NVT_COLORIMETRY_BT2020RGB;
} else { } else {
pCtrl->colorimetry = NVT_COLORIMETRY_RGB; pCtrl->colorimetry = NVT_COLORIMETRY_RGB;
@@ -525,7 +525,7 @@ static void SendVideoInfoFrame(const NVDispEvoRec *pDispEvo,
CalculateVideoInfoFrameColorFormat(pAttributesSet, CalculateVideoInfoFrameColorFormat(pAttributesSet,
pDispEvo->headState[head].tf, pDispEvo->headState[head].colorimetry,
hdTimings, hdTimings,
&videoCtrl, &videoCtrl,
pEdidInfo); pEdidInfo);

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: Copyright (c) 2014 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 2014 - 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -175,6 +175,8 @@ void nvInitFlipEvoHwState(
{ {
NVDispEvoRec *pDispEvo = pDevEvo->gpus[sd].pDispEvo; NVDispEvoRec *pDispEvo = pDevEvo->gpus[sd].pDispEvo;
const NVEvoSubDevHeadStateRec *pSdHeadState; const NVEvoSubDevHeadStateRec *pSdHeadState;
const NVDispHeadStateEvoRec *pHeadState;
NvU32 i; NvU32 i;
nvClearFlipEvoHwState(pFlipState); nvClearFlipEvoHwState(pFlipState);
@@ -184,6 +186,7 @@ void nvInitFlipEvoHwState(
} }
pSdHeadState = &pDevEvo->gpus[sd].headState[head]; pSdHeadState = &pDevEvo->gpus[sd].headState[head];
pHeadState = &pDispEvo->headState[head];
pFlipState->viewPortPointIn = pSdHeadState->viewPortPointIn; pFlipState->viewPortPointIn = pSdHeadState->viewPortPointIn;
pFlipState->cursor = pSdHeadState->cursor; pFlipState->cursor = pSdHeadState->cursor;
@@ -208,6 +211,8 @@ void nvInitFlipEvoHwState(
pFlipState->disableMidFrameAndDWCFWatermark = pFlipState->disableMidFrameAndDWCFWatermark =
pSdHeadState->targetDisableMidFrameAndDWCFWatermark; pSdHeadState->targetDisableMidFrameAndDWCFWatermark;
pFlipState->colorimetry = pHeadState->colorimetry;
} }
@@ -223,7 +228,8 @@ NvBool nvIsLayerDirty(const struct NvKmsFlipCommonParams *pParams,
pParams->layer[layer].compositionParams.specified || pParams->layer[layer].compositionParams.specified ||
pParams->layer[layer].csc.specified || pParams->layer[layer].csc.specified ||
pParams->layer[layer].hdr.specified || pParams->layer[layer].hdr.specified ||
pParams->layer[layer].colorSpace.specified; pParams->layer[layer].colorSpace.specified ||
pParams->layer[layer].colorRange.specified;
} }
/*! /*!
@@ -974,6 +980,11 @@ NvBool nvUpdateFlipEvoHwState(
pFlipState->tf = pParams->tf.val; pFlipState->tf = pParams->tf.val;
} }
if (pParams->colorimetry.specified) {
pFlipState->dirty.colorimetry = TRUE;
pFlipState->colorimetry = pParams->colorimetry.val;
}
for (layer = 0; layer < pDevEvo->head[head].numLayers; layer++) { for (layer = 0; layer < pDevEvo->head[head].numLayers; layer++) {
if (layer == NVKMS_MAIN_LAYER) { if (layer == NVKMS_MAIN_LAYER) {
if (!UpdateMainLayerFlipEvoHwState(pOpenDev, pDevEvo, sd, head, if (!UpdateMainLayerFlipEvoHwState(pOpenDev, pDevEvo, sd, head,
@@ -1565,6 +1576,11 @@ static void UpdateHDR(NVDevEvoPtr pDevEvo,
dirty = TRUE; dirty = TRUE;
} }
if (pFlipState->dirty.colorimetry) {
pHeadState->colorimetry = pFlipState->colorimetry;
dirty = TRUE;
}
if (dirty) { if (dirty) {
// Update OCSC / OLUT // Update OCSC / OLUT
nvEvoSetLUTContextDma(pDispEvo, head, updateState); nvEvoSetLUTContextDma(pDispEvo, head, updateState);

View File

@@ -312,7 +312,7 @@ GetColorSpaceAndColorRange(
if (!nvChooseCurrentColorSpaceAndRangeEvo(pOneArbitraryDpyEvo, if (!nvChooseCurrentColorSpaceAndRangeEvo(pOneArbitraryDpyEvo,
&pProposedApiHead->timings, &pProposedApiHead->timings,
pProposedPrimaryHead->hdmiFrlBpc, pProposedPrimaryHead->hdmiFrlBpc,
pProposedApiHead->tf, pProposedApiHead->colorimetry,
requestedColorSpace, requestedColorSpace,
requestedColorRange, requestedColorRange,
&pProposedApiHead->attributes.colorSpace, &pProposedApiHead->attributes.colorSpace,
@@ -490,6 +490,7 @@ InitNVProposedModeSetStateOneApiHead(
pProposedApiHead->infoFrame = pProposedApiHead->infoFrame =
pDispEvo->apiHeadState[apiHead].infoFrame; pDispEvo->apiHeadState[apiHead].infoFrame;
pProposedApiHead->tf = pDispEvo->apiHeadState[apiHead].tf; pProposedApiHead->tf = pDispEvo->apiHeadState[apiHead].tf;
pProposedApiHead->colorimetry = pDispEvo->apiHeadState[apiHead].colorimetry;
pProposedApiHead->viewPortPointIn = pProposedApiHead->viewPortPointIn =
pDispEvo->apiHeadState[apiHead].viewPortPointIn; pDispEvo->apiHeadState[apiHead].viewPortPointIn;
@@ -544,6 +545,7 @@ InitProposedModeSetHwState(const NVDevEvoRec *pDevEvo,
for (NvU32 head = 0; head < pDevEvo->numHeads; head++) { for (NvU32 head = 0; head < pDevEvo->numHeads; head++) {
NvU32 layer; NvU32 layer;
NVFlipEvoHwState *pFlip = &pProposed->sd[sd].head[head].flip; NVFlipEvoHwState *pFlip = &pProposed->sd[sd].head[head].flip;
pFlip->dirty.colorimetry = TRUE;
for (layer = 0; layer < pDevEvo->head[head].numLayers; layer++) { for (layer = 0; layer < pDevEvo->head[head].numLayers; layer++) {
pFlip->dirty.layer[layer] = TRUE; pFlip->dirty.layer[layer] = TRUE;
} }
@@ -617,6 +619,7 @@ AssignProposedModeSetNVFlipEvoHwState(
if (commit) { if (commit) {
NvU32 layer; NvU32 layer;
pFlip->dirty.colorimetry = TRUE;
for (layer = 0; layer < pDevEvo->head[head].numLayers; layer++) { for (layer = 0; layer < pDevEvo->head[head].numLayers; layer++) {
pFlip->dirty.layer[layer] = TRUE; pFlip->dirty.layer[layer] = TRUE;
} }
@@ -1172,9 +1175,8 @@ AssignProposedModeSetHwState(NVDevEvoRec *pDevEvo,
pProposedApiHead->lut.input.specified = FALSE; pProposedApiHead->lut.input.specified = FALSE;
} }
if (pRequestHead->outputColorSpace.specified) { if (pRequestHead->flip.colorimetry.specified) {
pProposedApiHead->outputColorSpace = pProposedApiHead->colorimetry = pRequestHead->flip.colorimetry.val;
pRequestHead->outputColorSpace.val;
// A specified output color space takes precedence over a // A specified output color space takes precedence over a
// specified custom OLUT. Setting the lut.output as follows // specified custom OLUT. Setting the lut.output as follows
@@ -2343,6 +2345,14 @@ ApplyProposedModeSetStateOneApiHeadShutDown(
*/ */
DisableActiveCoreRGSyncObjects(pDispEvo, apiHead, DisableActiveCoreRGSyncObjects(pDispEvo, apiHead,
&pWorkArea->modesetUpdateState.updateState); &pWorkArea->modesetUpdateState.updateState);
{
NVVBlankIntrCallbackRec *pCallback;
nvListForEachEntry(pCallback, &pDispEvo->vblankIntrCallbackList[apiHead],
vblankIntrCallbackListEntry) {
nvEvoUnregisterVBlankEvent(pDispEvo, pCallback->rmVBlankCallbackHandle);
pCallback->rmVBlankCallbackHandle = 0;
}
}
if (pApiHeadState->rmVBlankCallbackHandle != 0) { if (pApiHeadState->rmVBlankCallbackHandle != 0) {
nvRmRemoveVBlankCallback(pDispEvo, nvRmRemoveVBlankCallback(pDispEvo,
@@ -2413,6 +2423,9 @@ ApplyProposedModeSetStateOneDispFlip(
} }
} }
pDispEvo->apiHeadState[apiHead].colorimetry =
pProposedApiHead->colorimetry;
pDispEvo->apiHeadState[apiHead].viewPortPointIn = pDispEvo->apiHeadState[apiHead].viewPortPointIn =
pProposedApiHead->viewPortPointIn; pProposedApiHead->viewPortPointIn;
} }
@@ -2470,7 +2483,7 @@ ApplyProposedModeSetHwStateOneHeadPreUpdate(
nvEvoColorSpaceBpcToPixelDepth(pProposedApiHead->attributes.colorSpace, nvEvoColorSpaceBpcToPixelDepth(pProposedApiHead->attributes.colorSpace,
pProposedApiHead->attributes.colorBpc); pProposedApiHead->attributes.colorBpc);
pHeadState->audio = pProposedHead->audio; pHeadState->audio = pProposedHead->audio;
pHeadState->outputColorSpace = pProposedApiHead->outputColorSpace; pHeadState->colorimetry = pProposedApiHead->colorimetry;
/* Update current LUT to hardware */ /* Update current LUT to hardware */
nvEvoSetLUTContextDma(pDispEvo, head, updateState); nvEvoSetLUTContextDma(pDispEvo, head, updateState);
@@ -2487,6 +2500,7 @@ ApplyProposedModeSetHwStateOneHeadPreUpdate(
/* Update hardware's current colorSpace and colorRange */ /* Update hardware's current colorSpace and colorRange */
nvUpdateCurrentHardwareColorSpaceAndRangeEvo(pDispEvo, nvUpdateCurrentHardwareColorSpaceAndRangeEvo(pDispEvo,
head, head,
pProposedApiHead->colorimetry,
pProposedApiHead->attributes.colorSpace, pProposedApiHead->attributes.colorSpace,
pProposedApiHead->attributes.colorRange, pProposedApiHead->attributes.colorRange,
updateState); updateState);
@@ -2652,8 +2666,18 @@ ApplyProposedModeSetStateOneApiHeadPreUpdate(
VBlankCallback, (void *)(NvUPtr)apiHead); VBlankCallback, (void *)(NvUPtr)apiHead);
} }
{
NVVBlankIntrCallbackRec *pCallback;
nvListForEachEntry(pCallback, &pDispEvo->vblankIntrCallbackList[apiHead],
vblankIntrCallbackListEntry) {
pCallback->rmVBlankCallbackHandle =
nvEvoRegisterVBlankEvent(pDispEvo, proposedPrimaryHead, pCallback);
}
}
pApiHeadState->attributes = pProposedApiHead->attributes; pApiHeadState->attributes = pProposedApiHead->attributes;
pApiHeadState->tf = pProposedApiHead->tf; pApiHeadState->tf = pProposedApiHead->tf;
pApiHeadState->colorimetry = pProposedApiHead->colorimetry;
pApiHeadState->hs10bpcHint = pProposedApiHead->hs10bpcHint; pApiHeadState->hs10bpcHint = pProposedApiHead->hs10bpcHint;
if (nvPopCount32(pProposedApiHead->hwHeadsMask) > 1) { if (nvPopCount32(pProposedApiHead->hwHeadsMask) > 1) {
@@ -3785,6 +3809,58 @@ void nvApiHeadUnregisterVBlankCallback(NVDispEvoPtr pDispEvo,
} }
} }
NVVBlankIntrCallbackRec*
nvApiHeadRegisterVBlankIntrCallback(NVDispEvoPtr pDispEvo,
const NvU32 apiHead,
NVVBlankIntrCallbackProc pCallback,
NvU64 param1,
NvU64 param2)
{
const NvU32 head = nvGetPrimaryHwHead(pDispEvo, apiHead);
NVVBlankIntrCallbackRec *pVBlankIntrCallback = NULL;
pVBlankIntrCallback = nvCalloc(1, sizeof(*pVBlankIntrCallback));
if (pVBlankIntrCallback == NULL) {
return NULL;
}
pVBlankIntrCallback->pCallback = pCallback;
pVBlankIntrCallback->apiHead = apiHead;
pVBlankIntrCallback->param1 = param1;
pVBlankIntrCallback->param2 = param2;
pVBlankIntrCallback->ref_ptr = nvkms_alloc_ref_ptr(pVBlankIntrCallback);
nvListAppend(&pVBlankIntrCallback->vblankIntrCallbackListEntry,
&pDispEvo->vblankIntrCallbackList[apiHead]);
if (pDispEvo->pDevEvo->coreInitMethodsPending) {
return pVBlankIntrCallback;
}
if (head != NV_INVALID_HEAD) {
pVBlankIntrCallback->rmVBlankCallbackHandle =
nvEvoRegisterVBlankEvent(pDispEvo, head, pVBlankIntrCallback);
}
return pVBlankIntrCallback;
}
void nvApiHeadUnregisterVBlankIntrCallback(NVDispEvoPtr pDispEvo,
NVVBlankIntrCallbackRec *pCallback)
{
nvAssert((nvGetPrimaryHwHead(pDispEvo, pCallback->apiHead) != NV_INVALID_HEAD)||
(pCallback->rmVBlankCallbackHandle == 0));
// If there are no more callbacks, disable the RM-level callback
if (pCallback->rmVBlankCallbackHandle != 0) {
nvEvoUnregisterVBlankEvent(pDispEvo, pCallback->rmVBlankCallbackHandle);
pCallback->rmVBlankCallbackHandle = 0;
}
nvListDel(&pCallback->vblankIntrCallbackListEntry);
nvkms_free_ref_ptr(pCallback->ref_ptr);
nvFree(pCallback);
}
/*! /*!
* Perform a modeset that disables some or all api heads. * Perform a modeset that disables some or all api heads.
* *

View File

@@ -315,6 +315,11 @@ static inline NVDispEvoPtr AllocDisplay(NVDevEvoPtr pDevEvo)
pDispEvo->framelock.clients = nvEmptyDpyIdList(); pDispEvo->framelock.clients = nvEmptyDpyIdList();
pDispEvo->framelock.currentServerHead = NV_INVALID_HEAD; pDispEvo->framelock.currentServerHead = NV_INVALID_HEAD;
for (NvU32 apiHead = 0;
apiHead < ARRAY_LEN(pDispEvo->vblankIntrCallbackList); apiHead++) {
nvListInit(&pDispEvo->vblankIntrCallbackList[apiHead]);
}
pDispEvo->ref_ptr = nvkms_alloc_ref_ptr(pDispEvo); pDispEvo->ref_ptr = nvkms_alloc_ref_ptr(pDispEvo);
if (!pDispEvo->ref_ptr) { if (!pDispEvo->ref_ptr) {
goto fail; goto fail;

View File

@@ -143,6 +143,7 @@ struct NvKmsPerOpenDisp {
struct NvKmsPerOpenConnector connector[NVKMS_MAX_CONNECTORS_PER_DISP]; struct NvKmsPerOpenConnector connector[NVKMS_MAX_CONNECTORS_PER_DISP];
NVEvoApiHandlesRec vblankSyncObjectHandles[NVKMS_MAX_HEADS_PER_DISP]; NVEvoApiHandlesRec vblankSyncObjectHandles[NVKMS_MAX_HEADS_PER_DISP];
NVEvoApiHandlesRec vblankCallbackHandles[NVKMS_MAX_HEADS_PER_DISP]; NVEvoApiHandlesRec vblankCallbackHandles[NVKMS_MAX_HEADS_PER_DISP];
NVEvoApiHandlesRec vblankIntrCallbackHandles[NVKMS_MAX_HEADS_PER_DISP];
}; };
struct NvKmsPerOpenDev { struct NvKmsPerOpenDev {
@@ -685,6 +686,8 @@ static void ClearPerOpenDisp(
nvEvoDestroyApiHandles(&pOpenDisp->connectorHandles); nvEvoDestroyApiHandles(&pOpenDisp->connectorHandles);
for (NvU32 i = 0; i < NVKMS_MAX_HEADS_PER_DISP; i++) { for (NvU32 i = 0; i < NVKMS_MAX_HEADS_PER_DISP; i++) {
NVVBlankIntrCallbackRec *pCallback;
nvEvoDestroyApiHandles(&pOpenDisp->vblankSyncObjectHandles[i]); nvEvoDestroyApiHandles(&pOpenDisp->vblankSyncObjectHandles[i]);
FOR_ALL_POINTERS_IN_EVO_API_HANDLES(&pOpenDisp->vblankCallbackHandles[i], FOR_ALL_POINTERS_IN_EVO_API_HANDLES(&pOpenDisp->vblankCallbackHandles[i],
@@ -692,6 +695,13 @@ static void ClearPerOpenDisp(
nvRemoveUnicastEvent(pCallbackData->pUserData); nvRemoveUnicastEvent(pCallbackData->pUserData);
} }
nvEvoDestroyApiHandles(&pOpenDisp->vblankCallbackHandles[i]); nvEvoDestroyApiHandles(&pOpenDisp->vblankCallbackHandles[i]);
FOR_ALL_POINTERS_IN_EVO_API_HANDLES(&pOpenDisp->vblankIntrCallbackHandles[i],
pCallback, callback) {
nvApiHeadUnregisterVBlankIntrCallback(pOpenDisp->pDispEvo,
pCallback);
}
nvEvoDestroyApiHandles(&pOpenDisp->vblankIntrCallbackHandles[i]);
} }
nvEvoDestroyApiHandle(&pOpenDev->dispHandles, pOpenDisp->nvKmsApiHandle); nvEvoDestroyApiHandle(&pOpenDev->dispHandles, pOpenDisp->nvKmsApiHandle);
@@ -766,7 +776,13 @@ static NvBool InitPerOpenDisp(
NVKMS_MAX_VBLANK_SYNC_OBJECTS_PER_HEAD)) { NVKMS_MAX_VBLANK_SYNC_OBJECTS_PER_HEAD)) {
goto fail; goto fail;
} }
if (!nvEvoInitApiHandles(&pOpenDisp->vblankIntrCallbackHandles[i],
NVKMS_MAX_VBLANK_SYNC_OBJECTS_PER_HEAD)) {
goto fail;
} }
}
if (!AllocPerOpenFrameLock(pOpen, pOpenDisp)) { if (!AllocPerOpenFrameLock(pOpen, pOpenDisp)) {
goto fail; goto fail;
@@ -3984,6 +4000,68 @@ static NvBool NotifyVblank(
return NV_TRUE; return NV_TRUE;
} }
static NvBool RegisterVblankIntrCallback(struct NvKmsPerOpen *pOpen,
void *pParamsVoid)
{
NvKmsVblankIntrCallbackHandle callbackHandle;
struct NvKmsRegisterVblankIntrCallbackParams *pParams = pParamsVoid;
struct NvKmsPerOpenDisp* pOpenDisp =
GetPerOpenDisp(pOpen, pParams->request.deviceHandle,
pParams->request.dispHandle);
NVVBlankIntrCallbackRec *pCallback =
nvApiHeadRegisterVBlankIntrCallback(pOpenDisp->pDispEvo,
pParams->request.head,
pParams->request.pCallback,
pParams->request.param1,
pParams->request.param2);
if (pCallback == NULL) {
return FALSE;
}
callbackHandle = nvEvoCreateApiHandle(
&pOpenDisp->vblankIntrCallbackHandles[pParams->request.head],
pCallback);
if (callbackHandle == 0) {
nvApiHeadUnregisterVBlankIntrCallback(pOpenDisp->pDispEvo,
pCallback);
return FALSE;
}
pParams->reply.callbackHandle = callbackHandle;
return TRUE;
}
static NvBool UnregisterVblankIntrCallback(struct NvKmsPerOpen *pOpen,
void *pParamsVoid)
{
struct NvKmsUnregisterVblankIntrCallbackParams *pParams = pParamsVoid;
struct NvKmsPerOpenDisp* pOpenDisp =
GetPerOpenDisp(pOpen, pParams->request.deviceHandle,
pParams->request.dispHandle);
const NvU32 apiHead = pParams->request.head;
NVVBlankIntrCallbackRec *pCallback;
if (apiHead >= ARRAY_LEN(pOpenDisp->vblankIntrCallbackHandles)) {
return FALSE;
}
pCallback = nvEvoGetPointerFromApiHandle(
&pOpenDisp->vblankIntrCallbackHandles[apiHead],
pParams->request.callbackHandle);
if (pCallback == NULL) {
return FALSE;
}
nvApiHeadUnregisterVBlankIntrCallback(pOpenDisp->pDispEvo,
pCallback);
nvEvoDestroyApiHandle(&pOpenDisp->vblankIntrCallbackHandles[apiHead],
pParams->request.callbackHandle);
return TRUE;
}
/*! /*!
* Perform the ioctl operation requested by the client. * Perform the ioctl operation requested by the client.
* *
@@ -4098,6 +4176,8 @@ NvBool nvKmsIoctl(
ENTRY(NVKMS_IOCTL_ENABLE_VBLANK_SYNC_OBJECT, EnableVblankSyncObject), ENTRY(NVKMS_IOCTL_ENABLE_VBLANK_SYNC_OBJECT, EnableVblankSyncObject),
ENTRY(NVKMS_IOCTL_DISABLE_VBLANK_SYNC_OBJECT, DisableVblankSyncObject), ENTRY(NVKMS_IOCTL_DISABLE_VBLANK_SYNC_OBJECT, DisableVblankSyncObject),
ENTRY(NVKMS_IOCTL_NOTIFY_VBLANK, NotifyVblank), ENTRY(NVKMS_IOCTL_NOTIFY_VBLANK, NotifyVblank),
ENTRY(NVKMS_IOCTL_REGISTER_VBLANK_INTR_CALLBACK, RegisterVblankIntrCallback),
ENTRY(NVKMS_IOCTL_UNREGISTER_VBLANK_INTR_CALLBACK, UnregisterVblankIntrCallback),
}; };
struct NvKmsPerOpen *pOpen = pOpenVoid; struct NvKmsPerOpen *pOpen = pOpenVoid;

View File

@@ -115,6 +115,7 @@ SRCS_CXX += ../common/displayport/src/dp_timer.cpp
SRCS_CXX += ../common/displayport/src/dp_vrr.cpp SRCS_CXX += ../common/displayport/src/dp_vrr.cpp
SRCS_CXX += ../common/displayport/src/dp_wardatabase.cpp SRCS_CXX += ../common/displayport/src/dp_wardatabase.cpp
SRCS_CXX += ../common/displayport/src/dp_watermark.cpp SRCS_CXX += ../common/displayport/src/dp_watermark.cpp
SRCS_CXX += ../common/displayport/src/dp_qse.cpp
SRCS_CXX += ../common/displayport/src/dptestutil/dp_testmessage.cpp SRCS_CXX += ../common/displayport/src/dptestutil/dp_testmessage.cpp
SRCS += ../common/modeset/hdmipacket/nvhdmipkt.c SRCS += ../common/modeset/hdmipacket/nvhdmipkt.c
SRCS += ../common/modeset/hdmipacket/nvhdmipkt_0073.c SRCS += ../common/modeset/hdmipacket/nvhdmipkt_0073.c

View File

@@ -2481,6 +2481,66 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
{ /* [8] */ { /* [8] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSystemValidateSrm_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x73015eu,
/*paramSize=*/ sizeof(NV0073_CTRL_SYSTEM_VALIDATE_SRM_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSystemValidateSrm"
#endif
},
{ /* [9] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSystemGetSrmStatus_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x73015fu,
/*paramSize=*/ sizeof(NV0073_CTRL_SYSTEM_GET_SRM_STATUS_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSystemGetSrmStatus"
#endif
},
{ /* [10] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSystemHdcpRevocationCheck_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x730161u,
/*paramSize=*/ sizeof(NV0073_CTRL_SYSTEM_HDCP_REVOCATE_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSystemHdcpRevocationCheck"
#endif
},
{ /* [11] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSystemUpdateSrm_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x730162u,
/*paramSize=*/ sizeof(NV0073_CTRL_SYSTEM_UPDATE_SRM_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSystemUpdateSrm"
#endif
},
{ /* [12] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else #else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSystemGetBootDisplays_IMPL, /*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSystemGetBootDisplays_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
@@ -2493,7 +2553,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSystemGetBootDisplays" /*func=*/ "dispcmnCtrlCmdSystemGetBootDisplays"
#endif #endif
}, },
{ /* [9] */ { /* [13] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x0u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x0u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2508,7 +2568,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSystemGetHotplugUnplugState" /*func=*/ "dispcmnCtrlCmdSystemGetHotplugUnplugState"
#endif #endif
}, },
{ /* [10] */ { /* [14] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2523,7 +2583,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSystemArmLightweightSupervisor" /*func=*/ "dispcmnCtrlCmdSystemArmLightweightSupervisor"
#endif #endif
}, },
{ /* [11] */ { /* [15] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2538,7 +2598,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSystemConfigVrrPstateSwitch" /*func=*/ "dispcmnCtrlCmdSystemConfigVrrPstateSwitch"
#endif #endif
}, },
{ /* [12] */ { /* [16] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2553,7 +2613,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSystemQueryDisplayIdsWithMux" /*func=*/ "dispcmnCtrlCmdSystemQueryDisplayIdsWithMux"
#endif #endif
}, },
{ /* [13] */ { /* [17] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x4u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x4u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2568,7 +2628,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSystemAllocateDisplayBandwidth" /*func=*/ "dispcmnCtrlCmdSystemAllocateDisplayBandwidth"
#endif #endif
}, },
{ /* [14] */ { /* [18] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2583,7 +2643,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSystemGetHotplugEventConfig" /*func=*/ "dispcmnCtrlCmdSystemGetHotplugEventConfig"
#endif #endif
}, },
{ /* [15] */ { /* [19] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2598,7 +2658,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSystemSetHotplugEventConfig" /*func=*/ "dispcmnCtrlCmdSystemSetHotplugEventConfig"
#endif #endif
}, },
{ /* [16] */ { /* [20] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2613,7 +2673,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSystemCheckSidebandI2cSupport" /*func=*/ "dispcmnCtrlCmdSystemCheckSidebandI2cSupport"
#endif #endif
}, },
{ /* [17] */ { /* [21] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2628,7 +2688,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetI2cPortid" /*func=*/ "dispcmnCtrlCmdSpecificGetI2cPortid"
#endif #endif
}, },
{ /* [18] */ { /* [22] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x206u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x206u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2643,7 +2703,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetType" /*func=*/ "dispcmnCtrlCmdSpecificGetType"
#endif #endif
}, },
{ /* [19] */ { /* [23] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2658,7 +2718,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificFakeDevice" /*func=*/ "dispcmnCtrlCmdSpecificFakeDevice"
#endif #endif
}, },
{ /* [20] */ { /* [24] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2673,7 +2733,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetEdidV2" /*func=*/ "dispcmnCtrlCmdSpecificGetEdidV2"
#endif #endif
}, },
{ /* [21] */ { /* [25] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2688,7 +2748,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetEdidV2" /*func=*/ "dispcmnCtrlCmdSpecificSetEdidV2"
#endif #endif
}, },
{ /* [22] */ { /* [26] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2703,7 +2763,22 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetConnectorData" /*func=*/ "dispcmnCtrlCmdSpecificGetConnectorData"
#endif #endif
}, },
{ /* [23] */ { /* [27] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x730260u,
/*paramSize=*/ sizeof(NV0073_CTRL_SPECIFIC_GET_HDCP_REPEATER_INFO_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo"
#endif
},
{ /* [28] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2718,7 +2793,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetHdmiEnable" /*func=*/ "dispcmnCtrlCmdSpecificSetHdmiEnable"
#endif #endif
}, },
{ /* [24] */ { /* [29] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2733,7 +2808,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificCtrlHdmi" /*func=*/ "dispcmnCtrlCmdSpecificCtrlHdmi"
#endif #endif
}, },
{ /* [25] */ { /* [30] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2748,7 +2823,52 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetHdmiAudioMutestream" /*func=*/ "dispcmnCtrlCmdSpecificSetHdmiAudioMutestream"
#endif #endif
}, },
{ /* [26] */ { /* [31] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSpecificGetHdcpState_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x730280u,
/*paramSize=*/ sizeof(NV0073_CTRL_SPECIFIC_GET_HDCP_STATE_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSpecificGetHdcpState"
#endif
},
{ /* [32] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSpecificGetHdcpDiagnostics_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x730281u,
/*paramSize=*/ sizeof(NV0073_CTRL_SPECIFIC_GET_HDCP_DIAGNOSTICS_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSpecificGetHdcpDiagnostics"
#endif
},
{ /* [33] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSpecificHdcpCtrl_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x730282u,
/*paramSize=*/ sizeof(NV0073_CTRL_SPECIFIC_HDCP_CTRL_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSpecificHdcpCtrl"
#endif
},
{ /* [34] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2763,7 +2883,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetAllHeadMask" /*func=*/ "dispcmnCtrlCmdSpecificGetAllHeadMask"
#endif #endif
}, },
{ /* [27] */ { /* [35] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2778,7 +2898,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetOdPacket" /*func=*/ "dispcmnCtrlCmdSpecificSetOdPacket"
#endif #endif
}, },
{ /* [28] */ { /* [36] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2793,7 +2913,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetOdPacketCtrl" /*func=*/ "dispcmnCtrlCmdSpecificSetOdPacketCtrl"
#endif #endif
}, },
{ /* [29] */ { /* [37] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2808,7 +2928,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetPclkLimit" /*func=*/ "dispcmnCtrlCmdSpecificGetPclkLimit"
#endif #endif
}, },
{ /* [30] */ { /* [38] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x206u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x206u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2823,7 +2943,37 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificOrGetInfo" /*func=*/ "dispcmnCtrlCmdSpecificOrGetInfo"
#endif #endif
}, },
{ /* [31] */ { /* [39] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSpecificHdcpKsvListValidate_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x73028du,
/*paramSize=*/ sizeof(NV0073_CTRL_SPECIFIC_HDCP_KSVLIST_VALIDATE_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSpecificHdcpKsvListValidate"
#endif
},
{ /* [40] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdSpecificHdcpUpdate_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x73028eu,
/*paramSize=*/ sizeof(NV0073_CTRL_SPECIFIC_HDCP_UPDATE_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdSpecificHdcpUpdate"
#endif
},
{ /* [41] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2838,7 +2988,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetHdmiSinkCaps" /*func=*/ "dispcmnCtrlCmdSpecificSetHdmiSinkCaps"
#endif #endif
}, },
{ /* [32] */ { /* [42] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2853,7 +3003,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetMonitorPower" /*func=*/ "dispcmnCtrlCmdSpecificSetMonitorPower"
#endif #endif
}, },
{ /* [33] */ { /* [43] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2868,7 +3018,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetHdmiFrlLinkConfig" /*func=*/ "dispcmnCtrlCmdSpecificSetHdmiFrlLinkConfig"
#endif #endif
}, },
{ /* [34] */ { /* [44] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2883,7 +3033,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetRegionalCrcs" /*func=*/ "dispcmnCtrlCmdSpecificGetRegionalCrcs"
#endif #endif
}, },
{ /* [35] */ { /* [45] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2898,7 +3048,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificApplyEdidOverrideV2" /*func=*/ "dispcmnCtrlCmdSpecificApplyEdidOverrideV2"
#endif #endif
}, },
{ /* [36] */ { /* [46] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2913,7 +3063,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetHdmiGpuCaps" /*func=*/ "dispcmnCtrlCmdSpecificGetHdmiGpuCaps"
#endif #endif
}, },
{ /* [37] */ { /* [47] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2928,7 +3078,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetHdmiScdcData" /*func=*/ "dispcmnCtrlCmdSpecificGetHdmiScdcData"
#endif #endif
}, },
{ /* [38] */ { /* [48] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2943,7 +3093,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificIsDirectmodeDisplay" /*func=*/ "dispcmnCtrlCmdSpecificIsDirectmodeDisplay"
#endif #endif
}, },
{ /* [39] */ { /* [49] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2958,7 +3108,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetHdmiFrlCapacityComputation" /*func=*/ "dispcmnCtrlCmdSpecificSetHdmiFrlCapacityComputation"
#endif #endif
}, },
{ /* [40] */ { /* [50] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2973,7 +3123,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificSetSharedGenericPacket" /*func=*/ "dispcmnCtrlCmdSpecificSetSharedGenericPacket"
#endif #endif
}, },
{ /* [41] */ { /* [51] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -2988,7 +3138,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificAcquireSharedGenericPacket" /*func=*/ "dispcmnCtrlCmdSpecificAcquireSharedGenericPacket"
#endif #endif
}, },
{ /* [42] */ { /* [52] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3003,7 +3153,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificReleaseSharedGenericPacket" /*func=*/ "dispcmnCtrlCmdSpecificReleaseSharedGenericPacket"
#endif #endif
}, },
{ /* [43] */ { /* [53] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3018,7 +3168,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificDispI2cReadWrite" /*func=*/ "dispcmnCtrlCmdSpecificDispI2cReadWrite"
#endif #endif
}, },
{ /* [44] */ { /* [54] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3033,7 +3183,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificGetValidHeadWindowAssignment" /*func=*/ "dispcmnCtrlCmdSpecificGetValidHeadWindowAssignment"
#endif #endif
}, },
{ /* [45] */ { /* [55] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3048,7 +3198,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdSpecificDefaultAdaptivesyncDisplay" /*func=*/ "dispcmnCtrlCmdSpecificDefaultAdaptivesyncDisplay"
#endif #endif
}, },
{ /* [46] */ { /* [56] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x600u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x600u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3063,7 +3213,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdInternalGetHotplugUnplugState" /*func=*/ "dispcmnCtrlCmdInternalGetHotplugUnplugState"
#endif #endif
}, },
{ /* [47] */ { /* [57] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x212u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x212u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3078,7 +3228,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpGetInfo" /*func=*/ "dispcmnCtrlCmdDfpGetInfo"
#endif #endif
}, },
{ /* [48] */ { /* [58] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3093,7 +3243,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpGetDisplayportDongleInfo" /*func=*/ "dispcmnCtrlCmdDfpGetDisplayportDongleInfo"
#endif #endif
}, },
{ /* [49] */ { /* [59] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3108,7 +3258,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpSetEldAudioCaps" /*func=*/ "dispcmnCtrlCmdDfpSetEldAudioCaps"
#endif #endif
}, },
{ /* [50] */ { /* [60] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3123,7 +3273,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpUpdateDynamicDfpCache" /*func=*/ "dispcmnCtrlCmdDfpUpdateDynamicDfpCache"
#endif #endif
}, },
{ /* [51] */ { /* [61] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3138,7 +3288,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpSetAudioEnable" /*func=*/ "dispcmnCtrlCmdDfpSetAudioEnable"
#endif #endif
}, },
{ /* [52] */ { /* [62] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3153,7 +3303,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpAssignSor" /*func=*/ "dispcmnCtrlCmdDfpAssignSor"
#endif #endif
}, },
{ /* [53] */ { /* [63] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3168,7 +3318,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpGetPadlinkMask" /*func=*/ "dispcmnCtrlCmdDfpGetPadlinkMask"
#endif #endif
}, },
{ /* [54] */ { /* [64] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3183,7 +3333,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpConfigTwoHeadOneOr" /*func=*/ "dispcmnCtrlCmdDfpConfigTwoHeadOneOr"
#endif #endif
}, },
{ /* [55] */ { /* [65] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3198,7 +3348,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpDscCrcControl" /*func=*/ "dispcmnCtrlCmdDfpDscCrcControl"
#endif #endif
}, },
{ /* [56] */ { /* [66] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x200u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3213,7 +3363,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpInitMuxData" /*func=*/ "dispcmnCtrlCmdDfpInitMuxData"
#endif #endif
}, },
{ /* [57] */ { /* [67] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3228,7 +3378,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpGetDsiModeTiming" /*func=*/ "dispcmnCtrlCmdDfpGetDsiModeTiming"
#endif #endif
}, },
{ /* [58] */ { /* [68] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x206u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x206u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3243,7 +3393,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDfpGetFixedModeTiming" /*func=*/ "dispcmnCtrlCmdDfpGetFixedModeTiming"
#endif #endif
}, },
{ /* [59] */ { /* [69] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x8204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x8204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3258,7 +3408,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpAuxchCtrl" /*func=*/ "dispcmnCtrlCmdDpAuxchCtrl"
#endif #endif
}, },
{ /* [60] */ { /* [70] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3273,7 +3423,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpAuxchSetSema" /*func=*/ "dispcmnCtrlCmdDpAuxchSetSema"
#endif #endif
}, },
{ /* [61] */ { /* [71] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x8204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x8204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3288,7 +3438,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpCtrl" /*func=*/ "dispcmnCtrlCmdDpCtrl"
#endif #endif
}, },
{ /* [62] */ { /* [72] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3303,7 +3453,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpGetLaneData" /*func=*/ "dispcmnCtrlCmdDpGetLaneData"
#endif #endif
}, },
{ /* [63] */ { /* [73] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3318,7 +3468,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSetLaneData" /*func=*/ "dispcmnCtrlCmdDpSetLaneData"
#endif #endif
}, },
{ /* [64] */ { /* [74] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3333,7 +3483,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSetTestpattern" /*func=*/ "dispcmnCtrlCmdDpSetTestpattern"
#endif #endif
}, },
{ /* [65] */ { /* [75] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3348,7 +3498,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSetPreemphasisDrivecurrentPostcursor2Data" /*func=*/ "dispcmnCtrlCmdDpSetPreemphasisDrivecurrentPostcursor2Data"
#endif #endif
}, },
{ /* [66] */ { /* [76] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3363,7 +3513,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data" /*func=*/ "dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data"
#endif #endif
}, },
{ /* [67] */ { /* [77] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3378,7 +3528,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpMainLinkCtrl" /*func=*/ "dispcmnCtrlCmdDpMainLinkCtrl"
#endif #endif
}, },
{ /* [68] */ { /* [78] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3393,7 +3543,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSetAudioMuteStream" /*func=*/ "dispcmnCtrlCmdDpSetAudioMuteStream"
#endif #endif
}, },
{ /* [69] */ { /* [79] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3408,7 +3558,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpTopologyAllocateDisplayId" /*func=*/ "dispcmnCtrlCmdDpTopologyAllocateDisplayId"
#endif #endif
}, },
{ /* [70] */ { /* [80] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3423,7 +3573,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpTopologyFreeDisplayId" /*func=*/ "dispcmnCtrlCmdDpTopologyFreeDisplayId"
#endif #endif
}, },
{ /* [71] */ { /* [81] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3438,7 +3588,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpGetLinkConfig" /*func=*/ "dispcmnCtrlCmdDpGetLinkConfig"
#endif #endif
}, },
{ /* [72] */ { /* [82] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3453,7 +3603,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpGetEDPData" /*func=*/ "dispcmnCtrlCmdDpGetEDPData"
#endif #endif
}, },
{ /* [73] */ { /* [83] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3468,7 +3618,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpConfigStream" /*func=*/ "dispcmnCtrlCmdDpConfigStream"
#endif #endif
}, },
{ /* [74] */ { /* [84] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3483,7 +3633,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSetRateGov" /*func=*/ "dispcmnCtrlCmdDpSetRateGov"
#endif #endif
}, },
{ /* [75] */ { /* [85] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3498,7 +3648,22 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSetManualDisplayPort" /*func=*/ "dispcmnCtrlCmdDpSetManualDisplayPort"
#endif #endif
}, },
{ /* [76] */ { /* [86] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL,
#else
/*pFunc=*/ (void (*)(void)) dispcmnCtrlCmdDpSetEcf_IMPL,
#endif // NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*flags=*/ 0x204u,
/*accessRight=*/0x0u,
/*methodId=*/ 0x731366u,
/*paramSize=*/ sizeof(NV0073_CTRL_CMD_DP_SET_ECF_PARAMS),
/*pClassInfo=*/ &(__nvoc_class_def_DispCommon.classInfo),
#if NV_PRINTF_STRINGS_ALLOWED
/*func=*/ "dispcmnCtrlCmdDpSetEcf"
#endif
},
{ /* [87] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3513,7 +3678,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSendACT" /*func=*/ "dispcmnCtrlCmdDpSendACT"
#endif #endif
}, },
{ /* [77] */ { /* [88] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x206u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x206u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3528,7 +3693,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpGetCaps" /*func=*/ "dispcmnCtrlCmdDpGetCaps"
#endif #endif
}, },
{ /* [78] */ { /* [89] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x4u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x4u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3543,7 +3708,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpGenerateFakeInterrupt" /*func=*/ "dispcmnCtrlCmdDpGenerateFakeInterrupt"
#endif #endif
}, },
{ /* [79] */ { /* [90] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3558,7 +3723,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpConfigRadScratchReg" /*func=*/ "dispcmnCtrlCmdDpConfigRadScratchReg"
#endif #endif
}, },
{ /* [80] */ { /* [91] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3573,7 +3738,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpConfigSingleHeadMultiStream" /*func=*/ "dispcmnCtrlCmdDpConfigSingleHeadMultiStream"
#endif #endif
}, },
{ /* [81] */ { /* [92] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3588,7 +3753,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSetTriggerSelect" /*func=*/ "dispcmnCtrlCmdDpSetTriggerSelect"
#endif #endif
}, },
{ /* [82] */ { /* [93] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3603,7 +3768,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSetTriggerAll" /*func=*/ "dispcmnCtrlCmdDpSetTriggerAll"
#endif #endif
}, },
{ /* [83] */ { /* [94] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3618,7 +3783,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpGetAuxLogData" /*func=*/ "dispcmnCtrlCmdDpGetAuxLogData"
#endif #endif
}, },
{ /* [84] */ { /* [95] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3633,7 +3798,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpConfigIndexedLinkRates" /*func=*/ "dispcmnCtrlCmdDpConfigIndexedLinkRates"
#endif #endif
}, },
{ /* [85] */ { /* [96] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3648,7 +3813,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpSetStereoMSAProperties" /*func=*/ "dispcmnCtrlCmdDpSetStereoMSAProperties"
#endif #endif
}, },
{ /* [86] */ { /* [97] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3663,7 +3828,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpConfigureFec" /*func=*/ "dispcmnCtrlCmdDpConfigureFec"
#endif #endif
}, },
{ /* [87] */ { /* [98] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3678,7 +3843,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpConfigMacroPad" /*func=*/ "dispcmnCtrlCmdDpConfigMacroPad"
#endif #endif
}, },
{ /* [88] */ { /* [99] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3693,7 +3858,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpGetGenericInfoframe" /*func=*/ "dispcmnCtrlCmdDpGetGenericInfoframe"
#endif #endif
}, },
{ /* [89] */ { /* [100] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3708,7 +3873,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
/*func=*/ "dispcmnCtrlCmdDpGetMsaAttributes" /*func=*/ "dispcmnCtrlCmdDpGetMsaAttributes"
#endif #endif
}, },
{ /* [90] */ { /* [101] */
#if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
/*pFunc=*/ (void (*)(void)) NULL, /*pFunc=*/ (void (*)(void)) NULL,
#else #else
@@ -3728,7 +3893,7 @@ static const struct NVOC_EXPORTED_METHOD_DEF __nvoc_exported_method_def_DispComm
const struct NVOC_EXPORT_INFO __nvoc_export_info_DispCommon = const struct NVOC_EXPORT_INFO __nvoc_export_info_DispCommon =
{ {
/*numEntries=*/ 91, /*numEntries=*/ 102,
/*pExportEntries=*/ __nvoc_exported_method_def_DispCommon /*pExportEntries=*/ __nvoc_exported_method_def_DispCommon
}; };
@@ -3764,6 +3929,46 @@ __nvoc_ctor_DispCommon_exit:
static void __nvoc_init_funcTable_DispCommon_1(DispCommon *pThis) { static void __nvoc_init_funcTable_DispCommon_1(DispCommon *pThis) {
PORT_UNREFERENCED_VARIABLE(pThis); PORT_UNREFERENCED_VARIABLE(pThis);
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSpecificGetHdcpState__ = &dispcmnCtrlCmdSpecificGetHdcpState_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSpecificHdcpCtrl__ = &dispcmnCtrlCmdSpecificHdcpCtrl_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo__ = &dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSpecificGetHdcpDiagnostics__ = &dispcmnCtrlCmdSpecificGetHdcpDiagnostics_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSpecificHdcpKsvListValidate__ = &dispcmnCtrlCmdSpecificHdcpKsvListValidate_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSpecificHdcpUpdate__ = &dispcmnCtrlCmdSpecificHdcpUpdate_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSystemValidateSrm__ = &dispcmnCtrlCmdSystemValidateSrm_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSystemGetSrmStatus__ = &dispcmnCtrlCmdSystemGetSrmStatus_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSystemHdcpRevocationCheck__ = &dispcmnCtrlCmdSystemHdcpRevocationCheck_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSystemUpdateSrm__ = &dispcmnCtrlCmdSystemUpdateSrm_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u) #if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x210u)
pThis->__dispcmnCtrlCmdSystemGetCapsV2__ = &dispcmnCtrlCmdSystemGetCapsV2_IMPL; pThis->__dispcmnCtrlCmdSystemGetCapsV2__ = &dispcmnCtrlCmdSystemGetCapsV2_IMPL;
#endif #endif
@@ -4124,6 +4329,10 @@ static void __nvoc_init_funcTable_DispCommon_1(DispCommon *pThis) {
pThis->__dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data__ = &dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data_IMPL; pThis->__dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data__ = &dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data_IMPL;
#endif #endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdDpSetEcf__ = &dispcmnCtrlCmdDpSetEcf_IMPL;
#endif
#if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u) #if !NVOC_EXPORTED_METHOD_DISABLED_BY_FLAG(0x204u)
pThis->__dispcmnCtrlCmdSpecificGetRegionalCrcs__ = &dispcmnCtrlCmdSpecificGetRegionalCrcs_IMPL; pThis->__dispcmnCtrlCmdSpecificGetRegionalCrcs__ = &dispcmnCtrlCmdSpecificGetRegionalCrcs_IMPL;
#endif #endif

View File

@@ -7,7 +7,7 @@ extern "C" {
#endif #endif
/* /*
* SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-FileCopyrightText: Copyright (c) 1993-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
@@ -59,6 +59,9 @@ extern "C" {
#define DISPLAY_PRIVILEGED PRIVILEGED #define DISPLAY_PRIVILEGED PRIVILEGED
#include "ctrl/ctrl0073.h" #include "ctrl/ctrl0073.h"
#include "ctrl/ctrl0073/ctrl0073system.h"
#include "ctrl/ctrl0073/ctrl0073dp.h"
#include "ctrl/ctrl0073/ctrl0073specific.h"
#include "ctrl/ctrl5070/ctrl5070event.h" #include "ctrl/ctrl5070/ctrl5070event.h"
#include "ctrl/ctrl5070/ctrl5070or.h" #include "ctrl/ctrl5070/ctrl5070or.h"
#include "ctrl/ctrl5070/ctrl5070seq.h" #include "ctrl/ctrl5070/ctrl5070seq.h"
@@ -1301,6 +1304,16 @@ struct DispCommon {
struct Notifier *__nvoc_pbase_Notifier; struct Notifier *__nvoc_pbase_Notifier;
struct DisplayApi *__nvoc_pbase_DisplayApi; struct DisplayApi *__nvoc_pbase_DisplayApi;
struct DispCommon *__nvoc_pbase_DispCommon; struct DispCommon *__nvoc_pbase_DispCommon;
NV_STATUS (*__dispcmnCtrlCmdSpecificGetHdcpState__)(struct DispCommon *, NV0073_CTRL_SPECIFIC_GET_HDCP_STATE_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSpecificHdcpCtrl__)(struct DispCommon *, NV0073_CTRL_SPECIFIC_HDCP_CTRL_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo__)(struct DispCommon *, NV0073_CTRL_SPECIFIC_GET_HDCP_REPEATER_INFO_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSpecificGetHdcpDiagnostics__)(struct DispCommon *, NV0073_CTRL_SPECIFIC_GET_HDCP_DIAGNOSTICS_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSpecificHdcpKsvListValidate__)(struct DispCommon *, NV0073_CTRL_SPECIFIC_HDCP_KSVLIST_VALIDATE_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSpecificHdcpUpdate__)(struct DispCommon *, NV0073_CTRL_SPECIFIC_HDCP_UPDATE_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSystemValidateSrm__)(struct DispCommon *, NV0073_CTRL_SYSTEM_VALIDATE_SRM_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSystemGetSrmStatus__)(struct DispCommon *, NV0073_CTRL_SYSTEM_GET_SRM_STATUS_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSystemHdcpRevocationCheck__)(struct DispCommon *, NV0073_CTRL_SYSTEM_HDCP_REVOCATE_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSystemUpdateSrm__)(struct DispCommon *, NV0073_CTRL_SYSTEM_UPDATE_SRM_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSystemGetCapsV2__)(struct DispCommon *, NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS *); NV_STATUS (*__dispcmnCtrlCmdSystemGetCapsV2__)(struct DispCommon *, NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSystemGetNumHeads__)(struct DispCommon *, NV0073_CTRL_SYSTEM_GET_NUM_HEADS_PARAMS *); NV_STATUS (*__dispcmnCtrlCmdSystemGetNumHeads__)(struct DispCommon *, NV0073_CTRL_SYSTEM_GET_NUM_HEADS_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSystemGetScanline__)(struct DispCommon *, NV0073_CTRL_SYSTEM_GET_SCANLINE_PARAMS *); NV_STATUS (*__dispcmnCtrlCmdSystemGetScanline__)(struct DispCommon *, NV0073_CTRL_SYSTEM_GET_SCANLINE_PARAMS *);
@@ -1391,6 +1404,7 @@ struct DispCommon {
NV_STATUS (*__dispcmnCtrlCmdDpConfigMacroPad__)(struct DispCommon *, NV0073_CTRL_CMD_DP_CONFIG_MACRO_PAD_PARAMS *); NV_STATUS (*__dispcmnCtrlCmdDpConfigMacroPad__)(struct DispCommon *, NV0073_CTRL_CMD_DP_CONFIG_MACRO_PAD_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdDpSetPreemphasisDrivecurrentPostcursor2Data__)(struct DispCommon *, NV0073_CTRL_DP_SET_PREEMPHASIS_DRIVECURRENT_POSTCURSOR2_DATA_PARAMS *); NV_STATUS (*__dispcmnCtrlCmdDpSetPreemphasisDrivecurrentPostcursor2Data__)(struct DispCommon *, NV0073_CTRL_DP_SET_PREEMPHASIS_DRIVECURRENT_POSTCURSOR2_DATA_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data__)(struct DispCommon *, NV0073_CTRL_DP_GET_PREEMPHASIS_DRIVECURRENT_POSTCURSOR2_DATA_PARAMS *); NV_STATUS (*__dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data__)(struct DispCommon *, NV0073_CTRL_DP_GET_PREEMPHASIS_DRIVECURRENT_POSTCURSOR2_DATA_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdDpSetEcf__)(struct DispCommon *, NV0073_CTRL_CMD_DP_SET_ECF_PARAMS *);
NV_STATUS (*__dispcmnCtrlCmdSpecificGetRegionalCrcs__)(struct DispCommon *, NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS *); NV_STATUS (*__dispcmnCtrlCmdSpecificGetRegionalCrcs__)(struct DispCommon *, NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS *);
NvBool (*__dispcmnShareCallback__)(struct DispCommon *, struct RsClient *, struct RsResourceRef *, RS_SHARE_POLICY *); NvBool (*__dispcmnShareCallback__)(struct DispCommon *, struct RsClient *, struct RsResourceRef *, RS_SHARE_POLICY *);
NV_STATUS (*__dispcmnCheckMemInterUnmap__)(struct DispCommon *, NvBool); NV_STATUS (*__dispcmnCheckMemInterUnmap__)(struct DispCommon *, NvBool);
@@ -1450,6 +1464,16 @@ NV_STATUS __nvoc_objCreate_DispCommon(DispCommon**, Dynamic*, NvU32, struct CALL
#define __objCreate_DispCommon(ppNewObj, pParent, createFlags, arg_pCallContext, arg_pParams) \ #define __objCreate_DispCommon(ppNewObj, pParent, createFlags, arg_pCallContext, arg_pParams) \
__nvoc_objCreate_DispCommon((ppNewObj), staticCast((pParent), Dynamic), (createFlags), arg_pCallContext, arg_pParams) __nvoc_objCreate_DispCommon((ppNewObj), staticCast((pParent), Dynamic), (createFlags), arg_pCallContext, arg_pParams)
#define dispcmnCtrlCmdSpecificGetHdcpState(pDispCommon, pParams) dispcmnCtrlCmdSpecificGetHdcpState_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdSpecificHdcpCtrl(pDispCommon, pParams) dispcmnCtrlCmdSpecificHdcpCtrl_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo(pDispCommon, pParams) dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdSpecificGetHdcpDiagnostics(pDispCommon, pParams) dispcmnCtrlCmdSpecificGetHdcpDiagnostics_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdSpecificHdcpKsvListValidate(pDispCommon, pKsvListValidateParams) dispcmnCtrlCmdSpecificHdcpKsvListValidate_DISPATCH(pDispCommon, pKsvListValidateParams)
#define dispcmnCtrlCmdSpecificHdcpUpdate(pDispCommon, pHdcpUpdateParams) dispcmnCtrlCmdSpecificHdcpUpdate_DISPATCH(pDispCommon, pHdcpUpdateParams)
#define dispcmnCtrlCmdSystemValidateSrm(pDispCommon, pParams) dispcmnCtrlCmdSystemValidateSrm_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdSystemGetSrmStatus(pDispCommon, pParams) dispcmnCtrlCmdSystemGetSrmStatus_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdSystemHdcpRevocationCheck(pDispCommon, pParams) dispcmnCtrlCmdSystemHdcpRevocationCheck_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdSystemUpdateSrm(pDispCommon, pParams) dispcmnCtrlCmdSystemUpdateSrm_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdSystemGetCapsV2(pDispCommon, pCapsParams) dispcmnCtrlCmdSystemGetCapsV2_DISPATCH(pDispCommon, pCapsParams) #define dispcmnCtrlCmdSystemGetCapsV2(pDispCommon, pCapsParams) dispcmnCtrlCmdSystemGetCapsV2_DISPATCH(pDispCommon, pCapsParams)
#define dispcmnCtrlCmdSystemGetNumHeads(pDispCommon, pNumHeadsParams) dispcmnCtrlCmdSystemGetNumHeads_DISPATCH(pDispCommon, pNumHeadsParams) #define dispcmnCtrlCmdSystemGetNumHeads(pDispCommon, pNumHeadsParams) dispcmnCtrlCmdSystemGetNumHeads_DISPATCH(pDispCommon, pNumHeadsParams)
#define dispcmnCtrlCmdSystemGetScanline(pDispCommon, pScanlineParams) dispcmnCtrlCmdSystemGetScanline_DISPATCH(pDispCommon, pScanlineParams) #define dispcmnCtrlCmdSystemGetScanline(pDispCommon, pScanlineParams) dispcmnCtrlCmdSystemGetScanline_DISPATCH(pDispCommon, pScanlineParams)
@@ -1540,6 +1564,7 @@ NV_STATUS __nvoc_objCreate_DispCommon(DispCommon**, Dynamic*, NvU32, struct CALL
#define dispcmnCtrlCmdDpConfigMacroPad(pDispCommon, pParams) dispcmnCtrlCmdDpConfigMacroPad_DISPATCH(pDispCommon, pParams) #define dispcmnCtrlCmdDpConfigMacroPad(pDispCommon, pParams) dispcmnCtrlCmdDpConfigMacroPad_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdDpSetPreemphasisDrivecurrentPostcursor2Data(pDispCommon, pParams) dispcmnCtrlCmdDpSetPreemphasisDrivecurrentPostcursor2Data_DISPATCH(pDispCommon, pParams) #define dispcmnCtrlCmdDpSetPreemphasisDrivecurrentPostcursor2Data(pDispCommon, pParams) dispcmnCtrlCmdDpSetPreemphasisDrivecurrentPostcursor2Data_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data(pDispCommon, pParams) dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data_DISPATCH(pDispCommon, pParams) #define dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data(pDispCommon, pParams) dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data_DISPATCH(pDispCommon, pParams)
#define dispcmnCtrlCmdDpSetEcf(pDispCommon, pCtrlEcfParams) dispcmnCtrlCmdDpSetEcf_DISPATCH(pDispCommon, pCtrlEcfParams)
#define dispcmnCtrlCmdSpecificGetRegionalCrcs(pDispCommon, pParams) dispcmnCtrlCmdSpecificGetRegionalCrcs_DISPATCH(pDispCommon, pParams) #define dispcmnCtrlCmdSpecificGetRegionalCrcs(pDispCommon, pParams) dispcmnCtrlCmdSpecificGetRegionalCrcs_DISPATCH(pDispCommon, pParams)
#define dispcmnShareCallback(pResource, pInvokingClient, pParentRef, pSharePolicy) dispcmnShareCallback_DISPATCH(pResource, pInvokingClient, pParentRef, pSharePolicy) #define dispcmnShareCallback(pResource, pInvokingClient, pParentRef, pSharePolicy) dispcmnShareCallback_DISPATCH(pResource, pInvokingClient, pParentRef, pSharePolicy)
#define dispcmnCheckMemInterUnmap(pRmResource, bSubdeviceHandleProvided) dispcmnCheckMemInterUnmap_DISPATCH(pRmResource, bSubdeviceHandleProvided) #define dispcmnCheckMemInterUnmap(pRmResource, bSubdeviceHandleProvided) dispcmnCheckMemInterUnmap_DISPATCH(pRmResource, bSubdeviceHandleProvided)
@@ -1567,6 +1592,66 @@ NV_STATUS __nvoc_objCreate_DispCommon(DispCommon**, Dynamic*, NvU32, struct CALL
#define dispcmnGetNotificationShare(pNotifier) dispcmnGetNotificationShare_DISPATCH(pNotifier) #define dispcmnGetNotificationShare(pNotifier) dispcmnGetNotificationShare_DISPATCH(pNotifier)
#define dispcmnMap(pResource, pCallContext, pParams, pCpuMapping) dispcmnMap_DISPATCH(pResource, pCallContext, pParams, pCpuMapping) #define dispcmnMap(pResource, pCallContext, pParams, pCpuMapping) dispcmnMap_DISPATCH(pResource, pCallContext, pParams, pCpuMapping)
#define dispcmnGetOrAllocNotifShare(pNotifier, hNotifierClient, hNotifierResource, ppNotifShare) dispcmnGetOrAllocNotifShare_DISPATCH(pNotifier, hNotifierClient, hNotifierResource, ppNotifShare) #define dispcmnGetOrAllocNotifShare(pNotifier, hNotifierClient, hNotifierResource, ppNotifShare) dispcmnGetOrAllocNotifShare_DISPATCH(pNotifier, hNotifierClient, hNotifierResource, ppNotifShare)
NV_STATUS dispcmnCtrlCmdSpecificGetHdcpState_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_GET_HDCP_STATE_PARAMS *pParams);
static inline NV_STATUS dispcmnCtrlCmdSpecificGetHdcpState_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_GET_HDCP_STATE_PARAMS *pParams) {
return pDispCommon->__dispcmnCtrlCmdSpecificGetHdcpState__(pDispCommon, pParams);
}
NV_STATUS dispcmnCtrlCmdSpecificHdcpCtrl_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_HDCP_CTRL_PARAMS *pParams);
static inline NV_STATUS dispcmnCtrlCmdSpecificHdcpCtrl_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_HDCP_CTRL_PARAMS *pParams) {
return pDispCommon->__dispcmnCtrlCmdSpecificHdcpCtrl__(pDispCommon, pParams);
}
NV_STATUS dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_GET_HDCP_REPEATER_INFO_PARAMS *pParams);
static inline NV_STATUS dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_GET_HDCP_REPEATER_INFO_PARAMS *pParams) {
return pDispCommon->__dispcmnCtrlCmdSpecificGetHdcpRepeaterInfo__(pDispCommon, pParams);
}
NV_STATUS dispcmnCtrlCmdSpecificGetHdcpDiagnostics_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_GET_HDCP_DIAGNOSTICS_PARAMS *pParams);
static inline NV_STATUS dispcmnCtrlCmdSpecificGetHdcpDiagnostics_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_GET_HDCP_DIAGNOSTICS_PARAMS *pParams) {
return pDispCommon->__dispcmnCtrlCmdSpecificGetHdcpDiagnostics__(pDispCommon, pParams);
}
NV_STATUS dispcmnCtrlCmdSpecificHdcpKsvListValidate_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_HDCP_KSVLIST_VALIDATE_PARAMS *pKsvListValidateParams);
static inline NV_STATUS dispcmnCtrlCmdSpecificHdcpKsvListValidate_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_HDCP_KSVLIST_VALIDATE_PARAMS *pKsvListValidateParams) {
return pDispCommon->__dispcmnCtrlCmdSpecificHdcpKsvListValidate__(pDispCommon, pKsvListValidateParams);
}
NV_STATUS dispcmnCtrlCmdSpecificHdcpUpdate_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_HDCP_UPDATE_PARAMS *pHdcpUpdateParams);
static inline NV_STATUS dispcmnCtrlCmdSpecificHdcpUpdate_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SPECIFIC_HDCP_UPDATE_PARAMS *pHdcpUpdateParams) {
return pDispCommon->__dispcmnCtrlCmdSpecificHdcpUpdate__(pDispCommon, pHdcpUpdateParams);
}
NV_STATUS dispcmnCtrlCmdSystemValidateSrm_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_VALIDATE_SRM_PARAMS *pParams);
static inline NV_STATUS dispcmnCtrlCmdSystemValidateSrm_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_VALIDATE_SRM_PARAMS *pParams) {
return pDispCommon->__dispcmnCtrlCmdSystemValidateSrm__(pDispCommon, pParams);
}
NV_STATUS dispcmnCtrlCmdSystemGetSrmStatus_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_GET_SRM_STATUS_PARAMS *pParams);
static inline NV_STATUS dispcmnCtrlCmdSystemGetSrmStatus_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_GET_SRM_STATUS_PARAMS *pParams) {
return pDispCommon->__dispcmnCtrlCmdSystemGetSrmStatus__(pDispCommon, pParams);
}
NV_STATUS dispcmnCtrlCmdSystemHdcpRevocationCheck_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_HDCP_REVOCATE_PARAMS *pParams);
static inline NV_STATUS dispcmnCtrlCmdSystemHdcpRevocationCheck_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_HDCP_REVOCATE_PARAMS *pParams) {
return pDispCommon->__dispcmnCtrlCmdSystemHdcpRevocationCheck__(pDispCommon, pParams);
}
NV_STATUS dispcmnCtrlCmdSystemUpdateSrm_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_UPDATE_SRM_PARAMS *pParams);
static inline NV_STATUS dispcmnCtrlCmdSystemUpdateSrm_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_UPDATE_SRM_PARAMS *pParams) {
return pDispCommon->__dispcmnCtrlCmdSystemUpdateSrm__(pDispCommon, pParams);
}
NV_STATUS dispcmnCtrlCmdSystemGetCapsV2_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS *pCapsParams); NV_STATUS dispcmnCtrlCmdSystemGetCapsV2_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS *pCapsParams);
static inline NV_STATUS dispcmnCtrlCmdSystemGetCapsV2_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS *pCapsParams) { static inline NV_STATUS dispcmnCtrlCmdSystemGetCapsV2_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS *pCapsParams) {
@@ -2107,6 +2192,12 @@ static inline NV_STATUS dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Dat
return pDispCommon->__dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data__(pDispCommon, pParams); return pDispCommon->__dispcmnCtrlCmdDpGetPreemphasisDrivecurrentPostcursor2Data__(pDispCommon, pParams);
} }
NV_STATUS dispcmnCtrlCmdDpSetEcf_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_CMD_DP_SET_ECF_PARAMS *pCtrlEcfParams);
static inline NV_STATUS dispcmnCtrlCmdDpSetEcf_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_CMD_DP_SET_ECF_PARAMS *pCtrlEcfParams) {
return pDispCommon->__dispcmnCtrlCmdDpSetEcf__(pDispCommon, pCtrlEcfParams);
}
NV_STATUS dispcmnCtrlCmdSpecificGetRegionalCrcs_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS *pParams); NV_STATUS dispcmnCtrlCmdSpecificGetRegionalCrcs_IMPL(struct DispCommon *pDispCommon, NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS *pParams);
static inline NV_STATUS dispcmnCtrlCmdSpecificGetRegionalCrcs_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS *pParams) { static inline NV_STATUS dispcmnCtrlCmdSpecificGetRegionalCrcs_DISPATCH(struct DispCommon *pDispCommon, NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS *pParams) {

View File

@@ -334,7 +334,7 @@ void dceclientHandleAsyncRpcCallback
NV_STATUS nvStatus = NV_OK; NV_STATUS nvStatus = NV_OK;
// Get the notification list that contains this event. // Get the notification list that contains this event.
NV_ASSERT(CliGetEventInfo(rpc_params->hClient, NV_CHECK_OR_RETURN_VOID(LEVEL_ERROR, CliGetEventInfo(rpc_params->hClient,
rpc_params->hEvent, &pEvent)); rpc_params->hEvent, &pEvent));
if (pEvent->pNotifierShare != NULL) if (pEvent->pNotifierShare != NULL)