sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget6/translations/zh_CN/gpu/amdgpu/display/display-managermodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/zh_TW/gpu/amdgpu/display/display-managermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/it_IT/gpu/amdgpu/display/display-managermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/ja_JP/gpu/amdgpu/display/display-managermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/ko_KR/gpu/amdgpu/display/display-managermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/pt_BR/gpu/amdgpu/display/display-managermodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget6/translations/sp_SP/gpu/amdgpu/display/display-managermodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hAMDgpu Display Managerh]hAMDgpu Display Manager}(hhhhhNhNubah}(h]h ]h"]h$]h&]refidid1uh1hhhhhhP/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager.rsthKubhtopic)}(hTable of Contents h](h)}(hTable of Contentsh]hTable of Contents}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh bullet_list)}(hhh]h list_item)}(hhh](h paragraph)}(hhh]h reference)}(hhh]hAMDgpu Display Manager}(hhhhhNhNubah}(h]hah ]h"]h$]h&]refidamdgpu-display-manageruh1hhhubah}(h]h ]h"]h$]h&]uh1hhhubh)}(hhh](h)}(hhh]h)}(hhh]h)}(hhh]h Lifecycle}(hjhhhNhNubah}(h]id2ah ]h"]h$]h&]refid lifecycleuh1hhj ubah}(h]h ]h"]h$]h&]uh1hhj ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]h Interrupts}(hj2hhhNhNubah}(h]id3ah ]h"]h$]h&]refid interruptsuh1hhj/ubah}(h]h ]h"]h$]h&]uh1hhj,ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]hAtomic Implementation}(hjThhhNhNubah}(h]id4ah ]h"]h$]h&]refidatomic-implementationuh1hhjQubah}(h]h ]h"]h$]h&]uh1hhjNubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh](h)}(hhh]h)}(hhh]hColor Management Properties}(hjvhhhNhNubah}(h]id5ah ]h"]h$]h&]refidcolor-management-propertiesuh1hhjsubah}(h]h ]h"]h$]h&]uh1hhjpubh)}(hhh](h)}(hhh]h)}(hhh]h)}(hhh]hdrm_crtc Properties}(hjhhhNhNubah}(h]id6ah ]h"]h$]h&]refiddrm-crtc-propertiesuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]h)AMD Private Color Management on drm_plane}(hjhhhNhNubah}(h]id7ah ]h"]h$]h&]refid)amd-private-color-management-on-drm-planeuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]hAMD plane color pipeline}(hjhhhNhNubah}(h]id8ah ]h"]h$]h&]refidamd-plane-color-pipelineuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]h-DC Color Capabilities between DCN generations}(hjhhhNhNubah}(h]id9ah ]h"]h$]h&]refid-dc-color-capabilities-between-dcn-generationsuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhjpubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh](h)}(hhh]h)}(hhh]hBlend Mode Properties}(hj)hhhNhNubah}(h]id10ah ]h"]h$]h&]refidblend-mode-propertiesuh1hhj&ubah}(h]h ]h"]h$]h&]uh1hhj#ubh)}(hhh]h)}(hhh]h)}(hhh]h)}(hhh]hBlend configuration flow}(hjHhhhNhNubah}(h]id11ah ]h"]h$]h&]refidblend-configuration-flowuh1hhjEubah}(h]h ]h"]h$]h&]uh1hhjBubah}(h]h ]h"]h$]h&]uh1hhj?ubah}(h]h ]h"]h$]h&]uh1hhj#ubeh}(h]h ]h"]h$]h&]uh1hhjubh)}(hhh]h)}(hhh]h)}(hhh]hDisplay Properties}(hjvhhhNhNubah}(h]id12ah ]h"]h$]h&]refiddisplay-propertiesuh1hhjsubah}(h]h ]h"]h$]h&]uh1hhjpubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubeh}(h]table-of-contentsah ]contentsah"]table of contentsah$]h&]uh1hhhhKhhhhubh)}(hThe AMDgpu display manager, **amdgpu_dm** (or even simpler, **dm**) sits between DRM and DC. It acts as a liaison, converting DRM requests into DC requests, and DC responses into DRM responses.h](hThe AMDgpu display manager, }(hjhhhNhNubhstrong)}(h **amdgpu_dm**h]h amdgpu_dm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh (or even simpler, }(hjhhhNhNubj)}(h**dm**h]hdm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh) sits between DRM and DC. It acts as a liaison, converting DRM requests into DC requests, and DC responses into DRM responses.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:8: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chKxhhhhubh)}(h_The root control structure is :c:type:`struct amdgpu_display_manager `.h](hThe root control structure is }(hjhhhNhNubh)}(h@:c:type:`struct amdgpu_display_manager `h]hliteral)}(hjh]hstruct amdgpu_display_manager}(hjhhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdoc"gpu/amdgpu/display/display-manager refdomainjreftypetype refexplicitrefwarn reftargetamdgpu_display_manageruh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:8: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chK|hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK|hhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singledm_compressor_info (C struct)c.dm_compressor_infohNtauh1jhhhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhNubhdesc)}(hhh](hdesc_signature)}(hdm_compressor_infoh]hdesc_signature_line)}(hstruct dm_compressor_infoh](hdesc_sig_keyword)}(hstructh]hstruct}(hj?hhhNhNubah}(h]h ]kah"]h$]h&]uh1j=hj9hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKubhdesc_sig_space)}(h h]h }(hjQhhhNhNubah}(h]h ]wah"]h$]h&]uh1jOhj9hhhjNhKubh desc_name)}(hdm_compressor_infoh]h desc_sig_name)}(hj5h]hdm_compressor_info}(hjhhhhNhNubah}(h]h ]nah"]h$]h&]uh1jfhjbubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1j`hj9hhhjNhKubeh}(h]h ]h"]h$]h&]j~j add_permalinkuh1j7sphinx_line_type declaratorhj3hhhjNhKubah}(h]j)ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j1hjNhKhj.hhubh desc_content)}(hhh]h)}(h,Buffer info used by frame buffer compressionh]h,Buffer info used by frame buffer compression}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKchjhhubah}(h]h ]h"]h$]h&]uh1jhj.hhhjNhKubeh}(h]h ](jstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1j,hhhhhj+hNubh container)}(h**Definition**:: struct dm_compressor_info { void *cpu_addr; struct amdgpu_bo *bo_ptr; uint64_t gpu_addr; }; **Members** ``cpu_addr`` MMIO cpu addr ``bo_ptr`` Pointer to the buffer object ``gpu_addr`` MMIO gpu addrh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKghjubh literal_block)}(hgstruct dm_compressor_info { void *cpu_addr; struct amdgpu_bo *bo_ptr; uint64_t gpu_addr; };h]hgstruct dm_compressor_info { void *cpu_addr; struct amdgpu_bo *bo_ptr; uint64_t gpu_addr; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKihjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKohjubhdefinition_list)}(hhh](hdefinition_list_item)}(h``cpu_addr`` MMIO cpu addr h](hterm)}(h ``cpu_addr``h]j)}(hjh]hcpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKehjubh definition)}(hhh]h)}(h MMIO cpu addrh]h MMIO cpu addr}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKehj.ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj+hKehj ubj )}(h(``bo_ptr`` Pointer to the buffer object h](j)}(h ``bo_ptr``h]j)}(hjQh]hbo_ptr}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKfhjKubj-)}(hhh]h)}(hPointer to the buffer objecth]hPointer to the buffer object}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhKfhjgubah}(h]h ]h"]h$]h&]uh1j,hjKubeh}(h]h ]h"]h$]h&]uh1j hjfhKfhj ubj )}(h``gpu_addr`` MMIO gpu addrh](j)}(h ``gpu_addr``h]j)}(hjh]hgpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKfhjubj-)}(hhh]h)}(h MMIO gpu addrh]h MMIO gpu addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKghjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKfhj ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j' dm_boot_time_crc_info (C struct)c.dm_boot_time_crc_infohNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hdm_boot_time_crc_infoh]j8)}(hstruct dm_boot_time_crc_infoh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKmubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhKmubja)}(hdm_boot_time_crc_infoh]jg)}(hjh]hdm_boot_time_crc_info}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhKmubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhKmubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhKmhjhhubj)}(hhh]h)}(h!Buffer info used by boot time CRCh]h!Buffer info used by boot time CRC}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKohj#hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKmubeh}(h]h ](jstructeh"]h$]h&]jjjj>jj>jjjuh1j,hhhhhj+hNubj)}(hX.**Definition**:: struct dm_boot_time_crc_info { void *cpu_addr; struct amdgpu_bo *bo_ptr; uint64_t gpu_addr; uint32_t size; }; **Members** ``cpu_addr`` MMIO cpu addr ``bo_ptr`` Pointer to the buffer object ``gpu_addr`` MMIO gpu addr ``size`` Size of the bufferh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubh:}(hjFhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKshjBubj)}(h}struct dm_boot_time_crc_info { void *cpu_addr; struct amdgpu_bo *bo_ptr; uint64_t gpu_addr; uint32_t size; };h]h}struct dm_boot_time_crc_info { void *cpu_addr; struct amdgpu_bo *bo_ptr; uint64_t gpu_addr; uint32_t size; };}hjcsbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKuhjBubh)}(h **Members**h]j)}(hjth]hMembers}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhK|hjBubj)}(hhh](j )}(h``cpu_addr`` MMIO cpu addr h](j)}(h ``cpu_addr``h]j)}(hjh]hcpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKqhjubj-)}(hhh]h)}(h MMIO cpu addrh]h MMIO cpu addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKqhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKqhjubj )}(h(``bo_ptr`` Pointer to the buffer object h](j)}(h ``bo_ptr``h]j)}(hjh]hbo_ptr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKrhjubj-)}(hhh]h)}(hPointer to the buffer objecth]hPointer to the buffer object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKrhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKrhjubj )}(h``gpu_addr`` MMIO gpu addr h](j)}(h ``gpu_addr``h]j)}(hjh]hgpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKshjubj-)}(hhh]h)}(h MMIO gpu addrh]h MMIO gpu addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKshjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKshjubj )}(h``size`` Size of the bufferh](j)}(h``size``h]j)}(hj>h]hsize}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKshj8ubj-)}(hhh]h)}(hSize of the bufferh]hSize of the buffer}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKthjTubah}(h]h ]h"]h$]h&]uh1j,hj8ubeh}(h]h ]h"]h$]h&]uh1j hjShKshjubeh}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dmub_hpd_work (C struct)c.dmub_hpd_workhNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(h dmub_hpd_workh]j8)}(hstruct dmub_hpd_workh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKzubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhKzubja)}(h dmub_hpd_workh]jg)}(hjh]h dmub_hpd_work}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhKzubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhKzubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhKzhjhhubj)}(hhh]h)}(h5Handle time consuming work in low priority outbox IRQh]h5Handle time consuming work in low priority outbox IRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKzubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j,hhhhhj+hNubj)}(hXc**Definition**:: struct dmub_hpd_work { struct work_struct handle_hpd_work; struct dmub_notification *dmub_notify; struct amdgpu_device *adev; }; **Members** ``handle_hpd_work`` Work to be executed in a separate thread to handle hpd_low_irq ``dmub_notify`` notification for callback function ``adev`` amdgpu_device pointerh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj)}(hstruct dmub_hpd_work { struct work_struct handle_hpd_work; struct dmub_notification *dmub_notify; struct amdgpu_device *adev; };h]hstruct dmub_hpd_work { struct work_struct handle_hpd_work; struct dmub_notification *dmub_notify; struct amdgpu_device *adev; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubh)}(h **Members**h]j)}(hj(h]hMembers}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj)}(hhh](j )}(hS``handle_hpd_work`` Work to be executed in a separate thread to handle hpd_low_irq h](j)}(h``handle_hpd_work``h]j)}(hjGh]hhandle_hpd_work}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjAubj-)}(hhh]h)}(h>Work to be executed in a separate thread to handle hpd_low_irqh]h>Work to be executed in a separate thread to handle hpd_low_irq}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hKhj]ubah}(h]h ]h"]h$]h&]uh1j,hjAubeh}(h]h ]h"]h$]h&]uh1j hj\hKhj>ubj )}(h3``dmub_notify`` notification for callback function h](j)}(h``dmub_notify``h]j)}(hjh]h dmub_notify}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjzubj-)}(hhh]h)}(h"notification for callback functionh]h"notification for callback function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjzubeh}(h]h ]h"]h$]h&]uh1j hjhKhj>ubj )}(h``adev`` amdgpu_device pointerh](j)}(h``adev``h]j)}(hjh]hadev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhj>ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'vblank_control_work (C struct)c.vblank_control_workhNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hvblank_control_workh]j8)}(hstruct vblank_control_workh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKubjP)}(h h]h }(hj!hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhj hKubja)}(hvblank_control_workh]jg)}(hj h]hvblank_control_work}(hj3hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj/ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhj hKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj hhhj hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hj hKhjhhubj)}(hhh]h)}(hWork data for vblank controlh]hWork data for vblank control}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjRhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hKubeh}(h]h ](jstructeh"]h$]h&]jjjjmjjmjjjuh1j,hhhhhj+hNubj)}(hX**Definition**:: struct vblank_control_work { struct work_struct work; struct amdgpu_display_manager *dm; struct amdgpu_crtc *acrtc; struct dc_stream_state *stream; bool enable; }; **Members** ``work`` Kernel work data for the work event ``dm`` amdgpu display manager device ``acrtc`` amdgpu CRTC instance for which the event has occurred ``stream`` DC stream for which the event has occurred ``enable`` true if enabling vblankh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubh:}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjqubj)}(hstruct vblank_control_work { struct work_struct work; struct amdgpu_display_manager *dm; struct amdgpu_crtc *acrtc; struct dc_stream_state *stream; bool enable; };h]hstruct vblank_control_work { struct work_struct work; struct amdgpu_display_manager *dm; struct amdgpu_crtc *acrtc; struct dc_stream_state *stream; bool enable; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjqubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjqubj)}(hhh](j )}(h-``work`` Kernel work data for the work event h](j)}(h``work``h]j)}(hjh]hwork}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(h#Kernel work data for the work eventh]h#Kernel work data for the work event}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubj )}(h%``dm`` amdgpu display manager device h](j)}(h``dm``h]j)}(hjh]hdm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(hamdgpu display manager deviceh]hamdgpu display manager device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj hKhjubj )}(h@``acrtc`` amdgpu CRTC instance for which the event has occurred h](j)}(h ``acrtc``h]j)}(hj4 h]hacrtc}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2 ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj. ubj-)}(hhh]h)}(h5amdgpu CRTC instance for which the event has occurredh]h5amdgpu CRTC instance for which the event has occurred}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI hKhjJ ubah}(h]h ]h"]h$]h&]uh1j,hj. ubeh}(h]h ]h"]h$]h&]uh1j hjI hKhjubj )}(h6``stream`` DC stream for which the event has occurred h](j)}(h ``stream``h]j)}(hjm h]hstream}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjg ubj-)}(hhh]h)}(h*DC stream for which the event has occurredh]h*DC stream for which the event has occurred}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j,hjg ubeh}(h]h ]h"]h$]h&]uh1j hj hKhjubj )}(h"``enable`` true if enabling vblankh](j)}(h ``enable``h]j)}(hj h]henable}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj-)}(hhh]h)}(htrue if enabling vblankh]htrue if enabling vblank}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhjubeh}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'idle_workqueue (C struct)c.idle_workqueuehNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hidle_workqueueh]j8)}(hstruct idle_workqueueh](j>)}(hjAh]hstruct}(hj hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKubjP)}(h h]h }(hj hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj hhhj hKubja)}(hidle_workqueueh]jg)}(hj h]hidle_workqueue}(hj hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj hhhj hKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j1hj hKhj hhubj)}(hhh]h)}(h%Work data for periodic action in idleh]h%Work data for periodic action in idle}(hjB hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj? hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](jstructeh"]h$]h&]jjjjZ jjZ jjjuh1j,hhhhhj+hNubj)}(hX_**Definition**:: struct idle_workqueue { struct work_struct work; struct amdgpu_display_manager *dm; bool enable; bool running; }; **Members** ``work`` Kernel work data for the work event ``dm`` amdgpu display manager device ``enable`` true if idle worker is enabled ``running`` true if idle worker is runningh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb ubh:}(hjb hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj^ ubj)}(hstruct idle_workqueue { struct work_struct work; struct amdgpu_display_manager *dm; bool enable; bool running; };h]hstruct idle_workqueue { struct work_struct work; struct amdgpu_display_manager *dm; bool enable; bool running; };}hj sbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj^ ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj^ ubj)}(hhh](j )}(h-``work`` Kernel work data for the work event h](j)}(h``work``h]j)}(hj h]hwork}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj-)}(hhh]h)}(h#Kernel work data for the work eventh]h#Kernel work data for the work event}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubj )}(h%``dm`` amdgpu display manager device h](j)}(h``dm``h]j)}(hj h]hdm}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj-)}(hhh]h)}(hamdgpu display manager deviceh]hamdgpu display manager device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubj )}(h*``enable`` true if idle worker is enabled h](j)}(h ``enable``h]j)}(hj! h]henable}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj-)}(hhh]h)}(htrue if idle worker is enabledh]htrue if idle worker is enabled}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6 hKhj7 ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj6 hKhj ubj )}(h*``running`` true if idle worker is runningh](j)}(h ``running``h]j)}(hjZ h]hrunning}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjT ubj-)}(hhh]h)}(htrue if idle worker is runningh]htrue if idle worker is running}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjp ubah}(h]h ]h"]h$]h&]uh1j,hjT ubeh}(h]h ]h"]h$]h&]uh1j hjo hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj^ ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'vupdate_offload_work (C struct)c.vupdate_offload_workhNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hvupdate_offload_workh]j8)}(hstruct vupdate_offload_workh](j>)}(hjAh]hstruct}(hj hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKubjP)}(h h]h }(hj hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj hhhj hKubja)}(hvupdate_offload_workh]jg)}(hj h]hvupdate_offload_work}(hj hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj hhhj hKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j1hj hKhj hhubj)}(hhh]h)}(h2Work data for offloading task from vupdate handlerh]h2Work data for offloading task from vupdate handler}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](jstructeh"]h$]h&]jjjj jj jjjuh1j,hhhhhj+hNubj)}(hX**Definition**:: struct vupdate_offload_work { struct work_struct work; struct amdgpu_device *adev; struct dc_stream_state *stream; struct dc_crtc_timing_adjust *adjust; }; **Members** ``work`` Kernel work data for the work event ``adev`` amdgpu_device back pointer ``stream`` DC stream associated with the crtc ``adjust`` DC CRTC timing adjust to be applied to the crtch](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj)}(hstruct vupdate_offload_work { struct work_struct work; struct amdgpu_device *adev; struct dc_stream_state *stream; struct dc_crtc_timing_adjust *adjust; };h]hstruct vupdate_offload_work { struct work_struct work; struct amdgpu_device *adev; struct dc_stream_state *stream; struct dc_crtc_timing_adjust *adjust; };}hj3 sbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubh)}(h **Members**h]j)}(hjD h]hMembers}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj)}(hhh](j )}(h-``work`` Kernel work data for the work event h](j)}(h``work``h]j)}(hjc h]hwork}(hje hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj] ubj-)}(hhh]h)}(h#Kernel work data for the work eventh]h#Kernel work data for the work event}(hj| hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjx hKhjy ubah}(h]h ]h"]h$]h&]uh1j,hj] ubeh}(h]h ]h"]h$]h&]uh1j hjx hKhjZ ubj )}(h$``adev`` amdgpu_device back pointer h](j)}(h``adev``h]j)}(hj h]hadev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj-)}(hhh]h)}(hamdgpu_device back pointerh]hamdgpu_device back pointer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhjZ ubj )}(h.``stream`` DC stream associated with the crtc h](j)}(h ``stream``h]j)}(hj h]hstream}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj-)}(hhh]h)}(h"DC stream associated with the crtch]h"DC stream associated with the crtc}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhjZ ubj )}(h:``adjust`` DC CRTC timing adjust to be applied to the crtch](j)}(h ``adjust``h]j)}(hj h]hadjust}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj-)}(hhh]h)}(h/DC CRTC timing adjust to be applied to the crtch]h/DC CRTC timing adjust to be applied to the crtc}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj$ ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj# hKhjZ ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'#amdgpu_dm_luminance_data (C struct)c.amdgpu_dm_luminance_datahNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hamdgpu_dm_luminance_datah]j8)}(hstruct amdgpu_dm_luminance_datah](j>)}(hjAh]hstruct}(hjh hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjd hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKubjP)}(h h]h }(hjv hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjd hhhju hKubja)}(hamdgpu_dm_luminance_datah]jg)}(hjb h]hamdgpu_dm_luminance_data}(hj hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjd hhhju hKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj` hhhju hKubah}(h]j[ ah ](jjeh"]h$]h&]jj)jhuh1j1hju hKhj] hhubj)}(hhh]h)}(hCustom luminance datah]hCustom luminance data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jhj] hhhju hKubeh}(h]h ](jstructeh"]h$]h&]jjjj jj jjjuh1j,hhhhhj+hNubj)}(h**Definition**:: struct amdgpu_dm_luminance_data { u8 luminance; u8 input_signal; }; **Members** ``luminance`` Luminance in percent ``input_signal`` Input signal in range 0-255h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj)}(hKstruct amdgpu_dm_luminance_data { u8 luminance; u8 input_signal; };h]hKstruct amdgpu_dm_luminance_data { u8 luminance; u8 input_signal; };}hj sbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj ubj)}(hhh](j )}(h#``luminance`` Luminance in percent h](j)}(h ``luminance``h]j)}(hjh]h luminance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(hLuminance in percenth]hLuminance in percent}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hKhj-ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj,hKhjubj )}(h,``input_signal`` Input signal in range 0-255h](j)}(h``input_signal``h]j)}(hjPh]h input_signal}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjJubj-)}(hhh]h)}(hInput signal in range 0-255h]hInput signal in range 0-255}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjfubah}(h]h ]h"]h$]h&]uh1j,hjJubeh}(h]h ]h"]h$]h&]uh1j hjehKhjubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'#amdgpu_dm_backlight_caps (C struct)c.amdgpu_dm_backlight_capshNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hamdgpu_dm_backlight_capsh]j8)}(hstruct amdgpu_dm_backlight_capsh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhKubja)}(hamdgpu_dm_backlight_capsh]jg)}(hjh]hamdgpu_dm_backlight_caps}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhKhjhhubj)}(hhh]h)}(hInformation about backlighth]hInformation about backlight}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j,hhhhhj+hNubj)}(hX,**Definition**:: struct amdgpu_dm_backlight_caps { union dpcd_sink_ext_caps *ext_caps; u32 aux_min_input_signal; u32 aux_max_input_signal; int min_input_signal; int max_input_signal; bool caps_valid; bool aux_support; u32 brightness_mask; u8 ac_level; u8 dc_level; u8 data_points; struct amdgpu_dm_luminance_data luminance_data[MAX_LUMINANCE_DATA_POINTS]; }; **Members** ``ext_caps`` Keep the data struct with all the information about the display support for HDR. ``aux_min_input_signal`` Min brightness value supported by the display ``aux_max_input_signal`` Max brightness value supported by the display in nits. ``min_input_signal`` minimum possible input in range 0-255. ``max_input_signal`` maximum possible input in range 0-255. ``caps_valid`` true if these values are from the ACPI interface. ``aux_support`` Describes if the display supports AUX backlight. ``brightness_mask`` After deriving brightness, OR it with this mask. Workaround for panels with issues with certain brightness values. ``ac_level`` the default brightness if booted on AC ``dc_level`` the default brightness if booted on DC ``data_points`` the number of custom luminance data points ``luminance_data`` custom luminance datah](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj)}(hXstruct amdgpu_dm_backlight_caps { union dpcd_sink_ext_caps *ext_caps; u32 aux_min_input_signal; u32 aux_max_input_signal; int min_input_signal; int max_input_signal; bool caps_valid; bool aux_support; u32 brightness_mask; u8 ac_level; u8 dc_level; u8 data_points; struct amdgpu_dm_luminance_data luminance_data[MAX_LUMINANCE_DATA_POINTS]; };h]hXstruct amdgpu_dm_backlight_caps { union dpcd_sink_ext_caps *ext_caps; u32 aux_min_input_signal; u32 aux_max_input_signal; int min_input_signal; int max_input_signal; bool caps_valid; bool aux_support; u32 brightness_mask; u8 ac_level; u8 dc_level; u8 data_points; struct amdgpu_dm_luminance_data luminance_data[MAX_LUMINANCE_DATA_POINTS]; };}hj)sbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubh)}(h **Members**h]j)}(hj:h]hMembers}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj)}(hhh](j )}(h^``ext_caps`` Keep the data struct with all the information about the display support for HDR. h](j)}(h ``ext_caps``h]j)}(hjYh]hext_caps}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjSubj-)}(hhh]h)}(hPKeep the data struct with all the information about the display support for HDR.h]hPKeep the data struct with all the information about the display support for HDR.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjoubah}(h]h ]h"]h$]h&]uh1j,hjSubeh}(h]h ]h"]h$]h&]uh1j hjnhKhjPubj )}(hG``aux_min_input_signal`` Min brightness value supported by the display h](j)}(h``aux_min_input_signal``h]j)}(hjh]haux_min_input_signal}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(h-Min brightness value supported by the displayh]h-Min brightness value supported by the display}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjPubj )}(hP``aux_max_input_signal`` Max brightness value supported by the display in nits. h](j)}(h``aux_max_input_signal``h]j)}(hjh]haux_max_input_signal}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(h6Max brightness value supported by the display in nits.h]h6Max brightness value supported by the display in nits.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjPubj )}(h<``min_input_signal`` minimum possible input in range 0-255. h](j)}(h``min_input_signal``h]j)}(hjh]hmin_input_signal}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(h&minimum possible input in range 0-255.h]h&minimum possible input in range 0-255.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjPubj )}(h<``max_input_signal`` maximum possible input in range 0-255. h](j)}(h``max_input_signal``h]j)}(hj?h]hmax_input_signal}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhj9ubj-)}(hhh]h)}(h&maximum possible input in range 0-255.h]h&maximum possible input in range 0-255.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThKhjUubah}(h]h ]h"]h$]h&]uh1j,hj9ubeh}(h]h ]h"]h$]h&]uh1j hjThKhjPubj )}(hA``caps_valid`` true if these values are from the ACPI interface. h](j)}(h``caps_valid``h]j)}(hjxh]h caps_valid}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjrubj-)}(hhh]h)}(h1true if these values are from the ACPI interface.h]h1true if these values are from the ACPI interface.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjrubeh}(h]h ]h"]h$]h&]uh1j hjhKhjPubj )}(hA``aux_support`` Describes if the display supports AUX backlight. h](j)}(h``aux_support``h]j)}(hjh]h aux_support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(h0Describes if the display supports AUX backlight.h]h0Describes if the display supports AUX backlight.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjPubj )}(h``brightness_mask`` After deriving brightness, OR it with this mask. Workaround for panels with issues with certain brightness values. h](j)}(h``brightness_mask``h]j)}(hjh]hbrightness_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(hrAfter deriving brightness, OR it with this mask. Workaround for panels with issues with certain brightness values.h]hrAfter deriving brightness, OR it with this mask. Workaround for panels with issues with certain brightness values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjPubj )}(h4``ac_level`` the default brightness if booted on AC h](j)}(h ``ac_level``h]j)}(hj$h]hac_level}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(h&the default brightness if booted on ACh]h&the default brightness if booted on AC}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj:ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj9hKhjPubj )}(h4``dc_level`` the default brightness if booted on DC h](j)}(h ``dc_level``h]j)}(hj]h]hdc_level}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjWubj-)}(hhh]h)}(h&the default brightness if booted on DCh]h&the default brightness if booted on DC}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhKhjsubah}(h]h ]h"]h$]h&]uh1j,hjWubeh}(h]h ]h"]h$]h&]uh1j hjrhKhjPubj )}(h;``data_points`` the number of custom luminance data points h](j)}(h``data_points``h]j)}(hjh]h data_points}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(h*the number of custom luminance data pointsh]h*the number of custom luminance data points}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjPubj )}(h(``luminance_data`` custom luminance datah](j)}(h``luminance_data``h]j)}(hjh]hluminance_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubj-)}(hhh]h)}(hcustom luminance datah]hcustom luminance data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjPubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhhhhubh)}(h3Describe the backlight support for ACPI or eDP AUX.h]h3Describe the backlight support for ACPI or eDP AUX.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhhhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dal_allocation (C struct)c.dal_allocationhNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hdal_allocationh]j8)}(hstruct dal_allocationh](j>)}(hjAh]hstruct}(hjPhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjLhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKubjP)}(h h]h }(hj^hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjLhhhj]hKubja)}(hdal_allocationh]jg)}(hjJh]hdal_allocation}(hjphhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjlubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjLhhhj]hKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjHhhhj]hKubah}(h]jCah ](jjeh"]h$]h&]jj)jhuh1j1hj]hKhjEhhubj)}(hhh]h)}(h-Tracks mapped FB memory for SMU communicationh]h-Tracks mapped FB memory for SMU communication}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjEhhhj]hKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j,hhhhhj+hNubj)}(hXX**Definition**:: struct dal_allocation { struct list_head list; struct amdgpu_bo *bo; void *cpu_ptr; u64 gpu_addr; }; **Members** ``list`` list of dal allocations ``bo`` GPU buffer object ``cpu_ptr`` CPU virtual address of the GPU buffer object ``gpu_addr`` GPU virtual address of the GPU buffer objecth](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj)}(htstruct dal_allocation { struct list_head list; struct amdgpu_bo *bo; void *cpu_ptr; u64 gpu_addr; };h]htstruct dal_allocation { struct list_head list; struct amdgpu_bo *bo; void *cpu_ptr; u64 gpu_addr; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM hjubj)}(hhh](j )}(h!``list`` list of dal allocations h](j)}(h``list``h]j)}(hjh]hlist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(hlist of dal allocationsh]hlist of dal allocations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h``bo`` GPU buffer object h](j)}(h``bo``h]j)}(hj8h]hbo}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj2ubj-)}(hhh]h)}(hGPU buffer objecth]hGPU buffer object}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhMhjNubah}(h]h ]h"]h$]h&]uh1j,hj2ubeh}(h]h ]h"]h$]h&]uh1j hjMhMhjubj )}(h9``cpu_ptr`` CPU virtual address of the GPU buffer object h](j)}(h ``cpu_ptr``h]j)}(hjqh]hcpu_ptr}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjkubj-)}(hhh]h)}(h,CPU virtual address of the GPU buffer objecth]h,CPU virtual address of the GPU buffer object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjkubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h9``gpu_addr`` GPU virtual address of the GPU buffer objecth](j)}(h ``gpu_addr``h]j)}(hjh]hgpu_addr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(h,GPU virtual address of the GPU buffer objecth]h,GPU virtual address of the GPU buffer object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'(hpd_rx_irq_offload_work_queue (C struct)c.hpd_rx_irq_offload_work_queuehNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hhpd_rx_irq_offload_work_queueh]j8)}(h$struct hpd_rx_irq_offload_work_queueh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhM ubja)}(hhpd_rx_irq_offload_work_queueh]jg)}(hjh]hhpd_rx_irq_offload_work_queue}(hj$hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhM ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhM hjhhubj)}(hhh]h)}(h,Work queue to handle hpd_rx_irq offload workh]h,Work queue to handle hpd_rx_irq offload work}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM hjChhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM ubeh}(h]h ](jstructeh"]h$]h&]jjjj^jj^jjjuh1j,hhhhhj+hNubj)}(hX**Definition**:: struct hpd_rx_irq_offload_work_queue { struct workqueue_struct *wq; spinlock_t offload_lock; bool is_handling_link_loss; bool is_handling_mst_msg_rdy_event; struct amdgpu_dm_connector *aconnector; }; **Members** ``wq`` workqueue structure to queue offload work. ``offload_lock`` To protect fields of offload work queue. ``is_handling_link_loss`` Used to prevent inserting link loss event when we're handling link loss ``is_handling_mst_msg_rdy_event`` Used to prevent inserting mst message ready event when we're already handling mst message ready event ``aconnector`` The aconnector that this work queue is attached toh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubh:}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjbubj)}(hstruct hpd_rx_irq_offload_work_queue { struct workqueue_struct *wq; spinlock_t offload_lock; bool is_handling_link_loss; bool is_handling_mst_msg_rdy_event; struct amdgpu_dm_connector *aconnector; };h]hstruct hpd_rx_irq_offload_work_queue { struct workqueue_struct *wq; spinlock_t offload_lock; bool is_handling_link_loss; bool is_handling_mst_msg_rdy_event; struct amdgpu_dm_connector *aconnector; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjbubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjbubj)}(hhh](j )}(h2``wq`` workqueue structure to queue offload work. h](j)}(h``wq``h]j)}(hjh]hwq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(h*workqueue structure to queue offload work.h]h*workqueue structure to queue offload work.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h:``offload_lock`` To protect fields of offload work queue. h](j)}(h``offload_lock``h]j)}(hjh]h offload_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(h(To protect fields of offload work queue.h]h(To protect fields of offload work queue.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hb``is_handling_link_loss`` Used to prevent inserting link loss event when we're handling link loss h](j)}(h``is_handling_link_loss``h]j)}(hj%h]his_handling_link_loss}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(hGUsed to prevent inserting link loss event when we're handling link lossh]hIUsed to prevent inserting link loss event when we’re handling link loss}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj;ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj:hMhjubj )}(h``is_handling_mst_msg_rdy_event`` Used to prevent inserting mst message ready event when we're already handling mst message ready event h](j)}(h!``is_handling_mst_msg_rdy_event``h]j)}(hj_h]his_handling_mst_msg_rdy_event}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM!hjYubj-)}(hhh]h)}(heUsed to prevent inserting mst message ready event when we're already handling mst message ready eventh]hgUsed to prevent inserting mst message ready event when we’re already handling mst message ready event}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM hjuubah}(h]h ]h"]h$]h&]uh1j,hjYubeh}(h]h ]h"]h$]h&]uh1j hjthM!hjubj )}(hA``aconnector`` The aconnector that this work queue is attached toh](j)}(h``aconnector``h]j)}(hjh]h aconnector}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM$hjubj-)}(hhh]h)}(h2The aconnector that this work queue is attached toh]h2The aconnector that this work queue is attached to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM%hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM$hjubeh}(h]h ]h"]h$]h&]uh1jhjbubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'"hpd_rx_irq_offload_work (C struct)c.hpd_rx_irq_offload_workhNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hhpd_rx_irq_offload_workh]j8)}(hstruct hpd_rx_irq_offload_workh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM+ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhM+ubja)}(hhpd_rx_irq_offload_workh]jg)}(hjh]hhpd_rx_irq_offload_work}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhM+ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhM+ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhM+hjhhubj)}(hhh]h)}(h!hpd_rx_irq offload work structureh]h!hpd_rx_irq offload work structure}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM*hj2hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM+ubeh}(h]h ](jstructeh"]h$]h&]jjjjMjjMjjjuh1j,hhhhhj+hNubj)}(hX**Definition**:: struct hpd_rx_irq_offload_work { struct work_struct work; union hpd_irq_data data; struct hpd_rx_irq_offload_work_queue *offload_wq; struct amdgpu_device *adev; }; **Members** ``work`` offload work ``data`` reference irq data which is used while handling offload work ``offload_wq`` offload work queue that this work is queued to ``adev`` amdgpu_device pointerh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh:}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM.hjQubj)}(hstruct hpd_rx_irq_offload_work { struct work_struct work; union hpd_irq_data data; struct hpd_rx_irq_offload_work_queue *offload_wq; struct amdgpu_device *adev; };h]hstruct hpd_rx_irq_offload_work { struct work_struct work; union hpd_irq_data data; struct hpd_rx_irq_offload_work_queue *offload_wq; struct amdgpu_device *adev; };}hjrsbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM0hjQubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM7hjQubj)}(hhh](j )}(h``work`` offload work h](j)}(h``work``h]j)}(hjh]hwork}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM/hjubj-)}(hhh]h)}(h offload workh]h offload work}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM/hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM/hjubj )}(hF``data`` reference irq data which is used while handling offload work h](j)}(h``data``h]j)}(hjh]hdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM3hjubj-)}(hhh]h)}(h``offload_wq`` offload work queue that this work is queued to h](j)}(h``offload_wq``h]j)}(hjh]h offload_wq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM7hjubj-)}(hhh]h)}(h.offload work queue that this work is queued toh]h.offload work queue that this work is queued to}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hM7hj*ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj)hM7hjubj )}(h``adev`` amdgpu_device pointerh](j)}(h``adev``h]j)}(hjMh]hadev}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM:hjGubj-)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM;hjcubah}(h]h ]h"]h$]h&]uh1j,hjGubeh}(h]h ]h"]h$]h&]uh1j hjbhM:hjubeh}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'!amdgpu_display_manager (C struct)c.amdgpu_display_managerhNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hamdgpu_display_managerh]j8)}(hstruct amdgpu_display_managerh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMAubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMAubja)}(hamdgpu_display_managerh]jg)}(hjh]hamdgpu_display_manager}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMAubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMAubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhMAhjhhubj)}(hhh]h)}(h%Central amdgpu display manager deviceh]h%Central amdgpu display manager device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM@hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMAubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j,hhhhhj+hNubj)}(hX"**Definition**:: struct amdgpu_display_manager { struct dc *dc; struct dmub_srv *dmub_srv; struct dmub_notification *dmub_notify; dmub_notify_interrupt_callback_t dmub_callback[AMDGPU_DMUB_NOTIFICATION_MAX]; bool dmub_thread_offload[AMDGPU_DMUB_NOTIFICATION_MAX]; struct dmub_srv_fb_info *dmub_fb_info; const struct firmware *dmub_fw; struct amdgpu_bo *dmub_bo; u64 dmub_bo_gpu_addr; void *dmub_bo_cpu_addr; uint32_t dmcub_fw_version; uint32_t fw_inst_size; struct cgs_device *cgs_device; struct amdgpu_device *adev; struct drm_device *ddev; u16 display_indexes_num; struct drm_private_obj atomic_obj; struct mutex dc_lock; spinlock_t dmub_lock; struct mutex audio_lock; struct drm_audio_component *audio_component; bool audio_registered; struct list_head irq_handler_list_low_tab[DAL_IRQ_SOURCES_NUMBER]; struct list_head irq_handler_list_high_tab[DAL_IRQ_SOURCES_NUMBER]; struct common_irq_params pflip_params[DC_IRQ_SOURCE_PFLIP_LAST - DC_IRQ_SOURCE_PFLIP_FIRST + 1]; struct common_irq_params vblank_params[DC_IRQ_SOURCE_VBLANK6 - DC_IRQ_SOURCE_VBLANK1 + 1]; struct common_irq_params vline0_params[DC_IRQ_SOURCE_DC6_VLINE0 - DC_IRQ_SOURCE_DC1_VLINE0 + 1]; struct common_irq_params vupdate_params[DC_IRQ_SOURCE_VUPDATE6 - DC_IRQ_SOURCE_VUPDATE1 + 1]; struct common_irq_params dmub_trace_params[1]; struct common_irq_params dmub_outbox_params[1]; spinlock_t irq_handler_list_table_lock; struct workqueue_struct *irq_wq; struct workqueue_struct *vmin_vmax_wq; struct backlight_device *backlight_dev[AMDGPU_DM_MAX_NUM_EDP]; const struct dc_link *backlight_link[AMDGPU_DM_MAX_NUM_EDP]; uint8_t num_of_edps; struct amdgpu_dm_backlight_caps backlight_caps[AMDGPU_DM_MAX_NUM_EDP]; struct mod_freesync *freesync_module; struct mod_power *power_module; struct hdcp_workqueue *hdcp_workqueue; struct workqueue_struct *vblank_control_workqueue; struct idle_workqueue *idle_workqueue; struct drm_atomic_commit *cached_state; struct dc_state *cached_dc_state; struct dm_compressor_info compressor; const struct firmware *fw_dmcu; uint32_t dmcu_fw_version; const struct gpu_info_soc_bounding_box_v1_0 *soc_bounding_box; uint32_t active_vblank_irq_count; #if defined(CONFIG_DRM_AMD_SECURE_DISPLAY); struct secure_display_context secure_display_ctx; #endif; struct hpd_rx_irq_offload_work_queue *hpd_rx_offload_wq; struct amdgpu_encoder mst_encoders[AMDGPU_DM_MAX_CRTC]; bool force_timing_sync; bool disable_hpd_irq; bool dmcub_trace_event_en; struct list_head da_list; struct completion dmub_aux_transfer_done; struct workqueue_struct *delayed_hpd_wq; u32 brightness[AMDGPU_DM_MAX_NUM_EDP]; u32 actual_brightness[AMDGPU_DM_MAX_NUM_EDP]; bool aux_hpd_discon_quirk; bool edp0_on_dp1_quirk; struct mutex dpia_aux_lock; void *bb_from_dmub; void *i2c_devres_group; struct amdgpu_i2c_adapter *oem_i2c; struct fused_io_sync { struct completion replied; char reply_data[0x40]; } fused_io[8]; struct workqueue_struct *hdmi_frl_status_polling_wq; struct delayed_work hdmi_frl_status_polling_work; unsigned int hdmi_frl_status_polling_delay_ms; struct dm_boot_time_crc_info boot_time_crc_info; }; **Members** ``dc`` Display Core control structure ``dmub_srv`` DMUB service, used for controlling the DMUB on hardware that supports it. The pointer to the dmub_srv will be NULL on hardware that does not support it. ``dmub_notify`` Notification from DMUB. ``dmub_callback`` Callback functions to handle notification from DMUB. ``dmub_thread_offload`` Flag to indicate if callback is offload. ``dmub_fb_info`` Framebuffer regions for the DMUB. ``dmub_fw`` DMUB firmware, required on hardware that has DMUB support. ``dmub_bo`` Buffer object for the DMUB. ``dmub_bo_gpu_addr`` GPU virtual address for the DMUB buffer object. ``dmub_bo_cpu_addr`` CPU address for the DMUB buffer object. ``dmcub_fw_version`` DMCUB firmware version. ``fw_inst_size`` Size of the firmware instruction buffer. ``cgs_device`` The Common Graphics Services device. It provides an interface for accessing registers. ``adev`` AMDGPU base driver structure ``ddev`` DRM base driver structure ``display_indexes_num`` Max number of display streams supported ``atomic_obj`` In combination with :c:type:`dm_atomic_state` it helps manage global atomic state that doesn't map cleanly into existing drm resources, like :c:type:`dc_context`. ``dc_lock`` Guards access to DC functions that can issue register write sequences. ``dmub_lock`` Guards access to DMUB command submission. ``audio_lock`` Guards access to audio instance changes. ``audio_component`` Used to notify ELD changes to sound driver. ``audio_registered`` True if the audio component has been registered successfully, false otherwise. ``irq_handler_list_low_tab`` Low priority IRQ handler table. It is a n*m table consisting of n IRQ sources, and m handlers per IRQ source. Low priority IRQ handlers are deferred to a workqueue to be processed. Hence, they can sleep. Note that handlers are called in the same order as they were registered (FIFO). ``irq_handler_list_high_tab`` High priority IRQ handler table. It is a n*m table, same as :c:type:`irq_handler_list_low_tab`. However, handlers in this table are not deferred and are called immediately. ``pflip_params`` Page flip IRQ parameters, passed to registered handlers when triggered. ``vblank_params`` Vertical blanking IRQ parameters, passed to registered handlers when triggered. ``vline0_params`` OTG vertical interrupt0 IRQ parameters, passed to registered handlers when triggered. ``vupdate_params`` Vertical update IRQ parameters, passed to registered handlers when triggered. ``dmub_trace_params`` DMUB trace event IRQ parameters, passed to registered handlers when triggered. ``dmub_outbox_params`` DMUB Outbox parameters ``irq_handler_list_table_lock`` Synchronizes access to IRQ tables ``irq_wq`` Dedicated high-priority unbound workqueue for deferred IRQ work ``vmin_vmax_wq`` Dedicated unbound workqueue for deferred vmin/vmax updates ``backlight_dev`` Backlight control device ``backlight_link`` Link on which to control backlight ``num_of_edps`` number of backlight eDPs ``backlight_caps`` Capabilities of the backlight device ``freesync_module`` Module handling freesync calculations ``hdcp_workqueue`` AMDGPU content protection queue ``vblank_control_workqueue`` Deferred work for vblank control events. ``idle_workqueue`` Periodic work for idle events. ``cached_state`` Caches device atomic state for suspend/resume ``cached_dc_state`` Cached state of content streams ``compressor`` Frame buffer compression buffer. See :c:type:`struct dm_compressor_info ` ``fw_dmcu`` Reference to DMCU firmware ``dmcu_fw_version`` Version of the DMCU firmware ``soc_bounding_box`` gpu_info FW provided soc bounding box struct or 0 if not available in FW ``active_vblank_irq_count`` number of currently active vblank irqs ``secure_display_ctx`` Store secure display relevant info. e.g. the ROI information , the work_struct to command dmub, etc. ``hpd_rx_offload_wq`` Work queue to offload works of hpd_rx_irq ``mst_encoders`` fake encoders used for DP MST. ``force_timing_sync`` set via debugfs. When set, indicates that all connected displays will be forced to synchronize. ``disable_hpd_irq`` disables all HPD and HPD RX interrupt handling in the driver when true ``dmcub_trace_event_en`` enable dmcub trace events ``da_list`` DAL fb memory allocation list, for communication with SMU. ``dmub_aux_transfer_done`` struct completion used to indicate when DMUB transfers are done ``delayed_hpd_wq`` work queue used to delay DMUB HPD work ``brightness`` cached backlight values. ``actual_brightness`` last successfully applied backlight values. ``aux_hpd_discon_quirk`` quirk for hpd discon while aux is on-going. occurred on certain intel platform ``edp0_on_dp1_quirk`` quirk for platforms that put edp0 on DP1. ``dpia_aux_lock`` Guards access to DPIA AUX ``bb_from_dmub`` Bounding box data read from dmub during early initialization for DCN4+ Data is stored as a byte array that should be casted to the appropriate bb struct ``i2c_devres_group`` Devres group for DM i2c adapter lifetime management. ``oem_i2c`` OEM i2c bus ``fused_io`` dmub fused io interface ``hdmi_frl_status_polling_work`` workqueue for 200ms frl status pollingh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMDhjubj)}(hX struct amdgpu_display_manager { struct dc *dc; struct dmub_srv *dmub_srv; struct dmub_notification *dmub_notify; dmub_notify_interrupt_callback_t dmub_callback[AMDGPU_DMUB_NOTIFICATION_MAX]; bool dmub_thread_offload[AMDGPU_DMUB_NOTIFICATION_MAX]; struct dmub_srv_fb_info *dmub_fb_info; const struct firmware *dmub_fw; struct amdgpu_bo *dmub_bo; u64 dmub_bo_gpu_addr; void *dmub_bo_cpu_addr; uint32_t dmcub_fw_version; uint32_t fw_inst_size; struct cgs_device *cgs_device; struct amdgpu_device *adev; struct drm_device *ddev; u16 display_indexes_num; struct drm_private_obj atomic_obj; struct mutex dc_lock; spinlock_t dmub_lock; struct mutex audio_lock; struct drm_audio_component *audio_component; bool audio_registered; struct list_head irq_handler_list_low_tab[DAL_IRQ_SOURCES_NUMBER]; struct list_head irq_handler_list_high_tab[DAL_IRQ_SOURCES_NUMBER]; struct common_irq_params pflip_params[DC_IRQ_SOURCE_PFLIP_LAST - DC_IRQ_SOURCE_PFLIP_FIRST + 1]; struct common_irq_params vblank_params[DC_IRQ_SOURCE_VBLANK6 - DC_IRQ_SOURCE_VBLANK1 + 1]; struct common_irq_params vline0_params[DC_IRQ_SOURCE_DC6_VLINE0 - DC_IRQ_SOURCE_DC1_VLINE0 + 1]; struct common_irq_params vupdate_params[DC_IRQ_SOURCE_VUPDATE6 - DC_IRQ_SOURCE_VUPDATE1 + 1]; struct common_irq_params dmub_trace_params[1]; struct common_irq_params dmub_outbox_params[1]; spinlock_t irq_handler_list_table_lock; struct workqueue_struct *irq_wq; struct workqueue_struct *vmin_vmax_wq; struct backlight_device *backlight_dev[AMDGPU_DM_MAX_NUM_EDP]; const struct dc_link *backlight_link[AMDGPU_DM_MAX_NUM_EDP]; uint8_t num_of_edps; struct amdgpu_dm_backlight_caps backlight_caps[AMDGPU_DM_MAX_NUM_EDP]; struct mod_freesync *freesync_module; struct mod_power *power_module; struct hdcp_workqueue *hdcp_workqueue; struct workqueue_struct *vblank_control_workqueue; struct idle_workqueue *idle_workqueue; struct drm_atomic_commit *cached_state; struct dc_state *cached_dc_state; struct dm_compressor_info compressor; const struct firmware *fw_dmcu; uint32_t dmcu_fw_version; const struct gpu_info_soc_bounding_box_v1_0 *soc_bounding_box; uint32_t active_vblank_irq_count; #if defined(CONFIG_DRM_AMD_SECURE_DISPLAY); struct secure_display_context secure_display_ctx; #endif; struct hpd_rx_irq_offload_work_queue *hpd_rx_offload_wq; struct amdgpu_encoder mst_encoders[AMDGPU_DM_MAX_CRTC]; bool force_timing_sync; bool disable_hpd_irq; bool dmcub_trace_event_en; struct list_head da_list; struct completion dmub_aux_transfer_done; struct workqueue_struct *delayed_hpd_wq; u32 brightness[AMDGPU_DM_MAX_NUM_EDP]; u32 actual_brightness[AMDGPU_DM_MAX_NUM_EDP]; bool aux_hpd_discon_quirk; bool edp0_on_dp1_quirk; struct mutex dpia_aux_lock; void *bb_from_dmub; void *i2c_devres_group; struct amdgpu_i2c_adapter *oem_i2c; struct fused_io_sync { struct completion replied; char reply_data[0x40]; } fused_io[8]; struct workqueue_struct *hdmi_frl_status_polling_wq; struct delayed_work hdmi_frl_status_polling_work; unsigned int hdmi_frl_status_polling_delay_ms; struct dm_boot_time_crc_info boot_time_crc_info; };h]hX struct amdgpu_display_manager { struct dc *dc; struct dmub_srv *dmub_srv; struct dmub_notification *dmub_notify; dmub_notify_interrupt_callback_t dmub_callback[AMDGPU_DMUB_NOTIFICATION_MAX]; bool dmub_thread_offload[AMDGPU_DMUB_NOTIFICATION_MAX]; struct dmub_srv_fb_info *dmub_fb_info; const struct firmware *dmub_fw; struct amdgpu_bo *dmub_bo; u64 dmub_bo_gpu_addr; void *dmub_bo_cpu_addr; uint32_t dmcub_fw_version; uint32_t fw_inst_size; struct cgs_device *cgs_device; struct amdgpu_device *adev; struct drm_device *ddev; u16 display_indexes_num; struct drm_private_obj atomic_obj; struct mutex dc_lock; spinlock_t dmub_lock; struct mutex audio_lock; struct drm_audio_component *audio_component; bool audio_registered; struct list_head irq_handler_list_low_tab[DAL_IRQ_SOURCES_NUMBER]; struct list_head irq_handler_list_high_tab[DAL_IRQ_SOURCES_NUMBER]; struct common_irq_params pflip_params[DC_IRQ_SOURCE_PFLIP_LAST - DC_IRQ_SOURCE_PFLIP_FIRST + 1]; struct common_irq_params vblank_params[DC_IRQ_SOURCE_VBLANK6 - DC_IRQ_SOURCE_VBLANK1 + 1]; struct common_irq_params vline0_params[DC_IRQ_SOURCE_DC6_VLINE0 - DC_IRQ_SOURCE_DC1_VLINE0 + 1]; struct common_irq_params vupdate_params[DC_IRQ_SOURCE_VUPDATE6 - DC_IRQ_SOURCE_VUPDATE1 + 1]; struct common_irq_params dmub_trace_params[1]; struct common_irq_params dmub_outbox_params[1]; spinlock_t irq_handler_list_table_lock; struct workqueue_struct *irq_wq; struct workqueue_struct *vmin_vmax_wq; struct backlight_device *backlight_dev[AMDGPU_DM_MAX_NUM_EDP]; const struct dc_link *backlight_link[AMDGPU_DM_MAX_NUM_EDP]; uint8_t num_of_edps; struct amdgpu_dm_backlight_caps backlight_caps[AMDGPU_DM_MAX_NUM_EDP]; struct mod_freesync *freesync_module; struct mod_power *power_module; struct hdcp_workqueue *hdcp_workqueue; struct workqueue_struct *vblank_control_workqueue; struct idle_workqueue *idle_workqueue; struct drm_atomic_commit *cached_state; struct dc_state *cached_dc_state; struct dm_compressor_info compressor; const struct firmware *fw_dmcu; uint32_t dmcu_fw_version; const struct gpu_info_soc_bounding_box_v1_0 *soc_bounding_box; uint32_t active_vblank_irq_count; #if defined(CONFIG_DRM_AMD_SECURE_DISPLAY); struct secure_display_context secure_display_ctx; #endif; struct hpd_rx_irq_offload_work_queue *hpd_rx_offload_wq; struct amdgpu_encoder mst_encoders[AMDGPU_DM_MAX_CRTC]; bool force_timing_sync; bool disable_hpd_irq; bool dmcub_trace_event_en; struct list_head da_list; struct completion dmub_aux_transfer_done; struct workqueue_struct *delayed_hpd_wq; u32 brightness[AMDGPU_DM_MAX_NUM_EDP]; u32 actual_brightness[AMDGPU_DM_MAX_NUM_EDP]; bool aux_hpd_discon_quirk; bool edp0_on_dp1_quirk; struct mutex dpia_aux_lock; void *bb_from_dmub; void *i2c_devres_group; struct amdgpu_i2c_adapter *oem_i2c; struct fused_io_sync { struct completion replied; char reply_data[0x40]; } fused_io[8]; struct workqueue_struct *hdmi_frl_status_polling_wq; struct delayed_work hdmi_frl_status_polling_work; unsigned int hdmi_frl_status_polling_delay_ms; struct dm_boot_time_crc_info boot_time_crc_info; };}hj&sbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMFhjubh)}(h **Members**h]j)}(hj7h]hMembers}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj)}(hhh](j )}(h&``dc`` Display Core control structure h](j)}(h``dc``h]j)}(hjVh]hdc}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMChjPubj-)}(hhh]h)}(hDisplay Core control structureh]hDisplay Core control structure}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMChjlubah}(h]h ]h"]h$]h&]uh1j,hjPubeh}(h]h ]h"]h$]h&]uh1j hjkhMChjMubj )}(h``dmub_srv`` DMUB service, used for controlling the DMUB on hardware that supports it. The pointer to the dmub_srv will be NULL on hardware that does not support it. h](j)}(h ``dmub_srv``h]j)}(hjh]hdmub_srv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMghjubj-)}(hhh]h)}(hDMUB service, used for controlling the DMUB on hardware that supports it. The pointer to the dmub_srv will be NULL on hardware that does not support it.h]hDMUB service, used for controlling the DMUB on hardware that supports it. The pointer to the dmub_srv will be NULL on hardware that does not support it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMehjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMghjMubj )}(h(``dmub_notify`` Notification from DMUB. h](j)}(h``dmub_notify``h]j)}(hjh]h dmub_notify}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMnhjubj-)}(hhh]h)}(hNotification from DMUB.h]hNotification from DMUB.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMnhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMnhjMubj )}(hG``dmub_callback`` Callback functions to handle notification from DMUB. h](j)}(h``dmub_callback``h]j)}(hjh]h dmub_callback}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMvhjubj-)}(hhh]h)}(h4Callback functions to handle notification from DMUB.h]h4Callback functions to handle notification from DMUB.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMvhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMvhjMubj )}(hA``dmub_thread_offload`` Flag to indicate if callback is offload. h](j)}(h``dmub_thread_offload``h]j)}(hj;h]hdmub_thread_offload}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM~hj5ubj-)}(hhh]h)}(h(Flag to indicate if callback is offload.h]h(Flag to indicate if callback is offload.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhM~hjQubah}(h]h ]h"]h$]h&]uh1j,hj5ubeh}(h]h ]h"]h$]h&]uh1j hjPhM~hjMubj )}(h3``dmub_fb_info`` Framebuffer regions for the DMUB. h](j)}(h``dmub_fb_info``h]j)}(hjth]h dmub_fb_info}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjnubj-)}(hhh]h)}(h!Framebuffer regions for the DMUB.h]h!Framebuffer regions for the DMUB.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjnubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(hG``dmub_fw`` DMUB firmware, required on hardware that has DMUB support. h](j)}(h ``dmub_fw``h]j)}(hjh]hdmub_fw}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(h:DMUB firmware, required on hardware that has DMUB support.h]h:DMUB firmware, required on hardware that has DMUB support.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(h(``dmub_bo`` Buffer object for the DMUB. h](j)}(h ``dmub_bo``h]j)}(hjh]hdmub_bo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(hBuffer object for the DMUB.h]hBuffer object for the DMUB.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(hE``dmub_bo_gpu_addr`` GPU virtual address for the DMUB buffer object. h](j)}(h``dmub_bo_gpu_addr``h]j)}(hjh]hdmub_bo_gpu_addr}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(h/GPU virtual address for the DMUB buffer object.h]h/GPU virtual address for the DMUB buffer object.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hMhj5ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj4hMhjMubj )}(h=``dmub_bo_cpu_addr`` CPU address for the DMUB buffer object. h](j)}(h``dmub_bo_cpu_addr``h]j)}(hjXh]hdmub_bo_cpu_addr}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjRubj-)}(hhh]h)}(h'CPU address for the DMUB buffer object.h]h'CPU address for the DMUB buffer object.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMhjnubah}(h]h ]h"]h$]h&]uh1j,hjRubeh}(h]h ]h"]h$]h&]uh1j hjmhMhjMubj )}(h-``dmcub_fw_version`` DMCUB firmware version. h](j)}(h``dmcub_fw_version``h]j)}(hjh]hdmcub_fw_version}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(hDMCUB firmware version.h]hDMCUB firmware version.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(h:``fw_inst_size`` Size of the firmware instruction buffer. h](j)}(h``fw_inst_size``h]j)}(hjh]h fw_inst_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(h(Size of the firmware instruction buffer.h]h(Size of the firmware instruction buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(hf``cgs_device`` The Common Graphics Services device. It provides an interface for accessing registers. h](j)}(h``cgs_device``h]j)}(hjh]h cgs_device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(hVThe Common Graphics Services device. It provides an interface for accessing registers.h]hVThe Common Graphics Services device. It provides an interface for accessing registers.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(h&``adev`` AMDGPU base driver structure h](j)}(h``adev``h]j)}(hj=h]hadev}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMDhj7ubj-)}(hhh]h)}(hAMDGPU base driver structureh]hAMDGPU base driver structure}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMDhjSubah}(h]h ]h"]h$]h&]uh1j,hj7ubeh}(h]h ]h"]h$]h&]uh1j hjRhMDhjMubj )}(h#``ddev`` DRM base driver structure h](j)}(h``ddev``h]j)}(hjvh]hddev}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMEhjpubj-)}(hhh]h)}(hDRM base driver structureh]hDRM base driver structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMEhjubah}(h]h ]h"]h$]h&]uh1j,hjpubeh}(h]h ]h"]h$]h&]uh1j hjhMEhjMubj )}(h@``display_indexes_num`` Max number of display streams supported h](j)}(h``display_indexes_num``h]j)}(hjh]hdisplay_indexes_num}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMFhjubj-)}(hhh]h)}(h'Max number of display streams supportedh]h'Max number of display streams supported}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMFhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMFhjMubj )}(h``atomic_obj`` In combination with :c:type:`dm_atomic_state` it helps manage global atomic state that doesn't map cleanly into existing drm resources, like :c:type:`dc_context`. h](j)}(h``atomic_obj``h]j)}(hjh]h atomic_obj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(hIn combination with :c:type:`dm_atomic_state` it helps manage global atomic state that doesn't map cleanly into existing drm resources, like :c:type:`dc_context`.h](hIn combination with }(hjhhhNhNubh)}(h:c:type:`dm_atomic_state`h]j)}(hj h]hdm_atomic_state}(hj hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sbj dm_atomic_stateuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubhb it helps manage global atomic state that doesn’t map cleanly into existing drm resources, like }(hjhhhNhNubh)}(h:c:type:`dc_context`h]j)}(hj7h]h dc_context}(hj9hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  dc_contextuh1hhj0hMhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj0hMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(hS``dc_lock`` Guards access to DC functions that can issue register write sequences. h](j)}(h ``dc_lock``h]j)}(hjph]hdc_lock}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjjubj-)}(hhh]h)}(hFGuards access to DC functions that can issue register write sequences.h]hFGuards access to DC functions that can issue register write sequences.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubah}(h]h ]h"]h$]h&]uh1j,hjjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(h8``dmub_lock`` Guards access to DMUB command submission. h](j)}(h ``dmub_lock``h]j)}(hjh]h dmub_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(h)Guards access to DMUB command submission.h]h)Guards access to DMUB command submission.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(h8``audio_lock`` Guards access to audio instance changes. h](j)}(h``audio_lock``h]j)}(hjh]h audio_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(h(Guards access to audio instance changes.h]h(Guards access to audio instance changes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(h@``audio_component`` Used to notify ELD changes to sound driver. h](j)}(h``audio_component``h]j)}(hjh]haudio_component}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(h+Used to notify ELD changes to sound driver.h]h+Used to notify ELD changes to sound driver.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMhj2ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj1hMhjMubj )}(hd``audio_registered`` True if the audio component has been registered successfully, false otherwise. h](j)}(h``audio_registered``h]j)}(hjUh]haudio_registered}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjOubj-)}(hhh]h)}(hNTrue if the audio component has been registered successfully, false otherwise.h]hNTrue if the audio component has been registered successfully, false otherwise.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjkubah}(h]h ]h"]h$]h&]uh1j,hjOubeh}(h]h ]h"]h$]h&]uh1j hjjhMhjMubj )}(hX;``irq_handler_list_low_tab`` Low priority IRQ handler table. It is a n*m table consisting of n IRQ sources, and m handlers per IRQ source. Low priority IRQ handlers are deferred to a workqueue to be processed. Hence, they can sleep. Note that handlers are called in the same order as they were registered (FIFO). h](j)}(h``irq_handler_list_low_tab``h]j)}(hjh]hirq_handler_list_low_tab}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh](h)}(hLow priority IRQ handler table.h]hLow priority IRQ handler table.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubh)}(hIt is a n*m table consisting of n IRQ sources, and m handlers per IRQ source. Low priority IRQ handlers are deferred to a workqueue to be processed. Hence, they can sleep.h]hIt is a n*m table consisting of n IRQ sources, and m handlers per IRQ source. Low priority IRQ handlers are deferred to a workqueue to be processed. Hence, they can sleep.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubh)}(hONote that handlers are called in the same order as they were registered (FIFO).h]hONote that handlers are called in the same order as they were registered (FIFO).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubeh}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(h``irq_handler_list_high_tab`` High priority IRQ handler table. It is a n*m table, same as :c:type:`irq_handler_list_low_tab`. However, handlers in this table are not deferred and are called immediately. h](j)}(h``irq_handler_list_high_tab``h]j)}(hjh]hirq_handler_list_high_tab}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh](h)}(h High priority IRQ handler table.h]h High priority IRQ handler table.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubh)}(hIt is a n*m table, same as :c:type:`irq_handler_list_low_tab`. However, handlers in this table are not deferred and are called immediately.h](hIt is a n*m table, same as }(hjhhhNhNubh)}(h":c:type:`irq_handler_list_low_tab`h]j)}(hjh]hirq_handler_list_low_tab}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j irq_handler_list_low_tabuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubhN. However, handlers in this table are not deferred and are called immediately.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj6hMhjubeh}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(hY``pflip_params`` Page flip IRQ parameters, passed to registered handlers when triggered. h](j)}(h``pflip_params``h]j)}(hjSh]h pflip_params}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM hjMubj-)}(hhh]h)}(hGPage flip IRQ parameters, passed to registered handlers when triggered.h]hGPage flip IRQ parameters, passed to registered handlers when triggered.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM hjiubah}(h]h ]h"]h$]h&]uh1j,hjMubeh}(h]h ]h"]h$]h&]uh1j hjhhM hjMubj )}(hb``vblank_params`` Vertical blanking IRQ parameters, passed to registered handlers when triggered. h](j)}(h``vblank_params``h]j)}(hjh]h vblank_params}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(hOVertical blanking IRQ parameters, passed to registered handlers when triggered.h]hOVertical blanking IRQ parameters, passed to registered handlers when triggered.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(hh``vline0_params`` OTG vertical interrupt0 IRQ parameters, passed to registered handlers when triggered. h](j)}(h``vline0_params``h]j)}(hjh]h vline0_params}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubj-)}(hhh]h)}(hUOTG vertical interrupt0 IRQ parameters, passed to registered handlers when triggered.h]hUOTG vertical interrupt0 IRQ parameters, passed to registered handlers when triggered.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjMubj )}(ha``vupdate_params`` Vertical update IRQ parameters, passed to registered handlers when triggered. h](j)}(h``vupdate_params``h]j)}(hjh]hvupdate_params}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM%hjubj-)}(hhh]h)}(hMVertical update IRQ parameters, passed to registered handlers when triggered.h]hMVertical update IRQ parameters, passed to registered handlers when triggered.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM$hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM%hjMubj )}(he``dmub_trace_params`` DMUB trace event IRQ parameters, passed to registered handlers when triggered. h](j)}(h``dmub_trace_params``h]j)}(hj;h]hdmub_trace_params}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM.hj5ubj-)}(hhh]h)}(hNDMUB trace event IRQ parameters, passed to registered handlers when triggered.h]hNDMUB trace event IRQ parameters, passed to registered handlers when triggered.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM-hjQubah}(h]h ]h"]h$]h&]uh1j,hj5ubeh}(h]h ]h"]h$]h&]uh1j hjPhM.hjMubj )}(h.``dmub_outbox_params`` DMUB Outbox parameters h](j)}(h``dmub_outbox_params``h]j)}(hjuh]hdmub_outbox_params}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMXhjoubj-)}(hhh]h)}(hDMUB Outbox parametersh]hDMUB Outbox parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1j,hjoubeh}(h]h ]h"]h$]h&]uh1j hjhMXhjMubj )}(hB``irq_handler_list_table_lock`` Synchronizes access to IRQ tables h](j)}(h``irq_handler_list_table_lock``h]j)}(hjh]hirq_handler_list_table_lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMGhjubj-)}(hhh]h)}(h!Synchronizes access to IRQ tablesh]h!Synchronizes access to IRQ tables}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMGhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMGhjMubj )}(hK``irq_wq`` Dedicated high-priority unbound workqueue for deferred IRQ work h](j)}(h ``irq_wq``h]j)}(hjh]hirq_wq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMHhjubj-)}(hhh]h)}(h?Dedicated high-priority unbound workqueue for deferred IRQ workh]h?Dedicated high-priority unbound workqueue for deferred IRQ work}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMHhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMHhjMubj )}(hL``vmin_vmax_wq`` Dedicated unbound workqueue for deferred vmin/vmax updates h](j)}(h``vmin_vmax_wq``h]j)}(hj h]h vmin_vmax_wq}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMIhj ubj-)}(hhh]h)}(h:Dedicated unbound workqueue for deferred vmin/vmax updatesh]h:Dedicated unbound workqueue for deferred vmin/vmax updates}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5 hMIhj6 ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj5 hMIhjMubj )}(h+``backlight_dev`` Backlight control device h](j)}(h``backlight_dev``h]j)}(hjY h]h backlight_dev}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMJhjS ubj-)}(hhh]h)}(hBacklight control deviceh]hBacklight control device}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjn hMJhjo ubah}(h]h ]h"]h$]h&]uh1j,hjS ubeh}(h]h ]h"]h$]h&]uh1j hjn hMJhjMubj )}(h6``backlight_link`` Link on which to control backlight h](j)}(h``backlight_link``h]j)}(hzj h]hbacklight_link}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMKhj ubj-)}(hhh]h)}(h"Link on which to control backlighth]h"Link on which to control backlight}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMKhj ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj hMKhjMubj )}(h)``num_of_edps`` number of backlight eDPs h](j)}(h``num_of_edps``h]j)}(hj h]h num_of_edps}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMYhj ubj-)}(hhh]h)}(hnumber of backlight eDPsh]hnumber of backlight eDPs}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMYhj ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj hMYhjMubj )}(h8``backlight_caps`` Capabilities of the backlight device h](j)}(h``backlight_caps``h]j)}(hj!h]hbacklight_caps}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMLhj ubj-)}(hhh]h)}(h$Capabilities of the backlight deviceh]h$Capabilities of the backlight device}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMLhj!ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj!hMLhjMubj )}(h:``freesync_module`` Module handling freesync calculations h](j)}(h``freesync_module``h]j)}(hj=!h]hfreesync_module}(hj?!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;!ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMMhj7!ubj-)}(hhh]h)}(h%Module handling freesync calculationsh]h%Module handling freesync calculations}(hjV!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjR!hMMhjS!ubah}(h]h ]h"]h$]h&]uh1j,hj7!ubeh}(h]h ]h"]h$]h&]uh1j hjR!hMMhjMubj )}(h3``hdcp_workqueue`` AMDGPU content protection queue h](j)}(h``hdcp_workqueue``h]j)}(hjv!h]hhdcp_workqueue}(hjx!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt!ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMNhjp!ubj-)}(hhh]h)}(hAMDGPU content protection queueh]hAMDGPU content protection queue}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMNhj!ubah}(h]h ]h"]h$]h&]uh1j,hjp!ubeh}(h]h ]h"]h$]h&]uh1j hj!hMNhjMubj )}(hF``vblank_control_workqueue`` Deferred work for vblank control events. h](j)}(h``vblank_control_workqueue``h]j)}(hj!h]hvblank_control_workqueue}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMIhj!ubj-)}(hhh]h)}(h(Deferred work for vblank control events.h]h(Deferred work for vblank control events.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMIhj!ubah}(h]h ]h"]h$]h&]uh1j,hj!ubeh}(h]h ]h"]h$]h&]uh1j hj!hMIhjMubj )}(h2``idle_workqueue`` Periodic work for idle events. h](j)}(h``idle_workqueue``h]j)}(hj!h]hidle_workqueue}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMPhj!ubj-)}(hhh]h)}(hPeriodic work for idle events.h]hPeriodic work for idle events.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMPhj!ubah}(h]h ]h"]h$]h&]uh1j,hj!ubeh}(h]h ]h"]h$]h&]uh1j hj!hMPhjMubj )}(h?``cached_state`` Caches device atomic state for suspend/resume h](j)}(h``cached_state``h]j)}(hj!"h]h cached_state}(hj#"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMRhj"ubj-)}(hhh]h)}(h-Caches device atomic state for suspend/resumeh]h-Caches device atomic state for suspend/resume}(hj:"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6"hMRhj7"ubah}(h]h ]h"]h$]h&]uh1j,hj"ubeh}(h]h ]h"]h$]h&]uh1j hj6"hMRhjMubj )}(h4``cached_dc_state`` Cached state of content streams h](j)}(h``cached_dc_state``h]j)}(hjZ"h]hcached_dc_state}(hj\"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX"ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMShjT"ubj-)}(hhh]h)}(hCached state of content streamsh]hCached state of content streams}(hjs"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo"hMShjp"ubah}(h]h ]h"]h$]h&]uh1j,hjT"ubeh}(h]h ]h"]h$]h&]uh1j hjo"hMShjMubj )}(hm``compressor`` Frame buffer compression buffer. See :c:type:`struct dm_compressor_info ` h](j)}(h``compressor``h]j)}(hj"h]h compressor}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMThj"ubj-)}(hhh]h)}(h]Frame buffer compression buffer. See :c:type:`struct dm_compressor_info `h](h%Frame buffer compression buffer. See }(hj"hhhNhNubh)}(h8:c:type:`struct dm_compressor_info `h]j)}(hj"h]hstruct dm_compressor_info}(hj"hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j dm_compressor_infouh1hhj"hMThj"ubeh}(h]h ]h"]h$]h&]uh1hhj"hMThj"ubah}(h]h ]h"]h$]h&]uh1j,hj"ubeh}(h]h ]h"]h$]h&]uh1j hj"hMThjMubj )}(h'``fw_dmcu`` Reference to DMCU firmware h](j)}(h ``fw_dmcu``h]j)}(hj"h]hfw_dmcu}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMOhj"ubj-)}(hhh]h)}(hReference to DMCU firmwareh]hReference to DMCU firmware}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMOhj#ubah}(h]h ]h"]h$]h&]uh1j,hj"ubeh}(h]h ]h"]h$]h&]uh1j hj#hMOhjMubj )}(h1``dmcu_fw_version`` Version of the DMCU firmware h](j)}(h``dmcu_fw_version``h]j)}(hj$#h]hdmcu_fw_version}(hj&#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"#ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMPhj#ubj-)}(hhh]h)}(hVersion of the DMCU firmwareh]hVersion of the DMCU firmware}(hj=#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9#hMPhj:#ubah}(h]h ]h"]h$]h&]uh1j,hj#ubeh}(h]h ]h"]h$]h&]uh1j hj9#hMPhjMubj )}(h^``soc_bounding_box`` gpu_info FW provided soc bounding box struct or 0 if not available in FW h](j)}(h``soc_bounding_box``h]j)}(hj]#h]hsoc_bounding_box}(hj_#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[#ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM_hjW#ubj-)}(hhh]h)}(hHgpu_info FW provided soc bounding box struct or 0 if not available in FWh]hHgpu_info FW provided soc bounding box struct or 0 if not available in FW}(hjv#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM^hjs#ubah}(h]h ]h"]h$]h&]uh1j,hjW#ubeh}(h]h ]h"]h$]h&]uh1j hjr#hM_hjMubj )}(hC``active_vblank_irq_count`` number of currently active vblank irqs h](j)}(h``active_vblank_irq_count``h]j)}(hj#h]hactive_vblank_irq_count}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMfhj#ubj-)}(hhh]h)}(h&number of currently active vblank irqsh]h&number of currently active vblank irqs}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMfhj#ubah}(h]h ]h"]h$]h&]uh1j,hj#ubeh}(h]h ]h"]h$]h&]uh1j hj#hMfhjMubj )}(h|``secure_display_ctx`` Store secure display relevant info. e.g. the ROI information , the work_struct to command dmub, etc. h](j)}(h``secure_display_ctx``h]j)}(hj#h]hsecure_display_ctx}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMohj#ubj-)}(hhh]h)}(hdStore secure display relevant info. e.g. the ROI information , the work_struct to command dmub, etc.h]hdStore secure display relevant info. e.g. the ROI information , the work_struct to command dmub, etc.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMnhj#ubah}(h]h ]h"]h$]h&]uh1j,hj#ubeh}(h]h ]h"]h$]h&]uh1j hj#hMohjMubj )}(h@``hpd_rx_offload_wq`` Work queue to offload works of hpd_rx_irq h](j)}(h``hpd_rx_offload_wq``h]j)}(hj $h]hhpd_rx_offload_wq}(hj $hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMvhj$ubj-)}(hhh]h)}(h)Work queue to offload works of hpd_rx_irqh]h)Work queue to offload works of hpd_rx_irq}(hj#$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMvhj $ubah}(h]h ]h"]h$]h&]uh1j,hj$ubeh}(h]h ]h"]h$]h&]uh1j hj$hMvhjMubj )}(h0``mst_encoders`` fake encoders used for DP MST. h](j)}(h``mst_encoders``h]j)}(hjC$h]h mst_encoders}(hjE$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA$ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM|hj=$ubj-)}(hhh]h)}(hfake encoders used for DP MST.h]hfake encoders used for DP MST.}(hj\$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjX$hM|hjY$ubah}(h]h ]h"]h$]h&]uh1j,hj=$ubeh}(h]h ]h"]h$]h&]uh1j hjX$hM|hjMubj )}(hv``force_timing_sync`` set via debugfs. When set, indicates that all connected displays will be forced to synchronize. h](j)}(h``force_timing_sync``h]j)}(hj|$h]hforce_timing_sync}(hj~$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz$ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMVhjv$ubj-)}(hhh]h)}(h_set via debugfs. When set, indicates that all connected displays will be forced to synchronize.h]h_set via debugfs. When set, indicates that all connected displays will be forced to synchronize.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMUhj$ubah}(h]h ]h"]h$]h&]uh1j,hjv$ubeh}(h]h ]h"]h$]h&]uh1j hj$hMVhjMubj )}(h[``disable_hpd_irq`` disables all HPD and HPD RX interrupt handling in the driver when true h](j)}(h``disable_hpd_irq``h]j)}(hj$h]hdisable_hpd_irq}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM[hj$ubj-)}(hhh]h)}(hFdisables all HPD and HPD RX interrupt handling in the driver when trueh]hFdisables all HPD and HPD RX interrupt handling in the driver when true}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMZhj$ubah}(h]h ]h"]h$]h&]uh1j,hj$ubeh}(h]h ]h"]h$]h&]uh1j hj$hM[hjMubj )}(h3``dmcub_trace_event_en`` enable dmcub trace events h](j)}(h``dmcub_trace_event_en``h]j)}(hj$h]hdmcub_trace_event_en}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMWhj$ubj-)}(hhh]h)}(henable dmcub trace eventsh]henable dmcub trace events}(hj %hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMWhj%ubah}(h]h ]h"]h$]h&]uh1j,hj$ubeh}(h]h ]h"]h$]h&]uh1j hj%hMWhjMubj )}(hG``da_list`` DAL fb memory allocation list, for communication with SMU. h](j)}(h ``da_list``h]j)}(hj)%h]hda_list}(hj+%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'%ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj#%ubj-)}(hhh]h)}(h:DAL fb memory allocation list, for communication with SMU.h]h:DAL fb memory allocation list, for communication with SMU.}(hjB%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>%hMhj?%ubah}(h]h ]h"]h$]h&]uh1j,hj#%ubeh}(h]h ]h"]h$]h&]uh1j hj>%hMhjMubj )}(h[``dmub_aux_transfer_done`` struct completion used to indicate when DMUB transfers are done h](j)}(h``dmub_aux_transfer_done``h]j)}(hjb%h]hdmub_aux_transfer_done}(hjd%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`%ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM]hj\%ubj-)}(hhh]h)}(h?struct completion used to indicate when DMUB transfers are doneh]h?struct completion used to indicate when DMUB transfers are done}(hj{%hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM\hjx%ubah}(h]h ]h"]h$]h&]uh1j,hj\%ubeh}(h]h ]h"]h$]h&]uh1j hjw%hM]hjMubj )}(h:``delayed_hpd_wq`` work queue used to delay DMUB HPD work h](j)}(h``delayed_hpd_wq``h]j)}(hj%h]hdelayed_hpd_wq}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM^hj%ubj-)}(hhh]h)}(h&work queue used to delay DMUB HPD workh]h&work queue used to delay DMUB HPD work}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hM^hj%ubah}(h]h ]h"]h$]h&]uh1j,hj%ubeh}(h]h ]h"]h$]h&]uh1j hj%hM^hjMubj )}(h(``brightness`` cached backlight values. h](j)}(h``brightness``h]j)}(hj%h]h brightness}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj%ubj-)}(hhh]h)}(hcached backlight values.h]hcached backlight values.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj%ubah}(h]h ]h"]h$]h&]uh1j,hj%ubeh}(h]h ]h"]h$]h&]uh1j hj%hMhjMubj )}(hB``actual_brightness`` last successfully applied backlight values. h](j)}(h``actual_brightness``h]j)}(hj&h]hactual_brightness}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj &ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj&ubj-)}(hhh]h)}(h+last successfully applied backlight values.h]h+last successfully applied backlight values.}(hj'&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#&hMhj$&ubah}(h]h ]h"]h$]h&]uh1j,hj&ubeh}(h]h ]h"]h$]h&]uh1j hj#&hMhjMubj )}(hh``aux_hpd_discon_quirk`` quirk for hpd discon while aux is on-going. occurred on certain intel platform h](j)}(h``aux_hpd_discon_quirk``h]j)}(hjG&h]haux_hpd_discon_quirk}(hjI&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE&ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjA&ubj-)}(hhh]h)}(hNquirk for hpd discon while aux is on-going. occurred on certain intel platformh]hNquirk for hpd discon while aux is on-going. occurred on certain intel platform}(hj`&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj]&ubah}(h]h ]h"]h$]h&]uh1j,hjA&ubeh}(h]h ]h"]h$]h&]uh1j hj\&hMhjMubj )}(h@``edp0_on_dp1_quirk`` quirk for platforms that put edp0 on DP1. h](j)}(h``edp0_on_dp1_quirk``h]j)}(hj&h]hedp0_on_dp1_quirk}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj{&ubj-)}(hhh]h)}(h)quirk for platforms that put edp0 on DP1.h]h)quirk for platforms that put edp0 on DP1.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1j,hj{&ubeh}(h]h ]h"]h$]h&]uh1j hj&hMhjMubj )}(h,``dpia_aux_lock`` Guards access to DPIA AUX h](j)}(h``dpia_aux_lock``h]j)}(hj&h]h dpia_aux_lock}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj&ubj-)}(hhh]h)}(hGuards access to DPIA AUXh]hGuards access to DPIA AUX}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1j,hj&ubeh}(h]h ]h"]h$]h&]uh1j hj&hMhjMubj )}(h``bb_from_dmub`` Bounding box data read from dmub during early initialization for DCN4+ Data is stored as a byte array that should be casted to the appropriate bb struct h](j)}(h``bb_from_dmub``h]j)}(hj&h]h bb_from_dmub}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj&ubj-)}(hhh]h)}(hBounding box data read from dmub during early initialization for DCN4+ Data is stored as a byte array that should be casted to the appropriate bb structh]hBounding box data read from dmub during early initialization for DCN4+ Data is stored as a byte array that should be casted to the appropriate bb struct}(hj 'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj 'ubah}(h]h ]h"]h$]h&]uh1j,hj&ubeh}(h]h ]h"]h$]h&]uh1j hj'hMhjMubj )}(hJ``i2c_devres_group`` Devres group for DM i2c adapter lifetime management. h](j)}(h``i2c_devres_group``h]j)}(hj-'h]hi2c_devres_group}(hj/'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+'ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj''ubj-)}(hhh]h)}(h4Devres group for DM i2c adapter lifetime management.h]h4Devres group for DM i2c adapter lifetime management.}(hjF'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB'hMhjC'ubah}(h]h ]h"]h$]h&]uh1j,hj''ubeh}(h]h ]h"]h$]h&]uh1j hjB'hMhjMubj )}(h``oem_i2c`` OEM i2c bus h](j)}(h ``oem_i2c``h]j)}(hjf'h]hoem_i2c}(hjh'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjd'ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj`'ubj-)}(hhh]h)}(h OEM i2c bush]h OEM i2c bus}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{'hMhj|'ubah}(h]h ]h"]h$]h&]uh1j,hj`'ubeh}(h]h ]h"]h$]h&]uh1j hj{'hMhjMubj )}(h%``fused_io`` dmub fused io interface h](j)}(h ``fused_io``h]j)}(hj'h]hfused_io}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj'ubj-)}(hhh]h)}(hdmub fused io interfaceh]hdmub fused io interface}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMhj'ubah}(h]h ]h"]h$]h&]uh1j,hj'ubeh}(h]h ]h"]h$]h&]uh1j hj'hMhjMubj )}(hG``hdmi_frl_status_polling_work`` workqueue for 200ms frl status pollingh](j)}(h ``hdmi_frl_status_polling_work``h]j)}(hj'h]hhdmi_frl_status_polling_work}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj'ubj-)}(hhh]h)}(h&workqueue for 200ms frl status pollingh]h&workqueue for 200ms frl status polling}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj'ubah}(h]h ]h"]h$]h&]uh1j,hj'ubeh}(h]h ]h"]h$]h&]uh1j hj'hMhjMubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j' amdgpu_hdmi_vsdb_info (C struct)c.amdgpu_hdmi_vsdb_infohNtauh1jhhhhhj+hNubj-)}(hhh](j2)}(hamdgpu_hdmi_vsdb_infoh]j8)}(hstruct amdgpu_hdmi_vsdb_infoh](j>)}(hjAh]hstruct}(hj2(hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj.(hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMubjP)}(h h]h }(hj@(hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj.(hhhj?(hMubja)}(hamdgpu_hdmi_vsdb_infoh]jg)}(hj,(h]hamdgpu_hdmi_vsdb_info}(hjR(hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjN(ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj.(hhhj?(hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj*(hhhj?(hMubah}(h]j%(ah ](jjeh"]h$]h&]jj)jhuh1j1hj?(hMhj'(hhubj)}(hhh]h)}(hKeep track of the VSDB infoh]hKeep track of the VSDB info}(hjt(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhjq(hhubah}(h]h ]h"]h$]h&]uh1jhj'(hhhj?(hMubeh}(h]h ](jstructeh"]h$]h&]jjjj(jj(jjjuh1j,hhhhhj+hNubj)}(hX**Definition**:: struct amdgpu_hdmi_vsdb_info { unsigned int amd_vsdb_version; bool freesync_supported; unsigned int min_refresh_rate_hz; unsigned int max_refresh_rate_hz; unsigned int freesync_mccs_vcp_code; bool replay_mode; }; **Members** ``amd_vsdb_version`` Vendor Specific Data Block Version, should be used to determine which Vendor Specific InfoFrame (VSIF) to send. ``freesync_supported`` FreeSync Supported. ``min_refresh_rate_hz`` FreeSync Minimum Refresh Rate in Hz. ``max_refresh_rate_hz`` FreeSync Maximum Refresh Rate in Hz ``freesync_mccs_vcp_code`` MCCS VCP code for freesync state ``replay_mode`` Replay supportedh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubh:}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj(ubj)}(hstruct amdgpu_hdmi_vsdb_info { unsigned int amd_vsdb_version; bool freesync_supported; unsigned int min_refresh_rate_hz; unsigned int max_refresh_rate_hz; unsigned int freesync_mccs_vcp_code; bool replay_mode; };h]hstruct amdgpu_hdmi_vsdb_info { unsigned int amd_vsdb_version; bool freesync_supported; unsigned int min_refresh_rate_hz; unsigned int max_refresh_rate_hz; unsigned int freesync_mccs_vcp_code; bool replay_mode; };}hj(sbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj(ubh)}(h **Members**h]j)}(hj(h]hMembers}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj(ubj)}(hhh](j )}(h``amd_vsdb_version`` Vendor Specific Data Block Version, should be used to determine which Vendor Specific InfoFrame (VSIF) to send. h](j)}(h``amd_vsdb_version``h]j)}(hj(h]hamd_vsdb_version}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj(ubj-)}(hhh]h)}(hoVendor Specific Data Block Version, should be used to determine which Vendor Specific InfoFrame (VSIF) to send.h]hoVendor Specific Data Block Version, should be used to determine which Vendor Specific InfoFrame (VSIF) to send.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj(ubah}(h]h ]h"]h$]h&]uh1j,hj(ubeh}(h]h ]h"]h$]h&]uh1j hj(hMhj(ubj )}(h+``freesync_supported`` FreeSync Supported. h](j)}(h``freesync_supported``h]j)}(hj)h]hfreesync_supported}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj)ubj-)}(hhh]h)}(hFreeSync Supported.h]hFreeSync Supported.}(hj4)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0)hMhj1)ubah}(h]h ]h"]h$]h&]uh1j,hj)ubeh}(h]h ]h"]h$]h&]uh1j hj0)hMhj(ubj )}(h=``min_refresh_rate_hz`` FreeSync Minimum Refresh Rate in Hz. h](j)}(h``min_refresh_rate_hz``h]j)}(hjT)h]hmin_refresh_rate_hz}(hjV)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR)ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhM hjN)ubj-)}(hhh]h)}(h$FreeSync Minimum Refresh Rate in Hz.h]h$FreeSync Minimum Refresh Rate in Hz.}(hjm)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhji)hM hjj)ubah}(h]h ]h"]h$]h&]uh1j,hjN)ubeh}(h]h ]h"]h$]h&]uh1j hji)hM hj(ubj )}(h<``max_refresh_rate_hz`` FreeSync Maximum Refresh Rate in Hz h](j)}(h``max_refresh_rate_hz``h]j)}(hj)h]hmax_refresh_rate_hz}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj)ubj-)}(hhh]h)}(h#FreeSync Maximum Refresh Rate in Hzh]h#FreeSync Maximum Refresh Rate in Hz}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1j,hj)ubeh}(h]h ]h"]h$]h&]uh1j hj)hMhj(ubj )}(h<``freesync_mccs_vcp_code`` MCCS VCP code for freesync state h](j)}(h``freesync_mccs_vcp_code``h]j)}(hj)h]hfreesync_mccs_vcp_code}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj)ubj-)}(hhh]h)}(h MCCS VCP code for freesync stateh]h MCCS VCP code for freesync state}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMhj)ubah}(h]h ]h"]h$]h&]uh1j,hj)ubeh}(h]h ]h"]h$]h&]uh1j hj)hMhj(ubj )}(h ``replay_mode`` Replay supportedh](j)}(h``replay_mode``h]j)}(hj)h]h replay_mode}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj)ubj-)}(hhh]h)}(hReplay supportedh]hReplay supported}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhj*ubah}(h]h ]h"]h$]h&]uh1j,hj)ubeh}(h]h ]h"]h$]h&]uh1j hj*hMhj(ubeh}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj+hNubh)}(h**Description**h]j)}(hjB*h]h Description}(hjD*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@*ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhhhhubh)}(hAMDGPU supports FreeSync over HDMI by using the VSDB section, and this struct is useful to keep track of the display-specific information about FreeSync.h]hAMDGPU supports FreeSync over HDMI by using the VSDB section, and this struct is useful to keep track of the display-specific information about FreeSync.}(hjX*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:11: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hhMhhhhubh)}(hhh](h)}(h Lifecycleh]h Lifecycle}(hjj*hhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjg*hhhhhKubh)}(hDM (and consequently DC) is registered in the amdgpu base driver as a IP block. When CONFIG_DRM_AMD_DC is enabled, the DM device IP block is added to the base driver's device list to be initialized and torn down accordingly.h]hDM (and consequently DC) is registered in the amdgpu base driver as a IP block. When CONFIG_DRM_AMD_DC is enabled, the DM device IP block is added to the base driver’s device list to be initialized and torn down accordingly.}(hjx*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:17: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjg*hhubh)}(h]The functions to do so are provided as hooks in :c:type:`struct amd_ip_funcs `.h](h0The functions to do so are provided as hooks in }(hj*hhhNhNubh)}(h,:c:type:`struct amd_ip_funcs `h]j)}(hj*h]hstruct amd_ip_funcs}(hj*hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  amd_ip_funcsuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:17: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhj*ubh.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj*hMhjg*hhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dm_hw_init (C function) c.dm_hw_inithNtauh1jhjg*hhhNhNubj-)}(hhh](j2)}(h1int dm_hw_init (struct amdgpu_ip_block *ip_block)h]j8)}(h0int dm_hw_init(struct amdgpu_ip_block *ip_block)h](hdesc_sig_keyword_type)}(hinth]hint}(hj*hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j*hj*hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chM<ubjP)}(h h]h }(hj*hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj*hhhj*hM<ubja)}(h dm_hw_inith]jg)}(h dm_hw_inith]h dm_hw_init}(hj*hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj*ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj*hhhj*hM<ubhdesc_parameterlist)}(h"(struct amdgpu_ip_block *ip_block)h]hdesc_parameter)}(h struct amdgpu_ip_block *ip_blockh](j>)}(hjAh]hstruct}(hj+hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj+ubjP)}(h h]h }(hj#+hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj+ubh)}(hhh]jg)}(hamdgpu_ip_blockh]hamdgpu_ip_block}(hj4+hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj1+ubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetj6+modnameN classnameNj'j*)}j-]j( ASTIdentifier)}jJ+j*sb c.dm_hw_initasbuh1hhj+ubjP)}(h h]h }(hjW+hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj+ubhdesc_sig_punctuation)}(h*h]h*}(hjg+hhhNhNubah}(h]h ]pah"]h$]h&]uh1je+hj+ubjg)}(hip_blockh]hip_block}(hjv+hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj+ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj +ubah}(h]h ]h"]h$]h&]j~juh1j +hj*hhhj*hM<ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj*hhhj*hM<ubah}(h]j*ah ](jjeh"]h$]h&]jj)jhuh1j1hj*hM<hj*hhubj)}(hhh]h)}(hInitialize DC deviceh]hInitialize DC device}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chM<hj+hhubah}(h]h ]h"]h$]h&]uh1jhj*hhhj*hM<ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj+jj+jjjuh1j,hhhjg*hNhNubj)}(hX**Parameters** ``struct amdgpu_ip_block *ip_block`` Pointer to the amdgpu_ip_block for this hw instance. **Description** Initialize the :c:type:`struct amdgpu_display_manager ` device. This involves calling the initializers of each DM component, then populating the struct with them. Although the function implies hardware initialization, both hardware and software are initialized here. Splitting them out to their relevant init hooks is a future TODO item. Some notable things that are initialized here: - Display Core, both software and hardware - DC modules that we need (freesync and color management) - DRM software states - Interrupt sources and handlers - Vblank support - Debug FS entries, if enabledh](h)}(h**Parameters**h]j)}(hj+h]h Parameters}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chM@hj+ubj)}(hhh]j )}(hZ``struct amdgpu_ip_block *ip_block`` Pointer to the amdgpu_ip_block for this hw instance. h](j)}(h$``struct amdgpu_ip_block *ip_block``h]j)}(hj+h]h struct amdgpu_ip_block *ip_block}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chM=hj+ubj-)}(hhh]h)}(h4Pointer to the amdgpu_ip_block for this hw instance.h]h4Pointer to the amdgpu_ip_block for this hw instance.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hM=hj+ubah}(h]h ]h"]h$]h&]uh1j,hj+ubeh}(h]h ]h"]h$]h&]uh1j hj+hM=hj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubh)}(h**Description**h]j)}(hj,h]h Description}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chM?hj+ubh)}(hInitialize the :c:type:`struct amdgpu_display_manager ` device. This involves calling the initializers of each DM component, then populating the struct with them.h](hInitialize the }(hj2,hhhNhNubh)}(h@:c:type:`struct amdgpu_display_manager `h]j)}(hj<,h]hstruct amdgpu_display_manager}(hj>,hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj:,ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j amdgpu_display_manageruh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chM>hj2,ubhk device. This involves calling the initializers of each DM component, then populating the struct with them.}(hj2,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjY,hM>hj+ubh)}(hAlthough the function implies hardware initialization, both hardware and software are initialized here. Splitting them out to their relevant init hooks is a future TODO item.h]hAlthough the function implies hardware initialization, both hardware and software are initialized here. Splitting them out to their relevant init hooks is a future TODO item.}(hjd,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMAhj+ubh)}(h.Some notable things that are initialized here:h]h.Some notable things that are initialized here:}(hjs,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMEhj+ubh)}(hhh](h)}(h(Display Core, both software and hardwareh]h)}(hj,h]h(Display Core, both software and hardware}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMGhj,ubah}(h]h ]h"]h$]h&]uh1hhj,ubh)}(h7DC modules that we need (freesync and color management)h]h)}(hj,h]h7DC modules that we need (freesync and color management)}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMHhj,ubah}(h]h ]h"]h$]h&]uh1hhj,ubh)}(hDRM software statesh]h)}(hj,h]hDRM software states}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMIhj,ubah}(h]h ]h"]h$]h&]uh1hhj,ubh)}(hInterrupt sources and handlersh]h)}(hj,h]hInterrupt sources and handlers}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMJhj,ubah}(h]h ]h"]h$]h&]uh1hhj,ubh)}(hVblank supporth]h)}(hj,h]hVblank support}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMKhj,ubah}(h]h ]h"]h$]h&]uh1hhj,ubh)}(hDebug FS entries, if enabledh]h)}(hj,h]hDebug FS entries, if enabled}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMLhj,ubah}(h]h ]h"]h$]h&]uh1hhj,ubeh}(h]h ]h"]h$]h&]bullet-uh1hhj,hMGhj+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjg*hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dm_hw_fini (C function) c.dm_hw_finihNtauh1jhjg*hhhNhNubj-)}(hhh](j2)}(h1int dm_hw_fini (struct amdgpu_ip_block *ip_block)h]j8)}(h0int dm_hw_fini(struct amdgpu_ip_block *ip_block)h](j*)}(hinth]hint}(hj=-hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj9-hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMkubjP)}(h h]h }(hjL-hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj9-hhhjK-hMkubja)}(h dm_hw_finih]jg)}(h dm_hw_finih]h dm_hw_fini}(hj^-hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjZ-ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj9-hhhjK-hMkubj +)}(h"(struct amdgpu_ip_block *ip_block)h]j+)}(h struct amdgpu_ip_block *ip_blockh](j>)}(hjAh]hstruct}(hjz-hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjv-ubjP)}(h h]h }(hj-hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjv-ubh)}(hhh]jg)}(hamdgpu_ip_blockh]hamdgpu_ip_block}(hj-hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj-modnameN classnameNj'j*)}j-]jR+)}jJ+j`-sb c.dm_hw_finiasbuh1hhjv-ubjP)}(h h]h }(hj-hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjv-ubjf+)}(hji+h]h*}(hj-hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjv-ubjg)}(hip_blockh]hip_block}(hj-hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjv-ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjr-ubah}(h]h ]h"]h$]h&]j~juh1j +hj9-hhhjK-hMkubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj5-hhhjK-hMkubah}(h]j0-ah ](jjeh"]h$]h&]jj)jhuh1j1hjK-hMkhj2-hhubj)}(hhh]h)}(hTeardown DC deviceh]hTeardown DC device}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMkhj-hhubah}(h]h ]h"]h$]h&]uh1jhj2-hhhjK-hMkubeh}(h]h ](jfunctioneh"]h$]h&]jjjj.jj.jjjuh1j,hhhjg*hNhNubj)}(hXk**Parameters** ``struct amdgpu_ip_block *ip_block`` Pointer to the amdgpu_ip_block for this hw instance. **Description** Teardown components within :c:type:`struct amdgpu_display_manager ` that require cleanup. This involves cleaning up the DRM device, DC, and any modules that were loaded. Also flush IRQ workqueues and disable them.h](h)}(h**Parameters**h]j)}(hj.h]h Parameters}(hj!.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMohj.ubj)}(hhh]j )}(hZ``struct amdgpu_ip_block *ip_block`` Pointer to the amdgpu_ip_block for this hw instance. h](j)}(h$``struct amdgpu_ip_block *ip_block``h]j)}(hj>.h]h struct amdgpu_ip_block *ip_block}(hj@.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<.ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMlhj8.ubj-)}(hhh]h)}(h4Pointer to the amdgpu_ip_block for this hw instance.h]h4Pointer to the amdgpu_ip_block for this hw instance.}(hjW.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS.hMlhjT.ubah}(h]h ]h"]h$]h&]uh1j,hj8.ubeh}(h]h ]h"]h$]h&]uh1j hjS.hMlhj5.ubah}(h]h ]h"]h$]h&]uh1jhj.ubh)}(h**Description**h]j)}(hjy.h]h Description}(hj{.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw.ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMnhj.ubh)}(hTeardown components within :c:type:`struct amdgpu_display_manager ` that require cleanup. This involves cleaning up the DRM device, DC, and any modules that were loaded. Also flush IRQ workqueues and disable them.h](hTeardown components within }(hj.hhhNhNubh)}(h@:c:type:`struct amdgpu_display_manager `h]j)}(hj.h]hstruct amdgpu_display_manager}(hj.hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j amdgpu_display_manageruh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:20: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMmhj.ubh that require cleanup. This involves cleaning up the DRM device, DC, and any modules that were loaded. Also flush IRQ workqueues and disable them.}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj.hMmhj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjg*hhhNhNubeh}(h]jah ]h"] lifecycleah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Interruptsh]h Interrupts}(hj.hhhNhNubah}(h]h ]h"]h$]h&]hj;uh1hhj.hhhhhKubh)}(hDM provides another layer of IRQ management on top of what the base driver already provides. This is something that could be cleaned up, and is a future TODO item.h]hDM provides another layer of IRQ management on top of what the base driver already provides. This is something that could be cleaned up, and is a future TODO item.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:26: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK2hj.hhubh)}(hXOThe base driver provides IRQ source registration with DRM, handler registration into the base driver's IRQ table, and a handler callback amdgpu_irq_handler(), with which DRM calls on interrupts. This generic handler looks up the IRQ table, and calls the respective :c:type:`amdgpu_irq_src_funcs.process ` hookups.h](hX The base driver provides IRQ source registration with DRM, handler registration into the base driver’s IRQ table, and a handler callback amdgpu_irq_handler(), with which DRM calls on interrupts. This generic handler looks up the IRQ table, and calls the respective }(hj.hhhNhNubh)}(h=:c:type:`amdgpu_irq_src_funcs.process `h]j)}(hj.h]hamdgpu_irq_src_funcs.process}(hj.hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j amdgpu_irq_src_funcsuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:26: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK6hj.ubh hookups.}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj/hK6hj.hhubh)}(hWhat DM provides on top are two IRQ tables specifically for top-half and bottom-half IRQ handling, with the bottom-half implementing workqueues:h]hWhat DM provides on top are two IRQ tables specifically for top-half and bottom-half IRQ handling, with the bottom-half implementing workqueues:}(hj!/hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:26: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK`h]h)}(hj5/h]h)}(hj5/h]j)}(hj5/h]h0amdgpu_display_manager.irq_handler_list_high_tab}(hj=/hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj:/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j amdgpu_display_manageruh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:26: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK?hj7/ubah}(h]h ]h"]h$]h&]uh1hhjX/hK?hj3/ubah}(h]h ]h"]h$]h&]uh1hhj0/ubh)}(hS:c:type:`amdgpu_display_manager.irq_handler_list_low_tab ` h]h)}(hR:c:type:`amdgpu_display_manager.irq_handler_list_low_tab `h]h)}(hjk/h]j)}(hjk/h]h/amdgpu_display_manager.irq_handler_list_low_tab}(hjp/hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjm/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j amdgpu_display_manageruh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:26: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK@hji/ubah}(h]h ]h"]h$]h&]uh1hhj/hK@hje/ubah}(h]h ]h"]h$]h&]uh1hhj0/ubeh}(h]h ]h"]h$]h&]j-j-uh1hhjX/hK?hj.hhubh)}(hXThey override the base driver's IRQ table, and the effect can be seen in the hooks that DM provides for :c:type:`amdgpu_irq_src_funcs.process `. They are all set to the DM generic handler amdgpu_dm_irq_handler(), which looks up DM's IRQ tables. However, in order for base driver to recognize this hook, DM still needs to register the IRQ with the base driver. See amdgpu_dm_dce110_register_irq_handlers() and amdgpu_dm_dcn10_register_irq_handlers().h](hjThey override the base driver’s IRQ table, and the effect can be seen in the hooks that DM provides for }(hj/hhhNhNubh)}(h=:c:type:`amdgpu_irq_src_funcs.process `h]j)}(hj/h]hamdgpu_irq_src_funcs.process}(hj/hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j amdgpu_irq_src_funcsuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:26: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKBhj/ubhX4. They are all set to the DM generic handler amdgpu_dm_irq_handler(), which looks up DM’s IRQ tables. However, in order for base driver to recognize this hook, DM still needs to register the IRQ with the base driver. See amdgpu_dm_dce110_register_irq_handlers() and amdgpu_dm_dcn10_register_irq_handlers().}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj/hKBhj.hhubh)}(hTo expose DC's hardware interrupt toggle to the base driver, DM implements :c:type:`amdgpu_irq_src_funcs.set ` hooks. Base driver calls it through amdgpu_irq_update() to enable or disable the interrupt.h](hMTo expose DC’s hardware interrupt toggle to the base driver, DM implements }(hj/hhhNhNubh)}(h9:c:type:`amdgpu_irq_src_funcs.set `h]j)}(hj/h]hamdgpu_irq_src_funcs.set}(hj/hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j amdgpu_irq_src_funcsuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:26: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKJhj/ubh\ hooks. Base driver calls it through amdgpu_irq_update() to enable or disable the interrupt.}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj/hKJhj.hhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'%amdgpu_dm_irq_handler_data (C struct)c.amdgpu_dm_irq_handler_datahNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(hamdgpu_dm_irq_handler_datah]j8)}(h!struct amdgpu_dm_irq_handler_datah](j>)}(hjAh]hstruct}(hj0hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj0hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKubjP)}(h h]h }(hj)0hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj0hhhj(0hKubja)}(hamdgpu_dm_irq_handler_datah]jg)}(hj0h]hamdgpu_dm_irq_handler_data}(hj;0hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj70ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj0hhhj(0hKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj0hhhj(0hKubah}(h]j0ah ](jjeh"]h$]h&]jj)jhuh1j1hj(0hKhj0hhubj)}(hhh]h)}(hData for DM interrupt handlers.h]hData for DM interrupt handlers.}(hj]0hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKVhjZ0hhubah}(h]h ]h"]h$]h&]uh1jhj0hhhj(0hKubeh}(h]h ](jstructeh"]h$]h&]jjjju0jju0jjjuh1j,hhhj.hNhNubj)}(hX?**Definition**:: struct amdgpu_dm_irq_handler_data { struct list_head list; interrupt_handler handler; void *handler_arg; struct amdgpu_display_manager *dm; enum dc_irq_source irq_source; struct work_struct work; }; **Members** ``list`` Linked list entry referencing the next/previous handler ``handler`` Handler function ``handler_arg`` Argument passed to the handler when triggered ``dm`` DM which this handler belongs to ``irq_source`` DC interrupt source that this handler is registered for ``work`` work structh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}0ubh:}(hj}0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKZhjy0ubj)}(hstruct amdgpu_dm_irq_handler_data { struct list_head list; interrupt_handler handler; void *handler_arg; struct amdgpu_display_manager *dm; enum dc_irq_source irq_source; struct work_struct work; };h]hstruct amdgpu_dm_irq_handler_data { struct list_head list; interrupt_handler handler; void *handler_arg; struct amdgpu_display_manager *dm; enum dc_irq_source irq_source; struct work_struct work; };}hj0sbah}(h]h ]h"]h$]h&]j~juh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK\hjy0ubh)}(h **Members**h]j)}(hj0h]hMembers}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKehjy0ubj)}(hhh](j )}(hA``list`` Linked list entry referencing the next/previous handler h](j)}(h``list``h]j)}(hj0h]hlist}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKYhj0ubj-)}(hhh]h)}(h7Linked list entry referencing the next/previous handlerh]h7Linked list entry referencing the next/previous handler}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKYhj0ubah}(h]h ]h"]h$]h&]uh1j,hj0ubeh}(h]h ]h"]h$]h&]uh1j hj0hKYhj0ubj )}(h``handler`` Handler function h](j)}(h ``handler``h]j)}(hj1h]hhandler}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKZhj0ubj-)}(hhh]h)}(hHandler functionh]hHandler function}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hKZhj1ubah}(h]h ]h"]h$]h&]uh1j,hj0ubeh}(h]h ]h"]h$]h&]uh1j hj1hKZhj0ubj )}(h>``handler_arg`` Argument passed to the handler when triggered h](j)}(h``handler_arg``h]j)}(hj<1h]h handler_arg}(hj>1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:1ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK[hj61ubj-)}(hhh]h)}(h-Argument passed to the handler when triggeredh]h-Argument passed to the handler when triggered}(hjU1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ1hK[hjR1ubah}(h]h ]h"]h$]h&]uh1j,hj61ubeh}(h]h ]h"]h$]h&]uh1j hjQ1hK[hj0ubj )}(h(``dm`` DM which this handler belongs to h](j)}(h``dm``h]j)}(hju1h]hdm}(hjw1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs1ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK\hjo1ubj-)}(hhh]h)}(h DM which this handler belongs toh]h DM which this handler belongs to}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hK\hj1ubah}(h]h ]h"]h$]h&]uh1j,hjo1ubeh}(h]h ]h"]h$]h&]uh1j hj1hK\hj0ubj )}(hG``irq_source`` DC interrupt source that this handler is registered for h](j)}(h``irq_source``h]j)}(hj1h]h irq_source}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK]hj1ubj-)}(hhh]h)}(h7DC interrupt source that this handler is registered forh]h7DC interrupt source that this handler is registered for}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hK]hj1ubah}(h]h ]h"]h$]h&]uh1j,hj1ubeh}(h]h ]h"]h$]h&]uh1j hj1hK]hj0ubj )}(h``work`` work structh](j)}(h``work``h]j)}(hj1h]hwork}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK]hj1ubj-)}(hhh]h)}(h work structh]h work struct}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chK^hj1ubah}(h]h ]h"]h$]h&]uh1j,hj1ubeh}(h]h ]h"]h$]h&]uh1j hj1hK]hj0ubeh}(h]h ]h"]h$]h&]uh1jhjy0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dm_irq_work_func (C function)c.dm_irq_work_funchNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(h0void dm_irq_work_func (struct work_struct *work)h]j8)}(h/void dm_irq_work_func(struct work_struct *work)h](j*)}(hvoidh]hvoid}(hjA2hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj=2hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKubjP)}(h h]h }(hjP2hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj=2hhhjO2hKubja)}(hdm_irq_work_funch]jg)}(hdm_irq_work_funch]hdm_irq_work_func}(hjb2hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj^2ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj=2hhhjO2hKubj +)}(h(struct work_struct *work)h]j+)}(hstruct work_struct *workh](j>)}(hjAh]hstruct}(hj~2hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjz2ubjP)}(h h]h }(hj2hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjz2ubh)}(hhh]jg)}(h work_structh]h work_struct}(hj2hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj2ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj2modnameN classnameNj'j*)}j-]jR+)}jJ+jd2sbc.dm_irq_work_funcasbuh1hhjz2ubjP)}(h h]h }(hj2hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjz2ubjf+)}(hji+h]h*}(hj2hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjz2ubjg)}(hworkh]hwork}(hj2hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjz2ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjv2ubah}(h]h ]h"]h$]h&]j~juh1j +hj=2hhhjO2hKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj92hhhjO2hKubah}(h]j42ah ](jjeh"]h$]h&]jj)jhuh1j1hjO2hKhj62hhubj)}(hhh]h)}(h6Handle an IRQ outside of the interrupt handler proper.h]h6Handle an IRQ outside of the interrupt handler proper.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKhj2hhubah}(h]h ]h"]h$]h&]uh1jhj62hhhjO2hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj3jj3jjjuh1j,hhhj.hNhNubj)}(h:**Parameters** ``struct work_struct *work`` work structh](h)}(h**Parameters**h]j)}(hj#3h]h Parameters}(hj%3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!3ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKhj3ubj)}(hhh]j )}(h(``struct work_struct *work`` work structh](j)}(h``struct work_struct *work``h]j)}(hjB3h]hstruct work_struct *work}(hjD3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@3ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKhj<3ubj-)}(hhh]h)}(h work structh]h work struct}(hj[3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chKhjX3ubah}(h]h ]h"]h$]h&]uh1j,hj<3ubeh}(h]h ]h"]h$]h&]uh1j hjW3hKhj93ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'-amdgpu_dm_irq_register_interrupt (C function)"c.amdgpu_dm_irq_register_interrupthNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(hvoid * amdgpu_dm_irq_register_interrupt (struct amdgpu_device *adev, struct dc_interrupt_params *int_params, void (*ih)(void *), void *handler_args)h]j8)}(hvoid *amdgpu_dm_irq_register_interrupt(struct amdgpu_device *adev, struct dc_interrupt_params *int_params, void (*ih)(void*), void *handler_args)h](j*)}(hvoidh]hvoid}(hj3hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj3hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMubjP)}(h h]h }(hj3hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj3hhhj3hMubjf+)}(hji+h]h*}(hj3hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj3hhhj3hMubja)}(h amdgpu_dm_irq_register_interrupth]jg)}(h amdgpu_dm_irq_register_interrupth]h amdgpu_dm_irq_register_interrupt}(hj3hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj3ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj3hhhj3hMubj +)}(hk(struct amdgpu_device *adev, struct dc_interrupt_params *int_params, void (*ih)(void*), void *handler_args)h](j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hj3hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj3ubjP)}(h h]h }(hj3hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj3ubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hj4hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj4modnameN classnameNj'j*)}j-]jR+)}jJ+j3sb"c.amdgpu_dm_irq_register_interruptasbuh1hhj3ubjP)}(h h]h }(hj$4hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj3ubjf+)}(hji+h]h*}(hj24hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj3ubjg)}(hadevh]hadev}(hj?4hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj3ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj3ubj+)}(h&struct dc_interrupt_params *int_paramsh](j>)}(hjAh]hstruct}(hjX4hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjT4ubjP)}(h h]h }(hje4hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjT4ubh)}(hhh]jg)}(hdc_interrupt_paramsh]hdc_interrupt_params}(hjv4hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjs4ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjx4modnameN classnameNj'j*)}j-]j 4"c.amdgpu_dm_irq_register_interruptasbuh1hhjT4ubjP)}(h h]h }(hj4hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjT4ubjf+)}(hji+h]h*}(hj4hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjT4ubjg)}(h int_paramsh]h int_params}(hj4hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjT4ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj3ubj+)}(hvoid (*ih)(void*)h](j*)}(hvoidh]hvoid}(hj4hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj4ubjP)}(h h]h }(hj4hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj4ubjf+)}(h(h]h(}(hj4hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj4ubjf+)}(hji+h]h*}(hj4hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj4ubjg)}(hihh]hih}(hj4hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj4ubjf+)}(h)h]h)}(hj 5hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj4ubjf+)}(hj4h]h(}(hj5hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj4ubj*)}(hvoidh]hvoid}(hj(5hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj4ubjf+)}(hji+h]h*}(hj65hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj4ubjf+)}(hj5h]h)}(hjC5hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj4ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj3ubj+)}(hvoid *handler_argsh](j*)}(hvoidh]hvoid}(hj[5hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjW5ubjP)}(h h]h }(hji5hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjW5ubjf+)}(hji+h]h*}(hjw5hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjW5ubjg)}(h handler_argsh]h handler_args}(hj5hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjW5ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj3ubeh}(h]h ]h"]h$]h&]j~juh1j +hj3hhhj3hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj3hhhj3hMubah}(h]j3ah ](jjeh"]h$]h&]jj)jhuh1j1hj3hMhj3hhubj)}(hhh]h)}(hRegister a handler within DM.h]hRegister a handler within DM.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj5hhubah}(h]h ]h"]h$]h&]uh1jhj3hhhj3hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj5jj5jjjuh1j,hhhj.hNhNubj)}(hX**Parameters** ``struct amdgpu_device *adev`` The base driver device containing the DM device. ``struct dc_interrupt_params *int_params`` Interrupt parameters containing the source, and handler context ``void (*ih)(void *)`` Function pointer to the interrupt handler to register ``void *handler_args`` Arguments passed to the handler when the interrupt occurs **Description** Register an interrupt handler for the given IRQ source, under the given context. The context can either be high or low. High context handlers are executed directly within ISR context, while low context is executed within a workqueue, thereby allowing operations that sleep. Registered handlers are called in a FIFO manner, i.e. the most recently registered handler will be called first. **Return** Handler data :c:type:`struct amdgpu_dm_irq_handler_data ` containing the IRQ source, handler function, and argsh](h)}(h**Parameters**h]j)}(hj5h]h Parameters}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj5ubj)}(hhh](j )}(hP``struct amdgpu_device *adev`` The base driver device containing the DM device. h](j)}(h``struct amdgpu_device *adev``h]j)}(hj5h]hstruct amdgpu_device *adev}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj5ubj-)}(hhh]h)}(h0The base driver device containing the DM device.h]h0The base driver device containing the DM device.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1j,hj5ubeh}(h]h ]h"]h$]h&]uh1j hj6hMhj5ubj )}(hk``struct dc_interrupt_params *int_params`` Interrupt parameters containing the source, and handler context h](j)}(h*``struct dc_interrupt_params *int_params``h]j)}(hj(6h]h&struct dc_interrupt_params *int_params}(hj*6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&6ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj"6ubj-)}(hhh]h)}(h?Interrupt parameters containing the source, and handler contexth]h?Interrupt parameters containing the source, and handler context}(hjA6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=6hMhj>6ubah}(h]h ]h"]h$]h&]uh1j,hj"6ubeh}(h]h ]h"]h$]h&]uh1j hj=6hMhj5ubj )}(hM``void (*ih)(void *)`` Function pointer to the interrupt handler to register h](j)}(h``void (*ih)(void *)``h]j)}(hja6h]hvoid (*ih)(void *)}(hjc6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_6ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj[6ubj-)}(hhh]h)}(h5Function pointer to the interrupt handler to registerh]h5Function pointer to the interrupt handler to register}(hjz6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjv6hMhjw6ubah}(h]h ]h"]h$]h&]uh1j,hj[6ubeh}(h]h ]h"]h$]h&]uh1j hjv6hMhj5ubj )}(hQ``void *handler_args`` Arguments passed to the handler when the interrupt occurs h](j)}(h``void *handler_args``h]j)}(hj6h]hvoid *handler_args}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj6ubj-)}(hhh]h)}(h9Arguments passed to the handler when the interrupt occursh]h9Arguments passed to the handler when the interrupt occurs}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1j,hj6ubeh}(h]h ]h"]h$]h&]uh1j hj6hMhj5ubeh}(h]h ]h"]h$]h&]uh1jhj5ubh)}(h**Description**h]j)}(hj6h]h Description}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj5ubh)}(hXRegister an interrupt handler for the given IRQ source, under the given context. The context can either be high or low. High context handlers are executed directly within ISR context, while low context is executed within a workqueue, thereby allowing operations that sleep.h]hXRegister an interrupt handler for the given IRQ source, under the given context. The context can either be high or low. High context handlers are executed directly within ISR context, while low context is executed within a workqueue, thereby allowing operations that sleep.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj5ubh)}(hpRegistered handlers are called in a FIFO manner, i.e. the most recently registered handler will be called first.h]hpRegistered handlers are called in a FIFO manner, i.e. the most recently registered handler will be called first.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM hj5ubh)}(h **Return**h]j)}(hj 7h]hReturn}(hj 7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 7ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM hj5ubh)}(hHandler data :c:type:`struct amdgpu_dm_irq_handler_data ` containing the IRQ source, handler function, and argsh](h Handler data }(hj!7hhhNhNubh)}(hH:c:type:`struct amdgpu_dm_irq_handler_data `h]j)}(hj+7h]h!struct amdgpu_dm_irq_handler_data}(hj-7hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj)7ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j amdgpu_dm_irq_handler_datauh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj!7ubh6 containing the IRQ source, handler function, and args}(hj!7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjH7hMhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'/amdgpu_dm_irq_unregister_interrupt (C function)$c.amdgpu_dm_irq_unregister_interrupthNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(hmvoid amdgpu_dm_irq_unregister_interrupt (struct amdgpu_device *adev, enum dc_irq_source irq_source, void *ih)h]j8)}(hlvoid amdgpu_dm_irq_unregister_interrupt(struct amdgpu_device *adev, enum dc_irq_source irq_source, void *ih)h](j*)}(hvoidh]hvoid}(hjs7hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjo7hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMMubjP)}(h h]h }(hj7hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjo7hhhj7hMMubja)}(h"amdgpu_dm_irq_unregister_interrupth]jg)}(h"amdgpu_dm_irq_unregister_interrupth]h"amdgpu_dm_irq_unregister_interrupt}(hj7hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj7ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjo7hhhj7hMMubj +)}(hE(struct amdgpu_device *adev, enum dc_irq_source irq_source, void *ih)h](j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hj7hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj7ubjP)}(h h]h }(hj7hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj7ubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hj7hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj7modnameN classnameNj'j*)}j-]jR+)}jJ+j7sb$c.amdgpu_dm_irq_unregister_interruptasbuh1hhj7ubjP)}(h h]h }(hj7hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj7ubjf+)}(hji+h]h*}(hj7hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj7ubjg)}(hadevh]hadev}(hj 8hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj7ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj7ubj+)}(henum dc_irq_source irq_sourceh](j>)}(henumh]henum}(hj"8hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj8ubjP)}(h h]h }(hj08hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj8ubh)}(hhh]jg)}(h dc_irq_sourceh]h dc_irq_source}(hjA8hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj>8ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjC8modnameN classnameNj'j*)}j-]j7$c.amdgpu_dm_irq_unregister_interruptasbuh1hhj8ubjP)}(h h]h }(hj_8hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj8ubjg)}(h irq_sourceh]h irq_source}(hjm8hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj8ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj7ubj+)}(hvoid *ihh](j*)}(hvoidh]hvoid}(hj8hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj8ubjP)}(h h]h }(hj8hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj8ubjf+)}(hji+h]h*}(hj8hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj8ubjg)}(hihh]hih}(hj8hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj8ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj7ubeh}(h]h ]h"]h$]h&]j~juh1j +hjo7hhhj7hMMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjk7hhhj7hMMubah}(h]jf7ah ](jjeh"]h$]h&]jj)jhuh1j1hj7hMMhjh7hhubj)}(hhh]h)}(h&Remove a handler from the DM IRQ tableh]h&Remove a handler from the DM IRQ table}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMMhj8hhubah}(h]h ]h"]h$]h&]uh1jhjh7hhhj7hMMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj8jj8jjjuh1j,hhhj.hNhNubj)}(hX**Parameters** ``struct amdgpu_device *adev`` The base driver device containing the DM device ``enum dc_irq_source irq_source`` IRQ source to remove the given handler from ``void *ih`` Function pointer to the interrupt handler to unregister **Description** Go through both low and high context IRQ tables, and find the given handler for the given irq source. If found, remove it. Otherwise, do nothing.h](h)}(h**Parameters**h]j)}(hj8h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMQhj8ubj)}(hhh](j )}(hO``struct amdgpu_device *adev`` The base driver device containing the DM device h](j)}(h``struct amdgpu_device *adev``h]j)}(hj9h]hstruct amdgpu_device *adev}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMNhj9ubj-)}(hhh]h)}(h/The base driver device containing the DM deviceh]h/The base driver device containing the DM device}(hj39hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/9hMNhj09ubah}(h]h ]h"]h$]h&]uh1j,hj9ubeh}(h]h ]h"]h$]h&]uh1j hj/9hMNhj9ubj )}(hN``enum dc_irq_source irq_source`` IRQ source to remove the given handler from h](j)}(h!``enum dc_irq_source irq_source``h]j)}(hjS9h]henum dc_irq_source irq_source}(hjU9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ9ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMOhjM9ubj-)}(hhh]h)}(h+IRQ source to remove the given handler fromh]h+IRQ source to remove the given handler from}(hjl9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjh9hMOhji9ubah}(h]h ]h"]h$]h&]uh1j,hjM9ubeh}(h]h ]h"]h$]h&]uh1j hjh9hMOhj9ubj )}(hE``void *ih`` Function pointer to the interrupt handler to unregister h](j)}(h ``void *ih``h]j)}(hj9h]hvoid *ih}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMPhj9ubj-)}(hhh]h)}(h7Function pointer to the interrupt handler to unregisterh]h7Function pointer to the interrupt handler to unregister}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMPhj9ubah}(h]h ]h"]h$]h&]uh1j,hj9ubeh}(h]h ]h"]h$]h&]uh1j hj9hMPhj9ubeh}(h]h ]h"]h$]h&]uh1jhj8ubh)}(h**Description**h]j)}(hj9h]h Description}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMRhj8ubh)}(hGo through both low and high context IRQ tables, and find the given handler for the given irq source. If found, remove it. Otherwise, do nothing.h]hGo through both low and high context IRQ tables, and find the given handler for the given irq source. If found, remove it. Otherwise, do nothing.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMQhj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'amdgpu_dm_irq_init (C function)c.amdgpu_dm_irq_inithNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(h3int amdgpu_dm_irq_init (struct amdgpu_device *adev)h]j8)}(h2int amdgpu_dm_irq_init(struct amdgpu_device *adev)h](j*)}(hinth]hint}(hj :hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj:hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMzubjP)}(h h]h }(hj:hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj:hhhj:hMzubja)}(hamdgpu_dm_irq_inith]jg)}(hamdgpu_dm_irq_inith]hamdgpu_dm_irq_init}(hj-:hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj):ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj:hhhj:hMzubj +)}(h(struct amdgpu_device *adev)h]j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hjI:hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjE:ubjP)}(h h]h }(hjV:hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjE:ubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hjg:hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjd:ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetji:modnameN classnameNj'j*)}j-]jR+)}jJ+j/:sbc.amdgpu_dm_irq_initasbuh1hhjE:ubjP)}(h h]h }(hj:hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjE:ubjf+)}(hji+h]h*}(hj:hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjE:ubjg)}(hadevh]hadev}(hj:hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjE:ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjA:ubah}(h]h ]h"]h$]h&]j~juh1j +hj:hhhj:hMzubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj:hhhj:hMzubah}(h]j9ah ](jjeh"]h$]h&]jj)jhuh1j1hj:hMzhj:hhubj)}(hhh]h)}(hInitialize DM IRQ managementh]hInitialize DM IRQ management}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMzhj:hhubah}(h]h ]h"]h$]h&]uh1jhj:hhhj:hMzubeh}(h]h ](jfunctioneh"]h$]h&]jjjj:jj:jjjuh1j,hhhj.hNhNubj)}(hXt**Parameters** ``struct amdgpu_device *adev`` The base driver device containing the DM device **Description** Initialize DM's high and low context IRQ tables. The N by M table contains N IRQ sources, with M :c:type:`struct amdgpu_dm_irq_handler_data ` hooked together in a linked list. The list_heads are initialized here. When an interrupt n is triggered, all m handlers are called in sequence, FIFO according to registration order. The low context table requires special steps to initialize, since handlers will be deferred to a workqueue. See :c:type:`struct irq_list_head `.h](h)}(h**Parameters**h]j)}(hj:h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM~hj:ubj)}(hhh]j )}(hO``struct amdgpu_device *adev`` The base driver device containing the DM device h](j)}(h``struct amdgpu_device *adev``h]j)}(hj ;h]hstruct amdgpu_device *adev}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ;ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM{hj;ubj-)}(hhh]h)}(h/The base driver device containing the DM deviceh]h/The base driver device containing the DM device}(hj&;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj";hM{hj#;ubah}(h]h ]h"]h$]h&]uh1j,hj;ubeh}(h]h ]h"]h$]h&]uh1j hj";hM{hj;ubah}(h]h ]h"]h$]h&]uh1jhj:ubh)}(h**Description**h]j)}(hjH;h]h Description}(hjJ;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjF;ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM}hj:ubh)}(h0Initialize DM's high and low context IRQ tables.h]h2Initialize DM’s high and low context IRQ tables.}(hj^;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM|hj:ubh)}(hX.The N by M table contains N IRQ sources, with M :c:type:`struct amdgpu_dm_irq_handler_data ` hooked together in a linked list. The list_heads are initialized here. When an interrupt n is triggered, all m handlers are called in sequence, FIFO according to registration order.h](h0The N by M table contains N IRQ sources, with M }(hjm;hhhNhNubh)}(hH:c:type:`struct amdgpu_dm_irq_handler_data `h]j)}(hjw;h]h!struct amdgpu_dm_irq_handler_data}(hjy;hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhju;ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j amdgpu_dm_irq_handler_datauh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM~hjm;ubh hooked together in a linked list. The list_heads are initialized here. When an interrupt n is triggered, all m handlers are called in sequence, FIFO according to registration order.}(hjm;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj;hM~hj:ubh)}(hThe low context table requires special steps to initialize, since handlers will be deferred to a workqueue. See :c:type:`struct irq_list_head `.h](hpThe low context table requires special steps to initialize, since handlers will be deferred to a workqueue. See }(hj;hhhNhNubh)}(h.:c:type:`struct irq_list_head `h]j)}(hj;h]hstruct irq_list_head}(hj;hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  irq_list_headuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj;ubh.}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj;hMhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'amdgpu_dm_irq_fini (C function)c.amdgpu_dm_irq_finihNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(h4void amdgpu_dm_irq_fini (struct amdgpu_device *adev)h]j8)}(h3void amdgpu_dm_irq_fini(struct amdgpu_device *adev)h](j*)}(hvoidh]hvoid}(hj;hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj;hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMubjP)}(h h]h }(hj<hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj;hhhj;hMubja)}(hamdgpu_dm_irq_finih]jg)}(hamdgpu_dm_irq_finih]hamdgpu_dm_irq_fini}(hj<hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj<ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj;hhhj;hMubj +)}(h(struct amdgpu_device *adev)h]j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hj.<hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj*<ubjP)}(h h]h }(hj;<hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj*<ubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hjL<hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjI<ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjN<modnameN classnameNj'j*)}j-]jR+)}jJ+j<sbc.amdgpu_dm_irq_finiasbuh1hhj*<ubjP)}(h h]h }(hjl<hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj*<ubjf+)}(hji+h]h*}(hjz<hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj*<ubjg)}(hadevh]hadev}(hj<hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj*<ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj&<ubah}(h]h ]h"]h$]h&]j~juh1j +hj;hhhj;hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj;hhhj;hMubah}(h]j;ah ](jjeh"]h$]h&]jj)jhuh1j1hj;hMhj;hhubj)}(hhh]h)}(hTear down DM IRQ managementh]hTear down DM IRQ management}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj<hhubah}(h]h ]h"]h$]h&]uh1jhj;hhhj;hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj<jj<jjjuh1j,hhhj.hNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` The base driver device containing the DM device **Description** Removes all handlers from the IRQ tables under the spinlock, cancels pending work items, and deallocates all handler data.h](h)}(h**Parameters**h]j)}(hj<h]h Parameters}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj<ubj)}(hhh]j )}(hO``struct amdgpu_device *adev`` The base driver device containing the DM device h](j)}(h``struct amdgpu_device *adev``h]j)}(hj<h]hstruct amdgpu_device *adev}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj<ubj-)}(hhh]h)}(h/The base driver device containing the DM deviceh]h/The base driver device containing the DM device}(hj =hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hMhj=ubah}(h]h ]h"]h$]h&]uh1j,hj<ubeh}(h]h ]h"]h$]h&]uh1j hj=hMhj<ubah}(h]h ]h"]h$]h&]uh1jhj<ubh)}(h**Description**h]j)}(hj-=h]h Description}(hj/=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+=ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj<ubh)}(hzRemoves all handlers from the IRQ tables under the spinlock, cancels pending work items, and deallocates all handler data.h]hzRemoves all handlers from the IRQ tables under the spinlock, cancels pending work items, and deallocates all handler data.}(hjC=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'"amdgpu_dm_irq_handler (C function)c.amdgpu_dm_irq_handlerhNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(htint amdgpu_dm_irq_handler (struct amdgpu_device *adev, struct amdgpu_irq_src *source, struct amdgpu_iv_entry *entry)h]j8)}(hsint amdgpu_dm_irq_handler(struct amdgpu_device *adev, struct amdgpu_irq_src *source, struct amdgpu_iv_entry *entry)h](j*)}(hinth]hint}(hjr=hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjn=hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMubjP)}(h h]h }(hj=hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjn=hhhj=hMubja)}(hamdgpu_dm_irq_handlerh]jg)}(hamdgpu_dm_irq_handlerh]hamdgpu_dm_irq_handler}(hj=hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj=ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjn=hhhj=hMubj +)}(hZ(struct amdgpu_device *adev, struct amdgpu_irq_src *source, struct amdgpu_iv_entry *entry)h](j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hj=hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj=ubjP)}(h h]h }(hj=hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj=ubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hj=hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj=ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj=modnameN classnameNj'j*)}j-]jR+)}jJ+j=sbc.amdgpu_dm_irq_handlerasbuh1hhj=ubjP)}(h h]h }(hj=hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj=ubjf+)}(hji+h]h*}(hj=hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj=ubjg)}(hadevh]hadev}(hj>hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj=ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj=ubj+)}(hstruct amdgpu_irq_src *sourceh](j>)}(hjAh]hstruct}(hj!>hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj>ubjP)}(h h]h }(hj.>hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj>ubh)}(hhh]jg)}(hamdgpu_irq_srch]hamdgpu_irq_src}(hj?>hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj<>ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjA>modnameN classnameNj'j*)}j-]j=c.amdgpu_dm_irq_handlerasbuh1hhj>ubjP)}(h h]h }(hj]>hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj>ubjf+)}(hji+h]h*}(hjk>hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj>ubjg)}(hsourceh]hsource}(hjx>hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj>ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj=ubj+)}(hstruct amdgpu_iv_entry *entryh](j>)}(hjAh]hstruct}(hj>hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj>ubjP)}(h h]h }(hj>hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj>ubh)}(hhh]jg)}(hamdgpu_iv_entryh]hamdgpu_iv_entry}(hj>hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj>ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj>modnameN classnameNj'j*)}j-]j=c.amdgpu_dm_irq_handlerasbuh1hhj>ubjP)}(h h]h }(hj>hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj>ubjf+)}(hji+h]h*}(hj>hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj>ubjg)}(hentryh]hentry}(hj>hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj>ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj=ubeh}(h]h ]h"]h$]h&]j~juh1j +hjn=hhhj=hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjj=hhhj=hMubah}(h]je=ah ](jjeh"]h$]h&]jj)jhuh1j1hj=hMhjg=hhubj)}(hhh]h)}(hGeneric DM IRQ handlerh]hGeneric DM IRQ handler}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj?hhubah}(h]h ]h"]h$]h&]uh1jhjg=hhhj=hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj*?jj*?jjjuh1j,hhhj.hNhNubj)}(hXv**Parameters** ``struct amdgpu_device *adev`` amdgpu base driver device containing the DM device ``struct amdgpu_irq_src *source`` Unused ``struct amdgpu_iv_entry *entry`` Data about the triggered interrupt **Description** Calls all registered high irq work immediately, and schedules work for low irq. The DM IRQ table is used to find the corresponding handlers.h](h)}(h**Parameters**h]j)}(hj4?h]h Parameters}(hj6?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2?ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj.?ubj)}(hhh](j )}(hR``struct amdgpu_device *adev`` amdgpu base driver device containing the DM device h](j)}(h``struct amdgpu_device *adev``h]j)}(hjS?h]hstruct amdgpu_device *adev}(hjU?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ?ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjM?ubj-)}(hhh]h)}(h2amdgpu base driver device containing the DM deviceh]h2amdgpu base driver device containing the DM device}(hjl?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjh?hMhji?ubah}(h]h ]h"]h$]h&]uh1j,hjM?ubeh}(h]h ]h"]h$]h&]uh1j hjh?hMhjJ?ubj )}(h)``struct amdgpu_irq_src *source`` Unused h](j)}(h!``struct amdgpu_irq_src *source``h]j)}(hj?h]hstruct amdgpu_irq_src *source}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj?ubj-)}(hhh]h)}(hUnusedh]hUnused}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1j,hj?ubeh}(h]h ]h"]h$]h&]uh1j hj?hMhjJ?ubj )}(hE``struct amdgpu_iv_entry *entry`` Data about the triggered interrupt h](j)}(h!``struct amdgpu_iv_entry *entry``h]j)}(hj?h]hstruct amdgpu_iv_entry *entry}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj?ubj-)}(hhh]h)}(h"Data about the triggered interrupth]h"Data about the triggered interrupt}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1j,hj?ubeh}(h]h ]h"]h$]h&]uh1j hj?hMhjJ?ubeh}(h]h ]h"]h$]h&]uh1jhj.?ubh)}(h**Description**h]j)}(hj@h]h Description}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj.?ubh)}(hCalls all registered high irq work immediately, and schedules work for low irq. The DM IRQ table is used to find the corresponding handlers.h]hCalls all registered high irq work immediately, and schedules work for low irq. The DM IRQ table is used to find the corresponding handlers.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj.?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'amdgpu_dm_hpd_init (C function)c.amdgpu_dm_hpd_inithNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(h4void amdgpu_dm_hpd_init (struct amdgpu_device *adev)h]j8)}(h3void amdgpu_dm_hpd_init(struct amdgpu_device *adev)h](j*)}(hvoidh]hvoid}(hjE@hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjA@hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMubjP)}(h h]h }(hjT@hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjA@hhhjS@hMubja)}(hamdgpu_dm_hpd_inith]jg)}(hamdgpu_dm_hpd_inith]hamdgpu_dm_hpd_init}(hjf@hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjb@ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjA@hhhjS@hMubj +)}(h(struct amdgpu_device *adev)h]j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hj@hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj~@ubjP)}(h h]h }(hj@hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj~@ubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hj@hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj@ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj@modnameN classnameNj'j*)}j-]jR+)}jJ+jh@sbc.amdgpu_dm_hpd_initasbuh1hhj~@ubjP)}(h h]h }(hj@hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj~@ubjf+)}(hji+h]h*}(hj@hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj~@ubjg)}(hadevh]hadev}(hj@hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj~@ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjz@ubah}(h]h ]h"]h$]h&]j~juh1j +hjA@hhhjS@hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj=@hhhjS@hMubah}(h]j8@ah ](jjeh"]h$]h&]jj)jhuh1j1hjS@hMhj:@hhubj)}(hhh]h)}(hhpd setup callback.h]hhpd setup callback.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjAhhubah}(h]h ]h"]h$]h&]uh1jhj:@hhhjS@hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjAjjAjjjuh1j,hhhj.hNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer **Description** Setup the hpd pins used by the card (evergreen+). Enable the pin, set the polarity, and enable the hpd interrupts.h](h)}(h**Parameters**h]j)}(hj'Ah]h Parameters}(hj)AhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%Aubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj!Aubj)}(hhh]j )}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjFAh]hstruct amdgpu_device *adev}(hjHAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDAubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj@Aubj-)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hj_AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[AhMhj\Aubah}(h]h ]h"]h$]h&]uh1j,hj@Aubeh}(h]h ]h"]h$]h&]uh1j hj[AhMhj=Aubah}(h]h ]h"]h$]h&]uh1jhj!Aubh)}(h**Description**h]j)}(hjAh]h Description}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj!Aubh)}(hrSetup the hpd pins used by the card (evergreen+). Enable the pin, set the polarity, and enable the hpd interrupts.h]hrSetup the hpd pins used by the card (evergreen+). Enable the pin, set the polarity, and enable the hpd interrupts.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj!Aubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'amdgpu_dm_hpd_fini (C function)c.amdgpu_dm_hpd_finihNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(h4void amdgpu_dm_hpd_fini (struct amdgpu_device *adev)h]j8)}(h3void amdgpu_dm_hpd_fini(struct amdgpu_device *adev)h](j*)}(hvoidh]hvoid}(hjAhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjAhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMubjP)}(h h]h }(hjAhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjAhhhjAhMubja)}(hamdgpu_dm_hpd_finih]jg)}(hamdgpu_dm_hpd_finih]hamdgpu_dm_hpd_fini}(hjAhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjAubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjAhhhjAhMubj +)}(h(struct amdgpu_device *adev)h]j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hjBhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjAubjP)}(h h]h }(hjBhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjAubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hj!BhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjBubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj#BmodnameN classnameNj'j*)}j-]jR+)}jJ+jAsbc.amdgpu_dm_hpd_finiasbuh1hhjAubjP)}(h h]h }(hjABhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjAubjf+)}(hji+h]h*}(hjOBhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjAubjg)}(hadevh]hadev}(hj\BhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjAubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjAubah}(h]h ]h"]h$]h&]j~juh1j +hjAhhhjAhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjAhhhjAhMubah}(h]jAah ](jjeh"]h$]h&]jj)jhuh1j1hjAhMhjAhhubj)}(hhh]h)}(hhpd tear down callback.h]hhpd tear down callback.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjBhhubah}(h]h ]h"]h$]h&]uh1jhjAhhhjAhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjBjjBjjjuh1j,hhhj.hNhNubj)}(h**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer **Description** Tear down the hpd pins used by the card (evergreen+). Disable the hpd interrupts.h](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM hjBubj)}(hhh]j )}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjBh]hstruct amdgpu_device *adev}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjBubj-)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjBubah}(h]h ]h"]h$]h&]uh1j,hjBubeh}(h]h ]h"]h$]h&]uh1j hjBhMhjBubah}(h]h ]h"]h$]h&]uh1jhjBubh)}(h**Description**h]j)}(hjCh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM hjBubh)}(hQTear down the hpd pins used by the card (evergreen+). Disable the hpd interrupts.h]hQTear down the hpd pins used by the card (evergreen+). Disable the hpd interrupts.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM hjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dmub_hpd_callback (C function)c.dmub_hpd_callbackhNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(hUvoid dmub_hpd_callback (struct amdgpu_device *adev, struct dmub_notification *notify)h]j8)}(hTvoid dmub_hpd_callback(struct amdgpu_device *adev, struct dmub_notification *notify)h](j*)}(hvoidh]hvoid}(hjGChhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjCChhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMAubjP)}(h h]h }(hjVChhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjCChhhjUChMAubja)}(hdmub_hpd_callbackh]jg)}(hdmub_hpd_callbackh]hdmub_hpd_callback}(hjhChhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjdCubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjCChhhjUChMAubj +)}(h>(struct amdgpu_device *adev, struct dmub_notification *notify)h](j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hjChhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjCubjP)}(h h]h }(hjChhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjCubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hjChhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjCubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjCmodnameN classnameNj'j*)}j-]jR+)}jJ+jjCsbc.dmub_hpd_callbackasbuh1hhjCubjP)}(h h]h }(hjChhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjCubjf+)}(hji+h]h*}(hjChhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjCubjg)}(hadevh]hadev}(hjChhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjCubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj|Cubj+)}(h struct dmub_notification *notifyh](j>)}(hjAh]hstruct}(hjChhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjCubjP)}(h h]h }(hjDhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjCubh)}(hhh]jg)}(hdmub_notificationh]hdmub_notification}(hjDhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjDubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjDmodnameN classnameNj'j*)}j-]jCc.dmub_hpd_callbackasbuh1hhjCubjP)}(h h]h }(hj2DhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjCubjf+)}(hji+h]h*}(hj@DhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjCubjg)}(hnotifyh]hnotify}(hjMDhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjCubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj|Cubeh}(h]h ]h"]h$]h&]j~juh1j +hjCChhhjUChMAubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj?ChhhjUChMAubah}(h]j:Cah ](jjeh"]h$]h&]jj)jhuh1j1hjUChMAhj(struct amdgpu_device *adev, struct dmub_notification *notify)h](j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hjEhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjEubjP)}(h h]h }(hjEhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjEubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hjEhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjEubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjEmodnameN classnameNj'j*)}j-]jR+)}jJ+jEsbc.dmub_hpd_sense_callbackasbuh1hhjEubjP)}(h h]h }(hjEhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjEubjf+)}(hji+h]h*}(hjEhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjEubjg)}(hadevh]hadev}(hjFhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjEubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjEubj+)}(h struct dmub_notification *notifyh](j>)}(hjAh]hstruct}(hj FhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjFubjP)}(h h]h }(hj-FhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjFubh)}(hhh]jg)}(hdmub_notificationSh]hdmub_notification}(hj>FhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj;Fubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj@FmodnameN classnameNj'j*)}j-]jEc.dmub_hpd_sense_callbackasbuh1hhjFubjP)}(h h]h }(hj\FhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjFubjf+)}(hji+h]h*}(hjjFhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjFubjg)}(hnotifyh]hnotify}(hjwFhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjFubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjEubeh}(h]h ]h"]h$]h&]j~juh1j +hjmEhhhjEhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjiEhhhjEhMubah}(h]jdEah ](jjeh"]h$]h&]jj)jhuh1j1hjEhMhjfEhhubj)}(hhh]h)}(h#DMUB HPD sense processing callback.h]h#DMUB HPD sense processing callback.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjFhhubah}(h]h ]h"]h$]h&]uh1jhjfEhhhjEhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjFjjFjjjuh1j,hhhj.hNhNubj)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu_device pointer ``struct dmub_notification *notify`` dmub notification structure **Description** HPD sense changes can occur during low power states and need to be notified from firmware to driver.h](h)}(h**Parameters**h]j)}(hjFh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjFubj)}(hhh](j )}(h5``struct amdgpu_device *adev`` amdgpu_device pointer h](j)}(h``struct amdgpu_device *adev``h]j)}(hjFh]hstruct amdgpu_device *adev}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjFubj-)}(hhh]h)}(hamdgpu_device pointerh]hamdgpu_device pointer}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMhjFubah}(h]h ]h"]h$]h&]uh1j,hjFubeh}(h]h ]h"]h$]h&]uh1j hjFhMhjFubj )}(hA``struct dmub_notification *notify`` dmub notification structure h](j)}(h$``struct dmub_notification *notify``h]j)}(hjGh]h struct dmub_notification *notify}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjGubj-)}(hhh]h)}(hdmub notification structureh]hdmub notification structure}(hj4GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0GhMhj1Gubah}(h]h ]h"]h$]h&]uh1j,hjGubeh}(h]h ]h"]h$]h&]uh1j hj0GhMhjFubeh}(h]h ]h"]h$]h&]uh1jhjFubh)}(h**Description**h]j)}(hjVGh]h Description}(hjXGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTGubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjFubh)}(hdHPD sense changes can occur during low power states and need to be notified from firmware to driver.h]hdHPD sense changes can occur during low power states and need to be notified from firmware to driver.}(hjlGhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dm_pflip_high_irq (C function)c.dm_pflip_high_irqhNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(h/void dm_pflip_high_irq (void *interrupt_params)h]j8)}(h.void dm_pflip_high_irq(void *interrupt_params)h](j*)}(hvoidh]hvoid}(hjGhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjGhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMubjP)}(h h]h }(hjGhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjGhhhjGhMubja)}(hdm_pflip_high_irqh]jg)}(hdm_pflip_high_irqh]hdm_pflip_high_irq}(hjGhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjGubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjGhhhjGhMubj +)}(h(void *interrupt_params)h]j+)}(hvoid *interrupt_paramsh](j*)}(hvoidh]hvoid}(hjGhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjGubjP)}(h h]h }(hjGhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjGubjf+)}(hji+h]h*}(hjGhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjGubjg)}(hinterrupt_paramsh]hinterrupt_params}(hjHhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjGubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjGubah}(h]h ]h"]h$]h&]j~juh1j +hjGhhhjGhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjGhhhjGhMubah}(h]jGah ](jjeh"]h$]h&]jj)jhuh1j1hjGhMhjGhhubj)}(hhh]h)}(hHandle pageflip interrupth]hHandle pageflip interrupt}(hj+HhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhj(Hhhubah}(h]h ]h"]h$]h&]uh1jhjGhhhjGhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjCHjjCHjjjuh1j,hhhj.hNhNubj)}(h**Parameters** ``void *interrupt_params`` ignored **Description** Handles the pageflip interrupt by notifying all interested parties that the pageflip has been completed.h](h)}(h**Parameters**h]j)}(hjMHh]h Parameters}(hjOHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKHubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chM hjGHubj)}(hhh]j )}(h#``void *interrupt_params`` ignored h](j)}(h``void *interrupt_params``h]j)}(hjlHh]hvoid *interrupt_params}(hjnHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjHubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjfHubj-)}(hhh]h)}(hignoredh]hignored}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhMhjHubah}(h]h ]h"]h$]h&]uh1j,hjfHubeh}(h]h ]h"]h$]h&]uh1j hjHhMhjcHubah}(h]h ]h"]h$]h&]uh1jhjGHubh)}(h**Description**h]j)}(hjHh]h Description}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjGHubh)}(hhHandles the pageflip interrupt by notifying all interested parties that the pageflip has been completed.h]hhHandles the pageflip interrupt by notifying all interested parties that the pageflip has been completed.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjGHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj.hhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'%dm_crtc_high_irq_handler (C function)c.dm_crtc_high_irq_handlerhNtauh1jhj.hhhNhNubj-)}(hhh](j2)}(hUvoid dm_crtc_high_irq_handler (struct amdgpu_device *adev, struct amdgpu_crtc *acrtc)h]j8)}(hTvoid dm_crtc_high_irq_handler(struct amdgpu_device *adev, struct amdgpu_crtc *acrtc)h](j*)}(hvoidh]hvoid}(hjHhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjHhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMubjP)}(h h]h }(hjHhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjHhhhjHhMubja)}(hdm_crtc_high_irq_handlerh]jg)}(hdm_crtc_high_irq_handlerh]hdm_crtc_high_irq_handler}(hj IhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj Iubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjHhhhjHhMubj +)}(h7(struct amdgpu_device *adev, struct amdgpu_crtc *acrtc)h](j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hj)IhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj%IubjP)}(h h]h }(hj6IhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj%Iubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hjGIhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjDIubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjIImodnameN classnameNj'j*)}j-]jR+)}jJ+jIsbc.dm_crtc_high_irq_handlerasbuh1hhj%IubjP)}(h h]h }(hjgIhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj%Iubjf+)}(hji+h]h*}(hjuIhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj%Iubjg)}(hadevh]hadev}(hjIhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj%Iubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj!Iubj+)}(hstruct amdgpu_crtc *acrtch](j>)}(hjAh]hstruct}(hjIhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjIubjP)}(h h]h }(hjIhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjIubh)}(hhh]jg)}(h amdgpu_crtch]h amdgpu_crtc}(hjIhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjIubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjImodnameN classnameNj'j*)}j-]jcIc.dm_crtc_high_irq_handlerasbuh1hhjIubjP)}(h h]h }(hjIhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjIubjf+)}(hji+h]h*}(hjIhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjIubjg)}(hacrtch]hacrtc}(hjIhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjIubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj!Iubeh}(h]h ]h"]h$]h&]j~juh1j +hjHhhhjHhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjHhhhjHhMubah}(h]jHah ](jjeh"]h$]h&]jj)jhuh1j1hjHhMhjHhhubj)}(hhh]h)}(h%Common OTG vblank/flip event handlingh]h%Common OTG vblank/flip event handling}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:29: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.chMhjJhhubah}(h]h ]h"]h$]h&]uh1jhjHhhhjHhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4Jjj4Jjjjuh1j,hhhj.hNhNubj)}(hX**Parameters** ``struct amdgpu_device *adev`` amdgpu device ``struct amdgpu_crtc *acrtc`` the CRTC to service Performs writeback completion, vblank event handling, CRC processing, VRR BTR updates and pageflip completion delivery. **Description** On DCN this is driven by VUPDATE_NO_LOCK (the register latch point) from dm_vupdate_high_irq(); on DCE it is driven by VLINE0 at the start of vblank from dm_crtc_high_irq().h](h)}(h**Parameters**h]j)}(hj>Jh]h Parameters}(hj@JhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)}(hjAh]hstruct}(hjVOhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjROubjP)}(h h]h }(hjcOhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjROubh)}(hhh]jg)}(h work_structh]h work_struct}(hjtOhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjqOubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjvOmodnameN classnameNj'j*)}j-]jR+)}jJ+j)}(hjAh]hstruct}(hj;QhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj7QubjP)}(h h]h }(hjHQhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj7Qubh)}(hhh]jg)}(hdrm_atomic_commith]hdrm_atomic_commit}(hjYQhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjVQubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj[QmodnameN classnameNj'j*)}j-]jR+)}jJ+j!Qsbc.amdgpu_dm_atomic_commit_tailasbuh1hhj7QubjP)}(h h]h }(hjyQhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj7Qubjf+)}(hji+h]h*}(hjQhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj7Qubjg)}(hstateh]hstate}(hjQhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj7Qubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj3Qubah}(h]h ]h"]h$]h&]j~juh1j +hjPhhhj QhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjPhhhj QhMubah}(h]jPah ](jjeh"]h$]h&]jj)jhuh1j1hj QhMhjPhhubj)}(hhh]h)}(h'AMDgpu DM's commit tail implementation.h]h)AMDgpu DM’s commit tail implementation.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjQhhubah}(h]h ]h"]h$]h&]uh1jhjPhhhj QhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjQjjQjjjuh1j,hhhjPhNhNubj)}(hX/**Parameters** ``struct drm_atomic_commit *state`` The atomic state to commit **Description** This will tell DC to commit the constructed DC state from atomic_check, programming the hardware. Any failures here implies a hardware failure, since atomic check should have filtered anything non-kosher.h](h)}(h**Parameters**h]j)}(hjQh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjQubj)}(hhh]j )}(h?``struct drm_atomic_commit *state`` The atomic state to commit h](j)}(h#``struct drm_atomic_commit *state``h]j)}(hjQh]hstruct drm_atomic_commit *state}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjQubj-)}(hhh]h)}(hThe atomic state to commith]hThe atomic state to commit}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMhjRubah}(h]h ]h"]h$]h&]uh1j,hjQubeh}(h]h ]h"]h$]h&]uh1j hjRhMhjQubah}(h]h ]h"]h$]h&]uh1jhjQubh)}(h**Description**h]j)}(hj:Rh]h Description}(hj)}(hjAh]hstruct}(hjRhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjRubjP)}(h h]h }(hjRhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjRubh)}(hhh]jg)}(h drm_deviceh]h drm_device}(hjRhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjRubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjRmodnameN classnameNj'j*)}j-]jR+)}jJ+jRsbc.amdgpu_dm_atomic_checkasbuh1hhjRubjP)}(h h]h }(hjRhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjRubjf+)}(hji+h]h*}(hjShhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjRubjg)}(hdevh]hdev}(hjShhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjRubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjRubj+)}(hstruct drm_atomic_commit *stateh](j>)}(hjAh]hstruct}(hj.ShhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj*SubjP)}(h h]h }(hj;ShhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj*Subh)}(hhh]jg)}(hdrm_atomic_commith]hdrm_atomic_commit}(hjLShhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjISubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjNSmodnameN classnameNj'j*)}j-]jRc.amdgpu_dm_atomic_checkasbuh1hhj*SubjP)}(h h]h }(hjjShhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj*Subjf+)}(hji+h]h*}(hjxShhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj*Subjg)}(hstateh]hstate}(hjShhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj*Subeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjRubeh}(h]h ]h"]h$]h&]j~juh1j +hj{RhhhjRhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjwRhhhjRhMubah}(h]jrRah ](jjeh"]h$]h&]jj)jhuh1j1hjRhMhjtRhhubj)}(hhh]h)}(h*Atomic check implementation for AMDgpu DM.h]h*Atomic check implementation for AMDgpu DM.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjShhubah}(h]h ]h"]h$]h&]uh1jhjtRhhhjRhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjSjjSjjjuh1j,hhhjPhNhNubj)}(hX**Parameters** ``struct drm_device *dev`` The DRM device ``struct drm_atomic_commit *state`` The atomic state to commit **Description** Validate that the given atomic state is programmable by DC into hardware. This involves constructing a :c:type:`struct dc_state ` reflecting the new hardware state we wish to commit, then querying DC to see if it is programmable. It's important not to modify the existing DC state. Otherwise, atomic_check may unexpectedly commit hardware changes. When validating the DC state, it's important that the right locks are acquired. For full updates case which removes/adds/updates streams on one CRTC while flipping on another CRTC, acquiring global lock will guarantee that any such full update commit will wait for completion of any outstanding flip using DRMs synchronization events. Note that DM adds the affected connectors for all CRTCs in state, when that might not seem necessary. This is because DC stream creation requires the DC sink, which is tied to the DRM connector state. Cleaning this up should be possible but non-trivial - a possible TODO item. **Return** -Error code if validation failed.h](h)}(h**Parameters**h]j)}(hjSh]h Parameters}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjSubj)}(hhh](j )}(h*``struct drm_device *dev`` The DRM device h](j)}(h``struct drm_device *dev``h]j)}(hjSh]hstruct drm_device *dev}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjSubj-)}(hhh]h)}(hThe DRM deviceh]hThe DRM device}(hj ThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThMhjTubah}(h]h ]h"]h$]h&]uh1j,hjSubeh}(h]h ]h"]h$]h&]uh1j hjThMhjSubj )}(h?``struct drm_atomic_commit *state`` The atomic state to commit h](j)}(h#``struct drm_atomic_commit *state``h]j)}(hj)Th]hstruct drm_atomic_commit *state}(hj+ThhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'Tubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhj#Tubj-)}(hhh]h)}(hThe atomic state to commith]hThe atomic state to commit}(hjBThhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>ThMhj?Tubah}(h]h ]h"]h$]h&]uh1j,hj#Tubeh}(h]h ]h"]h$]h&]uh1j hj>ThMhjSubeh}(h]h ]h"]h$]h&]uh1jhjSubh)}(h**Description**h]j)}(hjdTh]h Description}(hjfThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbTubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjSubh)}(hXeValidate that the given atomic state is programmable by DC into hardware. This involves constructing a :c:type:`struct dc_state ` reflecting the new hardware state we wish to commit, then querying DC to see if it is programmable. It's important not to modify the existing DC state. Otherwise, atomic_check may unexpectedly commit hardware changes.h](hgValidate that the given atomic state is programmable by DC into hardware. This involves constructing a }(hjzThhhNhNubh)}(h$:c:type:`struct dc_state `h]j)}(hjTh]hstruct dc_state}(hjThhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j dc_stateuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjzTubh reflecting the new hardware state we wish to commit, then querying DC to see if it is programmable. It’s important not to modify the existing DC state. Otherwise, atomic_check may unexpectedly commit hardware changes.}(hjzThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjThMhjSubh)}(hXNWhen validating the DC state, it's important that the right locks are acquired. For full updates case which removes/adds/updates streams on one CRTC while flipping on another CRTC, acquiring global lock will guarantee that any such full update commit will wait for completion of any outstanding flip using DRMs synchronization events.h]hXPWhen validating the DC state, it’s important that the right locks are acquired. For full updates case which removes/adds/updates streams on one CRTC while flipping on another CRTC, acquiring global lock will guarantee that any such full update commit will wait for completion of any outstanding flip using DRMs synchronization events.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjSubh)}(hXNote that DM adds the affected connectors for all CRTCs in state, when that might not seem necessary. This is because DC stream creation requires the DC sink, which is tied to the DRM connector state. Cleaning this up should be possible but non-trivial - a possible TODO item.h]hXNote that DM adds the affected connectors for all CRTCs in state, when that might not seem necessary. This is because DC stream creation requires the DC sink, which is tied to the DRM connector state. Cleaning this up should be possible but non-trivial - a possible TODO item.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjSubh)}(h **Return**h]j)}(hjTh]hReturn}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjSubh)}(h!-Error code if validation failed.h]h!-Error code if validation failed.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:44: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.chMhjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjPhhhNhNubeh}(h]jcah ]h"]atomic implementationah$]h&]uh1hhhhhhhhK'ubh)}(hhh](h)}(hColor Management Propertiesh]hColor Management Properties}(hjUhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjThhhhhK0ubh)}(hWe have three types of color management in the AMD display driver. 1. the legacy :c:type:`drm_crtc` DEGAMMA, CTM, and GAMMA properties 2. AMD driver private color management on :c:type:`drm_plane` and :c:type:`drm_crtc` 3. AMD plane color pipelineh](hQWe have three types of color management in the AMD display driver. 1. the legacy }(hjUhhhNhNubh)}(h:c:type:`drm_crtc`h]j)}(hjUh]hdrm_crtc}(hjUhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j drm_crtcuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chK(hjUubhN DEGAMMA, CTM, and GAMMA properties 2. AMD driver private color management on }(hjUhhhNhNubh)}(h:c:type:`drm_plane`h]j)}(hj>Uh]h drm_plane}(hj@UhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj Plane degamma -> Plane CTM -> Plane regamma -> Plane CTMh]hEPlane CTM -> Plane degamma -> Plane CTM -> Plane regamma -> Plane CTM}(hj WhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKPhjAVubh)}(hXThe input gamma LUT block isn't really applicable here since it operates on the actual input data itself rather than the HW fp representation. The input and output CSC blocks are technically available to use as part of the DC interface but are typically used internally by DC for conversions between color spaces. These could be blended together with user adjustments in the future but for now these should remain untouched.h]hXThe input gamma LUT block isn’t really applicable here since it operates on the actual input data itself rather than the HW fp representation. The input and output CSC blocks are technically available to use as part of the DC interface but are typically used internally by DC for conversions between color spaces. These could be blended together with user adjustments in the future but for now these should remain untouched.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKRhjAVubh)}(hX!The pipe blending also happens after these blocks so we don't actually support any CRTC props with correct blending with multiple planes - but we can still support CRTC color management properties in DM in most single plane cases correctly with clever management of the DC interface in DM.h]hX#The pipe blending also happens after these blocks so we don’t actually support any CRTC props with correct blending with multiple planes - but we can still support CRTC color management properties in DM in most single plane cases correctly with clever management of the DC interface in DM.}(hj(WhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKZhjAVubh)}(hAs per DRM documentation, blocks should be in hardware bypass when their respective property is set to NULL. A linear DGM/RGM LUT should also considered as putting the respective block into bypass mode.h]hAs per DRM documentation, blocks should be in hardware bypass when their respective property is set to NULL. A linear DGM/RGM LUT should also considered as putting the respective block into bypass mode.}(hj7WhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chK`hjAVubh)}(hIThis means that the following configuration is assumed to be the default:h]hIThis means that the following configuration is assumed to be the default:}(hjFWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKdhjAVubh)}(huPlane DGM Bypass -> Plane CTM Bypass -> Plane RGM Bypass -> ... CRTC DGM Bypass -> CRTC CTM Bypass -> CRTC RGM Bypassh]huPlane DGM Bypass -> Plane CTM Bypass -> Plane RGM Bypass -> ... CRTC DGM Bypass -> CRTC CTM Bypass -> CRTC RGM Bypass}(hjUWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKghjAVubeh}(h]jah ]h"]drm_crtc propertiesah$]h&]uh1hhjThhhNhNubh)}(hhh](h)}(h)AMD Private Color Management on drm_planeh]h)AMD Private Color Management on drm_plane}(hjnWhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjkWhNhNubh)}(hIThe AMD private color management properties on a :c:type:`drm_plane` are:h](h1The AMD private color management properties on a }(hj|WhhhNhNubh)}(h:c:type:`drm_plane`h]j)}(hjWh]h drm_plane}(hjWhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  drm_planeuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKmhj|Wubh are:}(hj|WhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjWhKmhjkWubh)}(hhh](h)}(hAMD_PLANE_DEGAMMA_LUTh]h)}(hjWh]hAMD_PLANE_DEGAMMA_LUT}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKohjWubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_DEGAMMA_LUT_SIZEh]h)}(hjWh]hAMD_PLANE_DEGAMMA_LUT_SIZE}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKphjWubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_DEGAMMA_TFh]h)}(hjWh]hAMD_PLANE_DEGAMMA_TF}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKqhjWubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_HDR_MULTh]h)}(hjWh]hAMD_PLANE_HDR_MULT}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKrhjWubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(h AMD_PLANE_CTMh]h)}(hjXh]h AMD_PLANE_CTM}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKshjXubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_SHAPER_LUTh]h)}(hj+Xh]hAMD_PLANE_SHAPER_LUT}(hj-XhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKthj)Xubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_SHAPER_LUT_SIZEh]h)}(hjCXh]hAMD_PLANE_SHAPER_LUT_SIZE}(hjEXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKuhjAXubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_SHAPER_TFh]h)}(hj[Xh]hAMD_PLANE_SHAPER_TF}(hj]XhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKvhjYXubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_LUT3Dh]h)}(hjsXh]hAMD_PLANE_LUT3D}(hjuXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKwhjqXubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_LUT3D_SIZEh]h)}(hjXh]hAMD_PLANE_LUT3D_SIZE}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKxhjXubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_BLEND_LUTh]h)}(hjXh]hAMD_PLANE_BLEND_LUT}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKyhjXubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_BLEND_LUT_SIZEh]h)}(hjXh]hAMD_PLANE_BLEND_LUT_SIZE}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKzhjXubah}(h]h ]h"]h$]h&]uh1hhjWubh)}(hAMD_PLANE_BLEND_TF h]h)}(hAMD_PLANE_BLEND_TFh]hAMD_PLANE_BLEND_TF}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chK{hjXubah}(h]h ]h"]h$]h&]uh1hhjWubeh}(h]h ]h"]h$]h&]j-j-uh1hhjWhKohjkWubh)}(hEThe AMD private color management property on a :c:type:`drm_crtc` is:h](h/The AMD private color management property on a }(hjXhhhNhNubh)}(h:c:type:`drm_crtc`h]j)}(hjXh]hdrm_crtc}(hjXhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j drm_crtcuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chK}hjXubh is:}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjYhK}hjkWubh)}(hhh]h)}(hAMD_CRTC_REGAMMA_TF h]h)}(hAMD_CRTC_REGAMMA_TFh]hAMD_CRTC_REGAMMA_TF}(hj)YhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhj%Yubah}(h]h ]h"]h$]h&]uh1hhj"Yubah}(h]h ]h"]h$]h&]j-j-uh1hhj7YhKhjkWubh)}(h'Use of these properties is discouraged.h]h'Use of these properties is discouraged.}(hjDYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjkWubeh}(h]jah ]h"])amd private color management on drm_planeah$]h&]uh1hhjThhhNhNubh)}(hhh](h)}(hAMD plane color pipelineh]hAMD plane color pipeline}(hj]YhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjZYhNhNubh)}(hThe AMD :c:type:`drm_plane` color pipeline is advertised for DCN generations 3.0 and newer. It exposes these elements in this order:h](hThe AMD }(hjkYhhhNhNubh)}(h:c:type:`drm_plane`h]j)}(hjuYh]h drm_plane}(hjwYhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjsYubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  drm_planeuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjkYubhi color pipeline is advertised for DCN generations 3.0 and newer. It exposes these elements in this order:}(hjkYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjYhKhjZYubhenumerated_list)}(hhh](h)}(h1D curve coloroph]h)}(hjYh]h1D curve colorop}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjYubah}(h]h ]h"]h$]h&]uh1hhjYubh)}(h Multiplierh]h)}(hjYh]h Multiplier}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjYubah}(h]h ]h"]h$]h&]uh1hhjYubh)}(h3x4 CTMh]h)}(hjYh]h3x4 CTM}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjYubah}(h]h ]h"]h$]h&]uh1hhjYubh)}(h1D curve coloroph]h)}(hjYh]h1D curve colorop}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjYubah}(h]h ]h"]h$]h&]uh1hhjYubh)}(h1D LUTh]h)}(hjZh]h1D LUT}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjZubah}(h]h ]h"]h$]h&]uh1hhjYubh)}(h3D LUTh]h)}(hjZh]h3D LUT}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjZubah}(h]h ]h"]h$]h&]uh1hhjYubh)}(h1D curve coloroph]h)}(hj4Zh]h1D curve colorop}(hj6ZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhj2Zubah}(h]h ]h"]h$]h&]uh1hhjYubh)}(h1D LUT h]h)}(h1D LUTh]h1D LUT}(hjNZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjJZubah}(h]h ]h"]h$]h&]uh1hhjYubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1jYhjZYubh)}(hKThe multiplier (#2) is a simple multiplier that is applied to all channels.h]hKThe multiplier (#2) is a simple multiplier that is applied to all channels.}(hjnZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjZYubh)}(h(The 3x4 CTM (#3) is a simple 3x4 matrix.h]h(The 3x4 CTM (#3) is a simple 3x4 matrix.}(hj}ZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjZYubh)}(h#1, and #7 are non-linear to linear curves. #4 is a linear to non-linear curve. They support sRGB, PQ, and BT.709/BT.2020 EOTFs or their inverse.h]h#1, and #7 are non-linear to linear curves. #4 is a linear to non-linear curve. They support sRGB, PQ, and BT.709/BT.2020 EOTFs or their inverse.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjZYubh)}(h2The 1D LUTs (#5 and #8) are plain 4096 entry LUTs.h]h2The 1D LUTs (#5 and #8) are plain 4096 entry LUTs.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjZYubh)}(h;The 3DLUT (#6) is a tetrahedrally interpolated 17 cube LUT.h]h;The 3DLUT (#6) is a tetrahedrally interpolated 17 cube LUT.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:50: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhjZYubeh}(h]jah ]h"]amd plane color pipelineah$]h&]uh1hhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'%amdgpu_dm_init_color_mod (C function)c.amdgpu_dm_init_color_modhNtauh1jhjThhhNhNubj-)}(hhh](j2)}(h$void amdgpu_dm_init_color_mod (void)h]j8)}(h#void amdgpu_dm_init_color_mod(void)h](j*)}(hvoidh]hvoid}(hjZhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjZhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKubjP)}(h h]h }(hjZhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjZhhhjZhKubja)}(hamdgpu_dm_init_color_modh]jg)}(hamdgpu_dm_init_color_modh]hamdgpu_dm_init_color_mod}(hjZhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjZubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjZhhhjZhKubj +)}(h(void)h]j+)}(hvoidh]j*)}(hvoidh]hvoid}(hj[hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj[ubah}(h]h ]h"]h$]h&]noemphj~juh1j+hj[ubah}(h]h ]h"]h$]h&]j~juh1j +hjZhhhjZhKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjZhhhjZhKubah}(h]jZah ](jjeh"]h$]h&]jj)jhuh1j1hjZhKhjZhhubj)}(hhh]h)}(hInitialize the color module.h]hInitialize the color module.}(hj@[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhj=[hhubah}(h]h ]h"]h$]h&]uh1jhjZhhhjZhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjX[jjX[jjjuh1j,hhhjThNhNubj)}(h**Parameters** ``void`` no arguments **Description** We're not using the full color module, only certain components. Only call setup functions for components that we need.h](h)}(h**Parameters**h]j)}(hjb[h]h Parameters}(hjd[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`[ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhj\[ubj)}(hhh]j )}(h``void`` no arguments h](j)}(h``void``h]j)}(hj[h]hvoid}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhj{[ubj-)}(hhh]h)}(h no argumentsh]h no arguments}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hKhj[ubah}(h]h ]h"]h$]h&]uh1j,hj{[ubeh}(h]h ]h"]h$]h&]uh1j hj[hKhjx[ubah}(h]h ]h"]h$]h&]uh1jhj\[ubh)}(h**Description**h]j)}(hj[h]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhj\[ubh)}(hvWe're not using the full color module, only certain components. Only call setup functions for components that we need.h]hxWe’re not using the full color module, only certain components. Only call setup functions for components that we need.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chKhj\[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'__extract_blob_lut (C function)c.__extract_blob_luthNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hfconst struct drm_color_lut * __extract_blob_lut (const struct drm_property_blob *blob, uint32_t *size)h]j8)}(hdconst struct drm_color_lut *__extract_blob_lut(const struct drm_property_blob *blob, uint32_t *size)h](j>)}(hconsth]hconst}(hj\hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj[hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hj\hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj[hhhj\hMubj>)}(hjAh]hstruct}(hj\hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj[hhhj\hMubjP)}(h h]h }(hj+\hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj[hhhj\hMubh)}(hhh]jg)}(h drm_color_luth]h drm_color_lut}(hj<\hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj9\ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj>\modnameN classnameNj'j*)}j-]jR+)}jJ+__extract_blob_lutsbc.__extract_blob_lutasbuh1hhj[hhhj\hMubjP)}(h h]h }(hj]\hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj[hhhj\hMubjf+)}(hji+h]h*}(hjk\hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj[hhhj\hMubja)}(h__extract_blob_luth]jg)}(hjZ\h]h__extract_blob_lut}(hj|\hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjx\ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj[hhhj\hMubj +)}(h6(const struct drm_property_blob *blob, uint32_t *size)h](j+)}(h$const struct drm_property_blob *blobh](j>)}(hj\h]hconst}(hj\hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj\ubjP)}(h h]h }(hj\hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj\ubj>)}(hjAh]hstruct}(hj\hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj\ubjP)}(h h]h }(hj\hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj\ubh)}(hhh]jg)}(hdrm_property_blobh]hdrm_property_blob}(hj\hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj\ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj\modnameN classnameNj'j*)}j-]jX\c.__extract_blob_lutasbuh1hhj\ubjP)}(h h]h }(hj\hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj\ubjf+)}(hji+h]h*}(hj\hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj\ubjg)}(hblobh]hblob}(hj ]hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj\ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj\ubj+)}(huint32_t *sizeh](h)}(hhh]jg)}(huint32_th]huint32_t}(hj%]hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj"]ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj']modnameN classnameNj'j*)}j-]jX\c.__extract_blob_lutasbuh1hhj]ubjP)}(h h]h }(hjC]hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj]ubjf+)}(hji+h]h*}(hjQ]hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj]ubjg)}(hsizeh]hsize}(hj^]hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj]ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj\ubeh}(h]h ]h"]h$]h&]j~juh1j +hj[hhhj\hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj[hhhj\hMubah}(h]j[ah ](jjeh"]h$]h&]jj)jhuh1j1hj\hMhj[hhubj)}(hhh]h)}(h.Extracts the DRM lut and lut size from a blob.h]h.Extracts the DRM lut and lut size from a blob.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj]hhubah}(h]h ]h"]h$]h&]uh1jhj[hhhj\hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj]jj]jjjuh1j,hhhjThNhNubj)}(h**Parameters** ``const struct drm_property_blob *blob`` DRM color mgmt property blob ``uint32_t *size`` lut size **Return** DRM LUT or NULLh](h)}(h**Parameters**h]j)}(hj]h]h Parameters}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj]ubj)}(hhh](j )}(hF``const struct drm_property_blob *blob`` DRM color mgmt property blob h](j)}(h(``const struct drm_property_blob *blob``h]j)}(hj]h]h$const struct drm_property_blob *blob}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj]ubj-)}(hhh]h)}(hDRM color mgmt property blobh]hDRM color mgmt property blob}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMhj]ubah}(h]h ]h"]h$]h&]uh1j,hj]ubeh}(h]h ]h"]h$]h&]uh1j hj]hMhj]ubj )}(h``uint32_t *size`` lut size h](j)}(h``uint32_t *size``h]j)}(hj^h]huint32_t *size}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj]ubj-)}(hhh]h)}(hlut sizeh]hlut size}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1j,hj]ubeh}(h]h ]h"]h$]h&]uh1j hj^hMhj]ubeh}(h]h ]h"]h$]h&]uh1jhj]ubh)}(h **Return**h]j)}(hj=^h]hReturn}(hj?^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;^ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj]ubh)}(hDRM LUT or NULLh]hDRM LUT or NULL}(hjS^hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'!__extract_blob_lut32 (C function)c.__extract_blob_lut32hNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hjconst struct drm_color_lut32 * __extract_blob_lut32 (const struct drm_property_blob *blob, uint32_t *size)h]j8)}(hhconst struct drm_color_lut32 *__extract_blob_lut32(const struct drm_property_blob *blob, uint32_t *size)h](j>)}(hj\h]hconst}(hj^hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj~^hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hj^hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj~^hhhj^hMubj>)}(hjAh]hstruct}(hj^hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj~^hhhj^hMubjP)}(h h]h }(hj^hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj~^hhhj^hMubh)}(hhh]jg)}(hdrm_color_lut32h]hdrm_color_lut32}(hj^hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj^ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj^modnameN classnameNj'j*)}j-]jR+)}jJ+__extract_blob_lut32sbc.__extract_blob_lut32asbuh1hhj~^hhhj^hMubjP)}(h h]h }(hj^hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj~^hhhj^hMubjf+)}(hji+h]h*}(hj^hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj~^hhhj^hMubja)}(h__extract_blob_lut32h]jg)}(hj^h]h__extract_blob_lut32}(hj^hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj^ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj~^hhhj^hMubj +)}(h6(const struct drm_property_blob *blob, uint32_t *size)h](j+)}(h$const struct drm_property_blob *blobh](j>)}(hj\h]hconst}(hj_hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj_ubjP)}(h h]h }(hj$_hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj_ubj>)}(hjAh]hstruct}(hj2_hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj_ubjP)}(h h]h }(hj?_hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj_ubh)}(hhh]jg)}(hdrm_property_blobh]hdrm_property_blob}(hjP_hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjM_ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjR_modnameN classnameNj'j*)}j-]j^c.__extract_blob_lut32asbuh1hhj_ubjP)}(h h]h }(hjn_hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj_ubjf+)}(hji+h]h*}(hj|_hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj_ubjg)}(hblobh]hblob}(hj_hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj_ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj_ubj+)}(huint32_t *sizeh](h)}(hhh]jg)}(huint32_th]huint32_t}(hj_hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj_ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj_modnameN classnameNj'j*)}j-]j^c.__extract_blob_lut32asbuh1hhj_ubjP)}(h h]h }(hj_hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj_ubjf+)}(hji+h]h*}(hj_hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj_ubjg)}(hsizeh]hsize}(hj_hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj_ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj_ubeh}(h]h ]h"]h$]h&]j~juh1j +hj~^hhhj^hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjz^hhhj^hMubah}(h]ju^ah ](jjeh"]h$]h&]jj)jhuh1j1hj^hMhjw^hhubj)}(hhh]h)}(h.Extracts the DRM lut and lut size from a blob.h]h.Extracts the DRM lut and lut size from a blob.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj`hhubah}(h]h ]h"]h$]h&]uh1jhjw^hhhj^hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj `jj `jjjuh1j,hhhjThNhNubj)}(h**Parameters** ``const struct drm_property_blob *blob`` DRM color mgmt property blob ``uint32_t *size`` lut size **Return** DRM LUT or NULLh](h)}(h**Parameters**h]j)}(hj*`h]h Parameters}(hj,`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(`ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj$`ubj)}(hhh](j )}(hF``const struct drm_property_blob *blob`` DRM color mgmt property blob h](j)}(h(``const struct drm_property_blob *blob``h]j)}(hjI`h]h$const struct drm_property_blob *blob}(hjK`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG`ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjC`ubj-)}(hhh]h)}(hDRM color mgmt property blobh]hDRM color mgmt property blob}(hjb`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^`hMhj_`ubah}(h]h ]h"]h$]h&]uh1j,hjC`ubeh}(h]h ]h"]h$]h&]uh1j hj^`hMhj@`ubj )}(h``uint32_t *size`` lut size h](j)}(h``uint32_t *size``h]j)}(hj`h]huint32_t *size}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj|`ubj-)}(hhh]h)}(hlut sizeh]hlut size}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMhj`ubah}(h]h ]h"]h$]h&]uh1j,hj|`ubeh}(h]h ]h"]h$]h&]uh1j hj`hMhj@`ubeh}(h]h ]h"]h$]h&]uh1jhj$`ubh)}(h **Return**h]j)}(hj`h]hReturn}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj$`ubh)}(hDRM LUT or NULLh]hDRM LUT or NULL}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj$`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'__is_lut_linear (C function)c.__is_lut_linearhNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hEbool __is_lut_linear (const struct drm_color_lut *lut, uint32_t size)h]j8)}(hDbool __is_lut_linear(const struct drm_color_lut *lut, uint32_t size)h](j*)}(hboolh]hbool}(hjahhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj`hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hjahhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj`hhhjahMubja)}(h__is_lut_linearh]jg)}(h__is_lut_linearh]h__is_lut_linear}(hj#ahhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjaubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj`hhhjahMubj +)}(h0(const struct drm_color_lut *lut, uint32_t size)h](j+)}(hconst struct drm_color_lut *luth](j>)}(hj\h]hconst}(hj?ahhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj;aubjP)}(h h]h }(hjLahhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj;aubj>)}(hjAh]hstruct}(hjZahhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj;aubjP)}(h h]h }(hjgahhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj;aubh)}(hhh]jg)}(h drm_color_luth]h drm_color_lut}(hjxahhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjuaubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjzamodnameN classnameNj'j*)}j-]jR+)}jJ+j%asbc.__is_lut_linearasbuh1hhj;aubjP)}(h h]h }(hjahhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj;aubjf+)}(hji+h]h*}(hjahhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj;aubjg)}(hluth]hlut}(hjahhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj;aubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj7aubj+)}(h uint32_t sizeh](h)}(hhh]jg)}(huint32_th]huint32_t}(hjahhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjaubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjamodnameN classnameNj'j*)}j-]jac.__is_lut_linearasbuh1hhjaubjP)}(h h]h }(hjahhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjaubjg)}(hsizeh]hsize}(hjahhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjaubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj7aubeh}(h]h ]h"]h$]h&]j~juh1j +hj`hhhjahMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj`hhhjahMubah}(h]j`ah ](jjeh"]h$]h&]jj)jhuh1j1hjahMhj`hhubj)}(hhh]h)}(h4check if the given lut is a linear mapping of valuesh]h4check if the given lut is a linear mapping of values}(hj%bhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj"bhhubah}(h]h ]h"]h$]h&]uh1jhj`hhhjahMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj=bjj=bjjjuh1j,hhhjThNhNubj)}(hXx**Parameters** ``const struct drm_color_lut *lut`` given lut to check values ``uint32_t size`` lut size **Description** It is considered linear if the lut represents: f(a) = (0xFF00/MAX_COLOR_LUT_ENTRIES-1)a; for integer a in [0, MAX_COLOR_LUT_ENTRIES) **Return** True if the given lut is a linear mapping of values, i.e. it acts like a bypass LUT. Otherwise, false.h](h)}(h**Parameters**h]j)}(hjGbh]h Parameters}(hjIbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEbubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjAbubj)}(hhh](j )}(h>``const struct drm_color_lut *lut`` given lut to check values h](j)}(h#``const struct drm_color_lut *lut``h]j)}(hjfbh]hconst struct drm_color_lut *lut}(hjhbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdbubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj`bubj-)}(hhh]h)}(hgiven lut to check valuesh]hgiven lut to check values}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{bhMhj|bubah}(h]h ]h"]h$]h&]uh1j,hj`bubeh}(h]h ]h"]h$]h&]uh1j hj{bhMhj]bubj )}(h``uint32_t size`` lut size h](j)}(h``uint32_t size``h]j)}(hjbh]h uint32_t size}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjbubj-)}(hhh]h)}(hlut sizeh]hlut size}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMhjbubah}(h]h ]h"]h$]h&]uh1j,hjbubeh}(h]h ]h"]h$]h&]uh1j hjbhMhj]bubeh}(h]h ]h"]h$]h&]uh1jhjAbubh)}(h**Description**h]j)}(hjbh]h Description}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjAbubh)}(hIt is considered linear if the lut represents: f(a) = (0xFF00/MAX_COLOR_LUT_ENTRIES-1)a; for integer a in [0, MAX_COLOR_LUT_ENTRIES)h]hIt is considered linear if the lut represents: f(a) = (0xFF00/MAX_COLOR_LUT_ENTRIES-1)a; for integer a in [0, MAX_COLOR_LUT_ENTRIES)}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjAbubh)}(h **Return**h]j)}(hjch]hReturn}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjAbubh)}(hfTrue if the given lut is a linear mapping of values, i.e. it acts like a bypass LUT. Otherwise, false.h]hfTrue if the given lut is a linear mapping of values, i.e. it acts like a bypass LUT. Otherwise, false.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjAbubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'"__drm_lut_to_dc_gamma (C function)c.__drm_lut_to_dc_gammahNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hdvoid __drm_lut_to_dc_gamma (const struct drm_color_lut *lut, struct dc_gamma *gamma, bool is_legacy)h]j8)}(hcvoid __drm_lut_to_dc_gamma(const struct drm_color_lut *lut, struct dc_gamma *gamma, bool is_legacy)h](j*)}(hvoidh]hvoid}(hjFchhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjBchhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hjUchhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjBchhhjTchMubja)}(h__drm_lut_to_dc_gammah]jg)}(h__drm_lut_to_dc_gammah]h__drm_lut_to_dc_gamma}(hjgchhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjccubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjBchhhjTchMubj +)}(hI(const struct drm_color_lut *lut, struct dc_gamma *gamma, bool is_legacy)h](j+)}(hconst struct drm_color_lut *luth](j>)}(hj\h]hconst}(hjchhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjcubjP)}(h h]h }(hjchhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjcubj>)}(hjAh]hstruct}(hjchhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjcubjP)}(h h]h }(hjchhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjcubh)}(hhh]jg)}(h drm_color_luth]h drm_color_lut}(hjchhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjcubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjcmodnameN classnameNj'j*)}j-]jR+)}jJ+jicsbc.__drm_lut_to_dc_gammaasbuh1hhjcubjP)}(h h]h }(hjchhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjcubjf+)}(hji+h]h*}(hjchhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjcubjg)}(hluth]hlut}(hjchhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjcubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj{cubj+)}(hstruct dc_gamma *gammah](j>)}(hjAh]hstruct}(hjdhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj dubjP)}(h h]h }(hjdhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj dubh)}(hhh]jg)}(hdc_gammah]hdc_gamma}(hj.dhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj+dubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj0dmodnameN classnameNj'j*)}j-]jcc.__drm_lut_to_dc_gammaasbuh1hhj dubjP)}(h h]h }(hjLdhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj dubjf+)}(hji+h]h*}(hjZdhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj dubjg)}(hgammah]hgamma}(hjgdhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj dubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj{cubj+)}(hbool is_legacyh](j*)}(hjah]hbool}(hjdhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj|dubjP)}(h h]h }(hjdhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj|dubjg)}(h is_legacyh]h is_legacy}(hjdhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj|dubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj{cubeh}(h]h ]h"]h$]h&]j~juh1j +hjBchhhjTchMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj>chhhjTchMubah}(h]j9cah ](jjeh"]h$]h&]jj)jhuh1j1hjTchMhj;chhubj)}(hhh]h)}(h&convert the drm_color_lut to dc_gamma.h]h&convert the drm_color_lut to dc_gamma.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjdhhubah}(h]h ]h"]h$]h&]uh1jhj;chhhjTchMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjdjjdjjjuh1j,hhhjThNhNubj)}(hX**Parameters** ``const struct drm_color_lut *lut`` DRM lookup table for color conversion ``struct dc_gamma *gamma`` DC gamma to set entries ``bool is_legacy`` legacy or atomic gamma **Description** The conversion depends on the size of the lut - whether or not it's legacy.h](h)}(h**Parameters**h]j)}(hjdh]h Parameters}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjdubj)}(hhh](j )}(hJ``const struct drm_color_lut *lut`` DRM lookup table for color conversion h](j)}(h#``const struct drm_color_lut *lut``h]j)}(hjeh]hconst struct drm_color_lut *lut}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjeubj-)}(hhh]h)}(h%DRM lookup table for color conversionh]h%DRM lookup table for color conversion}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMhjeubah}(h]h ]h"]h$]h&]uh1j,hjeubeh}(h]h ]h"]h$]h&]uh1j hjehMhjdubj )}(h3``struct dc_gamma *gamma`` DC gamma to set entries h](j)}(h``struct dc_gamma *gamma``h]j)}(hj?eh]hstruct dc_gamma *gamma}(hjAehhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=eubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj9eubj-)}(hhh]h)}(hDC gamma to set entriesh]hDC gamma to set entries}(hjXehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjTehMhjUeubah}(h]h ]h"]h$]h&]uh1j,hj9eubeh}(h]h ]h"]h$]h&]uh1j hjTehMhjdubj )}(h*``bool is_legacy`` legacy or atomic gamma h](j)}(h``bool is_legacy``h]j)}(hjxeh]hbool is_legacy}(hjzehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjveubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjreubj-)}(hhh]h)}(hlegacy or atomic gammah]hlegacy or atomic gamma}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMhjeubah}(h]h ]h"]h$]h&]uh1j,hjreubeh}(h]h ]h"]h$]h&]uh1j hjehMhjdubeh}(h]h ]h"]h$]h&]uh1jhjdubh)}(h**Description**h]j)}(hjeh]h Description}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjdubh)}(hKThe conversion depends on the size of the lut - whether or not it's legacy.h]hMThe conversion depends on the size of the lut - whether or not it’s legacy.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'$__drm_lut32_to_dc_gamma (C function)c.__drm_lut32_to_dc_gammahNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hXvoid __drm_lut32_to_dc_gamma (const struct drm_color_lut32 *lut, struct dc_gamma *gamma)h]j8)}(hWvoid __drm_lut32_to_dc_gamma(const struct drm_color_lut32 *lut, struct dc_gamma *gamma)h](j*)}(hvoidh]hvoid}(hjehhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjehhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hjfhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjehhhjfhMubja)}(h__drm_lut32_to_dc_gammah]jg)}(h__drm_lut32_to_dc_gammah]h__drm_lut32_to_dc_gamma}(hjfhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjfubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjehhhjfhMubj +)}(h;(const struct drm_color_lut32 *lut, struct dc_gamma *gamma)h](j+)}(h!const struct drm_color_lut32 *luth](j>)}(hj\h]hconst}(hj5fhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj1fubjP)}(h h]h }(hjBfhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj1fubj>)}(hjAh]hstruct}(hjPfhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj1fubjP)}(h h]h }(hj]fhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj1fubh)}(hhh]jg)}(hdrm_color_lut32h]hdrm_color_lut32}(hjnfhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjkfubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjpfmodnameN classnameNj'j*)}j-]jR+)}jJ+jfsbc.__drm_lut32_to_dc_gammaasbuh1hhj1fubjP)}(h h]h }(hjfhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj1fubjf+)}(hji+h]h*}(hjfhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj1fubjg)}(hluth]hlut}(hjfhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj1fubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj-fubj+)}(hstruct dc_gamma *gammah](j>)}(hjAh]hstruct}(hjfhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjfubjP)}(h h]h }(hjfhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjfubh)}(hhh]jg)}(hdc_gammah]hdc_gamma}(hjfhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjfubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjfmodnameN classnameNj'j*)}j-]jfc.__drm_lut32_to_dc_gammaasbuh1hhjfubjP)}(h h]h }(hjfhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjfubjf+)}(hji+h]h*}(hj ghhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjfubjg)}(hgammah]hgamma}(hjghhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjfubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj-fubeh}(h]h ]h"]h$]h&]j~juh1j +hjehhhjfhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjehhhjfhMubah}(h]jeah ](jjeh"]h$]h&]jj)jhuh1j1hjfhMhjehhubj)}(hhh]h)}(h&convert the drm_color_lut to dc_gamma.h]h&convert the drm_color_lut to dc_gamma.}(hjCghhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj@ghhubah}(h]h ]h"]h$]h&]uh1jhjehhhjfhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj[gjj[gjjjuh1j,hhhjThNhNubj)}(h**Parameters** ``const struct drm_color_lut32 *lut`` DRM lookup table for color conversion ``struct dc_gamma *gamma`` DC gamma to set entries **Description** The conversion depends on the size of the lut - whether or not it's legacy.h](h)}(h**Parameters**h]j)}(hjegh]h Parameters}(hjgghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcgubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj_gubj)}(hhh](j )}(hL``const struct drm_color_lut32 *lut`` DRM lookup table for color conversion h](j)}(h%``const struct drm_color_lut32 *lut``h]j)}(hjgh]h!const struct drm_color_lut32 *lut}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj~gubj-)}(hhh]h)}(h%DRM lookup table for color conversionh]h%DRM lookup table for color conversion}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMhjgubah}(h]h ]h"]h$]h&]uh1j,hj~gubeh}(h]h ]h"]h$]h&]uh1j hjghMhj{gubj )}(h3``struct dc_gamma *gamma`` DC gamma to set entries h](j)}(h``struct dc_gamma *gamma``h]j)}(hjgh]hstruct dc_gamma *gamma}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjgubj-)}(hhh]h)}(hDC gamma to set entriesh]hDC gamma to set entries}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMhjgubah}(h]h ]h"]h$]h&]uh1j,hjgubeh}(h]h ]h"]h$]h&]uh1j hjghMhj{gubeh}(h]h ]h"]h$]h&]uh1jhj_gubh)}(h**Description**h]j)}(hjgh]h Description}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj_gubh)}(hKThe conversion depends on the size of the lut - whether or not it's legacy.h]hMThe conversion depends on the size of the lut - whether or not it’s legacy.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj_gubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'#__drm_ctm_to_dc_matrix (C function)c.__drm_ctm_to_dc_matrixhNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hXvoid __drm_ctm_to_dc_matrix (const struct drm_color_ctm *ctm, struct fixed31_32 *matrix)h]j8)}(hWvoid __drm_ctm_to_dc_matrix(const struct drm_color_ctm *ctm, struct fixed31_32 *matrix)h](j*)}(hvoidh]hvoid}(hj=hhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj9hhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM.ubjP)}(h h]h }(hjLhhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj9hhhhjKhhM.ubja)}(h__drm_ctm_to_dc_matrixh]jg)}(h__drm_ctm_to_dc_matrixh]h__drm_ctm_to_dc_matrix}(hj^hhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjZhubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj9hhhhjKhhM.ubj +)}(h<(const struct drm_color_ctm *ctm, struct fixed31_32 *matrix)h](j+)}(hconst struct drm_color_ctm *ctmh](j>)}(hj\h]hconst}(hjzhhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjvhubjP)}(h h]h }(hjhhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjvhubj>)}(hjAh]hstruct}(hjhhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjvhubjP)}(h h]h }(hjhhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjvhubh)}(hhh]jg)}(h drm_color_ctmh]h drm_color_ctm}(hjhhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjhubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjhmodnameN classnameNj'j*)}j-]jR+)}jJ+j`hsbc.__drm_ctm_to_dc_matrixasbuh1hhjvhubjP)}(h h]h }(hjhhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjvhubjf+)}(hji+h]h*}(hjhhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjvhubjg)}(hctmh]hctm}(hjhhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjvhubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjrhubj+)}(hstruct fixed31_32 *matrixh](j>)}(hjAh]hstruct}(hjihhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjiubjP)}(h h]h }(hjihhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjiubh)}(hhh]jg)}(h fixed31_32h]h fixed31_32}(hj%ihhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj"iubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj'imodnameN classnameNj'j*)}j-]jhc.__drm_ctm_to_dc_matrixasbuh1hhjiubjP)}(h h]h }(hjCihhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjiubjf+)}(hji+h]h*}(hjQihhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjiubjg)}(hmatrixh]hmatrix}(hj^ihhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjiubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjrhubeh}(h]h ]h"]h$]h&]j~juh1j +hj9hhhhjKhhM.ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj5hhhhjKhhM.ubah}(h]j0hah ](jjeh"]h$]h&]jj)jhuh1j1hjKhhM.hj2hhhubj)}(hhh]h)}(h+converts a DRM CTM to a DC CSC float matrixh]h+converts a DRM CTM to a DC CSC float matrix}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM.hjihhubah}(h]h ]h"]h$]h&]uh1jhj2hhhhjKhhM.ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjijjijjjuh1j,hhhjThNhNubj)}(h**Parameters** ``const struct drm_color_ctm *ctm`` DRM color transformation matrix ``struct fixed31_32 *matrix`` DC CSC float matrix **Description** The matrix needs to be a 3x4 (12 entry) matrix.h](h)}(h**Parameters**h]j)}(hjih]h Parameters}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM2hjiubj)}(hhh](j )}(hD``const struct drm_color_ctm *ctm`` DRM color transformation matrix h](j)}(h#``const struct drm_color_ctm *ctm``h]j)}(hjih]hconst struct drm_color_ctm *ctm}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM/hjiubj-)}(hhh]h)}(hDRM color transformation matrixh]hDRM color transformation matrix}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihM/hjiubah}(h]h ]h"]h$]h&]uh1j,hjiubeh}(h]h ]h"]h$]h&]uh1j hjihM/hjiubj )}(h2``struct fixed31_32 *matrix`` DC CSC float matrix h](j)}(h``struct fixed31_32 *matrix``h]j)}(hjjh]hstruct fixed31_32 *matrix}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM0hjiubj-)}(hhh]h)}(hDC CSC float matrixh]hDC CSC float matrix}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhM0hjjubah}(h]h ]h"]h$]h&]uh1j,hjiubeh}(h]h ]h"]h$]h&]uh1j hjjhM0hjiubeh}(h]h ]h"]h$]h&]uh1jhjiubh)}(h**Description**h]j)}(hj=jh]h Description}(hj?jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;jubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM2hjiubh)}(h/The matrix needs to be a 3x4 (12 entry) matrix.h]h/The matrix needs to be a 3x4 (12 entry) matrix.}(hjSjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM1hjiubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j''__drm_ctm_3x4_to_dc_matrix (C function)c.__drm_ctm_3x4_to_dc_matrixhNtauh1jhjThhhNhNubj-)}(hhh](j2)}(h`void __drm_ctm_3x4_to_dc_matrix (const struct drm_color_ctm_3x4 *ctm, struct fixed31_32 *matrix)h]j8)}(h_void __drm_ctm_3x4_to_dc_matrix(const struct drm_color_ctm_3x4 *ctm, struct fixed31_32 *matrix)h](j*)}(hvoidh]hvoid}(hjjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj~jhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMPubjP)}(h h]h }(hjjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj~jhhhjjhMPubja)}(h__drm_ctm_3x4_to_dc_matrixh]jg)}(h__drm_ctm_3x4_to_dc_matrixh]h__drm_ctm_3x4_to_dc_matrix}(hjjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj~jhhhjjhMPubj +)}(h@(const struct drm_color_ctm_3x4 *ctm, struct fixed31_32 *matrix)h](j+)}(h#const struct drm_color_ctm_3x4 *ctmh](j>)}(hj\h]hconst}(hjjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjjubjP)}(h h]h }(hjjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjjubj>)}(hjAh]hstruct}(hjjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjjubjP)}(h h]h }(hjjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjjubh)}(hhh]jg)}(hdrm_color_ctm_3x4h]hdrm_color_ctm_3x4}(hjjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjjmodnameN classnameNj'j*)}j-]jR+)}jJ+jjsbc.__drm_ctm_3x4_to_dc_matrixasbuh1hhjjubjP)}(h h]h }(hjkhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjjubjf+)}(hji+h]h*}(hj&khhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjjubjg)}(hctmh]hctm}(hj3khhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjjubj+)}(hstruct fixed31_32 *matrixh](j>)}(hjAh]hstruct}(hjLkhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjHkubjP)}(h h]h }(hjYkhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjHkubh)}(hhh]jg)}(h fixed31_32h]h fixed31_32}(hjjkhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjgkubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjlkmodnameN classnameNj'j*)}j-]jkc.__drm_ctm_3x4_to_dc_matrixasbuh1hhjHkubjP)}(h h]h }(hjkhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjHkubjf+)}(hji+h]h*}(hjkhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjHkubjg)}(hmatrixh]hmatrix}(hjkhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjHkubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjjubeh}(h]h ]h"]h$]h&]j~juh1j +hj~jhhhjjhMPubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjzjhhhjjhMPubah}(h]jujah ](jjeh"]h$]h&]jj)jhuh1j1hjjhMPhjwjhhubj)}(hhh]h)}(h/converts a DRM CTM 3x4 to a DC CSC float matrixh]h/converts a DRM CTM 3x4 to a DC CSC float matrix}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMPhjkhhubah}(h]h ]h"]h$]h&]uh1jhjwjhhhjjhMPubeh}(h]h ](jfunctioneh"]h$]h&]jjjjkjjkjjjuh1j,hhhjThNhNubj)}(h**Parameters** ``const struct drm_color_ctm_3x4 *ctm`` DRM color transformation matrix with 3x4 dimensions ``struct fixed31_32 *matrix`` DC CSC float matrix **Description** The matrix needs to be a 3x4 (12 entry) matrix.h](h)}(h**Parameters**h]j)}(hjkh]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMThjkubj)}(hhh](j )}(h\``const struct drm_color_ctm_3x4 *ctm`` DRM color transformation matrix with 3x4 dimensions h](j)}(h'``const struct drm_color_ctm_3x4 *ctm``h]j)}(hjlh]h#const struct drm_color_ctm_3x4 *ctm}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj lubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMQhjlubj-)}(hhh]h)}(h3DRM color transformation matrix with 3x4 dimensionsh]h3DRM color transformation matrix with 3x4 dimensions}(hj'lhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#lhMQhj$lubah}(h]h ]h"]h$]h&]uh1j,hjlubeh}(h]h ]h"]h$]h&]uh1j hj#lhMQhjlubj )}(h2``struct fixed31_32 *matrix`` DC CSC float matrix h](j)}(h``struct fixed31_32 *matrix``h]j)}(hjGlh]hstruct fixed31_32 *matrix}(hjIlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjElubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMRhjAlubj-)}(hhh]h)}(hDC CSC float matrixh]hDC CSC float matrix}(hj`lhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\lhMRhj]lubah}(h]h ]h"]h$]h&]uh1j,hjAlubeh}(h]h ]h"]h$]h&]uh1j hj\lhMRhjlubeh}(h]h ]h"]h$]h&]uh1jhjkubh)}(h**Description**h]j)}(hjlh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMThjkubh)}(h/The matrix needs to be a 3x4 (12 entry) matrix.h]h/The matrix needs to be a 3x4 (12 entry) matrix.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMShjkubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'__set_legacy_tf (C function)c.__set_legacy_tfhNtauh1jhjThhhNhNubj-)}(hhh](j2)}(huint __set_legacy_tf (struct dc_transfer_func *func, const struct drm_color_lut *lut, uint32_t lut_size, bool has_rom)h]j8)}(htint __set_legacy_tf(struct dc_transfer_func *func, const struct drm_color_lut *lut, uint32_t lut_size, bool has_rom)h](j*)}(hinth]hint}(hjlhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjlhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhubjP)}(h h]h }(hjlhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjlhhhjlhMhubja)}(h__set_legacy_tfh]jg)}(h__set_legacy_tfh]h__set_legacy_tf}(hjlhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjlubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjlhhhjlhMhubj +)}(ha(struct dc_transfer_func *func, const struct drm_color_lut *lut, uint32_t lut_size, bool has_rom)h](j+)}(hstruct dc_transfer_func *funch](j>)}(hjAh]hstruct}(hjmhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjmubjP)}(h h]h }(hjmhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjmubh)}(hhh]jg)}(hdc_transfer_funch]hdc_transfer_func}(hj"mhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjmubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj$mmodnameN classnameNj'j*)}j-]jR+)}jJ+jlsbc.__set_legacy_tfasbuh1hhjmubjP)}(h h]h }(hjBmhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjmubjf+)}(hji+h]h*}(hjPmhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjmubjg)}(hfunch]hfunc}(hj]mhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjmubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjlubj+)}(hconst struct drm_color_lut *luth](j>)}(hj\h]hconst}(hjvmhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjrmubjP)}(h h]h }(hjmhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjrmubj>)}(hjAh]hstruct}(hjmhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjrmubjP)}(h h]h }(hjmhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjrmubh)}(hhh]jg)}(h drm_color_luth]h drm_color_lut}(hjmhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjmubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmmodnameN classnameNj'j*)}j-]j>mc.__set_legacy_tfasbuh1hhjrmubjP)}(h h]h }(hjmhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjrmubjf+)}(hji+h]h*}(hjmhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjrmubjg)}(hluth]hlut}(hjmhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjrmubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjlubj+)}(huint32_t lut_sizeh](h)}(hhh]jg)}(huint32_th]huint32_t}(hjnhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjnubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjnmodnameN classnameNj'j*)}j-]j>mc.__set_legacy_tfasbuh1hhjmubjP)}(h h]h }(hj"nhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjmubjg)}(hlut_sizeh]hlut_size}(hj0nhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjmubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjlubj+)}(h bool has_romh](j*)}(hjah]hbool}(hjInhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjEnubjP)}(h h]h }(hjVnhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjEnubjg)}(hhas_romh]hhas_rom}(hjdnhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjEnubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjlubeh}(h]h ]h"]h$]h&]j~juh1j +hjlhhhjlhMhubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjlhhhjlhMhubah}(h]jlah ](jjeh"]h$]h&]jj)jhuh1j1hjlhMhhjlhhubj)}(hhh]h)}(h'Calculates the legacy transfer functionh]h'Calculates the legacy transfer function}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhhjnhhubah}(h]h ]h"]h$]h&]uh1jhjlhhhjlhMhubeh}(h]h ](jfunctioneh"]h$]h&]jjjjnjjnjjjuh1j,hhhjThNhNubj)}(hXa**Parameters** ``struct dc_transfer_func *func`` transfer function ``const struct drm_color_lut *lut`` lookup table that defines the color space ``uint32_t lut_size`` size of respective lut ``bool has_rom`` if ROM can be used for hardcoded curve **Description** Only for sRGB input space **Return** 0 in case of success, -ENOMEM if failsh](h)}(h**Parameters**h]j)}(hjnh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMlhjnubj)}(hhh](j )}(h4``struct dc_transfer_func *func`` transfer function h](j)}(h!``struct dc_transfer_func *func``h]j)}(hjnh]hstruct dc_transfer_func *func}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMihjnubj-)}(hhh]h)}(htransfer functionh]htransfer function}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMihjnubah}(h]h ]h"]h$]h&]uh1j,hjnubeh}(h]h ]h"]h$]h&]uh1j hjnhMihjnubj )}(hN``const struct drm_color_lut *lut`` lookup table that defines the color space h](j)}(h#``const struct drm_color_lut *lut``h]j)}(hjoh]hconst struct drm_color_lut *lut}(hj ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMjhjoubj-)}(hhh]h)}(h)lookup table that defines the color spaceh]h)lookup table that defines the color space}(hj!ohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMjhjoubah}(h]h ]h"]h$]h&]uh1j,hjoubeh}(h]h ]h"]h$]h&]uh1j hjohMjhjnubj )}(h-``uint32_t lut_size`` size of respective lut h](j)}(h``uint32_t lut_size``h]j)}(hjAoh]huint32_t lut_size}(hjCohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?oubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMkhj;oubj-)}(hhh]h)}(hsize of respective luth]hsize of respective lut}(hjZohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVohMkhjWoubah}(h]h ]h"]h$]h&]uh1j,hj;oubeh}(h]h ]h"]h$]h&]uh1j hjVohMkhjnubj )}(h8``bool has_rom`` if ROM can be used for hardcoded curve h](j)}(h``bool has_rom``h]j)}(hjzoh]h bool has_rom}(hj|ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxoubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMlhjtoubj-)}(hhh]h)}(h&if ROM can be used for hardcoded curveh]h&if ROM can be used for hardcoded curve}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMlhjoubah}(h]h ]h"]h$]h&]uh1j,hjtoubeh}(h]h ]h"]h$]h&]uh1j hjohMlhjnubeh}(h]h ]h"]h$]h&]uh1jhjnubh)}(h**Description**h]j)}(hjoh]h Description}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMnhjnubh)}(hOnly for sRGB input spaceh]hOnly for sRGB input space}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMmhjnubh)}(h **Return**h]j)}(hjoh]hReturn}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMohjnubh)}(h&0 in case of success, -ENOMEM if failsh]h&0 in case of success, -ENOMEM if fails}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMphjnubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'__set_output_tf (C function)c.__set_output_tfhNtauh1jhjThhhNhNubj-)}(hhh](j2)}(huint __set_output_tf (struct dc_transfer_func *func, const struct drm_color_lut *lut, uint32_t lut_size, bool has_rom)h]j8)}(htint __set_output_tf(struct dc_transfer_func *func, const struct drm_color_lut *lut, uint32_t lut_size, bool has_rom)h](j*)}(hinth]hint}(hj!phhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjphhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hj0phhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjphhhj/phMubja)}(h__set_output_tfh]jg)}(h__set_output_tfh]h__set_output_tf}(hjBphhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj>pubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjphhhj/phMubj +)}(ha(struct dc_transfer_func *func, const struct drm_color_lut *lut, uint32_t lut_size, bool has_rom)h](j+)}(hstruct dc_transfer_func *funch](j>)}(hjAh]hstruct}(hj^phhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjZpubjP)}(h h]h }(hjkphhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjZpubh)}(hhh]jg)}(hdc_transfer_funch]hdc_transfer_func}(hj|phhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjypubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj~pmodnameN classnameNj'j*)}j-]jR+)}jJ+jDpsbc.__set_output_tfasbuh1hhjZpubjP)}(h h]h }(hjphhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjZpubjf+)}(hji+h]h*}(hjphhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjZpubjg)}(hfunch]hfunc}(hjphhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjZpubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjVpubj+)}(hconst struct drm_color_lut *luth](j>)}(hj\h]hconst}(hjphhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjpubjP)}(h h]h }(hjphhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjpubj>)}(hjAh]hstruct}(hjphhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjpubjP)}(h h]h }(hjphhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjpubh)}(hhh]jg)}(h drm_color_luth]h drm_color_lut}(hj qhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjqubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj qmodnameN classnameNj'j*)}j-]jpc.__set_output_tfasbuh1hhjpubjP)}(h h]h }(hj'qhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjpubjf+)}(hji+h]h*}(hj5qhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjpubjg)}(hluth]hlut}(hjBqhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjpubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjVpubj+)}(huint32_t lut_sizeh](h)}(hhh]jg)}(huint32_th]huint32_t}(hj^qhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj[qubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj`qmodnameN classnameNj'j*)}j-]jpc.__set_output_tfasbuh1hhjWqubjP)}(h h]h }(hj|qhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjWqubjg)}(hlut_sizeh]hlut_size}(hjqhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjWqubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjVpubj+)}(h bool has_romh](j*)}(hjah]hbool}(hjqhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjqubjP)}(h h]h }(hjqhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjqubjg)}(hhas_romh]hhas_rom}(hjqhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjqubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjVpubeh}(h]h ]h"]h$]h&]j~juh1j +hjphhhj/phMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjphhhj/phMubah}(h]jpah ](jjeh"]h$]h&]jj)jhuh1j1hj/phMhjphhubj)}(hhh]h)}(hFcalculates the output transfer function based on expected input space.h]hFcalculates the output transfer function based on expected input space.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjqhhubah}(h]h ]h"]h$]h&]uh1jhjphhhj/phMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjrjjrjjjuh1j,hhhjThNhNubj)}(hX6**Parameters** ``struct dc_transfer_func *func`` transfer function ``const struct drm_color_lut *lut`` lookup table that defines the color space ``uint32_t lut_size`` size of respective lut ``bool has_rom`` if ROM can be used for hardcoded curve **Return** 0 in case of success. -ENOMEM if fails.h](h)}(h**Parameters**h]j)}(hj rh]h Parameters}(hj rhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjrubj)}(hhh](j )}(h4``struct dc_transfer_func *func`` transfer function h](j)}(h!``struct dc_transfer_func *func``h]j)}(hj)rh]hstruct dc_transfer_func *func}(hj+rhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'rubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj#rubj-)}(hhh]h)}(htransfer functionh]htransfer function}(hjBrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>rhMhj?rubah}(h]h ]h"]h$]h&]uh1j,hj#rubeh}(h]h ]h"]h$]h&]uh1j hj>rhMhj rubj )}(hN``const struct drm_color_lut *lut`` lookup table that defines the color space h](j)}(h#``const struct drm_color_lut *lut``h]j)}(hjbrh]hconst struct drm_color_lut *lut}(hjdrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`rubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj\rubj-)}(hhh]h)}(h)lookup table that defines the color spaceh]h)lookup table that defines the color space}(hj{rhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwrhMhjxrubah}(h]h ]h"]h$]h&]uh1j,hj\rubeh}(h]h ]h"]h$]h&]uh1j hjwrhMhj rubj )}(h-``uint32_t lut_size`` size of respective lut h](j)}(h``uint32_t lut_size``h]j)}(hjrh]huint32_t lut_size}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjrubj-)}(hhh]h)}(hsize of respective luth]hsize of respective lut}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1j,hjrubeh}(h]h ]h"]h$]h&]uh1j hjrhMhj rubj )}(h8``bool has_rom`` if ROM can be used for hardcoded curve h](j)}(h``bool has_rom``h]j)}(hjrh]h bool has_rom}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjrubj-)}(hhh]h)}(h&if ROM can be used for hardcoded curveh]h&if ROM can be used for hardcoded curve}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1j,hjrubeh}(h]h ]h"]h$]h&]uh1j hjrhMhj rubeh}(h]h ]h"]h$]h&]uh1jhjrubh)}(h **Return**h]j)}(hjsh]hReturn}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhj subah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjrubh)}(h'0 in case of success. -ENOMEM if fails.h]h'0 in case of success. -ENOMEM if fails.}(hj%shhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjrubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'__set_output_tf_32 (C function)c.__set_output_tf_32hNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hzint __set_output_tf_32 (struct dc_transfer_func *func, const struct drm_color_lut32 *lut, uint32_t lut_size, bool has_rom)h]j8)}(hyint __set_output_tf_32(struct dc_transfer_func *func, const struct drm_color_lut32 *lut, uint32_t lut_size, bool has_rom)h](j*)}(hinth]hint}(hjTshhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjPshhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hjcshhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjPshhhjbshMubja)}(h__set_output_tf_32h]jg)}(h__set_output_tf_32h]h__set_output_tf_32}(hjushhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjqsubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjPshhhjbshMubj +)}(hc(struct dc_transfer_func *func, const struct drm_color_lut32 *lut, uint32_t lut_size, bool has_rom)h](j+)}(hstruct dc_transfer_func *funch](j>)}(hjAh]hstruct}(hjshhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjsubjP)}(h h]h }(hjshhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjsubh)}(hhh]jg)}(hdc_transfer_funch]hdc_transfer_func}(hjshhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjsubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjsmodnameN classnameNj'j*)}j-]jR+)}jJ+jwssbc.__set_output_tf_32asbuh1hhjsubjP)}(h h]h }(hjshhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjsubjf+)}(hji+h]h*}(hjshhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjsubjg)}(hfunch]hfunc}(hjshhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjsubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjsubj+)}(h!const struct drm_color_lut32 *luth](j>)}(hj\h]hconst}(hjthhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjsubjP)}(h h]h }(hjthhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjsubj>)}(hjAh]hstruct}(hjthhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjsubjP)}(h h]h }(hj+thhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjsubh)}(hhh]jg)}(hdrm_color_lut32h]hdrm_color_lut32}(hjtmodnameN classnameNj'j*)}j-]jsc.__set_output_tf_32asbuh1hhjsubjP)}(h h]h }(hjZthhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjsubjf+)}(hji+h]h*}(hjhthhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjsubjg)}(hluth]hlut}(hjuthhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjsubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjsubj+)}(huint32_t lut_sizeh](h)}(hhh]jg)}(huint32_th]huint32_t}(hjthhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjtubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjtmodnameN classnameNj'j*)}j-]jsc.__set_output_tf_32asbuh1hhjtubjP)}(h h]h }(hjthhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjtubjg)}(hlut_sizeh]hlut_size}(hjthhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjtubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjsubj+)}(h bool has_romh](j*)}(hjah]hbool}(hjthhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjtubjP)}(h h]h }(hjthhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjtubjg)}(hhas_romh]hhas_rom}(hjthhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjtubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjsubeh}(h]h ]h"]h$]h&]j~juh1j +hjPshhhjbshMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjLshhhjbshMubah}(h]jGsah ](jjeh"]h$]h&]jj)jhuh1j1hjbshMhjIshhubj)}(hhh]h)}(hFcalculates the output transfer function based on expected input space.h]hFcalculates the output transfer function based on expected input space.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjuhhubah}(h]h ]h"]h$]h&]uh1jhjIshhhjbshMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj3ujj3ujjjuh1j,hhhjThNhNubj)}(hX8**Parameters** ``struct dc_transfer_func *func`` transfer function ``const struct drm_color_lut32 *lut`` lookup table that defines the color space ``uint32_t lut_size`` size of respective lut ``bool has_rom`` if ROM can be used for hardcoded curve **Return** 0 in case of success. -ENOMEM if fails.h](h)}(h**Parameters**h]j)}(hj=uh]h Parameters}(hj?uhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;uubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj7uubj)}(hhh](j )}(h4``struct dc_transfer_func *func`` transfer function h](j)}(h!``struct dc_transfer_func *func``h]j)}(hj\uh]hstruct dc_transfer_func *func}(hj^uhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZuubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjVuubj-)}(hhh]h)}(htransfer functionh]htransfer function}(hjuuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjquhMhjruubah}(h]h ]h"]h$]h&]uh1j,hjVuubeh}(h]h ]h"]h$]h&]uh1j hjquhMhjSuubj )}(hP``const struct drm_color_lut32 *lut`` lookup table that defines the color space h](j)}(h%``const struct drm_color_lut32 *lut``h]j)}(hjuh]h!const struct drm_color_lut32 *lut}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjuubj-)}(hhh]h)}(h)lookup table that defines the color spaceh]h)lookup table that defines the color space}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMhjuubah}(h]h ]h"]h$]h&]uh1j,hjuubeh}(h]h ]h"]h$]h&]uh1j hjuhMhjSuubj )}(h-``uint32_t lut_size`` size of respective lut h](j)}(h``uint32_t lut_size``h]j)}(hjuh]huint32_t lut_size}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjuubj-)}(hhh]h)}(hsize of respective luth]hsize of respective lut}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMhjuubah}(h]h ]h"]h$]h&]uh1j,hjuubeh}(h]h ]h"]h$]h&]uh1j hjuhMhjSuubj )}(h8``bool has_rom`` if ROM can be used for hardcoded curve h](j)}(h``bool has_rom``h]j)}(hjvh]h bool has_rom}(hj vhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjvubj-)}(hhh]h)}(h&if ROM can be used for hardcoded curveh]h&if ROM can be used for hardcoded curve}(hj vhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMhjvubah}(h]h ]h"]h$]h&]uh1j,hjvubeh}(h]h ]h"]h$]h&]uh1j hjvhMhjSuubeh}(h]h ]h"]h$]h&]uh1jhj7uubh)}(h **Return**h]j)}(hjBvh]hReturn}(hjDvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@vubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj7uubh)}(h'0 in case of success. -ENOMEM if fails.h]h'0 in case of success. -ENOMEM if fails.}(hjXvhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj7uubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'__set_input_tf (C function)c.__set_input_tfhNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hint __set_input_tf (struct dc_color_caps *caps, struct dc_transfer_func *func, const struct drm_color_lut *lut, uint32_t lut_size)h]j8)}(hint __set_input_tf(struct dc_color_caps *caps, struct dc_transfer_func *func, const struct drm_color_lut *lut, uint32_t lut_size)h](j*)}(hinth]hint}(hjvhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjvhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM9ubjP)}(h h]h }(hjvhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjvhhhjvhM9ubja)}(h__set_input_tfh]jg)}(h__set_input_tfh]h__set_input_tf}(hjvhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjvubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjvhhhjvhM9ubj +)}(ho(struct dc_color_caps *caps, struct dc_transfer_func *func, const struct drm_color_lut *lut, uint32_t lut_size)h](j+)}(hstruct dc_color_caps *capsh](j>)}(hjAh]hstruct}(hjvhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjvubjP)}(h h]h }(hjvhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjvubh)}(hhh]jg)}(h dc_color_capsh]h dc_color_caps}(hjvhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjvubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjvmodnameN classnameNj'j*)}j-]jR+)}jJ+jvsbc.__set_input_tfasbuh1hhjvubjP)}(h h]h }(hjwhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjvubjf+)}(hji+h]h*}(hjwhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjvubjg)}(hcapsh]hcaps}(hjwhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjvubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjvubj+)}(hstruct dc_transfer_func *funch](j>)}(hjAh]hstruct}(hj6whhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj2wubjP)}(h h]h }(hjCwhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj2wubh)}(hhh]jg)}(hdc_transfer_funch]hdc_transfer_func}(hjTwhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjQwubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjVwmodnameN classnameNj'j*)}j-]jvc.__set_input_tfasbuh1hhj2wubjP)}(h h]h }(hjrwhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj2wubjf+)}(hji+h]h*}(hjwhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj2wubjg)}(hfunch]hfunc}(hjwhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj2wubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjvubj+)}(hconst struct drm_color_lut *luth](j>)}(hj\h]hconst}(hjwhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjwubjP)}(h h]h }(hjwhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjwubj>)}(hjAh]hstruct}(hjwhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjwubjP)}(h h]h }(hjwhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjwubh)}(hhh]jg)}(h drm_color_luth]h drm_color_lut}(hjwhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjwubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjwmodnameN classnameNj'j*)}j-]jvc.__set_input_tfasbuh1hhjwubjP)}(h h]h }(hjwhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjwubjf+)}(hji+h]h*}(hj xhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjwubjg)}(hluth]hlut}(hjxhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjwubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjvubj+)}(huint32_t lut_sizeh](h)}(hhh]jg)}(huint32_th]huint32_t}(hj4xhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj1xubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj6xmodnameN classnameNj'j*)}j-]jvc.__set_input_tfasbuh1hhj-xubjP)}(h h]h }(hjRxhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj-xubjg)}(hlut_sizeh]hlut_size}(hj`xhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj-xubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjvubeh}(h]h ]h"]h$]h&]j~juh1j +hjvhhhjvhM9ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjvhhhjvhM9ubah}(h]jzvah ](jjeh"]h$]h&]jj)jhuh1j1hjvhM9hj|vhhubj)}(hhh]h)}(hEcalculates the input transfer function based on expected input space.h]hEcalculates the input transfer function based on expected input space.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM9hjxhhubah}(h]h ]h"]h$]h&]uh1jhj|vhhhjvhM9ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjxjjxjjjuh1j,hhhjThNhNubj)}(hX4**Parameters** ``struct dc_color_caps *caps`` dc color capabilities ``struct dc_transfer_func *func`` transfer function ``const struct drm_color_lut *lut`` lookup table that defines the color space ``uint32_t lut_size`` size of respective lut. **Return** 0 in case of success. -ENOMEM if fails.h](h)}(h**Parameters**h]j)}(hjxh]h Parameters}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM=hjxubj)}(hhh](j )}(h5``struct dc_color_caps *caps`` dc color capabilities h](j)}(h``struct dc_color_caps *caps``h]j)}(hjxh]hstruct dc_color_caps *caps}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM;hjxubj-)}(hhh]h)}(hdc color capabilitiesh]hdc color capabilities}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhM;hjxubah}(h]h ]h"]h$]h&]uh1j,hjxubeh}(h]h ]h"]h$]h&]uh1j hjxhM;hjxubj )}(h4``struct dc_transfer_func *func`` transfer function h](j)}(h!``struct dc_transfer_func *func``h]j)}(hjyh]hstruct dc_transfer_func *func}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM<hjxubj-)}(hhh]h)}(htransfer functionh]htransfer function}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhM<hjyubah}(h]h ]h"]h$]h&]uh1j,hjxubeh}(h]h ]h"]h$]h&]uh1j hjyhM<hjxubj )}(hN``const struct drm_color_lut *lut`` lookup table that defines the color space h](j)}(h#``const struct drm_color_lut *lut``h]j)}(hj=yh]hconst struct drm_color_lut *lut}(hj?yhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;yubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM=hj7yubj-)}(hhh]h)}(h)lookup table that defines the color spaceh]h)lookup table that defines the color space}(hjVyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRyhM=hjSyubah}(h]h ]h"]h$]h&]uh1j,hj7yubeh}(h]h ]h"]h$]h&]uh1j hjRyhM=hjxubj )}(h.``uint32_t lut_size`` size of respective lut. h](j)}(h``uint32_t lut_size``h]j)}(hjvyh]huint32_t lut_size}(hjxyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtyubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM>hjpyubj-)}(hhh]h)}(hsize of respective lut.h]hsize of respective lut.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhM>hjyubah}(h]h ]h"]h$]h&]uh1j,hjpyubeh}(h]h ]h"]h$]h&]uh1j hjyhM>hjxubeh}(h]h ]h"]h$]h&]uh1jhjxubh)}(h **Return**h]j)}(hjyh]hReturn}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM@hjxubh)}(h'0 in case of success. -ENOMEM if fails.h]h'0 in case of success. -ENOMEM if fails.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM@hjxubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'__set_input_tf_32 (C function)c.__set_input_tf_32hNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hint __set_input_tf_32 (struct dc_color_caps *caps, struct dc_transfer_func *func, const struct drm_color_lut32 *lut, uint32_t lut_size)h]j8)}(hint __set_input_tf_32(struct dc_color_caps *caps, struct dc_transfer_func *func, const struct drm_color_lut32 *lut, uint32_t lut_size)h](j*)}(hinth]hint}(hjyhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjyhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM_ubjP)}(h h]h }(hjzhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjyhhhjzhM_ubja)}(h__set_input_tf_32h]jg)}(h__set_input_tf_32h]h__set_input_tf_32}(hjzhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjzubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjyhhhjzhM_ubj +)}(hq(struct dc_color_caps *caps, struct dc_transfer_func *func, const struct drm_color_lut32 *lut, uint32_t lut_size)h](j+)}(hstruct dc_color_caps *capsh](j>)}(hjAh]hstruct}(hj3zhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj/zubjP)}(h h]h }(hj@zhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj/zubh)}(hhh]jg)}(h dc_color_capsh]h dc_color_caps}(hjQzhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjNzubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjSzmodnameN classnameNj'j*)}j-]jR+)}jJ+jzsbc.__set_input_tf_32asbuh1hhj/zubjP)}(h h]h }(hjqzhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj/zubjf+)}(hji+h]h*}(hjzhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj/zubjg)}(hcapsh]hcaps}(hjzhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj/zubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj+zubj+)}(hstruct dc_transfer_func *funch](j>)}(hjAh]hstruct}(hjzhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjzubjP)}(h h]h }(hjzhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjzubh)}(hhh]jg)}(hdc_transfer_funch]hdc_transfer_func}(hjzhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjzubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjzmodnameN classnameNj'j*)}j-]jmzc.__set_input_tf_32asbuh1hhjzubjP)}(h h]h }(hjzhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjzubjf+)}(hji+h]h*}(hjzhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjzubjg)}(hfunch]hfunc}(hjzhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjzubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj+zubj+)}(h!const struct drm_color_lut32 *luth](j>)}(hj\h]hconst}(hj{hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj{ubjP)}(h h]h }(hj"{hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj{ubj>)}(hjAh]hstruct}(hj0{hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj{ubjP)}(h h]h }(hj={hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj{ubh)}(hhh]jg)}(hdrm_color_lut32h]hdrm_color_lut32}(hjN{hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjK{ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjP{modnameN classnameNj'j*)}j-]jmzc.__set_input_tf_32asbuh1hhj{ubjP)}(h h]h }(hjl{hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj{ubjf+)}(hji+h]h*}(hjz{hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj{ubjg)}(hluth]hlut}(hj{hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj{ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj+zubj+)}(huint32_t lut_sizeh](h)}(hhh]jg)}(huint32_th]huint32_t}(hj{hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj{ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj{modnameN classnameNj'j*)}j-]jmzc.__set_input_tf_32asbuh1hhj{ubjP)}(h h]h }(hj{hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj{ubjg)}(hlut_sizeh]hlut_size}(hj{hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj{ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj+zubeh}(h]h ]h"]h$]h&]j~juh1j +hjyhhhjzhM_ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjyhhhjzhM_ubah}(h]jyah ](jjeh"]h$]h&]jj)jhuh1j1hjzhM_hjyhhubj)}(hhh]h)}(hEcalculates the input transfer function based on expected input space.h]hEcalculates the input transfer function based on expected input space.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM_hj{hhubah}(h]h ]h"]h$]h&]uh1jhjyhhhjzhM_ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj|jj|jjjuh1j,hhhjThNhNubj)}(hX6**Parameters** ``struct dc_color_caps *caps`` dc color capabilities ``struct dc_transfer_func *func`` transfer function ``const struct drm_color_lut32 *lut`` lookup table that defines the color space ``uint32_t lut_size`` size of respective lut. **Return** 0 in case of success. -ENOMEM if fails.h](h)}(h**Parameters**h]j)}(hj|h]h Parameters}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMchj|ubj)}(hhh](j )}(h5``struct dc_color_caps *caps`` dc color capabilities h](j)}(h``struct dc_color_caps *caps``h]j)}(hj:|h]hstruct dc_color_caps *caps}(hj<|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8|ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMahj4|ubj-)}(hhh]h)}(hdc color capabilitiesh]hdc color capabilities}(hjS|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO|hMahjP|ubah}(h]h ]h"]h$]h&]uh1j,hj4|ubeh}(h]h ]h"]h$]h&]uh1j hjO|hMahj1|ubj )}(h4``struct dc_transfer_func *func`` transfer function h](j)}(h!``struct dc_transfer_func *func``h]j)}(hjs|h]hstruct dc_transfer_func *func}(hju|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjq|ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMbhjm|ubj-)}(hhh]h)}(htransfer functionh]htransfer function}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hMbhj|ubah}(h]h ]h"]h$]h&]uh1j,hjm|ubeh}(h]h ]h"]h$]h&]uh1j hj|hMbhj1|ubj )}(hP``const struct drm_color_lut32 *lut`` lookup table that defines the color space h](j)}(h%``const struct drm_color_lut32 *lut``h]j)}(hj|h]h!const struct drm_color_lut32 *lut}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMchj|ubj-)}(hhh]h)}(h)lookup table that defines the color spaceh]h)lookup table that defines the color space}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hMchj|ubah}(h]h ]h"]h$]h&]uh1j,hj|ubeh}(h]h ]h"]h$]h&]uh1j hj|hMchj1|ubj )}(h.``uint32_t lut_size`` size of respective lut. h](j)}(h``uint32_t lut_size``h]j)}(hj|h]huint32_t lut_size}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMdhj|ubj-)}(hhh]h)}(hsize of respective lut.h]hsize of respective lut.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hMdhj|ubah}(h]h ]h"]h$]h&]uh1j,hj|ubeh}(h]h ]h"]h$]h&]uh1j hj|hMdhj1|ubeh}(h]h ]h"]h$]h&]uh1jhj|ubh)}(h **Return**h]j)}(hj }h]hReturn}(hj"}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMfhj|ubh)}(h'0 in case of success. -ENOMEM if fails.h]h'0 in case of success. -ENOMEM if fails.}(hj6}hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMfhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'(amdgpu_dm_verify_lut3d_size (C function)c.amdgpu_dm_verify_lut3d_sizehNtauh1jhjThhhNhNubj-)}(hhh](j2)}(haint amdgpu_dm_verify_lut3d_size (struct amdgpu_device *adev, struct drm_plane_state *plane_state)h]j8)}(h`int amdgpu_dm_verify_lut3d_size(struct amdgpu_device *adev, struct drm_plane_state *plane_state)h](j*)}(hinth]hint}(hje}hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hja}hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hjt}hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhja}hhhjs}hMubja)}(hamdgpu_dm_verify_lut3d_sizeh]jg)}(hamdgpu_dm_verify_lut3d_sizeh]hamdgpu_dm_verify_lut3d_size}(hj}hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj}ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hja}hhhjs}hMubj +)}(hA(struct amdgpu_device *adev, struct drm_plane_state *plane_state)h](j+)}(hstruct amdgpu_device *adevh](j>)}(hjAh]hstruct}(hj}hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj}ubjP)}(h h]h }(hj}hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj}ubh)}(hhh]jg)}(h amdgpu_deviceh]h amdgpu_device}(hj}hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj}ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj}modnameN classnameNj'j*)}j-]jR+)}jJ+j}sbc.amdgpu_dm_verify_lut3d_sizeasbuh1hhj}ubjP)}(h h]h }(hj}hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj}ubjf+)}(hji+h]h*}(hj}hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj}ubjg)}(hadevh]hadev}(hj}hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj}ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj}ubj+)}(h#struct drm_plane_state *plane_stateh](j>)}(hjAh]hstruct}(hj~hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj~ubjP)}(h h]h }(hj!~hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj~ubh)}(hhh]jg)}(hdrm_plane_stateh]hdrm_plane_state}(hj2~hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj/~ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj4~modnameN classnameNj'j*)}j-]j}c.amdgpu_dm_verify_lut3d_sizeasbuh1hhj~ubjP)}(h h]h }(hjP~hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj~ubjf+)}(hji+h]h*}(hj^~hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj~ubjg)}(h plane_stateh]h plane_state}(hjk~hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj~ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj}ubeh}(h]h ]h"]h$]h&]j~juh1j +hja}hhhjs}hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj]}hhhjs}hMubah}(h]jX}ah ](jjeh"]h$]h&]jj)jhuh1j1hjs}hMhjZ}hhubj)}(hhh]h)}(hZverifies if 3D LUT is supported and if user shaper and 3D LUTs match the hw supported sizeh]hZverifies if 3D LUT is supported and if user shaper and 3D LUTs match the hw supported size}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj~hhubah}(h]h ]h"]h$]h&]uh1jhjZ}hhhjs}hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj~jj~jjjuh1j,hhhjThNhNubj)}(hXX**Parameters** ``struct amdgpu_device *adev`` amdgpu device ``struct drm_plane_state *plane_state`` the DRM plane state **Description** Verifies if pre-blending (DPP) 3D LUT is supported by the HW (DCN 2.0 or newer) and if the user shaper and 3D LUTs match the supported size. **Return** 0 on success. -EINVAL if lut size are invalid.h](h)}(h**Parameters**h]j)}(hj~h]h Parameters}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj~ubj)}(hhh](j )}(h-``struct amdgpu_device *adev`` amdgpu device h](j)}(h``struct amdgpu_device *adev``h]j)}(hj~h]hstruct amdgpu_device *adev}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj~ubj-)}(hhh]h)}(h amdgpu deviceh]h amdgpu device}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hMhj~ubah}(h]h ]h"]h$]h&]uh1j,hj~ubeh}(h]h ]h"]h$]h&]uh1j hj~hMhj~ubj )}(h<``struct drm_plane_state *plane_state`` the DRM plane state h](j)}(h'``struct drm_plane_state *plane_state``h]j)}(hjh]h#struct drm_plane_state *plane_state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj ubj-)}(hhh]h)}(hthe DRM plane stateh]hthe DRM plane state}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMhj%ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj$hMhj~ubeh}(h]h ]h"]h$]h&]uh1jhj~ubh)}(h**Description**h]j)}(hjJh]h Description}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj~ubh)}(hVerifies if pre-blending (DPP) 3D LUT is supported by the HW (DCN 2.0 or newer) and if the user shaper and 3D LUTs match the supported size.h]hVerifies if pre-blending (DPP) 3D LUT is supported by the HW (DCN 2.0 or newer) and if the user shaper and 3D LUTs match the supported size.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj~ubh)}(h **Return**h]j)}(hjqh]hReturn}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj~ubh)}(h.0 on success. -EINVAL if lut size are invalid.h]h.0 on success. -EINVAL if lut size are invalid.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j''amdgpu_dm_verify_lut_sizes (C function)c.amdgpu_dm_verify_lut_sizeshNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hHint amdgpu_dm_verify_lut_sizes (const struct drm_crtc_state *crtc_state)h]j8)}(hGint amdgpu_dm_verify_lut_sizes(const struct drm_crtc_state *crtc_state)h](j*)}(hinth]hint}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubja)}(hamdgpu_dm_verify_lut_sizesh]jg)}(hamdgpu_dm_verify_lut_sizesh]hamdgpu_dm_verify_lut_sizes}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMubj +)}(h)(const struct drm_crtc_state *crtc_state)h]j+)}(h'const struct drm_crtc_state *crtc_stateh](j>)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubj>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(hdrm_crtc_stateh]hdrm_crtc_state}(hj,hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj)ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj.modnameN classnameNj'j*)}j-]jR+)}jJ+jsbc.amdgpu_dm_verify_lut_sizesasbuh1hhjubjP)}(h h]h }(hjLhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hjZhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(h crtc_stateh]h crtc_state}(hjghhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubah}(h]h ]h"]h$]h&]j~juh1j +hjhhhjhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhMhjhhubj)}(hhh]h)}(h1verifies if DRM luts match the hw supported sizesh]h1verifies if DRM luts match the hw supported sizes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j,hhhjThNhNubj)}(hX **Parameters** ``const struct drm_crtc_state *crtc_state`` the DRM CRTC state **Description** Verifies that the Degamma and Gamma LUTs attached to the :c:type:`crtc_state` are of the expected size. **Return** 0 on success. -EINVAL if any lut sizes are invalid.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubj)}(hhh]j )}(h?``const struct drm_crtc_state *crtc_state`` the DRM CRTC state h](j)}(h+``const struct drm_crtc_state *crtc_state``h]j)}(hjҀh]h'const struct drm_crtc_state *crtc_state}(hjԀhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjЀubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj̀ubj-)}(hhh]h)}(hthe DRM CRTC stateh]hthe DRM CRTC state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hj̀ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjɀubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(hgVerifies that the Degamma and Gamma LUTs attached to the :c:type:`crtc_state` are of the expected size.h](h9Verifies that the Degamma and Gamma LUTs attached to the }(hj#hhhNhNubh)}(h:c:type:`crtc_state`h]j)}(hj-h]h crtc_state}(hj/hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  crtc_stateuh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj#ubh are of the expected size.}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjJhMhjubh)}(h **Return**h]j)}(hjWh]hReturn}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(h30 on success. -EINVAL if any lut sizes are invalid.h]h30 on success. -EINVAL if any lut sizes are invalid.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j',amdgpu_dm_check_crtc_color_mgmt (C function)!c.amdgpu_dm_check_crtc_color_mgmthNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hQint amdgpu_dm_check_crtc_color_mgmt (struct dm_crtc_state *crtc, bool check_only)h]j8)}(hPint amdgpu_dm_check_crtc_color_mgmt(struct dm_crtc_state *crtc, bool check_only)h](j*)}(hinth]hint}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubja)}(hamdgpu_dm_check_crtc_color_mgmth]jg)}(hamdgpu_dm_check_crtc_color_mgmth]hamdgpu_dm_check_crtc_color_mgmt}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMubj +)}(h-(struct dm_crtc_state *crtc, bool check_only)h](j+)}(hstruct dm_crtc_state *crtch](j>)}(hjAh]hstruct}(hjفhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjՁubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjՁubh)}(hhh]jg)}(h dm_crtc_stateh]h dm_crtc_state}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]jR+)}jJ+jsb!c.amdgpu_dm_check_crtc_color_mgmtasbuh1hhjՁubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjՁubjf+)}(hji+h]h*}(hj%hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjՁubjg)}(hcrtch]hcrtc}(hj2hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjՁubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjсubj+)}(hbool check_onlyh](j*)}(hjah]hbool}(hjKhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjGubjP)}(h h]h }(hjXhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjGubjg)}(h check_onlyh]h check_only}(hjfhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjGubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjсubeh}(h]h ]h"]h$]h&]j~juh1j +hjhhhjhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhMhjhhubj)}(hhh]h)}(h0Check if DRM color props are programmable by DC.h]h0Check if DRM color props are programmable by DC.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j,hhhjThNhNubj)}(hX**Parameters** ``struct dm_crtc_state *crtc`` amdgpu_dm crtc state ``bool check_only`` only check color state without update dc stream **Description** This function just verifies CRTC LUT sizes, if there is enough space for output transfer function and if its parameters can be calculated by AMD color module. It also adjusts some settings for programming CRTC degamma at plane stage, using plane DGM block. The RGM block is typically more fully featured and accurate across all ASICs - DCE can't support a custom non-linear CRTC DGM. For supporting both plane level color management and CRTC level color management at once we have to either restrict the usage of some CRTC properties or blend adjustments together. **Return** 0 on success. Error code if validation fails.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubj)}(hhh](j )}(h4``struct dm_crtc_state *crtc`` amdgpu_dm crtc state h](j)}(h``struct dm_crtc_state *crtc``h]j)}(hjтh]hstruct dm_crtc_state *crtc}(hjӂhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjςubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhj˂ubj-)}(hhh]h)}(hamdgpu_dm crtc stateh]hamdgpu_dm crtc state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hj˂ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjȂubj )}(hD``bool check_only`` only check color state without update dc stream h](j)}(h``bool check_only``h]j)}(hj h]hbool check_only}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubj-)}(hhh]h)}(h/only check color state without update dc streamh]h/only check color state without update dc stream}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhj ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjȂubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjEh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(hXThis function just verifies CRTC LUT sizes, if there is enough space for output transfer function and if its parameters can be calculated by AMD color module. It also adjusts some settings for programming CRTC degamma at plane stage, using plane DGM block.h]hXThis function just verifies CRTC LUT sizes, if there is enough space for output transfer function and if its parameters can be calculated by AMD color module. It also adjusts some settings for programming CRTC degamma at plane stage, using plane DGM block.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(h~The RGM block is typically more fully featured and accurate across all ASICs - DCE can't support a custom non-linear CRTC DGM.h]hThe RGM block is typically more fully featured and accurate across all ASICs - DCE can’t support a custom non-linear CRTC DGM.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(hFor supporting both plane level color management and CRTC level color management at once we have to either restrict the usage of some CRTC properties or blend adjustments together.h]hFor supporting both plane level color management and CRTC level color management at once we have to either restrict the usage of some CRTC properties or blend adjustments together.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(h-0 on success. Error code if validation fails.h]h-0 on success. Error code if validation fails.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'-amdgpu_dm_update_crtc_color_mgmt (C function)"c.amdgpu_dm_update_crtc_color_mgmthNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hAint amdgpu_dm_update_crtc_color_mgmt (struct dm_crtc_state *crtc)h]j8)}(h@int amdgpu_dm_update_crtc_color_mgmt(struct dm_crtc_state *crtc)h](j*)}(hinth]hint}(hjσhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hj˃hhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMAubjP)}(h h]h }(hjރhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj˃hhhj݃hMAubja)}(h amdgpu_dm_update_crtc_color_mgmth]jg)}(h amdgpu_dm_update_crtc_color_mgmth]h amdgpu_dm_update_crtc_color_mgmt}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj˃hhhj݃hMAubj +)}(h(struct dm_crtc_state *crtc)h]j+)}(hstruct dm_crtc_state *crtch](j>)}(hjAh]hstruct}(hj hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(h dm_crtc_stateh]h dm_crtc_state}(hj*hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj,modnameN classnameNj'j*)}j-]jR+)}jJ+jsb"c.amdgpu_dm_update_crtc_color_mgmtasbuh1hhjubjP)}(h h]h }(hjJhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hjXhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(hcrtch]hcrtc}(hjehhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubah}(h]h ]h"]h$]h&]j~juh1j +hj˃hhhj݃hMAubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjǃhhhj݃hMAubah}(h]jƒah ](jjeh"]h$]h&]jj)jhuh1j1hj݃hMAhjăhhubj)}(hhh]h)}(h'Maps DRM color management to DC stream.h]h'Maps DRM color management to DC stream.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMAhjhhubah}(h]h ]h"]h$]h&]uh1jhjăhhhj݃hMAubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j,hhhjThNhNubj)}(hXO**Parameters** ``struct dm_crtc_state *crtc`` amdgpu_dm crtc state **Description** With no plane level color management properties we're free to use any of the HW blocks as long as the CRTC CTM always comes before the CRTC RGM and after the CRTC DGM. - The CRTC RGM block will be placed in the RGM LUT block if it is non-linear. - The CRTC DGM block will be placed in the DGM LUT block if it is non-linear. - The CRTC CTM will be placed in the gamut remap block if it is non-linear. The RGM block is typically more fully featured and accurate across all ASICs - DCE can't support a custom non-linear CRTC DGM. For supporting both plane level color management and CRTC level color management at once we have to either restrict the usage of CRTC properties or blend adjustments together. **Return** 0 on success. Error code if setup fails.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMEhjubj)}(hhh]j )}(h4``struct dm_crtc_state *crtc`` amdgpu_dm crtc state h](j)}(h``struct dm_crtc_state *crtc``h]j)}(hjЄh]hstruct dm_crtc_state *crtc}(hj҄hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj΄ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMBhjʄubj-)}(hhh]h)}(hamdgpu_dm crtc stateh]hamdgpu_dm crtc state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMBhjubah}(h]h ]h"]h$]h&]uh1j,hjʄubeh}(h]h ]h"]h$]h&]uh1j hjhMBhjDŽubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMDhjubh)}(hWith no plane level color management properties we're free to use any of the HW blocks as long as the CRTC CTM always comes before the CRTC RGM and after the CRTC DGM.h]hWith no plane level color management properties we’re free to use any of the HW blocks as long as the CRTC CTM always comes before the CRTC RGM and after the CRTC DGM.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMChjubh)}(hhh](h)}(hKThe CRTC RGM block will be placed in the RGM LUT block if it is non-linear.h]h)}(hj5h]hKThe CRTC RGM block will be placed in the RGM LUT block if it is non-linear.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMGhj3ubah}(h]h ]h"]h$]h&]uh1hhj0ubh)}(hKThe CRTC DGM block will be placed in the DGM LUT block if it is non-linear.h]h)}(hjMh]hKThe CRTC DGM block will be placed in the DGM LUT block if it is non-linear.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMHhjKubah}(h]h ]h"]h$]h&]uh1hhj0ubh)}(hJThe CRTC CTM will be placed in the gamut remap block if it is non-linear. h]h)}(hIThe CRTC CTM will be placed in the gamut remap block if it is non-linear.h]hIThe CRTC CTM will be placed in the gamut remap block if it is non-linear.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMIhjcubah}(h]h ]h"]h$]h&]uh1hhj0ubeh}(h]h ]h"]h$]h&]j-j-uh1hhjDhMGhjubh)}(h~The RGM block is typically more fully featured and accurate across all ASICs - DCE can't support a custom non-linear CRTC DGM.h]hThe RGM block is typically more fully featured and accurate across all ASICs - DCE can’t support a custom non-linear CRTC DGM.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMKhjubh)}(hFor supporting both plane level color management and CRTC level color management at once we have to either restrict the usage of CRTC properties or blend adjustments together.h]hFor supporting both plane level color management and CRTC level color management at once we have to either restrict the usage of CRTC properties or blend adjustments together.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMNhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMRhjubh)}(h(0 on success. Error code if setup fails.h]h(0 on success. Error code if setup fails.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMShjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'.amdgpu_dm_update_plane_color_mgmt (C function)#c.amdgpu_dm_update_plane_color_mgmthNtauh1jhjThhhNhNubj-)}(hhh](j2)}(hint amdgpu_dm_update_plane_color_mgmt (struct dm_crtc_state *crtc, struct drm_plane_state *plane_state, struct dc_plane_state *dc_plane_state)h]j8)}(hint amdgpu_dm_update_plane_color_mgmt(struct dm_crtc_state *crtc, struct drm_plane_state *plane_state, struct dc_plane_state *dc_plane_state)h](j*)}(hinth]hint}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhM ubja)}(h!amdgpu_dm_update_plane_color_mgmth]jg)}(h!amdgpu_dm_update_plane_color_mgmth]h!amdgpu_dm_update_plane_color_mgmt}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhM ubj +)}(hh(struct dm_crtc_state *crtc, struct drm_plane_state *plane_state, struct dc_plane_state *dc_plane_state)h](j+)}(hstruct dm_crtc_state *crtch](j>)}(hjAh]hstruct}(hj$hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj ubjP)}(h h]h }(hj1hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj ubh)}(hhh]jg)}(h dm_crtc_stateh]h dm_crtc_state}(hjBhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj?ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjDmodnameN classnameNj'j*)}j-]jR+)}jJ+j sb#c.amdgpu_dm_update_plane_color_mgmtasbuh1hhj ubjP)}(h h]h }(hjbhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj ubjf+)}(hji+h]h*}(hjphhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj ubjg)}(hcrtch]hcrtc}(hj}hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubj+)}(h#struct drm_plane_state *plane_stateh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(hdrm_plane_stateh]hdrm_plane_state}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]j^#c.amdgpu_dm_update_plane_color_mgmtasbuh1hhjubjP)}(h h]h }(hj҆hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(h plane_stateh]h plane_state}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubj+)}(h%struct dc_plane_state *dc_plane_stateh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(hdc_plane_stateh]hdc_plane_state}(hj$hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj&modnameN classnameNj'j*)}j-]j^#c.amdgpu_dm_update_plane_color_mgmtasbuh1hhjubjP)}(h h]h }(hjBhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hjPhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(hdc_plane_stateh]hdc_plane_state}(hj]hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubeh}(h]h ]h"]h$]h&]j~juh1j +hjhhhjhM ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj߅hhhjhM ubah}(h]jڅah ](jjeh"]h$]h&]jj)jhuh1j1hjhM hj܅hhubj)}(hhh]h)}(h&Maps DRM color management to DC plane.h]h&Maps DRM color management to DC plane.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM hjhhubah}(h]h ]h"]h$]h&]uh1jhj܅hhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j,hhhjThNhNubj)}(hX**Parameters** ``struct dm_crtc_state *crtc`` amdgpu_dm crtc state ``struct drm_plane_state *plane_state`` DRM plane state ``struct dc_plane_state *dc_plane_state`` target DC surface **Description** Update the underlying dc_stream_state's input transfer function (ITF) in preparation for hardware commit. The transfer function used depends on the preparation done on the stream for color management. **Return** 0 on success. -ENOMEM if mem allocation fails.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubj)}(hhh](j )}(h4``struct dm_crtc_state *crtc`` amdgpu_dm crtc state h](j)}(h``struct dm_crtc_state *crtc``h]j)}(hjȇh]hstruct dm_crtc_state *crtc}(hjʇhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjƇubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM hj‡ubj-)}(hhh]h)}(hamdgpu_dm crtc stateh]hamdgpu_dm crtc state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj݇hM hjއubah}(h]h ]h"]h$]h&]uh1j,hj‡ubeh}(h]h ]h"]h$]h&]uh1j hj݇hM hjubj )}(h8``struct drm_plane_state *plane_state`` DRM plane state h](j)}(h'``struct drm_plane_state *plane_state``h]j)}(hjh]h#struct drm_plane_state *plane_state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM hjubj-)}(hhh]h)}(hDRM plane stateh]hDRM plane state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM hjubj )}(h<``struct dc_plane_state *dc_plane_state`` target DC surface h](j)}(h)``struct dc_plane_state *dc_plane_state``h]j)}(hj:h]h%struct dc_plane_state *dc_plane_state}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chM hj4ubj-)}(hhh]h)}(htarget DC surfaceh]htarget DC surface}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhM hjPubah}(h]h ]h"]h$]h&]uh1j,hj4ubeh}(h]h ]h"]h$]h&]uh1j hjOhM hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjuh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(hUpdate the underlying dc_stream_state's input transfer function (ITF) in preparation for hardware commit. The transfer function used depends on the preparation done on the stream for color management.h]hUpdate the underlying dc_stream_state’s input transfer function (ITF) in preparation for hardware commit. The transfer function used depends on the preparation done on the stream for color management.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubh)}(h.0 on success. -ENOMEM if mem allocation fails.h]h.0 on success. -ENOMEM if mem allocation fails.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:53: ./drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjThhhNhNubh)}(hhh](h)}(h-DC Color Capabilities between DCN generationsh]h-DC Color Capabilities between DCN generations}(hjˈhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjȈhhhhhK:ubh)}(hX)DRM/KMS framework defines three CRTC color correction properties: degamma, color transformation matrix (CTM) and gamma, and two properties for degamma and gamma LUT sizes. AMD DC programs some of the color correction features pre-blending but DRM/KMS has not per-plane color correction properties.h]hX)DRM/KMS framework defines three CRTC color correction properties: degamma, color transformation matrix (CTM) and gamma, and two properties for degamma and gamma LUT sizes. AMD DC programs some of the color correction features pre-blending but DRM/KMS has not per-plane color correction properties.}(hjوhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)}(hjAh]hstruct}(hj3hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj/hhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKQubjP)}(h h]h }(hjAhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj/hhhj@hKQubja)}(hrom_curve_capsh]jg)}(hj-h]hrom_curve_caps}(hjShhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjOubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj/hhhj@hKQubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj+hhhj@hKQubah}(h]j&ah ](jjeh"]h$]h&]jj)jhuh1j1hj@hKQhj(hhubj)}(hhh]h)}(h9predefined transfer function caps for degamma and regammah]h9predefined transfer function caps for degamma and regamma}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjrhhubah}(h]h ]h"]h$]h&]uh1jhj(hhhj@hKQubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(hX**Definition**:: struct rom_curve_caps { uint16_t srgb : 1; uint16_t bt2020 : 1; uint16_t gamma2_2 : 1; uint16_t pq : 1; uint16_t hlg : 1; }; **Members** ``srgb`` RGB color space transfer func ``bt2020`` BT.2020 transfer func ``gamma2_2`` standard gamma ``pq`` perceptual quantizer transfer function ``hlg`` hybrid log–gamma transfer functionh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj)}(hstruct rom_curve_caps { uint16_t srgb : 1; uint16_t bt2020 : 1; uint16_t gamma2_2 : 1; uint16_t pq : 1; uint16_t hlg : 1; };h]hstruct rom_curve_caps { uint16_t srgb : 1; uint16_t bt2020 : 1; uint16_t gamma2_2 : 1; uint16_t pq : 1; uint16_t hlg : 1; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubh)}(h **Members**h]j)}(hjÊh]hMembers}(hjŊhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj)}(hhh](j )}(h'``srgb`` RGB color space transfer func h](j)}(h``srgb``h]j)}(hjh]hsrgb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj܊ubj-)}(hhh]h)}(hRGB color space transfer funch]hRGB color space transfer func}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hj܊ubeh}(h]h ]h"]h$]h&]uh1j hjhKhjيubj )}(h!``bt2020`` BT.2020 transfer func h](j)}(h ``bt2020``h]j)}(hjh]hbt2020}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj-)}(hhh]h)}(hBT.2020 transfer funch]hBT.2020 transfer func}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKhj1ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj0hKhjيubj )}(h``gamma2_2`` standard gamma h](j)}(h ``gamma2_2``h]j)}(hjTh]hgamma2_2}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjNubj-)}(hhh]h)}(hstandard gammah]hstandard gamma}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihKhjjubah}(h]h ]h"]h$]h&]uh1j,hjNubeh}(h]h ]h"]h$]h&]uh1j hjihKhjيubj )}(h.``pq`` perceptual quantizer transfer function h](j)}(h``pq``h]j)}(hjh]hpq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj-)}(hhh]h)}(h&perceptual quantizer transfer functionh]h&perceptual quantizer transfer function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjيubj )}(h,``hlg`` hybrid log–gamma transfer functionh](j)}(h``hlg``h]j)}(hjƋh]hhlg}(hjȋhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjċubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj-)}(hhh]h)}(h$hybrid log–gamma transfer functionh]h$hybrid log–gamma transfer function}(hjߋhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj܋ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjۋhKhjيubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dpp_color_caps (C struct)c.dpp_color_capshNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hdpp_color_capsh]j8)}(hstruct dpp_color_capsh](j>)}(hjAh]hstruct}(hj hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKubjP)}(h h]h }(hj.hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhj-hKubja)}(hdpp_color_capsh]jg)}(hjh]hdpp_color_caps}(hj@hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj<ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhj-hKubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhj-hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hj-hKhjhhubj)}(hhh]h)}(h=color pipeline capabilities for display pipe and plane blocksh]h=color pipeline capabilities for display pipe and plane blocks}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj_hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj-hKubeh}(h]h ](jstructeh"]h$]h&]jjjjzjjzjjjuh1j,hhhjȈhNhNubj)}(hX**Definition**:: struct dpp_color_caps { uint16_t dcn_arch : 1; uint16_t input_lut_shared : 1; uint16_t icsc : 1; uint16_t dgam_ram : 1; uint16_t post_csc : 1; uint16_t gamma_corr : 1; uint16_t hw_3d_lut : 1; uint16_t ogam_ram : 1; uint16_t ocsc : 1; uint16_t dgam_rom_for_yuv : 1; uint16_t upsp_pre_scaler : 1; struct rom_curve_caps dgam_rom_caps; struct rom_curve_caps ogam_rom_caps; }; **Members** ``dcn_arch`` all DCE generations treated the same ``input_lut_shared`` shared with DGAM. Input LUT is different than most LUTs, just plain 256-entry lookup ``icsc`` input color space conversion ``dgam_ram`` programmable degamma LUT ``post_csc`` post color space conversion, before gamut remap ``gamma_corr`` degamma correction ``hw_3d_lut`` 3D LUT support. It implies a shaper LUT before. It may be shared with MPC by setting mpc:shared_3d_lut flag ``ogam_ram`` programmable out/blend gamma LUT ``ocsc`` output color space conversion ``dgam_rom_for_yuv`` pre-defined degamma LUT for YUV planes ``upsp_pre_scaler`` Ability to upsample 420/422 before scaling ``dgam_rom_caps`` pre-definied curve caps for degamma 1D LUT ``ogam_rom_caps`` pre-definied curve caps for regamma 1D LUTh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj~ubj)}(hXstruct dpp_color_caps { uint16_t dcn_arch : 1; uint16_t input_lut_shared : 1; uint16_t icsc : 1; uint16_t dgam_ram : 1; uint16_t post_csc : 1; uint16_t gamma_corr : 1; uint16_t hw_3d_lut : 1; uint16_t ogam_ram : 1; uint16_t ocsc : 1; uint16_t dgam_rom_for_yuv : 1; uint16_t upsp_pre_scaler : 1; struct rom_curve_caps dgam_rom_caps; struct rom_curve_caps ogam_rom_caps; };h]hXstruct dpp_color_caps { uint16_t dcn_arch : 1; uint16_t input_lut_shared : 1; uint16_t icsc : 1; uint16_t dgam_ram : 1; uint16_t post_csc : 1; uint16_t gamma_corr : 1; uint16_t hw_3d_lut : 1; uint16_t ogam_ram : 1; uint16_t ocsc : 1; uint16_t dgam_rom_for_yuv : 1; uint16_t upsp_pre_scaler : 1; struct rom_curve_caps dgam_rom_caps; struct rom_curve_caps ogam_rom_caps; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj~ubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj~ubj)}(hhh](j )}(h2``dcn_arch`` all DCE generations treated the same h](j)}(h ``dcn_arch``h]j)}(hjόh]hdcn_arch}(hjьhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj͌ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjɌubj-)}(hhh]h)}(h$all DCE generations treated the sameh]h$all DCE generations treated the same}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjɌubeh}(h]h ]h"]h$]h&]uh1j hjhKhjƌubj )}(hj``input_lut_shared`` shared with DGAM. Input LUT is different than most LUTs, just plain 256-entry lookup h](j)}(h``input_lut_shared``h]j)}(hjh]hinput_lut_shared}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj-)}(hhh]h)}(hTshared with DGAM. Input LUT is different than most LUTs, just plain 256-entry lookuph]hTshared with DGAM. Input LUT is different than most LUTs, just plain 256-entry lookup}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjƌubj )}(h&``icsc`` input color space conversion h](j)}(h``icsc``h]j)}(hjBh]hicsc}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj<ubj-)}(hhh]h)}(hinput color space conversionh]hinput color space conversion}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhKhjXubah}(h]h ]h"]h$]h&]uh1j,hj<ubeh}(h]h ]h"]h$]h&]uh1j hjWhKhjƌubj )}(h&``dgam_ram`` programmable degamma LUT h](j)}(h ``dgam_ram``h]j)}(hj{h]hdgam_ram}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjuubj-)}(hhh]h)}(hprogrammable degamma LUTh]hprogrammable degamma LUT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjuubeh}(h]h ]h"]h$]h&]uh1j hjhKhjƌubj )}(h=``post_csc`` post color space conversion, before gamut remap h](j)}(h ``post_csc``h]j)}(hjh]hpost_csc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj-)}(hhh]h)}(h/post color space conversion, before gamut remaph]h/post color space conversion, before gamut remap}(hj͍hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjɍhKhjʍubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjɍhKhjƌubj )}(h"``gamma_corr`` degamma correction h](j)}(h``gamma_corr``h]j)}(hjh]h gamma_corr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj-)}(hhh]h)}(hdegamma correctionh]hdegamma correction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjƌubj )}(hz``hw_3d_lut`` 3D LUT support. It implies a shaper LUT before. It may be shared with MPC by setting mpc:shared_3d_lut flag h](j)}(h ``hw_3d_lut``h]j)}(hj&h]h hw_3d_lut}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj ubj-)}(hhh]h)}(hk3D LUT support. It implies a shaper LUT before. It may be shared with MPC by setting mpc:shared_3d_lut flagh]hk3D LUT support. It implies a shaper LUT before. It may be shared with MPC by setting mpc:shared_3d_lut flag}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj<ubah}(h]h ]h"]h$]h&]uh1j,hj ubeh}(h]h ]h"]h$]h&]uh1j hj;hKhjƌubj )}(h.``ogam_ram`` programmable out/blend gamma LUT h](j)}(h ``ogam_ram``h]j)}(hj`h]hogam_ram}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjZubj-)}(hhh]h)}(h programmable out/blend gamma LUTh]h programmable out/blend gamma LUT}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhKhjvubah}(h]h ]h"]h$]h&]uh1j,hjZubeh}(h]h ]h"]h$]h&]uh1j hjuhKhjƌubj )}(h'``ocsc`` output color space conversion h](j)}(h``ocsc``h]j)}(hjh]hocsc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj-)}(hhh]h)}(houtput color space conversionh]houtput color space conversion}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjƌubj )}(h<``dgam_rom_for_yuv`` pre-defined degamma LUT for YUV planes h](j)}(h``dgam_rom_for_yuv``h]j)}(hjҎh]hdgam_rom_for_yuv}(hjԎhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjЎubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj̎ubj-)}(hhh]h)}(h&pre-defined degamma LUT for YUV planesh]h&pre-defined degamma LUT for YUV planes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j,hj̎ubeh}(h]h ]h"]h$]h&]uh1j hjhKhjƌubj )}(h?``upsp_pre_scaler`` Ability to upsample 420/422 before scaling h](j)}(h``upsp_pre_scaler``h]j)}(hj h]hupsp_pre_scaler}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubj-)}(hhh]h)}(h*Ability to upsample 420/422 before scalingh]h*Ability to upsample 420/422 before scaling}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj!ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj hKhjƌubj )}(h=``dgam_rom_caps`` pre-definied curve caps for degamma 1D LUT h](j)}(h``dgam_rom_caps``h]j)}(hjDh]h dgam_rom_caps}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhj>ubj-)}(hhh]h)}(h*pre-definied curve caps for degamma 1D LUTh]h*pre-definied curve caps for degamma 1D LUT}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhKhjZubah}(h]h ]h"]h$]h&]uh1j,hj>ubeh}(h]h ]h"]h$]h&]uh1j hjYhKhjƌubj )}(h<``ogam_rom_caps`` pre-definied curve caps for regamma 1D LUTh](j)}(h``ogam_rom_caps``h]j)}(hj}h]h ogam_rom_caps}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjwubj-)}(hhh]h)}(h*pre-definied curve caps for regamma 1D LUTh]h*pre-definied curve caps for regamma 1D LUT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjubah}(h]h ]h"]h$]h&]uh1j,hjwubeh}(h]h ]h"]h$]h&]uh1j hjhKhjƌubeh}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjȈhhubh)}(hJhdr_mult and gamut remap (CTM) are always available in DPP (in that order)h]hJhdr_mult and gamut remap (CTM) are always available in DPP (in that order)}(hj֏hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhKhjȈhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'mpc_color_caps (C struct)c.mpc_color_capshNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hmpc_color_capsh]j8)}(hstruct mpc_color_capsh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hj hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhj hMubja)}(hmpc_color_capsh]jg)}(hjh]hmpc_color_caps}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhj hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhj hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hj hMhjhhubj)}(hhh]h)}(hGcolor pipeline capabilities for multiple pipe and plane combined blocksh]hGcolor pipeline capabilities for multiple pipe and plane combined blocks}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM-hj=hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hMubeh}(h]h ](jstructeh"]h$]h&]jjjjXjjXjjjuh1j,hhhjȈhNhNubj)}(hX***Definition**:: struct mpc_color_caps { uint16_t gamut_remap : 1; uint16_t ogam_ram : 1; uint16_t ocsc : 1; uint16_t num_3dluts : 3; uint16_t num_rmcm_3dluts : 3; uint16_t shared_3d_lut:1; struct rom_curve_caps ogam_rom_caps; struct lut3d_caps mcm_3d_lut_caps; struct lut3d_caps rmcm_3d_lut_caps; bool preblend; struct fixed31_32 max_gamut_remap_coeff; }; **Members** ``gamut_remap`` color transformation matrix ``ogam_ram`` programmable out gamma LUT ``ocsc`` output color space conversion matrix ``num_3dluts`` MPC 3D LUT; always assumes a preceding shaper LUT ``num_rmcm_3dluts`` number of RMCM 3D LUTS; always assumes a preceding shaper LUT ``shared_3d_lut`` shared 3D LUT flag. Can be either DPP or MPC, but single instance ``ogam_rom_caps`` pre-definied curve caps for regamma 1D LUT ``mcm_3d_lut_caps`` HW support cap for MCM LUT memory ``rmcm_3d_lut_caps`` HW support cap for RMCM LUT memory ``preblend`` whether color manager supports preblend with MPCh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubh:}(hj`hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM1hj\ubj)}(hXstruct mpc_color_caps { uint16_t gamut_remap : 1; uint16_t ogam_ram : 1; uint16_t ocsc : 1; uint16_t num_3dluts : 3; uint16_t num_rmcm_3dluts : 3; uint16_t shared_3d_lut:1; struct rom_curve_caps ogam_rom_caps; struct lut3d_caps mcm_3d_lut_caps; struct lut3d_caps rmcm_3d_lut_caps; bool preblend; struct fixed31_32 max_gamut_remap_coeff; };h]hXstruct mpc_color_caps { uint16_t gamut_remap : 1; uint16_t ogam_ram : 1; uint16_t ocsc : 1; uint16_t num_3dluts : 3; uint16_t num_rmcm_3dluts : 3; uint16_t shared_3d_lut:1; struct rom_curve_caps ogam_rom_caps; struct lut3d_caps mcm_3d_lut_caps; struct lut3d_caps rmcm_3d_lut_caps; bool preblend; struct fixed31_32 max_gamut_remap_coeff; };}hj}sbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM3hj\ubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMAhj\ubj)}(hhh](j )}(h,``gamut_remap`` color transformation matrix h](j)}(h``gamut_remap``h]j)}(hjh]h gamut_remap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM1hjubj-)}(hhh]h)}(hcolor transformation matrixh]hcolor transformation matrix}(hjƐhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM1hjÐubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM1hjubj )}(h(``ogam_ram`` programmable out gamma LUT h](j)}(h ``ogam_ram``h]j)}(hjh]hogam_ram}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM2hjubj-)}(hhh]h)}(hprogrammable out gamma LUTh]hprogrammable out gamma LUT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM2hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM2hjubj )}(h.``ocsc`` output color space conversion matrix h](j)}(h``ocsc``h]j)}(hjh]hocsc}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM3hjubj-)}(hhh]h)}(h$output color space conversion matrixh]h$output color space conversion matrix}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hM3hj5ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj4hM3hjubj )}(hA``num_3dluts`` MPC 3D LUT; always assumes a preceding shaper LUT h](j)}(h``num_3dluts``h]j)}(hjXh]h num_3dluts}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM4hjRubj-)}(hhh]h)}(h1MPC 3D LUT; always assumes a preceding shaper LUTh]h1MPC 3D LUT; always assumes a preceding shaper LUT}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhM4hjnubah}(h]h ]h"]h$]h&]uh1j,hjRubeh}(h]h ]h"]h$]h&]uh1j hjmhM4hjubj )}(hR``num_rmcm_3dluts`` number of RMCM 3D LUTS; always assumes a preceding shaper LUT h](j)}(h``num_rmcm_3dluts``h]j)}(hjh]hnum_rmcm_3dluts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM5hjubj-)}(hhh]h)}(h=number of RMCM 3D LUTS; always assumes a preceding shaper LUTh]h=number of RMCM 3D LUTS; always assumes a preceding shaper LUT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM5hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM5hjubj )}(hT``shared_3d_lut`` shared 3D LUT flag. Can be either DPP or MPC, but single instance h](j)}(h``shared_3d_lut``h]j)}(hjʑh]h shared_3d_lut}(hj̑hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjȑubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM7hjđubj-)}(hhh]h)}(hAshared 3D LUT flag. Can be either DPP or MPC, but single instanceh]hAshared 3D LUT flag. Can be either DPP or MPC, but single instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM6hjubah}(h]h ]h"]h$]h&]uh1j,hjđubeh}(h]h ]h"]h$]h&]uh1j hjߑhM7hjubj )}(h=``ogam_rom_caps`` pre-definied curve caps for regamma 1D LUT h](j)}(h``ogam_rom_caps``h]j)}(hjh]h ogam_rom_caps}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM8hjubj-)}(hhh]h)}(h*pre-definied curve caps for regamma 1D LUTh]h*pre-definied curve caps for regamma 1D LUT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM8hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM8hjubj )}(h6``mcm_3d_lut_caps`` HW support cap for MCM LUT memory h](j)}(h``mcm_3d_lut_caps``h]j)}(hj=h]hmcm_3d_lut_caps}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM9hj7ubj-)}(hhh]h)}(h!HW support cap for MCM LUT memoryh]h!HW support cap for MCM LUT memory}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhM9hjSubah}(h]h ]h"]h$]h&]uh1j,hj7ubeh}(h]h ]h"]h$]h&]uh1j hjRhM9hjubj )}(h8``rmcm_3d_lut_caps`` HW support cap for RMCM LUT memory h](j)}(h``rmcm_3d_lut_caps``h]j)}(hjvh]hrmcm_3d_lut_caps}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM:hjpubj-)}(hhh]h)}(h"HW support cap for RMCM LUT memoryh]h"HW support cap for RMCM LUT memory}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM:hjubah}(h]h ]h"]h$]h&]uh1j,hjpubeh}(h]h ]h"]h$]h&]uh1j hjhM:hjubj )}(h=``preblend`` whether color manager supports preblend with MPCh](j)}(h ``preblend``h]j)}(hjh]hpreblend}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM:hjubj-)}(hhh]h)}(h0whether color manager supports preblend with MPCh]h0whether color manager supports preblend with MPCO}(hjȒhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM;hjŒubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjĒhM:hjubeh}(h]h ]h"]h$]h&]uh1jhj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dc_color_caps (C struct)c.dc_color_capshNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(h dc_color_capsh]j8)}(hstruct dc_color_capsh](j>)}(hjAh]hstruct}(hj hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMAubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMAubja)}(h dc_color_capsh]jg)}(hjh]h dc_color_caps}(hj)hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj%ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMAubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMAubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhMAhjhhubj)}(hhh]h)}(h2color pipes capabilities for DPP and MPC hw blocksh]h2color pipes capabilities for DPP and MPC hw blocks}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMKhjHhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMAubeh}(h]h ](jstructeh"]h$]h&]jjjjcjjcjjjuh1j,hhhjȈhNhNubj)}(h**Definition**:: struct dc_color_caps { struct dpp_color_caps dpp; struct mpc_color_caps mpc; }; **Members** ``dpp`` color pipes caps for DPP ``mpc`` color pipes caps for MPCh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubh:}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMOhjgubj)}(hWstruct dc_color_caps { struct dpp_color_caps dpp; struct mpc_color_caps mpc; };h]hWstruct dc_color_caps { struct dpp_color_caps dpp; struct mpc_color_caps mpc; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMQhjgubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMVhjgubj)}(hhh](j )}(h!``dpp`` color pipes caps for DPP h](j)}(h``dpp``h]j)}(hjh]hdpp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMMhjubj-)}(hhh]h)}(hcolor pipes caps for DPPh]hcolor pipes caps for DPP}(hjѓhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj͓hMMhjΓubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj͓hMMhjubj )}(h ``mpc`` color pipes caps for MPCh](j)}(h``mpc``h]j)}(hjh]hmpc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMMhjubj-)}(hhh]h)}(hcolor pipes caps for MPCh]hcolor pipes caps for MPC}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMNhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMMhjubeh}(h]h ]h"]h$]h&]uh1jhjgubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'pipe_split_policy (C enum)c.pipe_split_policyhNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hpipe_split_policyh]j8)}(henum pipe_split_policyh](j>)}(hj$8h]henum}(hjKhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjGhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMTubjP)}(h h]h }(hjYhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjGhhhjXhMTubja)}(hpipe_split_policyh]jg)}(hjEh]hpipe_split_policy}(hjkhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjgubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjGhhhjXhMTubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjChhhjXhMTubah}(h]j>ah ](jjeh"]h$]h&]jj)jhuh1j1hjXhMThj@hhubj)}(hhh]h)}(h$Pipe split strategy supported by DCNh]h$Pipe split strategy supported by DCN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jhj@hhhjXhMTubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(hX**Constants** ``MPC_SPLIT_DYNAMIC`` DC will automatically decide how to split the pipe in order to bring the best trade-off between performance and power consumption. This is the recommended option. ``MPC_SPLIT_AVOID`` Avoid pipe split, which means that DC will not try any sort of split optimization. ``MPC_SPLIT_AVOID_MULT_DISP`` With this option, DC will only try to optimize the pipe utilization when using a single display; if the user connects to a second display, DC will avoid pipe split.h](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj)}(hhh](j )}(h``MPC_SPLIT_DYNAMIC`` DC will automatically decide how to split the pipe in order to bring the best trade-off between performance and power consumption. This is the recommended option. h](j)}(h``MPC_SPLIT_DYNAMIC``h]j)}(hjΔh]hMPC_SPLIT_DYNAMIC}(hjДhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj̔ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjȔubj-)}(hhh]h)}(hDC will automatically decide how to split the pipe in order to bring the best trade-off between performance and power consumption. This is the recommended option.h]hDC will automatically decide how to split the pipe in order to bring the best trade-off between performance and power consumption. This is the recommended option.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubah}(h]h ]h"]h$]h&]uh1j,hjȔubeh}(h]h ]h"]h$]h&]uh1j hjhMhjŔubj )}(hg``MPC_SPLIT_AVOID`` Avoid pipe split, which means that DC will not try any sort of split optimization. h](j)}(h``MPC_SPLIT_AVOID``h]j)}(hjh]hMPC_SPLIT_AVOID}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(hRAvoid pipe split, which means that DC will not try any sort of split optimization.h]hRAvoid pipe split, which means that DC will not try any sort of split optimization.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjŔubj )}(h``MPC_SPLIT_AVOID_MULT_DISP`` With this option, DC will only try to optimize the pipe utilization when using a single display; if the user connects to a second display, DC will avoid pipe split.h](j)}(h``MPC_SPLIT_AVOID_MULT_DISP``h]j)}(hjBh]hMPC_SPLIT_AVOID_MULT_DISP}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj<ubj-)}(hhh]h)}(hWith this option, DC will only try to optimize the pipe utilization when using a single display; if the user connects to a second display, DC will avoid pipe split.h]hWith this option, DC will only try to optimize the pipe utilization when using a single display; if the user connects to a second display, DC will avoid pipe split.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjXubah}(h]h ]h"]h$]h&]uh1j,hj<ubeh}(h]h ]h"]h$]h&]uh1j hjWhMhjŔubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjȈhhubh)}(hlThis enum is used to define the pipe split policy supported by DCN. By default, DC favors MPC_SPLIT_DYNAMIC.h]hlThis enum is used to define the pipe split policy supported by DCN. By default, DC favors MPC_SPLIT_DYNAMIC.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjȈhhubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'"dc_check_state_update (C function)c.dc_check_state_updatehNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hstruct dc_update_descriptor dc_check_state_update (const struct dc_check_config *check_config, const struct dc_state_update *updates)h]j8)}(hstruct dc_update_descriptor dc_check_state_update(const struct dc_check_config *check_config, const struct dc_state_update *updates)h](j>)}(hjAh]hstruct}(hjÕhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMeubjP)}(h h]h }(hjѕhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjЕhMeubh)}(hhh]jg)}(hdc_update_descriptorh]hdc_update_descriptor}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjߕubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]jR+)}jJ+dc_check_state_updatesbc.dc_check_state_updateasbuh1hhjhhhjЕhMeubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjЕhMeubja)}(hdc_check_state_updateh]jg)}(hjh]hdc_check_state_update}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjЕhMeubj +)}(hS(const struct dc_check_config *check_config, const struct dc_state_update *updates)h](j+)}(h*const struct dc_check_config *check_configh](j>)}(hj\h]hconst}(hj0hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj,ubjP)}(h h]h }(hj=hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj,ubj>)}(hjAh]hstruct}(hjKhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj,ubjP)}(h h]h }(hjXhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj,ubh)}(hhh]jg)}(hdc_check_configh]hdc_check_config}(hjihhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjfubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjkmodnameN classnameNj'j*)}j-]jc.dc_check_state_updateasbuh1hhj,ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj,ubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj,ubjg)}(h check_configh]h check_config}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj,ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj(ubj+)}(h%const struct dc_state_update *updatesh](j>)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjȖhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubj>)}(hjAh]hstruct}(hj֖hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(hdc_state_updateh]hdc_state_update}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]jc.dc_check_state_updateasbuh1hhjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hj hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(hupdatesh]hupdates}(hj-hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj(ubeh}(h]h ]h"]h$]h&]j~juh1j +hjhhhjЕhMeubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjЕhMeubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjЕhMehjhhubj)}(hhh]h)}(h)Classify an update without committing it.h]h)Classify an update without committing it.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMehjThhubah}(h]h ]h"]h$]h&]uh1jhjhhhjЕhMeubeh}(h]h ](jfunctioneh"]h$]h&]jjjjojjojjjuh1j,hhhjȈhNhNubj)}(h**Parameters** ``const struct dc_check_config *check_config`` DC check configuration ``const struct dc_state_update *updates`` root update object to classify **Return** descriptor indicating update type and required lock scope.h](h)}(h**Parameters**h]j)}(hjyh]h Parameters}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMihjsubj)}(hhh](j )}(hF``const struct dc_check_config *check_config`` DC check configuration h](j)}(h.``const struct dc_check_config *check_config``h]j)}(hjh]h*const struct dc_check_config *check_config}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMfhjubj-)}(hhh]h)}(hDC check configurationh]hDC check configuration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMfhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMfhjubj )}(hI``const struct dc_state_update *updates`` root update object to classify h](j)}(h)``const struct dc_state_update *updates``h]j)}(hjїh]h%const struct dc_state_update *updates}(hjӗhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjϗubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMghj˗ubj-)}(hhh]h)}(hroot update object to classifyh]hroot update object to classify}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMghjubah}(h]h ]h"]h$]h&]uh1j,hj˗ubeh}(h]h ]h"]h$]h&]uh1j hjhMghjubeh}(h]h ]h"]h$]h&]uh1jhjsubh)}(h **Return**h]j)}(hj h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMihjsubh)}(h:descriptor indicating update type and required lock scope.h]h:descriptor indicating update type and required lock scope.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMihjsubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dc_update_state (C function)c.dc_update_statehNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hKbool dc_update_state (struct dc *dc, const struct dc_state_update *updates)h]j8)}(hJbool dc_update_state(struct dc *dc, const struct dc_state_update *updates)h](j*)}(hjah]hbool}(hjQhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjMhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMpubjP)}(h h]h }(hj_hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjMhhhj^hMpubja)}(hdc_update_stateh]jg)}(hdc_update_stateh]hdc_update_state}(hjqhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjmubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjMhhhj^hMpubj +)}(h6(struct dc *dc, const struct dc_state_update *updates)h](j+)}(h struct dc *dch](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(hdch]hdc}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]jR+)}jJ+jssbc.dc_update_stateasbuh1hhjubjP)}(h h]h }(hj˘hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hj٘hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(hdch]hdc}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubj+)}(h%const struct dc_state_update *updatesh](j>)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hj hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubj>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hj'hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(hdc_state_updateh]hdc_state_update}(hj8hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj5ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj:modnameN classnameNj'j*)}j-]jǘc.dc_update_stateasbuh1hhjubjP)}(h h]h }(hjVhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hjdhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(hupdatesh]hupdates}(hjqhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubeh}(h]h ]h"]h$]h&]j~juh1j +hjMhhhj^hMpubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjIhhhj^hMpubah}(h]jDah ](jjeh"]h$]h&]jj)jhuh1j1hj^hMphjFhhubj)}(hhh]h)}(h#Commit an absolute dc_state_update.h]h#Commit an absolute dc_state_update.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMphjhhubah}(h]h ]h"]h$]h&]uh1jhjFhhhj^hMpubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(h**Parameters** ``struct dc *dc`` DC structure ``const struct dc_state_update *updates`` root update object carrying stream, plane, and probe updates **Return** true on success, false on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMthjubj)}(hhh](j )}(h``struct dc *dc`` DC structure h](j)}(h``struct dc *dc``h]j)}(hjܙh]h struct dc *dc}(hjޙhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjڙubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMqhj֙ubj-)}(hhh]h)}(h DC structureh]h DC structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMqhjubah}(h]h ]h"]h$]h&]uh1j,hj֙ubeh}(h]h ]h"]h$]h&]uh1j hjhMqhjәubj )}(hg``const struct dc_state_update *updates`` root update object carrying stream, plane, and probe updates h](j)}(h)``const struct dc_state_update *updates``h]j)}(hjh]h%const struct dc_state_update *updates}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMrhjubj-)}(hhh]h)}(h)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM{ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhM{ubh)}(hhh]jg)}(hdc_update_scratch_spaceh]hdc_update_scratch_space}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]jR+)}jJ+dc_update_state_initsbc.dc_update_state_initasbuh1hhjhhhjhM{ubjP)}(h h]h }(hj՚hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhM{ubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjhhhjhM{ubja)}(hdc_update_state_inith]jg)}(hjҚh]hdc_update_state_init}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhM{ubj +)}(h6(struct dc *dc, const struct dc_state_update *updates)h](j+)}(h struct dc *dch](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj ubh)}(hhh]jg)}(hdch]hdc}(hj-hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj*ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj/modnameN classnameNj'j*)}j-]jКc.dc_update_state_initasbuh1hhj ubjP)}(h h]h }(hjKhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj ubjf+)}(hji+h]h*}(hjYhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj ubjg)}(hdch]hdc}(hjfhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubj+)}(h%const struct dc_state_update *updatesh](j>)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj{ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj{ubj>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj{ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj{ubh)}(hhh]jg)}(hdc_state_updateh]hdc_state_update}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]jКc.dc_update_state_initasbuh1hhj{ubjP)}(h h]h }(hj֛hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj{ubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj{ubjg)}(hupdatesh]hupdates}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj{ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubeh}(h]h ]h"]h$]h&]j~juh1j +hjhhhjhM{ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhM{ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhM{hjhhubj)}(hhh]h)}(h/Acquire and initialise a commit scratch buffer.h]h/Acquire and initialise a commit scratch buffer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM{hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM{ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj3jj3jjjuh1j,hhhjȈhNhNubj)}(hXo**Parameters** ``struct dc *dc`` DC structure ``const struct dc_state_update *updates`` update descriptor; validated before the slot is acquired **Return** a scratch slot on success, NULL if validation fails or the pool is exhausted. The slot must be released via dc_update_state_cleanup() on success, or automatically by dc_update_state_prepare() on failure.h](h)}(h**Parameters**h]j)}(hj=h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj7ubj)}(hhh](j )}(h``struct dc *dc`` DC structure h](j)}(h``struct dc *dc``h]j)}(hj\h]h struct dc *dc}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM|hjVubj-)}(hhh]h)}(h DC structureh]h DC structure}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhM|hjrubah}(h]h ]h"]h$]h&]uh1j,hjVubeh}(h]h ]h"]h$]h&]uh1j hjqhM|hjSubj )}(hc``const struct dc_state_update *updates`` update descriptor; validated before the slot is acquired h](j)}(h)``const struct dc_state_update *updates``h]j)}(hjh]h%const struct dc_state_update *updates}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM}hjubj-)}(hhh]h)}(h8update descriptor; validated before the slot is acquiredh]h8update descriptor; validated before the slot is acquired}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM}hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM}hjSubeh}(h]h ]h"]h$]h&]uh1jhj7ubh)}(h **Return**h]j)}(hjМh]hReturn}(hjҜhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjΜubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj7ubh)}(ha scratch slot on success, NULL if validation fails or the pool is exhausted. The slot must be released via dc_update_state_cleanup() on success, or automatically by dc_update_state_prepare() on failure.h]ha scratch slot on success, NULL if validation fails or the pool is exhausted. The slot must be released via dc_update_state_cleanup() on success, or automatically by dc_update_state_prepare() on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'$dc_update_state_prepare (C function)c.dc_update_state_preparehNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hFbool dc_update_state_prepare (struct dc_update_scratch_space *scratch)h]j8)}(hEbool dc_update_state_prepare(struct dc_update_scratch_space *scratch)h](j*)}(hjah]hbool}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hj#hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhj"hMubja)}(hdc_update_state_prepareh]jg)}(hdc_update_state_prepareh]hdc_update_state_prepare}(hj5hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj1ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhj"hMubj +)}(h)(struct dc_update_scratch_space *scratch)h]j+)}(h'struct dc_update_scratch_space *scratchh](j>)}(hjAh]hstruct}(hjQhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjMubjP)}(h h]h }(hj^hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjMubh)}(hhh]jg)}(hdc_update_scratch_spaceh]hdc_update_scratch_space}(hjohhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjlubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjqmodnameN classnameNj'j*)}j-]jR+)}jJ+j7sbc.dc_update_state_prepareasbuh1hhjMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjMubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjMubjg)}(hscratchh]hscratch}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjMubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjIubah}(h]h ]h"]h$]h&]j~juh1j +hjhhhj"hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj hhhj"hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hj"hMhj hhubj)}(hhh]h)}(h)Prepare the commit under the global lock.h]h)Prepare the commit under the global lock.}(hjԝhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjѝhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj"hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(h**Parameters** ``struct dc_update_scratch_space *scratch`` commit scratch from dc_update_state_init() **Description** On failure the scratch slot is released and false is returned; the caller must not call execute or cleanup.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj)}(hhh]j )}(hW``struct dc_update_scratch_space *scratch`` commit scratch from dc_update_state_init() h](j)}(h+``struct dc_update_scratch_space *scratch``h]j)}(hjh]h'struct dc_update_scratch_space *scratch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h*commit scratch from dc_update_state_init()h]h*commit scratch from dc_update_state_init()}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj+ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj*hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjPh]h Description}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubh)}(hkOn failure the scratch slot is released and false is returned; the caller must not call execute or cleanup.h]hkOn failure the scratch slot is released and false is returned; the caller must not call execute or cleanup.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'$dc_update_state_execute (C function)c.dc_update_state_executehNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hLvoid dc_update_state_execute (const struct dc_update_scratch_space *scratch)h]j8)}(hKvoid dc_update_state_execute(const struct dc_update_scratch_space *scratch)h](j*)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubja)}(hdc_update_state_executeh]jg)}(hdc_update_state_executeh]hdc_update_state_execute}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMubj +)}(h/(const struct dc_update_scratch_space *scratch)h]j+)}(h-const struct dc_update_scratch_space *scratchh](j>)}(hj\h]hconst}(hjҞhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjΞubjP)}(h h]h }(hjߞhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjΞubj>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjΞubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjΞubh)}(hhh]jg)}(hdc_update_scratch_spaceh]hdc_update_scratch_space}(hj hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj modnameN classnameNj'j*)}j-]jR+)}jJ+jsbc.dc_update_state_executeasbuh1hhjΞubjP)}(h h]h }(hj+hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjΞubjf+)}(hji+h]h*}(hj9hhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjΞubjg)}(hscratchh]hscratch}(hjFhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjΞubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjʞubah}(h]h ]h"]h$]h&]j~juh1j +hjhhhjhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhMhjhhubj)}(hhh]h)}(h1Program hardware; called without the global lock.h]h1Program hardware; called without the global lock.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjmhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(hn**Parameters** ``const struct dc_update_scratch_space *scratch`` commit scratch from dc_update_state_init()h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj)}(hhh]j )}(h\``const struct dc_update_scratch_space *scratch`` commit scratch from dc_update_state_init()h](j)}(h1``const struct dc_update_scratch_space *scratch``h]j)}(hjh]h-const struct dc_update_scratch_space *scratch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h*commit scratch from dc_update_state_init()h]h*commit scratch from dc_update_state_init()}(hjʟhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjǟubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjƟhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'$dc_update_state_cleanup (C function)c.dc_update_state_cleanuphNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hFbool dc_update_state_cleanup (struct dc_update_scratch_space *scratch)h]j8)}(hEbool dc_update_state_cleanup(struct dc_update_scratch_space *scratch)h](j*)}(hjah]hbool}(hj hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubja)}(hdc_update_state_cleanuph]jg)}(hdc_update_state_cleanuph]hdc_update_state_cleanup}(hj+hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj'ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMubj +)}(h)(struct dc_update_scratch_space *scratch)h]j+)}(h'struct dc_update_scratch_space *scratchh](j>)}(hjAh]hstruct}(hjGhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjCubjP)}(h h]h }(hjThhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjCubh)}(hhh]jg)}(hdc_update_scratch_spaceh]hdc_update_scratch_space}(hjehhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjbubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjgmodnameN classnameNj'j*)}j-]jR+)}jJ+j-sbc.dc_update_state_cleanupasbuh1hhjCubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjCubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjCubjg)}(hscratchh]hscratch}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjCubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hj?ubah}(h]h ]h"]h$]h&]j~juh1j +hjhhhjhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhMhjhhubj)}(hhh]h)}(h1Finalise the commit and release the scratch slot.h]h1Finalise the commit and release the scratch slot.}(hjʠhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjǠhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(h**Parameters** ``struct dc_update_scratch_space *scratch`` commit scratch from dc_update_state_init() **Description** Must be called with the global lock held. Returns true if the caller must loop back to prepare (SEAMLESS continuation).h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj)}(hhh]j )}(hW``struct dc_update_scratch_space *scratch`` commit scratch from dc_update_state_init() h](j)}(h+``struct dc_update_scratch_space *scratch``h]j)}(hj h]h'struct dc_update_scratch_space *scratch}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h*commit scratch from dc_update_state_init()h]h*commit scratch from dc_update_state_init()}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj!ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj hMhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjFh]h Description}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubh)}(hwMust be called with the global lock held. Returns true if the caller must loop back to prepare (SEAMLESS continuation).h]hwMust be called with the global lock held. Returns true if the caller must loop back to prepare (SEAMLESS continuation).}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dc_probe_latencies (C struct)c.dc_probe_latencieshNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hdc_probe_latenciesh]j8)}(hstruct dc_probe_latenciesh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubja)}(hdc_probe_latenciesh]jg)}(hjh]hdc_probe_latencies}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMubah}(h]j~ah ](jjeh"]h$]h&]jj)jhuh1j1hjhMhjhhubj)}(hhh]h)}(h!min/max/avg memory latency in ns.h]h!min/max/avg memory latency in ns.}(hj͡hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjʡhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(hX=**Definition**:: struct dc_probe_latencies { uint32_t max_latency_ns; uint32_t avg_latency_ns; uint32_t min_latency_ns; }; **Members** ``max_latency_ns`` maximum latency in nanoseconds ``avg_latency_ns`` average latency in nanoseconds ``min_latency_ns`` minimum latency in nanosecondsh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj)}(hustruct dc_probe_latencies { uint32_t max_latency_ns; uint32_t avg_latency_ns; uint32_t min_latency_ns; };h]hustruct dc_probe_latencies { uint32_t max_latency_ns; uint32_t avg_latency_ns; uint32_t min_latency_ns; };}hj sbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj)}(hhh](j )}(h2``max_latency_ns`` maximum latency in nanoseconds h](j)}(h``max_latency_ns``h]j)}(hj:h]hmax_latency_ns}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj4ubj-)}(hhh]h)}(hmaximum latency in nanosecondsh]hmaximum latency in nanoseconds}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMhjPubah}(h]h ]h"]h$]h&]uh1j,hj4ubeh}(h]h ]h"]h$]h&]uh1j hjOhMhj1ubj )}(h2``avg_latency_ns`` average latency in nanoseconds h](j)}(h``avg_latency_ns``h]j)}(hjsh]havg_latency_ns}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjmubj-)}(hhh]h)}(haverage latency in nanosecondsh]haverage latency in nanoseconds}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjmubeh}(h]h ]h"]h$]h&]uh1j hjhMhj1ubj )}(h1``min_latency_ns`` minimum latency in nanosecondsh](j)}(h``min_latency_ns``h]j)}(hjh]hmin_latency_ns}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(hminimum latency in nanosecondsh]hminimum latency in nanoseconds}(hjŢhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj¢ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj1ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dc_probe_status (C struct)c.dc_probe_statushNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hdc_probe_statush]j8)}(hstruct dc_probe_statush](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubja)}(hdc_probe_statush]jg)}(hjh]hdc_probe_status}(hj&hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj"ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhMhjhhubj)}(hhh]h)}(hresults for a probe.h]hresults for a probe.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjEhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjj`jj`jjjuh1j,hhhjȈhNhNubj)}(hX **Definition**:: struct dc_probe_status { bool valid; enum dc_probe_type type; union { uint32_t bandwidth_mbps; struct dc_probe_latencies latency; uint32_t urgent_assertion_count; uint32_t prefetch_data_size; } u; }; **Members** ``valid`` true if a measurement was latched. ``type`` type of the probe that produced this result. ``u.bandwidth_mbps`` peak BW in Mbps (DC_PROBE_PEAK_MEM_BW). ``u.latency`` min/max/avg memory latency in ns (DC_PROBE_MEM_LATENCY), stored as struct dc_probe_latencies. ``u.urgent_assertion_count`` number of urgent assertion events (DC_PROBE_URGENT_ASSERTION_COUNT). ``u.prefetch_data_size`` total prefetch data in bytes (DC_PROBE_PREFETCH_DATA_SIZE).h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubh:}(hjhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjdubj)}(hstruct dc_probe_status { bool valid; enum dc_probe_type type; union { uint32_t bandwidth_mbps; struct dc_probe_latencies latency; uint32_t urgent_assertion_count; uint32_t prefetch_data_size; } u; };h]hstruct dc_probe_status { bool valid; enum dc_probe_type type; union { uint32_t bandwidth_mbps; struct dc_probe_latencies latency; uint32_t urgent_assertion_count; uint32_t prefetch_data_size; } u; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjdubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjdubj)}(hhh](j )}(h-``valid`` true if a measurement was latched. h](j)}(h ``valid``h]j)}(hjh]hvalid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h"true if a measurement was latched.h]h"true if a measurement was latched.}(hjΣhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjʣhMhjˣubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjʣhMhjubj )}(h6``type`` type of the probe that produced this result. h](j)}(h``type``h]j)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h,type of the probe that produced this result.h]h,type of the probe that produced this result.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h=``u.bandwidth_mbps`` peak BW in Mbps (DC_PROBE_PEAK_MEM_BW). h](j)}(h``u.bandwidth_mbps``h]j)}(hj'h]hu.bandwidth_mbps}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj!ubj-)}(hhh]h)}(h'peak BW in Mbps (DC_PROBE_PEAK_MEM_BW).h]h'peak BW in Mbps (DC_PROBE_PEAK_MEM_BW).}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hMhj=ubah}(h]h ]h"]h$]h&]uh1j,hj!ubeh}(h]h ]h"]h$]h&]uh1j hj<hMhjubj )}(hl``u.latency`` min/max/avg memory latency in ns (DC_PROBE_MEM_LATENCY), stored as struct dc_probe_latencies. h](j)}(h ``u.latency``h]j)}(hj`h]h u.latency}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjZubj-)}(hhh]h)}(h]min/max/avg memory latency in ns (DC_PROBE_MEM_LATENCY), stored as struct dc_probe_latencies.h]h]min/max/avg memory latency in ns (DC_PROBE_MEM_LATENCY), stored as struct dc_probe_latencies.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjvubah}(h]h ]h"]h$]h&]uh1j,hjZubeh}(h]h ]h"]h$]h&]uh1j hjuhMhjubj )}(hb``u.urgent_assertion_count`` number of urgent assertion events (DC_PROBE_URGENT_ASSERTION_COUNT). h](j)}(h``u.urgent_assertion_count``h]j)}(hjh]hu.urgent_assertion_count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(hDnumber of urgent assertion events (DC_PROBE_URGENT_ASSERTION_COUNT).h]hDnumber of urgent assertion events (DC_PROBE_URGENT_ASSERTION_COUNT).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hT``u.prefetch_data_size`` total prefetch data in bytes (DC_PROBE_PREFETCH_DATA_SIZE).h](j)}(h``u.prefetch_data_size``h]j)}(hjӤh]hu.prefetch_data_size}(hjդhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjѤubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjͤubj-)}(hhh]h)}(h;total prefetch data in bytes (DC_PROBE_PREFETCH_DATA_SIZE).h]h;total prefetch data in bytes (DC_PROBE_PREFETCH_DATA_SIZE).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubah}(h]h ]h"]h$]h&]uh1j,hjͤubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dc_get_status_type (C enum)c.dc_get_status_typehNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hdc_get_status_typeh]j8)}(henum dc_get_status_typeh](j>)}(hj$8h]henum}(hj-hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj)hhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hj;hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj)hhhj:hMubja)}(hdc_get_status_typeh]jg)}(hj'h]hdc_get_status_type}(hjMhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjIubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj)hhhj:hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj%hhhj:hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1j1hj:hMhj"hhubj)}(hhh]h)}(h3Bitmask selecting which status classes to populate.h]h3Bitmask selecting which status classes to populate.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjlhhubah}(h]h ]h"]h$]h&]uh1jhj"hhhj:hMubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(h**Constants** ``DC_GET_STATUS_STREAM`` populate stream_status fields in dc_state_status ``DC_GET_STATUS_PROBE`` populate probe_status fields in dc_state_statush](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj)}(hhh](j )}(hJ``DC_GET_STATUS_STREAM`` populate stream_status fields in dc_state_status h](j)}(h``DC_GET_STATUS_STREAM``h]j)}(hjh]hDC_GET_STATUS_STREAM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h0populate stream_status fields in dc_state_statush]h0populate stream_status fields in dc_state_status}(hjɥhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjťhMhjƥubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjťhMhjubj )}(hG``DC_GET_STATUS_PROBE`` populate probe_status fields in dc_state_statush](j)}(h``DC_GET_STATUS_PROBE``h]j)}(hjh]hDC_GET_STATUS_PROBE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h/populate probe_status fields in dc_state_statush]h/populate probe_status fields in dc_state_status}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j' dc_get_status_options (C struct)c.dc_get_status_optionshNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hdc_get_status_optionsh]j8)}(hstruct dc_get_status_optionsh](j>)}(hjAh]hstruct}(hjChhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj?hhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hjQhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj?hhhjPhMubja)}(hdc_get_status_optionsh]jg)}(hj=h]hdc_get_status_options}(hjchhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj_ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hj?hhhjPhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhj;hhhjPhMubah}(h]j6ah ](jjeh"]h$]h&]jj)jhuh1j1hjPhMhj8hhubj)}(hhh]h)}(h'Input selector for dc_state_get_status.h]h'Input selector for dc_state_get_status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jhj8hhhjPhMubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(hXC**Definition**:: struct dc_get_status_options { struct dc_state *state; uint32_t types; const struct dc_stream_state *stream; const struct dc_probe_state *probe; }; **Members** ``state`` source state to read status from ``types`` OR of dc_get_status_type values selecting classes to populate ``stream`` optional stream filter for DC_GET_STATUS_STREAM. NULL means populate status for all streams in the state ``probe`` optional probe filter for DC_GET_STATUS_PROBE. NULL means populate status for all probes in the stateh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj)}(hstruct dc_get_status_options { struct dc_state *state; uint32_t types; const struct dc_stream_state *stream; const struct dc_probe_state *probe; };h]hstruct dc_get_status_options { struct dc_state *state; uint32_t types; const struct dc_stream_state *stream; const struct dc_probe_state *probe; };}hj¦sbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubh)}(h **Members**h]j)}(hjӦh]hMembers}(hjզhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjѦubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj)}(hhh](j )}(h+``state`` source state to read status from h](j)}(h ``state``h]j)}(hjh]hstate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h source state to read status fromh]h source state to read status from}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hH``types`` OR of dc_get_status_type values selecting classes to populate h](j)}(h ``types``h]j)}(hj+h]htypes}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj%ubj-)}(hhh]h)}(h=OR of dc_get_status_type values selecting classes to populateh]h=OR of dc_get_status_type values selecting classes to populate}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hMhjAubah}(h]h ]h"]h$]h&]uh1j,hj%ubeh}(h]h ]h"]h$]h&]uh1j hj@hMhjubj )}(ht``stream`` optional stream filter for DC_GET_STATUS_STREAM. NULL means populate status for all streams in the state h](j)}(h ``stream``h]j)}(hjdh]hstream}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj^ubj-)}(hhh]h)}(hhoptional stream filter for DC_GET_STATUS_STREAM. NULL means populate status for all streams in the stateh]hhoptional stream filter for DC_GET_STATUS_STREAM. NULL means populate status for all streams in the state}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjzubah}(h]h ]h"]h$]h&]uh1j,hj^ubeh}(h]h ]h"]h$]h&]uh1j hjyhMhjubj )}(ho``probe`` optional probe filter for DC_GET_STATUS_PROBE. NULL means populate status for all probes in the stateh](j)}(h ``probe``h]j)}(hjh]hprobe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(heoptional probe filter for DC_GET_STATUS_PROBE. NULL means populate status for all probes in the stateh]heoptional probe filter for DC_GET_STATUS_PROBE. NULL means populate status for all probes in the state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dc_state_status (C struct)c.dc_state_statushNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hdc_state_statush]j8)}(hstruct dc_state_statush](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubja)}(hdc_state_statush]jg)}(hjh]hdc_state_status}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhMhjhhubj)}(hhh]h)}(h3Output-only status object from dc_state_get_status.h]h3Output-only status object from dc_state_get_status.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj6hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jjjjQjjQjjjuh1j,hhhjȈhNhNubj)}(hX**Definition**:: struct dc_state_status { int stream_count; struct dc_stream_status *stream_status[MAX_STREAMS]; int probe_count; struct dc_probe_status *probe_status[MAX_PROBES]; }; **Members** ``stream_count`` number of valid entries in stream_status (DC_GET_STATUS_STREAM) ``stream_status`` pointers to live per-stream status entries ``probe_count`` number of valid entries in probe_status (DC_GET_STATUS_PROBE) ``probe_status`` pointers to live per-probe status entriesh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubh:}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjUubj)}(hstruct dc_state_status { int stream_count; struct dc_stream_status *stream_status[MAX_STREAMS]; int probe_count; struct dc_probe_status *probe_status[MAX_PROBES]; };h]hstruct dc_state_status { int stream_count; struct dc_stream_status *stream_status[MAX_STREAMS]; int probe_count; struct dc_probe_status *probe_status[MAX_PROBES]; };}hjvsbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjUubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjUubj)}(hhh](j )}(hQ``stream_count`` number of valid entries in stream_status (DC_GET_STATUS_STREAM) h](j)}(h``stream_count``h]j)}(hjh]h stream_count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h?number of valid entries in stream_status (DC_GET_STATUS_STREAM)h]h?number of valid entries in stream_status (DC_GET_STATUS_STREAM)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h=``stream_status`` pointers to live per-stream status entries h](j)}(h``stream_status``h]j)}(hjߨh]h stream_status}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjݨubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj٨ubj-)}(hhh]h)}(h*pointers to live per-stream status entriesh]h*pointers to live per-stream status entries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hj٨ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hN``probe_count`` number of valid entries in probe_status (DC_GET_STATUS_PROBE) h](j)}(h``probe_count``h]j)}(hjh]h probe_count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h=number of valid entries in probe_status (DC_GET_STATUS_PROBE)h]h=number of valid entries in probe_status (DC_GET_STATUS_PROBE)}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMhj.ubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj-hMhjubj )}(h:``probe_status`` pointers to live per-probe status entriesh](j)}(h``probe_status``h]j)}(hjQh]h probe_status}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjKubj-)}(hhh]h)}(h)pointers to live per-probe status entriesh]h)pointers to live per-probe status entries}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjgubah}(h]h ]h"]h$]h&]uh1j,hjKubeh}(h]h ]h"]h$]h&]uh1j hjfhMhjubeh}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j' dc_state_get_status (C function)c.dc_state_get_statushNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hpenum dc_status dc_state_get_status (struct dc_state_status *status, const struct dc_get_status_options *options)h]j8)}(hoenum dc_status dc_state_get_status(struct dc_state_status *status, const struct dc_get_status_options *options)h](j>)}(hj$8h]henum}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubh)}(hhh]jg)}(h dc_statush]h dc_status}(hjʩhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjǩubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj̩modnameN classnameNj'j*)}j-]jR+)}jJ+dc_state_get_statussbc.dc_state_get_statusasbuh1hhjhhhjhMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubja)}(hdc_state_get_statush]jg)}(hjh]hdc_state_get_status}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMubj +)}(hM(struct dc_state_status *status, const struct dc_get_status_options *options)h](j+)}(hstruct dc_state_status *statush](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hj%hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(hdc_state_statush]hdc_state_status}(hj6hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetj8modnameN classnameNj'j*)}j-]jc.dc_state_get_statusasbuh1hhjubjP)}(h h]h }(hjThhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hjbhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(hstatush]hstatus}(hjohhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubj+)}(h+const struct dc_get_status_options *optionsh](j>)}(hj\h]hconst}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubj>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(hdc_get_status_optionsh]hdc_get_status_options}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjêmodnameN classnameNj'j*)}j-]jc.dc_state_get_statusasbuh1hhjubjP)}(h h]h }(hjߪhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(hoptionsh]hoptions}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubeh}(h]h ]h"]h$]h&]j~juh1j +hjhhhjhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhMhjhhubj)}(hhh]h)}(h%Unified status readback for dc_state.h]h%Unified status readback for dc_state.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj!hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj<jj<jjjuh1j,hhhjȈhNhNubj)}(hX**Parameters** ``struct dc_state_status *status`` output object populated according to options->types ``const struct dc_get_status_options *options`` selects the source state, status classes to fill, and filters **Return** DC_OK on success, DC_ERROR_UNEXPECTED if state is NULL.h](h)}(h**Parameters**h]j)}(hjFh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj@ubj)}(hhh](j )}(hW``struct dc_state_status *status`` output object populated according to options->types h](j)}(h"``struct dc_state_status *status``h]j)}(hjeh]hstruct dc_state_status *status}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj_ubj-)}(hhh]h)}(h3output object populated according to options->typesh]h3output object populated according to options->types}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhMhj{ubah}(h]h ]h"]h$]h&]uh1j,hj_ubeh}(h]h ]h"]h$]h&]uh1j hjzhMhj\ubj )}(hn``const struct dc_get_status_options *options`` selects the source state, status classes to fill, and filters h](j)}(h/``const struct dc_get_status_options *options``h]j)}(hjh]h+const struct dc_get_status_options *options}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h=selects the source state, status classes to fill, and filtersh]h=selects the source state, status classes to fill, and filters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj\ubeh}(h]h ]h"]h$]h&]uh1jhj@ubh)}(h **Return**h]j)}(hj٫h]hReturn}(hj۫hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj׫ubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj@ubh)}(h7DC_OK on success, DC_ERROR_UNEXPECTED if state is NULL.h]h7DC_OK on success, DC_ERROR_UNEXPECTED if state is NULL.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dc_validation_stream (C struct)c.dc_validation_streamhNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hdc_validation_streamh]j8)}(hstruct dc_validation_streamh](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hj,hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhj+hMubja)}(hdc_validation_streamh]jg)}(hjh]hdc_validation_stream}(hj>hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj:ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhj+hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhj+hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hj+hMhjhhubj)}(hhh]h)}(h4Per-stream surface/stream association for validationh]h4Per-stream surface/stream association for validation}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM* hj]hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj+hMubeh}(h]h ](jstructeh"]h$]h&]jjjjxjjxjjjuh1j,hhhjȈhNhNubj)}(hX/**Definition**:: struct dc_validation_stream { struct dc_stream_state *stream; struct dc_plane_state *plane_states[MAX_SURFACES]; uint8_t plane_count; }; **Members** ``stream`` Stream state properties ``plane_states`` Surface state ``plane_count`` Total of active planesh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM. hj|ubj)}(hstruct dc_validation_stream { struct dc_stream_state *stream; struct dc_plane_state *plane_states[MAX_SURFACES]; uint8_t plane_count; };h]hstruct dc_validation_stream { struct dc_stream_state *stream; struct dc_plane_state *plane_states[MAX_SURFACES]; uint8_t plane_count; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM0 hj|ubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM6 hj|ubj)}(hhh](j )}(h#``stream`` Stream state properties h](j)}(h ``stream``h]j)}(hjͬh]hstream}(hjϬhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjˬubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM/ hjǬubj-)}(hhh]h)}(hStream state propertiesh]hStream state properties}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM/ hjubah}(h]h ]h"]h$]h&]uh1j,hjǬubeh}(h]h ]h"]h$]h&]uh1j hjhM/ hjĬubj )}(h``plane_states`` Surface state h](j)}(h``plane_states``h]j)}(hjh]h plane_states}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM4 hjubj-)}(hhh]h)}(h Surface stateh]h Surface state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM4 hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM4 hjĬubj )}(h&``plane_count`` Total of active planesh](j)}(h``plane_count``h]j)}(hj?h]h plane_count}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM8 hj9ubj-)}(hhh]h)}(hTotal of active planesh]hTotal of active planes}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM9 hjUubah}(h]h ]h"]h$]h&]uh1j,hj9ubeh}(h]h ]h"]h$]h&]uh1j hjThM8 hjĬubeh}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dc_validation_set (C struct)c.dc_validation_sethNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hdc_validation_seth]j8)}(hstruct dc_validation_seth](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM? ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhM? ubja)}(hdc_validation_seth]jg)}(hjh]hdc_validation_set}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhM? ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhM? ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhM? hjhhubj)}(hhh]h)}(h7Root validation input grouping all streams for a commith]h7Root validation input grouping all streams for a commit}(hjۭhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM> hjحhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM? ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(hX**Definition**:: struct dc_validation_set { struct dc_validation_stream streams[MAX_STREAMS]; uint8_t stream_count; struct dc_probe_state probes[MAX_PROBES]; uint8_t probe_count; }; **Members** ``streams`` Per-stream entries (stream + its planes) ``stream_count`` Number of active entries in **streams** ``probes`` Global probe descriptors to validate alongside the streams ``probe_count`` Number of active entries in **probes**h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMB hjubj)}(hstruct dc_validation_set { struct dc_validation_stream streams[MAX_STREAMS]; uint8_t stream_count; struct dc_probe_state probes[MAX_PROBES]; uint8_t probe_count; };h]hstruct dc_validation_set { struct dc_validation_stream streams[MAX_STREAMS]; uint8_t stream_count; struct dc_probe_state probes[MAX_PROBES]; uint8_t probe_count; };}hjsbah}(h]h ]h"]h$]h&]j~juh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMD hjubh)}(h **Members**h]j)}(hj)h]hMembers}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMK hjubj)}(hhh](j )}(h5``streams`` Per-stream entries (stream + its planes) h](j)}(h ``streams``h]j)}(hjHh]hstreams}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMC hjBubj-)}(hhh]h)}(h(Per-stream entries (stream + its planes)h]h(Per-stream entries (stream + its planes)}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMC hj^ubah}(h]h ]h"]h$]h&]uh1j,hjBubeh}(h]h ]h"]h$]h&]uh1j hj]hMC hj?ubj )}(h9``stream_count`` Number of active entries in **streams** h](j)}(h``stream_count``h]j)}(hjh]h stream_count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMH hj{ubj-)}(hhh]h)}(h'Number of active entries in **streams**h](hNumber of active entries in }(hjhhhNhNubj)}(h **streams**h]hstreams}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMH hjubah}(h]h ]h"]h$]h&]uh1j,hj{ubeh}(h]h ]h"]h$]h&]uh1j hjhMH hj?ubj )}(hF``probes`` Global probe descriptors to validate alongside the streams h](j)}(h ``probes``h]j)}(hjȮh]hprobes}(hjʮhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjƮubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMM hj®ubj-)}(hhh]h)}(h:Global probe descriptors to validate alongside the streamsh]h:Global probe descriptors to validate alongside the streams}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjݮhMM hjޮubah}(h]h ]h"]h$]h&]uh1j,hj®ubeh}(h]h ]h"]h$]h&]uh1j hjݮhMM hj?ubj )}(h6``probe_count`` Number of active entries in **probes**h](j)}(h``probe_count``h]j)}(hjh]h probe_count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMQ hjubj-)}(hhh]h)}(h&Number of active entries in **probes**h](hNumber of active entries in }(hjhhhNhNubj)}(h **probes**h]hprobes}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMR hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMQ hj?ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'0dc_get_underflow_debug_data_for_otg (C function)%c.dc_get_underflow_debug_data_for_otghNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hvoid dc_get_underflow_debug_data_for_otg (struct dc *dc, unsigned int primary_otg_inst, struct dc_underflow_debug_data *out_data)h]j8)}(hvoid dc_get_underflow_debug_data_for_otg(struct dc *dc, unsigned int primary_otg_inst, struct dc_underflow_debug_data *out_data)h](j*)}(hvoidh]hvoid}(hjihhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjehhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM ubjP)}(h h]h }(hjxhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjehhhjwhM ubja)}(h#dc_get_underflow_debug_data_for_otgh]jg)}(h#dc_get_underflow_debug_data_for_otgh]h#dc_get_underflow_debug_data_for_otg}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjehhhjwhM ubj +)}(hX(struct dc *dc, unsigned int primary_otg_inst, struct dc_underflow_debug_data *out_data)h](j+)}(h struct dc *dch](j>)}(hjAh]hstruct}(hjhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubh)}(hhh]jg)}(hdch]hdc}(hjįhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjƯmodnameN classnameNj'j*)}j-]jR+)}jJ+jsb%c.dc_get_underflow_debug_data_for_otgasbuh1hhjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjubjg)}(hdch]hdc}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubj+)}(hunsigned int primary_otg_insth](j*)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjubjP)}(h h]h }(hj&hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubj*)}(hinth]hint}(hj4hhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjubjP)}(h h]h }(hjBhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjg)}(hprimary_otg_insth]hprimary_otg_inst}(hjPhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubj+)}(h(struct dc_underflow_debug_data *out_datah](j>)}(hjAh]hstruct}(hjihhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjeubjP)}(h h]h }(hjvhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjeubh)}(hhh]jg)}(hdc_underflow_debug_datah]hdc_underflow_debug_data}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]j%c.dc_get_underflow_debug_data_for_otgasbuh1hhjeubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjeubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjeubjg)}(hout_datah]hout_data}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjeubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubeh}(h]h ]h"]h$]h&]j~juh1j +hjehhhjwhM ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjahhhjwhM ubah}(h]j\ah ](jjeh"]h$]h&]jj)jhuh1j1hjwhM hj^hhubj)}(hhh]h)}(hRetrieve underflow debug data.h]hRetrieve underflow debug data.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM hjhhubah}(h]h ]h"]h$]h&]uh1jhj^hhhjwhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j,hhhjȈhNhNubj)}(hXA**Parameters** ``struct dc *dc`` Pointer to the display core context. ``unsigned int primary_otg_inst`` Instance index of the primary OTG that underflowed. ``struct dc_underflow_debug_data *out_data`` Pointer to a dc_underflow_debug_data struct to be filled with debug information. **Description** This function collects and logs underflow-related HW states when underflow happens, including OTG underflow status, current read positions, frame count, and per-HUBP debug data. The results are stored in the provided out_data structure for further analysis or logging.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM hjubj)}(hhh](j )}(h7``struct dc *dc`` Pointer to the display core context. h](j)}(h``struct dc *dc``h]j)}(hj+h]h struct dc *dc}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM hj%ubj-)}(hhh]h)}(h$Pointer to the display core context.h]h$Pointer to the display core context.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hM hjAubah}(h]h ]h"]h$]h&]uh1j,hj%ubeh}(h]h ]h"]h$]h&]uh1j hj@hM hj"ubj )}(hV``unsigned int primary_otg_inst`` Instance index of the primary OTG that underflowed. h](j)}(h!``unsigned int primary_otg_inst``h]j)}(hjdh]hunsigned int primary_otg_inst}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM hj^ubj-)}(hhh]h)}(h3Instance index of the primary OTG that underflowed.h]h3Instance index of the primary OTG that underflowed.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhM hjzubah}(h]h ]h"]h$]h&]uh1j,hj^ubeh}(h]h ]h"]h$]h&]uh1j hjyhM hj"ubj )}(h~``struct dc_underflow_debug_data *out_data`` Pointer to a dc_underflow_debug_data struct to be filled with debug information. h](j)}(h,``struct dc_underflow_debug_data *out_data``h]j)}(hjh]h(struct dc_underflow_debug_data *out_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM hjubj-)}(hhh]h)}(hPPointer to a dc_underflow_debug_data struct to be filled with debug information.h]hPPointer to a dc_underflow_debug_data struct to be filled with debug information.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM hj"ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjرh]h Description}(hjڱhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjֱubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM hjubh)}(hX This function collects and logs underflow-related HW states when underflow happens, including OTG underflow status, current read positions, frame count, and per-HUBP debug data. The results are stored in the provided out_data structure for further analysis or logging.h]hX This function collects and logs underflow-related HW states when underflow happens, including OTG underflow status, current read positions, frame count, and per-HUBP debug data. The results are stored in the provided out_data structure for further analysis or logging.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'/dc_capture_register_software_state (C function)$c.dc_capture_register_software_statehNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(habool dc_capture_register_software_state (struct dc *dc, struct dc_register_software_state *state)h]j8)}(h`bool dc_capture_register_software_state(struct dc *dc, struct dc_register_software_state *state)h](j*)}(hjah]hbool}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hj+hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhj*hMubja)}(h"dc_capture_register_software_stateh]jg)}(h"dc_capture_register_software_stateh]h"dc_capture_register_software_state}(hj=hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj9ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhj*hMubj +)}(h9(struct dc *dc, struct dc_register_software_state *state)h](j+)}(h struct dc *dch](j>)}(hjAh]hstruct}(hjYhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjUubjP)}(h h]h }(hjfhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjUubh)}(hhh]jg)}(hdch]hdc}(hjwhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjtubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjymodnameN classnameNj'j*)}j-]jR+)}jJ+j?sb$c.dc_capture_register_software_stateasbuh1hhjUubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjUubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjUubjg)}(hdch]hdc}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjUubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjQubj+)}(h(struct dc_register_software_state *stateh](j>)}(hjAh]hstruct}(hj˲hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjDzubjP)}(h h]h }(hjزhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjDzubh)}(hhh]jg)}(hdc_register_software_stateh]hdc_register_software_state}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]j$c.dc_capture_register_software_stateasbuh1hhjDzubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjDzubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjDzubjg)}(hstateh]hstate}(hj"hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjDzubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjQubeh}(h]h ]h"]h$]h&]j~juh1j +hjhhhj*hMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhj*hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hj*hMhjhhubj)}(hhh]h)}(h/Capture software state for register programmingh]h/Capture software state for register programming}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjIhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj*hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjdjjdjjjuh1j,hhhjȈhNhNubj)}(hXM**Parameters** ``struct dc *dc`` DC context containing current display configuration ``struct dc_register_software_state *state`` Pointer to dc_register_software_state structure to populate **Description** Extracts all software state variables that are used to program hardware register fields across the display driver pipeline. This provides a complete snapshot of the software configuration that drives hardware register programming. The function traverses the DC context and extracts values from: - Stream configurations (timing, format, DSC settings) - Plane states (surface format, rotation, scaling, cursor) - Pipe contexts (resource allocation, blending, viewport) - Clock manager (display clocks, DPP clocks, pixel clocks) - Resource context (DET buffer allocation, ODM configuration) This is essential for underflow debugging as it captures the exact software state that determines how registers are programmed, allowing analysis of whether underflow is caused by incorrect register programming or timing issues. **Return** true if state was successfully captured, false on errorh](h)}(h**Parameters**h]j)}(hjnh]h Parameters}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjhubj)}(hhh](j )}(hF``struct dc *dc`` DC context containing current display configuration h](j)}(h``struct dc *dc``h]j)}(hjh]h struct dc *dc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h3DC context containing current display configurationh]h3DC context containing current display configuration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hi``struct dc_register_software_state *state`` Pointer to dc_register_software_state structure to populate h](j)}(h,``struct dc_register_software_state *state``h]j)}(hjƳh]h(struct dc_register_software_state *state}(hjȳhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjijubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h;Pointer to dc_register_software_state structure to populateh]h;Pointer to dc_register_software_state structure to populate}(hj߳hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj۳hMhjܳubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hj۳hMhjubeh}(h]h ]h"]h$]h&]uh1jhjhubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjhubh)}(hExtracts all software state variables that are used to program hardware register fields across the display driver pipeline. This provides a complete snapshot of the software configuration that drives hardware register programming.h]hExtracts all software state variables that are used to program hardware register fields across the display driver pipeline. This provides a complete snapshot of the software configuration that drives hardware register programming.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjhubh)}(hXdThe function traverses the DC context and extracts values from: - Stream configurations (timing, format, DSC settings) - Plane states (surface format, rotation, scaling, cursor) - Pipe contexts (resource allocation, blending, viewport) - Clock manager (display clocks, DPP clocks, pixel clocks) - Resource context (DET buffer allocation, ODM configuration)h]hXdThe function traverses the DC context and extracts values from: - Stream configurations (timing, format, DSC settings) - Plane states (surface format, rotation, scaling, cursor) - Pipe contexts (resource allocation, blending, viewport) - Clock manager (display clocks, DPP clocks, pixel clocks) - Resource context (DET buffer allocation, ODM configuration)}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjhubh)}(hThis is essential for underflow debugging as it captures the exact software state that determines how registers are programmed, allowing analysis of whether underflow is caused by incorrect register programming or timing issues.h]hThis is essential for underflow debugging as it captures the exact software state that determines how registers are programmed, allowing analysis of whether underflow is caused by incorrect register programming or timing issues.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM hjhubh)}(h **Return**h]j)}(hjFh]hReturn}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjhubh)}(h7true if state was successfully captured, false on errorh]h7true if state was successfully captured, false on error}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'dc_get_qos_info (C function)c.dc_get_qos_infohNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(h>bool dc_get_qos_info (struct dc *dc, struct dc_qos_info *info)h]j8)}(h=bool dc_get_qos_info(struct dc *dc, struct dc_qos_info *info)h](j*)}(hjah]hbool}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhMubja)}(hdc_get_qos_infoh]jg)}(hdc_get_qos_infoh]hdc_get_qos_info}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhMubj +)}(h)(struct dc *dc, struct dc_qos_info *info)h](j+)}(h struct dc *dch](j>)}(hjAh]hstruct}(hjǴhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjôubjP)}(h h]h }(hjԴhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjôubh)}(hhh]jg)}(hdch]hdc}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjmodnameN classnameNj'j*)}j-]jR+)}jJ+jsbc.dc_get_qos_infoasbuh1hhjôubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjôubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjôubjg)}(hdch]hdc}(hj hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjôubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubj+)}(hstruct dc_qos_info *infoh](j>)}(hjAh]hstruct}(hj9hhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hj5ubjP)}(h h]h }(hjFhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj5ubh)}(hhh]jg)}(h dc_qos_infoh]h dc_qos_info}(hjWhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjTubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjYmodnameN classnameNj'j*)}j-]jc.dc_get_qos_infoasbuh1hhj5ubjP)}(h h]h }(hjuhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhj5ubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hj5ubjg)}(hinfoh]hinfo}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj5ubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjubeh}(h]h ]h"]h$]h&]j~juh1j +hjhhhjhMubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhMubah}(h]j~ah ](jjeh"]h$]h&]jj)jhuh1j1hjhMhjhhubj)}(hhh]h)}(h?Retrieve Quality of Service (QoS) information from display coreh]h?Retrieve Quality of Service (QoS) information from display core}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjҵjjҵjjjuh1j,hhhjȈhNhNubj)}(hX%**Parameters** ``struct dc *dc`` DC context containing current display configuration ``struct dc_qos_info *info`` Pointer to dc_qos_info structure to populate with QoS metrics **Description** This function retrieves QoS metrics from the display core that can be used by benchmark tools to analyze display system performance. The function may take several milliseconds to execute due to hardware measurement requirements. QoS information includes: - Bandwidth bounds (lower limits in Mbps) - Latency bounds (upper limits in nanoseconds) - Hardware-measured bandwidth metrics (peak/average in Mbps) - Hardware-measured latency metrics (maximum/average in nanoseconds) The function will populate the provided dc_qos_info structure with current QoS measurements. If hardware measurement functions are not available for the current DCN version, the function returns false with zero'd info structure. **Return** true if QoS information was successfully retrieved, false if measurement functions are unavailable or hardware measurements cannot be performedh](h)}(h**Parameters**h]j)}(hjܵh]h Parameters}(hj޵hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjڵubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjֵubj)}(hhh](j )}(hF``struct dc *dc`` DC context containing current display configuration h](j)}(h``struct dc *dc``h]j)}(hjh]h struct dc *dc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjubj-)}(hhh]h)}(h3DC context containing current display configurationh]h3DC context containing current display configuration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h[``struct dc_qos_info *info`` Pointer to dc_qos_info structure to populate with QoS metrics h](j)}(h``struct dc_qos_info *info``h]j)}(hj4h]hstruct dc_qos_info *info}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhj.ubj-)}(hhh]h)}(h=Pointer to dc_qos_info structure to populate with QoS metricsh]h=Pointer to dc_qos_info structure to populate with QoS metrics}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjJubah}(h]h ]h"]h$]h&]uh1j,hj.ubeh}(h]h ]h"]h$]h&]uh1j hjIhMhjubeh}(h]h ]h"]h$]h&]uh1jhjֵubh)}(h**Description**h]j)}(hjoh]h Description}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjֵubh)}(hThis function retrieves QoS metrics from the display core that can be used by benchmark tools to analyze display system performance. The function may take several milliseconds to execute due to hardware measurement requirements.h]hThis function retrieves QoS metrics from the display core that can be used by benchmark tools to analyze display system performance. The function may take several milliseconds to execute due to hardware measurement requirements.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjֵubh)}(hQoS information includes: - Bandwidth bounds (lower limits in Mbps) - Latency bounds (upper limits in nanoseconds) - Hardware-measured bandwidth metrics (peak/average in Mbps) - Hardware-measured latency metrics (maximum/average in nanoseconds)h]hQoS information includes: - Bandwidth bounds (lower limits in Mbps) - Latency bounds (upper limits in nanoseconds) - Hardware-measured bandwidth metrics (peak/average in Mbps) - Hardware-measured latency metrics (maximum/average in nanoseconds)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhMhjֵubh)}(hThe function will populate the provided dc_qos_info structure with current QoS measurements. If hardware measurement functions are not available for the current DCN version, the function returns false with zero'd info structure.h]hThe function will populate the provided dc_qos_info structure with current QoS measurements. If hardware measurement functions are not available for the current DCN version, the function returns false with zero’d info structure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM#hjֵubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM'hjֵubh)}(htrue if QoS information was successfully retrieved, false if measurement functions are unavailable or hardware measurements cannot be performedh]htrue if QoS information was successfully retrieved, false if measurement functions are unavailable or hardware measurements cannot be performed}(hjʶhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM(hjֵubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j'1dc_override_memory_bandwidth_request (C function)&c.dc_override_memory_bandwidth_requesthNtauh1jhjȈhhhNhNubj-)}(hhh](j2)}(hWunsigned int dc_override_memory_bandwidth_request (struct dc *dc, unsigned int bw_mbps)h]j8)}(hVunsigned int dc_override_memory_bandwidth_request(struct dc *dc, unsigned int bw_mbps)h](j*)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM.ubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhM.ubj*)}(hinth]hint}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjhhhjhM.ubjP)}(h h]h }(hj$hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjhhhjhM.ubja)}(h$dc_override_memory_bandwidth_requesth]jg)}(h$dc_override_memory_bandwidth_requesth]h$dc_override_memory_bandwidth_request}(hj6hhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhj2ubah}(h]h ](jyjzeh"]h$]h&]j~juh1j`hjhhhjhM.ubj +)}(h%(struct dc *dc, unsigned int bw_mbps)h](j+)}(h struct dc *dch](j>)}(hjAh]hstruct}(hjRhhhNhNubah}(h]h ]jJah"]h$]h&]uh1j=hjNubjP)}(h h]h }(hj_hhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjNubh)}(hhh]jg)}(hdch]hdc}(hjphhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjmubah}(h]h ]h"]h$]h&] refdomainjreftypejJ+ reftargetjrmodnameN classnameNj'j*)}j-]jR+)}jJ+j8sb&c.dc_override_memory_bandwidth_requestasbuh1hhjNubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjNubjf+)}(hji+h]h*}(hjhhhNhNubah}(h]h ]jr+ah"]h$]h&]uh1je+hjNubjg)}(hdch]hdc}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjNubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjJubj+)}(hunsigned int bw_mbpsh](j*)}(hunsignedh]hunsigned}(hjķhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjubjP)}(h h]h }(hjҷhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubj*)}(hinth]hint}(hjhhhNhNubah}(h]h ]j*ah"]h$]h&]uh1j*hjubjP)}(h h]h }(hjhhhNhNubah}(h]h ]j\ah"]h$]h&]uh1jOhjubjg)}(hbw_mbpsh]hbw_mbps}(hjhhhNhNubah}(h]h ]jrah"]h$]h&]uh1jfhjubeh}(h]h ]h"]h$]h&]noemphj~juh1j+hjJubeh}(h]h ]h"]h$]h&]j~juh1j +hjhhhjhM.ubeh}(h]h ]h"]h$]h&]j~jjuh1j7jjhjhhhjhM.ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1j1hjhM.hjhhubj)}(hhh]h)}(h|Override the DCN nominal memory bandwidth request sent to PMFW, independent of the current display mode. For debug use only.h]h|Override the DCN nominal memory bandwidth request sent to PMFW, independent of the current display mode. For debug use only.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM.hj#hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM.ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj>jj>jjjuh1j,hhhjȈhNhNubj)}(h**Parameters** ``struct dc *dc`` DC instance ``unsigned int bw_mbps`` requested bandwidth in MB/s; 0 clears the override **Return** capped bandwidth value actually applied (MB/s)h](h)}(h**Parameters**h]j)}(hjHh]h Parameters}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM2hjBubj)}(hhh](j )}(h``struct dc *dc`` DC instance h](j)}(h``struct dc *dc``h]j)}(hjgh]h struct dc *dc}(hjihhhNhNubah}(h]h ]yh"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM1hjaubj-)}(hhh]h)}(h DC instanceh]h DC instance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hM1hj}ubah}(h]h ]h"]h$]h&]uh1j,hjaubeh}(h]h ]h"]h$]h&]uh1j hj|hM1hj^ubj )}(hL``unsigned int bw_mbps`` requested bandwidth in MB/s; 0 clears the override h](j)}(h``unsigned int bw_mbps``h]j)}(hjh]hunsigned int bw_mbps}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM2hjubj-)}(hhh]h)}(h2requested bandwidth in MB/s; 0 clears the overrideh]h2requested bandwidth in MB/s; 0 clears the override}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM2hjubah}(h]h ]h"]h$]h&]uh1j,hjubeh}(h]h ]h"]h$]h&]uh1j hjhM2hj^ubeh}(h]h ]h"]h$]h&]uh1jhjBubh)}(h **Return**h]j)}(hj۸h]hReturn}(hjݸhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjٸubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM4hjBubh)}(h.capped bandwidth value actually applied (MB/s)h]h.capped bandwidth value actually applied (MB/s)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhv/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:74: ./drivers/gpu/drm/amd/display/dc/dc.hhM4hjBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhjȈhhhNhNubh)}(hThe color pipeline has undergone major changes between DCN hardware generations. What's possible to do before and after blending depends on hardware capabilities, as illustrated below by the DCN 2.0 and DCN 3.0 families schemas.h]hThe color pipeline has undergone major changes between DCN hardware generations. What’s possible to do before and after blending depends on hardware capabilities, as illustrated below by the DCN 2.0 and DCN 3.0 families schemas.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjȈhhubh)}(h)**DCN 2.0 family color caps and mapping**h]j)}(hjh]h%DCN 2.0 family color caps and mapping}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKRhjȈhhubkfigure kernel_figure)}(hhh]hfigure)}(hhh]himage)}(h+.. kernel-figure:: dcn2_cm_drm_current.svg h]h}(h]h ]h"]h$]h&]uri*gpu/amdgpu/display/dcn2_cm_drm_current.svg candidates}ji+jDsuh1j7hj4hhhKubah}(h]h ]h"]h$]h&]uh1j2hj/ubah}(h]h ]h"]h$]h&]uh1j-hjȈhhhhhKUubh)}(h)**DCN 3.0 family color caps and mapping**h]j)}(hjUh]h%DCN 3.0 family color caps and mapping}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhhhKVhjȈhhubj.)}(hhh]j3)}(hhh]j8)}(h+.. kernel-figure:: dcn3_cm_drm_current.svg h]h}(h]h ]h"]h$]h&]uri*gpu/amdgpu/display/dcn3_cm_drm_current.svgjE}ji+j{suh1j7hjmhhhKubah}(h]h ]h"]h$]h&]uh1j2hjjubah}(h]h ]h"]h$]h&]uh1j-hjȈhhhhhKYubeh}(h]j ah ]h"]-dc color capabilities between dcn generationsah$]h&]uh1hhjThhhhhK:ubeh}(h]jah ]h"]color management propertiesah$]h&]uh1hhhhhhhhK0ubh)}(hhh](h)}(hBlend Mode Propertiesh]hBlend Mode Properties}(hjhhhNhNubah}(h]h ]h"]h$]h&]hj2uh1hhjhhhhhK[ubh)}(hXPixel blend mode is a DRM plane composition property of :c:type:`drm_plane` used to describes how pixels from a foreground plane (fg) are composited with the background plane (bg). Here, we present main concepts of DRM blend mode to help to understand how this property is mapped to AMD DC interface. See more about this DRM property and the alpha blending equations in :ref:`DRM Plane Composition Properties `.h](h8Pixel blend mode is a DRM plane composition property of }(hjhhhNhNubh)}(h:c:type:`drm_plane`h]j)}(hjh]h drm_plane}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  drm_planeuh1hhhhK]hjubhX' used to describes how pixels from a foreground plane (fg) are composited with the background plane (bg). Here, we present main concepts of DRM blend mode to help to understand how this property is mapped to AMD DC interface. See more about this DRM property and the alpha blending equations in }(hjhhhNhNubh)}(hF:ref:`DRM Plane Composition Properties `h]hinline)}(hjչh]h DRM Plane Composition Properties}(hjٹhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1j׹hjӹubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj plane_composition_propertiesuh1hhhhK]hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK]hjhhubh)}(hXBasically, a blend mode sets the alpha blending equation for plane composition that fits the mode in which the alpha channel affects the state of pixel color values and, therefore, the resulted pixel color. For example, consider the following elements of the alpha blending equation:h]hXBasically, a blend mode sets the alpha blending equation for plane composition that fits the mode in which the alpha channel affects the state of pixel color values and, therefore, the resulted pixel color. For example, consider the following elements of the alpha blending equation:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjhhubh)}(hhh](h)}(hG*fg.rgb*: Each of the RGB component values from the foreground's pixel.h]h)}(hjh](jP)}(h*fg.rgb*h]hfg.rgb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjubhA: Each of the RGB component values from the foreground’s pixel.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKihjubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubh)}(h>*fg.alpha*: Alpha component value from the foreground's pixel.h]h)}(hj7h](jP)}(h *fg.alpha*h]hfg.alpha}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jPhj9ubh6: Alpha component value from the foreground’s pixel.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKjhj5ubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubh)}(h?*bg.rgb*: Each of the RGB component values from the background.h]h)}(hj\h](jP)}(h*bg.rgb*h]hbg.rgb}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jPhj^ubh7: Each of the RGB component values from the background.}(hj^hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKkhjZubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubh)}(h*plane_alpha*: Plane alpha value set by the **plane "alpha" property**, see more in :ref:`DRM Plane Composition Properties `. h]h)}(h*plane_alpha*: Plane alpha value set by the **plane "alpha" property**, see more in :ref:`DRM Plane Composition Properties `.h](jP)}(h *plane_alpha*h]h plane_alpha}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjubh: Plane alpha value set by the }(hjhhhNhNubj)}(h**plane "alpha" property**h]hplane “alpha” property}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, see more in }(hjhhhNhNubh)}(hF:ref:`DRM Plane Composition Properties `h]jع)}(hjh]h DRM Plane Composition Properties}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1j׹hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj plane_composition_propertiesuh1hhhhKlhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKlhjubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubeh}(h]h ]h"]h$]h&]j-j-uh1hhhhKihjhhubh)}(h&in the basic alpha blending equation::h]h%in the basic alpha blending equation:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKohjhhubj)}(h/out.rgb = alpha * fg.rgb + (1 - alpha) * bg.rgbh]h/out.rgb = alpha * fg.rgb + (1 - alpha) * bg.rgb}hjsbah}(h]h ]h"]h$]h&]j~juh1jhhhKqhjhhubh)}(h}the alpha channel value of each pixel in a plane is ignored and only the plane alpha affects the resulted pixel color values.h]h}the alpha channel value of each pixel in a plane is ignored and only the plane alpha affects the resulted pixel color values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjhhubh)}(hNDRM has three blend mode to define the blend formula in the plane composition:h]hNDRM has three blend mode to define the blend formula in the plane composition:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKvhjhhubh)}(hhh](h)}(h6**None**: Blend formula that ignores the pixel alpha. h]h)}(h5**None**: Blend formula that ignores the pixel alpha.h](j)}(h**None**h]hNone}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh-: Blend formula that ignores the pixel alpha.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKxhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h**Pre-multiplied**: Blend formula that assumes the pixel color values in a plane was already pre-multiplied by its own alpha channel before storage. h]h)}(h**Pre-multiplied**: Blend formula that assumes the pixel color values in a plane was already pre-multiplied by its own alpha channel before storage.h](j)}(h**Pre-multiplied**h]hPre-multiplied}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubh: Blend formula that assumes the pixel color values in a plane was already pre-multiplied by its own alpha channel before storage.}(hjFhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKzhjBubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hw**Coverage**: Blend formula that assumes the pixel color values were not pre-multiplied with the alpha channel values. h]h)}(hv**Coverage**: Blend formula that assumes the pixel color values were not pre-multiplied with the alpha channel values.h](j)}(h **Coverage**h]hCoverage}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubhj: Blend formula that assumes the pixel color values were not pre-multiplied with the alpha channel values.}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK}hjhubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]h ]h"]h$]h&]j-ji+uh1hhhhKxhjhhubh)}(hX1and pre-multiplied is the default pixel blend mode, that means, when no blend mode property is created or defined, DRM considers the plane's pixels has pre-multiplied color values. On IGT GPU tools, the kms_plane_alpha_blend test provides a set of subtests to verify plane alpha and blend mode properties.h]hX3and pre-multiplied is the default pixel blend mode, that means, when no blend mode property is created or defined, DRM considers the plane’s pixels has pre-multiplied color values. On IGT GPU tools, the kms_plane_alpha_blend test provides a set of subtests to verify plane alpha and blend mode properties.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hThe DRM blend mode and its elements are then mapped by AMDGPU display manager (DM) to program the blending configuration of the Multiple Pipe/Plane Combined (MPC), as follows:h]hThe DRM blend mode and its elements are then mapped by AMDGPU display manager (DM) to program the blending configuration of the Multiple Pipe/Plane Combined (MPC), as follows:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXTherefore, the blending configuration for a single MPCC instance on the MPC tree is defined by :c:type:`mpcc_blnd_cfg`, where :c:type:`pre_multiplied_alpha` is the alpha pre-multiplied mode flag used to set :c:type:`MPCC_ALPHA_MULTIPLIED_MODE`. It controls whether alpha is multiplied (true/false), being only true for DRM pre-multiplied blend mode. :c:type:`mpcc_alpha_blend_mode` defines the alpha blend mode regarding pixel alpha and plane alpha values. It sets one of the three modes for :c:type:`MPCC_ALPHA_BLND_MODE`, as described below.h](h_Therefore, the blending configuration for a single MPCC instance on the MPC tree is defined by }(hjhhhNhNubh)}(h:c:type:`mpcc_blnd_cfg`h]j)}(hjh]h mpcc_blnd_cfg}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  mpcc_blnd_cfguh1hhhhKhjubh, where }(hjhhhNhNubh)}(h:c:type:`pre_multiplied_alpha`h]j)}(hjݻh]hpre_multiplied_alpha}(hj߻hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjۻubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j pre_multiplied_alphauh1hhhhKhjubh3 is the alpha pre-multiplied mode flag used to set }(hjhhhNhNubh)}(h$:c:type:`MPCC_ALPHA_MULTIPLIED_MODE`h]j)}(hjh]hMPCC_ALPHA_MULTIPLIED_MODE}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j MPCC_ALPHA_MULTIPLIED_MODEuh1hhhhKhjubhk. It controls whether alpha is multiplied (true/false), being only true for DRM pre-multiplied blend mode. }(hjhhhNhNubh)}(h:c:type:`mpcc_alpha_blend_mode`h]j)}(hj#h]hmpcc_alpha_blend_mode}(hj%hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j mpcc_alpha_blend_modeuh1hhhhKhjubho defines the alpha blend mode regarding pixel alpha and plane alpha values. It sets one of the three modes for }(hjhhhNhNubh)}(h:c:type:`MPCC_ALPHA_BLND_MODE`h]j)}(hjFh]hMPCC_ALPHA_BLND_MODE}(hjHhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j MPCC_ALPHA_BLND_MODEuh1hhhhKhjubh, as described below.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhDM then maps the elements of `enum mpcc_alpha_blend_mode` to those in the DRM blend formula, as follows:h](hDM then maps the elements of }(hjmhhhNhNubhtitle_reference)}(h`enum mpcc_alpha_blend_mode`h]henum mpcc_alpha_blend_mode}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1juhjmubh/ to those in the DRM blend formula, as follows:}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](h)}(h\*MPC pixel alpha* matches *DRM fg.alpha* as the alpha component value from the plane's pixelh]h)}(h\*MPC pixel alpha* matches *DRM fg.alpha* as the alpha component value from the plane's pixelh](jP)}(h*MPC pixel alpha*h]hMPC pixel alpha}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjubh matches }(hjhhhNhNubjP)}(h*DRM fg.alpha*h]h DRM fg.alpha}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjubh6 as the alpha component value from the plane’s pixel}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h*MPC global alpha* matches *DRM plane_alpha* when the pixel alpha should be ignored and, therefore, pixel values are not pre-multipliedh]h)}(h*MPC global alpha* matches *DRM plane_alpha* when the pixel alpha should be ignored and, therefore, pixel values are not pre-multipliedh](jP)}(h*MPC global alpha*h]hMPC global alpha}(hjҼhhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjμubh matches }(hjμhhhNhNubjP)}(h*DRM plane_alpha*h]hDRM plane_alpha}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjμubh[ when the pixel alpha should be ignored and, therefore, pixel values are not pre-multiplied}(hjμhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjʼubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(h*MPC global gain* assumes *MPC global alpha* value when both *DRM fg.alpha* and *DRM plane_alpha* participate in the blend equation h]h)}(h*MPC global gain* assumes *MPC global alpha* value when both *DRM fg.alpha* and *DRM plane_alpha* participate in the blend equationh](jP)}(h*MPC global gain*h]hMPC global gain}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjubh assumes }(hjhhhNhNubjP)}(h*MPC global alpha*h]hMPC global alpha}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjubh value when both }(hjhhhNhNubjP)}(h*DRM fg.alpha*h]h DRM fg.alpha}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjubh and }(hjhhhNhNubjP)}(h*DRM plane_alpha*h]hDRM plane_alpha}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjubh" participate in the blend equation}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]h ]h"]h$]h&]j-ji+uh1hhhhKhjhhubh)}(hXhIn short, *fg.alpha* is ignored by selecting :c:type:`MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA`. On the other hand, (plane_alpha * fg.alpha) component becomes available by selecting :c:type:`MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN`. And the :c:type:`MPCC_ALPHA_MULTIPLIED_MODE` defines if the pixel color values are pre-multiplied by alpha or not.h](h In short, }(hjdhhhNhNubjP)}(h *fg.alpha*h]hfg.alpha}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jPhjdubh is ignored by selecting }(hjdhhhNhNubh)}(h,:c:type:`MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA`h]j)}(hjh]h"MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j "MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHAuh1hhhhKhjdubhW. On the other hand, (plane_alpha * fg.alpha) component becomes available by selecting }(hjdhhhNhNubh)}(hD:c:type:`MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN`h]j)}(hjh]h:MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j :MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAINuh1hhhhKhjdubh . And the }(hjdhhhNhNubh)}(h$:c:type:`MPCC_ALPHA_MULTIPLIED_MODE`h]j)}(hjƽh]hMPCC_ALPHA_MULTIPLIED_MODE}(hjȽhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjĽubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j MPCC_ALPHA_MULTIPLIED_MODEuh1hhhhKhjdubhF defines if the pixel color values are pre-multiplied by alpha or not.}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](h)}(hBlend configuration flowh]hBlend configuration flow}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjQuh1hhjhhhhhKubh)}(hYThe alpha blending equation is configured from DRM to DC interface by the following path:h]hYThe alpha blending equation is configured from DRM to DC interface by the following path:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjY)}(hhh](h)}(hX%When updating a :c:type:`drm_plane_state `, DM calls :c:type:`amdgpu_dm_plane_fill_blending_from_plane_state()` that maps :c:type:`drm_plane_state ` attributes to :c:type:`dc_plane_info ` struct to be handled in the OS-agnostic component (DC). h]h)}(hX$When updating a :c:type:`drm_plane_state `, DM calls :c:type:`amdgpu_dm_plane_fill_blending_from_plane_state()` that maps :c:type:`drm_plane_state ` attributes to :c:type:`dc_plane_info ` struct to be handled in the OS-agnostic component (DC).h](hWhen updating a }(hjhhhNhNubh)}(h+:c:type:`drm_plane_state `h]j)}(hjh]hdrm_plane_state}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j drm_plane_stateuh1hhhhKhjubh , DM calls }(hjhhhNhNubh)}(h::c:type:`amdgpu_dm_plane_fill_blending_from_plane_state()`h]j)}(hj@h]h0amdgpu_dm_plane_fill_blending_from_plane_state()}(hjBhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j 0amdgpu_dm_plane_fill_blending_from_plane_state()uh1hhhhKhjubh that maps }(hjhhhNhNubh)}(h+:c:type:`drm_plane_state `h]j)}(hjch]hdrm_plane_state}(hjehhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j drm_plane_stateuh1hhhhKhjubh attributes to }(hjhhhNhNubh)}(h':c:type:`dc_plane_info `h]j)}(hjh]h dc_plane_info}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  dc_plane_infouh1hhhhKhjubh8 struct to be handled in the OS-agnostic component (DC).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubh)}(hOn DC interface, :c:type:`struct mpcc_blnd_cfg ` programs the MPCC blend configuration considering the :c:type:`dc_plane_info ` input from DPP. h]h)}(hOn DC interface, :c:type:`struct mpcc_blnd_cfg ` programs the MPCC blend configuration considering the :c:type:`dc_plane_info ` input from DPP.h](hOn DC interface, }(hjhhhNhNubh)}(h.:c:type:`struct mpcc_blnd_cfg `h]j)}(hjh]hstruct mpcc_blnd_cfg}(hjþhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  mpcc_blnd_cfguh1hhhhKhjubh7 programs the MPCC blend configuration considering the }(hjhhhNhNubh)}(h':c:type:`dc_plane_info `h]j)}(hjh]h dc_plane_info}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj'j+j  dc_plane_infouh1hhhhKhjubh input from DPP.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj hhhhhNubeh}(h]h ]h"]h$]h&]jiZjjZjkZhjlZjmZuh1jYhjhhhhhKubeh}(h]jWah ]h"]blend configuration flowah$]h&]uh1hhjhhhhhKubeh}(h]j8ah ]h"]blend mode propertiesah$]h&]uh1hhhhhhhhK[ubh)}(hhh](h)}(hDisplay Propertiesh]hDisplay Properties}(hj(hhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhj%hhhhhKubh)}(hThe 'adaptive backlight modulation' property is used for the compositor to directly control the adaptive backlight modulation power savings feature that is part of DCN hardware.h]hThe ‘adaptive backlight modulation’ property is used for the compositor to directly control the adaptive backlight modulation power savings feature that is part of DCN hardware.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:188: ./drivers/gpu/drm/amd/amdgpu/amdgpu_display.chMhj%hhubh)}(hIThe property will be attached specifically to eDP panels that support it.h]hIThe property will be attached specifically to eDP panels that support it.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:188: ./drivers/gpu/drm/amd/amdgpu/amdgpu_display.chMhj%hhubh)}(hXThe property is by default set to 'sysfs' to allow the sysfs file 'panel_power_savings' to be able to control it. If set to 'off' the compositor will ensure it stays off. The other values 'min', 'bias min', 'bias max', and 'max' will control the intensity of the power savings.h]hX1The property is by default set to ‘sysfs’ to allow the sysfs file ‘panel_power_savings’ to be able to control it. If set to ‘off’ the compositor will ensure it stays off. The other values ‘min’, ‘bias min’, ‘bias max’, and ‘max’ will control the intensity of the power savings.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:188: ./drivers/gpu/drm/amd/amdgpu/amdgpu_display.chMhj%hhubh)}(hQModifying this value can have implications on color accuracy, so tread carefully.h]hQModifying this value can have implications on color accuracy, so tread carefully.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hh/var/lib/git/docbuild/linux/Documentation/gpu/amdgpu/display/display-manager:188: ./drivers/gpu/drm/amd/amdgpu/amdgpu_display.chMhj%hhubeh}(h]jah ]h"]display propertiesah$]h&]uh1hhhhhhhhKubeh}(h]jah ]h"]amdgpu display managerah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceȟ _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j}jjjj.jjPjAjTjcjjjhWjjWYjjZjjj j"j8jjWjvju nametypes}(j}jj.jPjTjjhWjWYjZjj"jjvuh}(jhjhj)j3jjjjjj j j j j j[ j` jjjCjHjjjjjjj%(j*(jjg*j*j*j0-j5-jAj.j0j0j42j92j3j3jf7jk7j9j:j;j;je=jj=j8@j=@jAjAj:Cj?CjdEjiEjGjGjHjHj KjKjjLjoLjMjMj OjOjcjPjPjPjrRjwRjjTjjAVjjkWjjZYjZjZj[j[ju^jz^j`j`j9cj>cjejej0hj5hjujjzjjljljpjpjGsjLsjzvjvjyjyjX}j]}jjjjjƒjǃjڅj߅j jȈj(j-jjj&j+jjjjjjj>jCjjjDjIjjjj jjjjj~jjjj j%j6j;jjjjjjjjj\jajjj~jjjj8jjWjjj%hhjjj;j2j]jTjjvjjjjjjjjj2j)jQjHjjvu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jK sRparse_messages]transform_messages] transformerN include_log] decorationNhhub.