€•<Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ-/translations/zh_CN/gpu/intel-display/hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/zh_TW/gpu/intel-display/hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/it_IT/gpu/intel-display/hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ja_JP/gpu/intel-display/hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ko_KR/gpu/intel-display/hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/pt_BR/gpu/intel-display/hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/sp_SP/gpu/intel-display/hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒSPDX-License-Identifier: MIT”h]”hŒSPDX-License-Identifier: MIT”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒG/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug.rst”h´Kubh¶)�”}”(hŒ#Copyright © 2026 Intel Corporation”h]”hŒ#Copyright © 2026 Intel Corporation”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒHotplug”h]”hŒHotplug”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒÜSimply put, hotplug occurs when a display is connected to or disconnected from the system. However, there may be adapters and docking stations and Display Port short pulses and MST devices involved, complicating matters.”h]”hŒÜSimply put, hotplug occurs when a display is connected to or disconnected from the system. However, there may be adapters and docking stations and Display Port short pulses and MST devices involved, complicating matters.”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œu/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:7: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K+hhØh²hubhì)�”}”(hŒCHotplug in i915 is handled in many different levels of abstraction.”h]”hŒCHotplug in i915 is handled in many different levels of abstraction.”…”�”}”(hhüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œu/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:7: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K/hhØh²hubhì)�”}”(hXThe platform dependent interrupt handling code in i915_irq.c enables, disables, and does preliminary handling of the interrupts. The interrupt handlers gather the hotplug detect (HPD) information from relevant registers into a platform independent mask of hotplug pins that have fired.”h]”hXThe platform dependent interrupt handling code in i915_irq.c enables, disables, and does preliminary handling of the interrupts. The interrupt handlers gather the hotplug detect (HPD) information from relevant registers into a platform independent mask of hotplug pins that have fired.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œu/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:7: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K1hhØh²hubhì)�”}”(hŒîThe platform independent interrupt handler intel_hpd_irq_handler() in intel_hotplug.c does hotplug irq storm detection and mitigation, and passes further processing to appropriate bottom halves (Display Port specific and regular hotplug).”h]”hŒîThe platform independent interrupt handler intel_hpd_irq_handler() in intel_hotplug.c does hotplug irq storm detection and mitigation, and passes further processing to appropriate bottom halves (Display Port specific and regular hotplug).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œu/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:7: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K6hhØh²hubhì)�”}”(hŒöThe Display Port work function i915_digport_work_func() calls into intel_dp_hpd_pulse() via hooks, which handles DP short pulses and DP MST long pulses, with failures and non-MST long pulses triggering regular hotplug processing on the connector.”h]”hŒöThe Display Port work function i915_digport_work_func() calls into intel_dp_hpd_pulse() via hooks, which handles DP short pulses and DP MST long pulses, with failures and non-MST long pulses triggering regular hotplug processing on the connector.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œu/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:7: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K;hhØh²hubhì)�”}”(hŒÎThe regular hotplug work function i915_hotplug_work_func() calls connector detect hooks, and, if connector status changes, triggers sending of hotplug uevent to userspace via drm_kms_helper_hotplug_event().”h]”hŒÎThe regular hotplug work function i915_hotplug_work_func() calls connector detect hooks, and, if connector status changes, triggers sending of hotplug uevent to userspace via drm_kms_helper_hotplug_event().”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œu/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:7: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K@hhØh²hubhì)�”}”(hŒ‹Finally, the userspace is responsible for triggering a modeset upon receiving the hotplug uevent, disabling or enabling the crtc as needed.”h]”hŒ‹Finally, the userspace is responsible for triggering a modeset upon receiving the hotplug uevent, disabling or enabling the crtc as needed.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œu/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:7: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´KDhhØh²hubhì)�”}”(hX�The hotplug interrupt storm detection and mitigation code keeps track of the number of interrupts per hotplug pin per a period of time, and if the number of interrupts exceeds a certain threshold, the interrupt is disabled for a while before being re-enabled. The intention is to mitigate issues raising from broken hardware triggering massive amounts of interrupts and grinding the system to a halt.”h]”hX�The hotplug interrupt storm detection and mitigation code keeps track of the number of interrupts per hotplug pin per a period of time, and if the number of interrupts exceeds a certain threshold, the interrupt is disabled for a while before being re-enabled. The intention is to mitigate issues raising from broken hardware triggering massive amounts of interrupts and grinding the system to a halt.”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œu/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:7: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´KGhhØh²hubhì)�”}”(hXñCurrent implementation expects that hotplug interrupt storm will not be seen when display port sink is connected, hence on platforms whose DP callback is handled by i915_digport_work_func reenabling of hpd is not performed (it was never expected to be disabled in the first place ;) ) this is specific to DP sinks handled by this routine and any other display such as HDMI or DVI enabled on the same port will have proper logic since it will use i915_hotplug_work_func where this logic is handled.”h]”hXñCurrent implementation expects that hotplug interrupt storm will not be seen when display port sink is connected, hence on platforms whose DP callback is handled by i915_digport_work_func reenabling of hpd is not performed (it was never expected to be disabled in the first place ;) ) this is specific to DP sinks handled by this routine and any other display such as HDMI or DVI enabled on the same port will have proper logic since it will use i915_hotplug_work_func where this logic is handled.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œu/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:7: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´KNhhØh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ"intel_hpd_pin_default (C function)”Œc.intel_hpd_pin_default”hNt”auh1jthhØh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ3enum hpd_pin intel_hpd_pin_default (enum port port)”h]”hŒdesc_signature_line”“”)�”}”(hŒ2enum hpd_pin intel_hpd_pin_default(enum port port)”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒenum”h]”hŒenum”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j–hj’h²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´KZubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j¨hj’h²hh³j§h´KZubh)�”}”(hhh]”hŒ desc_sig_name”“”)�”}”(hŒhpd_pin”h]”hŒhpd_pin”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j¼hj¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”jÀŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jÛŒ ASTIdentifier”“”)�”}”jÖŒintel_hpd_pin_default”sbŒc.intel_hpd_pin_default”†”asbuh1hhj’h²hh³j§h´KZubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj’h²hh³j§h´KZubhŒ desc_name”“”)�”}”(hŒintel_hpd_pin_default”h]”j½)�”}”(hjæh]”hŒintel_hpd_pin_default”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjùubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1j÷hj’h²hh³j§h´KZubhŒdesc_parameterlist”“”)�”}”(hŒ(enum port port)”h]”hŒdesc_parameter”“”)�”}”(hŒenum port port”h]”(j—)�”}”(hjšh]”hŒenum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hjubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjubh)�”}”(hhh]”j½)�”}”(hŒport”h]”hŒport”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”j>Œmodname”NŒ classname”NjÚjÝ)�”}”jà]”jäŒc.intel_hpd_pin_default”†”asbuh1hhjubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjubj½)�”}”(hŒport”h]”hŒport”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj’h²hh³j§h´KZubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j�Œsphinx_line_type”Œ declarator”hjŒh²hh³j§h´KZubah}”(h]”jƒah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jŠh³j§h´KZhj‡h²hubhŒ desc_content”“”)�”}”(hhh]”hì)�”}”(hŒ0return default pin associated with certain port.”h]”hŒ0return default pin associated with certain port.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´KZhj™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hj‡h²hh³j§h´KZubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”Œdomain”jÔŒobjtype”j´Œdesctype”j´Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j…h²hhhØh³Nh´NubhŒ container”“”)�”}”(hŒ»**Parameters** ``enum port port`` the hpd port to get associated pin **Description** It is only valid and used by digital port encoder. Return pin that is associatade with **port**.”h]”(hì)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hjÆh]”hŒ Parameters”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K^hjÀubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ6``enum port port`` the hpd port to get associated pin ”h]”(hŒterm”“”)�”}”(hŒ``enum port port``”h]”hŒliteral”“”)�”}”(hjíh]”hŒenum port port”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K[hjåubhŒ definition”“”)�”}”(hhh]”hì)�”}”(hŒ"the hpd port to get associated pin”h]”hŒ"the hpd port to get associated pin”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´K[hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´K[hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÀubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hj,h]”hŒ Description”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K]hjÀubhì)�”}”(hŒ2It is only valid and used by digital port encoder.”h]”hŒ2It is only valid and used by digital port encoder.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K\hjÀubhì)�”}”(hŒ-Return pin that is associatade with **port**.”h]”(hŒ$Return pin that is associatade with ”…”�”}”(hjQh²hh³Nh´NubjÉ)�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQubhŒ.”…”�”}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K^hjÀubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubju)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œ'intel_hpd_irq_storm_detect (C function)”Œc.intel_hpd_irq_storm_detect”hNt”auh1jthhØh²hh³Nh´Nubj†)�”}”(hhh]”(j‹)�”}”(hŒ`bool intel_hpd_irq_storm_detect (struct intel_display *display, enum hpd_pin pin, bool long_hpd)”h]”j‘)�”}”(hŒ_bool intel_hpd_irq_storm_detect(struct intel_display *display, enum hpd_pin pin, bool long_hpd)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j’hjŽh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K|ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjŽh²hh³j£h´K|ubjø)�”}”(hŒintel_hpd_irq_storm_detect”h]”j½)�”}”(hŒintel_hpd_irq_storm_detect”h]”hŒintel_hpd_irq_storm_detect”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj²ubah}”(h]”h ]”(j jeh"]”h$]”h&]”hÅhÆuh1j÷hjŽh²hh³j£h´K|ubj)�”}”(hŒ@(struct intel_display *display, enum hpd_pin pin, bool long_hpd)”h]”(j)�”}”(hŒstruct intel_display *display”h]”(j—)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hjÎubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjÎubh)�”}”(hhh]”j½)�”}”(hŒ intel_display”h]”hŒ intel_display”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”jóŒmodname”NŒ classname”NjÚjÝ)�”}”jà]”jã)�”}”jÖj¸sbŒc.intel_hpd_irq_storm_detect”†”asbuh1hhjÎubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjÎubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jhjÎubj½)�”}”(hŒdisplay”h]”hŒdisplay”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÊubj)�”}”(hŒenum hpd_pin pin”h]”(j—)�”}”(hjšh]”hŒenum”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hjEubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjEubh)�”}”(hhh]”j½)�”}”(hŒhpd_pin”h]”hŒhpd_pin”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”jiŒmodname”NŒ classname”NjÚjÝ)�”}”jà]”j Œc.intel_hpd_irq_storm_detect”†”asbuh1hhjEubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjEubj½)�”}”(hŒpin”h]”hŒpin”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÊubj)�”}”(hŒ bool long_hpd”h]”(j“)�”}”(hj–h]”hŒbool”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj¨ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj¨ubj½)�”}”(hŒlong_hpd”h]”hŒlong_hpd”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÊubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjŽh²hh³j£h´K|ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰ˆuh1j�jŠj‹hjŠh²hh³j£h´K|ubah}”(h]”j…ah ]”(j�j�eh"]”h$]”h&]”j”ˆj•)j–huh1jŠh³j£h´K|hj‡h²hubj˜)�”}”(hhh]”hì)�”}”(hŒ.gather stats and detect HPD IRQ storm on a pin”h]”hŒ.gather stats and detect HPD IRQ storm on a pin”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K|hjîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hj‡h²hh³j£h´K|ubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”j¸jÔj¹j jºj j»‰j¼‰j½‰uh1j…h²hhhØh³Nh´Nubj¿)�”}”(hX~**Parameters** ``struct intel_display *display`` display device ``enum hpd_pin pin`` the pin to gather stats on ``bool long_hpd`` whether the HPD IRQ was long or short **Description** Gather stats about HPD IRQs from the specified **pin**, and detect IRQ storms. Only the pin specific stats and state are changed, the caller is responsible for further action. The number of IRQs that are allowed within **HPD_STORM_DETECT_PERIOD** is stored in **display->hotplug.hpd_storm_threshold** which defaults to **HPD_STORM_DEFAULT_THRESHOLD**. Long IRQs count as +10 to this threshold, and short IRQs count as +1. If this threshold is exceeded, it's considered an IRQ storm and the IRQ state is set to **HPD_MARK_DISABLED**. By default, most systems will only count long IRQs towards :c:type:`display->hotplug `.hpd_storm_threshold. However, some older systems also suffer from short IRQ storms and must also track these. Because short IRQ storms are naturally caused by sideband interactions with DP MST devices, short IRQ detection is only enabled for systems without DP MST support. Systems which are new enough to support DP MST are far less likely to suffer from IRQ storms at all, so this is fine. The HPD threshold can be controlled through i915_hpd_storm_ctl in debugfs, and should only be adjusted for automated hotplug testing. Return true if an IRQ storm was detected on **pin**.”h]”(hì)�”}”(hŒ**Parameters**”h]”jÉ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K€hj ubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct intel_display *display`` display device ”h]”(jê)�”}”(hŒ!``struct intel_display *display``”h]”jð)�”}”(hj2h]”hŒstruct intel_display *display”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K}hj,ubj)�”}”(hhh]”hì)�”}”(hŒdisplay device”h]”hŒdisplay device”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jGh´K}hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jGh´K}hj)ubjä)�”}”(hŒ0``enum hpd_pin pin`` the pin to gather stats on ”h]”(jê)�”}”(hŒ``enum hpd_pin pin``”h]”jð)�”}”(hjkh]”hŒenum hpd_pin pin”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K~hjeubj)�”}”(hhh]”hì)�”}”(hŒthe pin to gather stats on”h]”hŒthe pin to gather stats on”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j€h´K~hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j€h´K~hj)ubjä)�”}”(hŒ8``bool long_hpd`` whether the HPD IRQ was long or short ”h]”(jê)�”}”(hŒ``bool long_hpd``”h]”jð)�”}”(hj¤h]”hŒ bool long_hpd”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Khjžubj)�”}”(hhh]”hì)�”}”(hŒ%whether the HPD IRQ was long or short”h]”hŒ%whether the HPD IRQ was long or short”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¹h´Khjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j¹h´Khj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hjßh]”hŒ Description”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K�hj ubhì)�”}”(hŒ¯Gather stats about HPD IRQs from the specified **pin**, and detect IRQ storms. Only the pin specific stats and state are changed, the caller is responsible for further action.”h]”(hŒ/Gather stats about HPD IRQs from the specified ”…”�”}”(hjõh²hh³Nh´NubjÉ)�”}”(hŒ**pin**”h]”hŒpin”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjõubhŒy, and detect IRQ storms. Only the pin specific stats and state are changed, the caller is responsible for further action.”…”�”}”(hjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K€hj ubhì)�”}”(hXdThe number of IRQs that are allowed within **HPD_STORM_DETECT_PERIOD** is stored in **display->hotplug.hpd_storm_threshold** which defaults to **HPD_STORM_DEFAULT_THRESHOLD**. Long IRQs count as +10 to this threshold, and short IRQs count as +1. If this threshold is exceeded, it's considered an IRQ storm and the IRQ state is set to **HPD_MARK_DISABLED**.”h]”(hŒ+The number of IRQs that are allowed within ”…”�”}”(hjh²hh³Nh´NubjÉ)�”}”(hŒ**HPD_STORM_DETECT_PERIOD**”h]”hŒHPD_STORM_DETECT_PERIOD”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubhŒ is stored in ”…”�”}”(hjh²hh³Nh´NubjÉ)�”}”(hŒ(**display->hotplug.hpd_storm_threshold**”h]”hŒ$display->hotplug.hpd_storm_threshold”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubhŒ which defaults to ”…”�”}”(hjh²hh³Nh´NubjÉ)�”}”(hŒ**HPD_STORM_DEFAULT_THRESHOLD**”h]”hŒHPD_STORM_DEFAULT_THRESHOLD”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubhŒ¢. Long IRQs count as +10 to this threshold, and short IRQs count as +1. If this threshold is exceeded, it’s considered an IRQ storm and the IRQ state is set to ”…”�”}”(hjh²hh³Nh´NubjÉ)�”}”(hŒ**HPD_MARK_DISABLED**”h]”hŒHPD_MARK_DISABLED”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K„hj ubhì)�”}”(hXçBy default, most systems will only count long IRQs towards :c:type:`display->hotplug `.hpd_storm_threshold. However, some older systems also suffer from short IRQ storms and must also track these. Because short IRQ storms are naturally caused by sideband interactions with DP MST devices, short IRQ detection is only enabled for systems without DP MST support. Systems which are new enough to support DP MST are far less likely to suffer from IRQ storms at all, so this is fine.”h]”(hŒ;By default, most systems will only count long IRQs towards ”…”�”}”(hjmh²hh³Nh´Nubh)�”}”(hŒ$:c:type:`display->hotplug `”h]”jð)�”}”(hjwh]”hŒdisplay->hotplug”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”(Œxref”jÔŒc-type”eh"]”h$]”h&]”uh1jïhjuubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œgpu/intel-display/hotplug”Œ refdomain”jÔŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jÚjÝ)�”}”jà]”sbŒ reftarget”Œdisplay”uh1hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´KŠhjmubhXˆ.hpd_storm_threshold. However, some older systems also suffer from short IRQ storms and must also track these. Because short IRQ storms are naturally caused by sideband interactions with DP MST devices, short IRQ detection is only enabled for systems without DP MST support. Systems which are new enough to support DP MST are far less likely to suffer from IRQ storms at all, so this is fine.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jšh´KŠhj ubhì)�”}”(hŒ…The HPD threshold can be controlled through i915_hpd_storm_ctl in debugfs, and should only be adjusted for automated hotplug testing.”h]”hŒ…The HPD threshold can be controlled through i915_hpd_storm_ctl in debugfs, and should only be adjusted for automated hotplug testing.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K’hj ubhì)�”}”(hŒ4Return true if an IRQ storm was detected on **pin**.”h]”(hŒ,Return true if an IRQ storm was detected on ”…”�”}”(hj´h²hh³Nh´NubjÉ)�”}”(hŒ**pin**”h]”hŒpin”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj´ubhŒ.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´K•hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubju)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œ"intel_hpd_trigger_irq (C function)”Œc.intel_hpd_trigger_irq”hNt”auh1jthhØh²hh³Nh´Nubj†)�”}”(hhh]”(j‹)�”}”(hŒ@void intel_hpd_trigger_irq (struct intel_digital_port *dig_port)”h]”j‘)�”}”(hŒ?void intel_hpd_trigger_irq(struct intel_digital_port *dig_port)”h]”(j“)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjñh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M¼ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjñh²hh³jh´M¼ubjø)�”}”(hŒintel_hpd_trigger_irq”h]”j½)�”}”(hŒintel_hpd_trigger_irq”h]”hŒintel_hpd_trigger_irq”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjubah}”(h]”h ]”(j jeh"]”h$]”h&]”hÅhÆuh1j÷hjñh²hh³jh´M¼ubj)�”}”(hŒ%(struct intel_digital_port *dig_port)”h]”j)�”}”(hŒ#struct intel_digital_port *dig_port”h]”(j—)�”}”(hjÔh]”hŒstruct”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hj.ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj.ubh)�”}”(hhh]”j½)�”}”(hŒintel_digital_port”h]”hŒintel_digital_port”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”jRŒmodname”NŒ classname”NjÚjÝ)�”}”jà]”jã)�”}”jÖjsbŒc.intel_hpd_trigger_irq”†”asbuh1hhj.ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj.ubj )�”}”(hj#h]”hŒ*”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj.ubj½)�”}”(hŒdig_port”h]”hŒdig_port”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj*ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjñh²hh³jh´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰ˆuh1j�jŠj‹hjíh²hh³jh´M¼ubah}”(h]”jèah ]”(j�j�eh"]”h$]”h&]”j”ˆj•)j–huh1jŠh³jh´M¼hjêh²hubj˜)�”}”(hhh]”hì)�”}”(hŒ#trigger an hpd irq event for a port”h]”hŒ#trigger an hpd irq event for a port”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M¼hj²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjêh²hh³jh´M¼ubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”j¸jÔj¹jÍjºjÍj»‰j¼‰j½‰uh1j…h²hhhØh³Nh´Nubj¿)�”}”(hŒç**Parameters** ``struct intel_digital_port *dig_port`` digital port **Description** Trigger an HPD interrupt event for the given port, emulating a short pulse generated by the sink, and schedule the dig port work to handle it.”h]”(hì)�”}”(hŒ**Parameters**”h]”jÉ)�”}”(hj×h]”hŒ Parameters”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MÀhjÑubjß)�”}”(hhh]”jä)�”}”(hŒ5``struct intel_digital_port *dig_port`` digital port ”h]”(jê)�”}”(hŒ'``struct intel_digital_port *dig_port``”h]”jð)�”}”(hjöh]”hŒ#struct intel_digital_port *dig_port”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M½hjðubj)�”}”(hhh]”hì)�”}”(hŒ digital port”h]”hŒ digital port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j h´M½hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M½hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÑubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hj1h]”hŒ Description”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M¿hjÑubhì)�”}”(hŒŽTrigger an HPD interrupt event for the given port, emulating a short pulse generated by the sink, and schedule the dig port work to handle it.”h]”hŒŽTrigger an HPD interrupt event for the given port, emulating a short pulse generated by the sink, and schedule the dig port work to handle it.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M¾hjÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubju)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œ"intel_hpd_irq_handler (C function)”Œc.intel_hpd_irq_handler”hNt”auh1jthhØh²hh³Nh´Nubj†)�”}”(hhh]”(j‹)�”}”(hŒWvoid intel_hpd_irq_handler (struct intel_display *display, u32 pin_mask, u32 long_mask)”h]”j‘)�”}”(hŒVvoid intel_hpd_irq_handler(struct intel_display *display, u32 pin_mask, u32 long_mask)”h]”(j“)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjrh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M<ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjrh²hh³j„h´M<ubjø)�”}”(hŒintel_hpd_irq_handler”h]”j½)�”}”(hŒintel_hpd_irq_handler”h]”hŒintel_hpd_irq_handler”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj“ubah}”(h]”h ]”(j jeh"]”h$]”h&]”hÅhÆuh1j÷hjrh²hh³j„h´M<ubj)�”}”(hŒ<(struct intel_display *display, u32 pin_mask, u32 long_mask)”h]”(j)�”}”(hŒstruct intel_display *display”h]”(j—)�”}”(hjÔh]”hŒstruct”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hj¯ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj¯ubh)�”}”(hhh]”j½)�”}”(hŒ intel_display”h]”hŒ intel_display”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”jÓŒmodname”NŒ classname”NjÚjÝ)�”}”jà]”jã)�”}”jÖj™sbŒc.intel_hpd_irq_handler”†”asbuh1hhj¯ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj¯ubj )�”}”(hj#h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯ubj½)�”}”(hŒdisplay”h]”hŒdisplay”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj«ubj)�”}”(hŒ u32 pin_mask”h]”(h)�”}”(hhh]”j½)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj% ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”j* Œmodname”NŒ classname”NjÚjÝ)�”}”jà]”jíŒc.intel_hpd_irq_handler”†”asbuh1hhj! ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj! ubj½)�”}”(hŒpin_mask”h]”hŒpin_mask”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj! ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj«ubj)�”}”(hŒ u32 long_mask”h]”(h)�”}”(hhh]”j½)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjm ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”jr Œmodname”NŒ classname”NjÚjÝ)�”}”jà]”jíŒc.intel_hpd_irq_handler”†”asbuh1hhji ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hji ubj½)�”}”(hŒ long_mask”h]”hŒ long_mask”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hji ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj«ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjrh²hh³j„h´M<ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰ˆuh1j�jŠj‹hjnh²hh³j„h´M<ubah}”(h]”jiah ]”(j�j�eh"]”h$]”h&]”j”ˆj•)j–huh1jŠh³j„h´M<hjkh²hubj˜)�”}”(hhh]”hì)�”}”(hŒmain hotplug irq handler”h]”hŒmain hotplug irq handler”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M<hjà h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjkh²hh³j„h´M<ubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”j¸jÔj¹jÞ jºjÞ j»‰j¼‰j½‰uh1j…h²hhhØh³Nh´Nubj¿)�”}”(hXà**Parameters** ``struct intel_display *display`` display device ``u32 pin_mask`` a mask of hpd pins that have triggered the irq ``u32 long_mask`` a mask of hpd pins that may be long hpd pulses **Description** This is the main hotplug irq handler for all platforms. The platform specific irq handlers call the platform specific hotplug irq handlers, which read and decode the appropriate registers into bitmasks about hpd pins that have triggered (**pin_mask**), and which of those pins may be long pulses (**long_mask**). The **long_mask** is ignored if the port corresponding to the pin is not a digital port. Here, we do hotplug irq storm detection and mitigation, and pass further processing to appropriate bottom halves.”h]”(hì)�”}”(hŒ**Parameters**”h]”jÉ)�”}”(hjè h]”hŒ Parameters”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjæ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M@hjâ ubjß)�”}”(hhh]”(jä)�”}”(hŒ1``struct intel_display *display`` display device ”h]”(jê)�”}”(hŒ!``struct intel_display *display``”h]”jð)�”}”(hj h]”hŒstruct intel_display *display”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M=hj ubj)�”}”(hhh]”hì)�”}”(hŒdisplay device”h]”hŒdisplay device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j h´M=hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j h´M=hjþ ubjä)�”}”(hŒ@``u32 pin_mask`` a mask of hpd pins that have triggered the irq ”h]”(jê)�”}”(hŒ``u32 pin_mask``”h]”jð)�”}”(hj@ h]”hŒ u32 pin_mask”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M>hj: ubj)�”}”(hhh]”hì)�”}”(hŒ.a mask of hpd pins that have triggered the irq”h]”hŒ.a mask of hpd pins that have triggered the irq”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jU h´M>hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj: ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jU h´M>hjþ ubjä)�”}”(hŒA``u32 long_mask`` a mask of hpd pins that may be long hpd pulses ”h]”(jê)�”}”(hŒ``u32 long_mask``”h]”jð)�”}”(hjy h]”hŒ u32 long_mask”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M?hjs ubj)�”}”(hhh]”hì)�”}”(hŒ.a mask of hpd pins that may be long hpd pulses”h]”hŒ.a mask of hpd pins that may be long hpd pulses”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŽ h´M?hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jŽ h´M?hjþ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjâ ubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hj´ h]”hŒ Description”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj² ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MAhjâ ubhì)�”}”(hX‘This is the main hotplug irq handler for all platforms. The platform specific irq handlers call the platform specific hotplug irq handlers, which read and decode the appropriate registers into bitmasks about hpd pins that have triggered (**pin_mask**), and which of those pins may be long pulses (**long_mask**). The **long_mask** is ignored if the port corresponding to the pin is not a digital port.”h]”(hŒîThis is the main hotplug irq handler for all platforms. The platform specific irq handlers call the platform specific hotplug irq handlers, which read and decode the appropriate registers into bitmasks about hpd pins that have triggered (”…”�”}”(hjÊ h²hh³Nh´NubjÉ)�”}”(hŒ **pin_mask**”h]”hŒpin_mask”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÊ ubhŒ/), and which of those pins may be long pulses (”…”�”}”(hjÊ h²hh³Nh´NubjÉ)�”}”(hŒ **long_mask**”h]”hŒ long_mask”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÊ ubhŒ). The ”…”�”}”(hjÊ h²hh³Nh´NubjÉ)�”}”(hŒ **long_mask**”h]”hŒ long_mask”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÊ ubhŒG is ignored if the port corresponding to the pin is not a digital port.”…”�”}”(hjÊ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M@hjâ ubhì)�”}”(hŒqHere, we do hotplug irq storm detection and mitigation, and pass further processing to appropriate bottom halves.”h]”hŒqHere, we do hotplug irq storm detection and mitigation, and pass further processing to appropriate bottom halves.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MGhjâ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubju)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œintel_hpd_init (C function)”Œc.intel_hpd_init”hNt”auh1jthhØh²hh³Nh´Nubj†)�”}”(hhh]”(j‹)�”}”(hŒ3void intel_hpd_init (struct intel_display *display)”h]”j‘)�”}”(hŒ2void intel_hpd_init(struct intel_display *display)”h]”(j“)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj: h²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MÁubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj: h²hh³jL h´MÁubjø)�”}”(hŒintel_hpd_init”h]”j½)�”}”(hŒintel_hpd_init”h]”hŒintel_hpd_init”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj[ ubah}”(h]”h ]”(j jeh"]”h$]”h&]”hÅhÆuh1j÷hj: h²hh³jL h´MÁubj)�”}”(hŒ(struct intel_display *display)”h]”j)�”}”(hŒstruct intel_display *display”h]”(j—)�”}”(hjÔh]”hŒstruct”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hjw ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjw ubh)�”}”(hhh]”j½)�”}”(hŒ intel_display”h]”hŒ intel_display”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj– ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”j› Œmodname”NŒ classname”NjÚjÝ)�”}”jà]”jã)�”}”jÖja sbŒc.intel_hpd_init”†”asbuh1hhjw ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjw ubj )�”}”(hj#h]”hŒ*”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjw ubj½)�”}”(hŒdisplay”h]”hŒdisplay”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjw ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjs ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj: h²hh³jL h´MÁubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰ˆuh1j�jŠj‹hj6 h²hh³jL h´MÁubah}”(h]”j1 ah ]”(j�j�eh"]”h$]”h&]”j”ˆj•)j–huh1jŠh³jL h´MÁhj3 h²hubj˜)�”}”(hhh]”hì)�”}”(hŒ#initializes and enables hpd support”h]”hŒ#initializes and enables hpd support”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MÁhjû h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hj3 h²hh³jL h´MÁubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”j¸jÔj¹j jºj j»‰j¼‰j½‰uh1j…h²hhhØh³Nh´Nubj¿)�”}”(hXý**Parameters** ``struct intel_display *display`` display device instance **Description** This function enables the hotplug support. It requires that interrupts have already been enabled with intel_irq_init_hw(). From this point on hotplug and poll request can run concurrently to other code, so locking rules must be obeyed. This is a separate step from interrupt enabling to simplify the locking rules in the driver load and resume code. Also see: intel_hpd_poll_enable() and intel_hpd_poll_disable().”h]”(hì)�”}”(hŒ**Parameters**”h]”jÉ)�”}”(hj h]”hŒ Parameters”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MÅhj ubjß)�”}”(hhh]”jä)�”}”(hŒ:``struct intel_display *display`` display device instance ”h]”(jê)�”}”(hŒ!``struct intel_display *display``”h]”jð)�”}”(hj? h]”hŒstruct intel_display *display”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj= ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MÂhj9 ubj)�”}”(hhh]”hì)�”}”(hŒdisplay device instance”h]”hŒdisplay device instance”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jT h´MÂhjU ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj9 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jT h´MÂhj6 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj ubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hjz h]”hŒ Description”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MÄhj ubhì)�”}”(hŒëThis function enables the hotplug support. It requires that interrupts have already been enabled with intel_irq_init_hw(). From this point on hotplug and poll request can run concurrently to other code, so locking rules must be obeyed.”h]”hŒëThis function enables the hotplug support. It requires that interrupts have already been enabled with intel_irq_init_hw(). From this point on hotplug and poll request can run concurrently to other code, so locking rules must be obeyed.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MÃhj ubhì)�”}”(hŒqThis is a separate step from interrupt enabling to simplify the locking rules in the driver load and resume code.”h]”hŒqThis is a separate step from interrupt enabling to simplify the locking rules in the driver load and resume code.”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MÈhj ubhì)�”}”(hŒ?Also see: intel_hpd_poll_enable() and intel_hpd_poll_disable().”h]”hŒ?Also see: intel_hpd_poll_enable() and intel_hpd_poll_disable().”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MËhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubju)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œ"intel_hpd_poll_enable (C function)”Œc.intel_hpd_poll_enable”hNt”auh1jthhØh²hh³Nh´Nubj†)�”}”(hhh]”(j‹)�”}”(hŒ:void intel_hpd_poll_enable (struct intel_display *display)”h]”j‘)�”}”(hŒ9void intel_hpd_poll_enable(struct intel_display *display)”h]”(j“)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÙ h²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MRubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjÙ h²hh³jë h´MRubjø)�”}”(hŒintel_hpd_poll_enable”h]”j½)�”}”(hŒintel_hpd_poll_enable”h]”hŒintel_hpd_poll_enable”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjú ubah}”(h]”h ]”(j jeh"]”h$]”h&]”hÅhÆuh1j÷hjÙ h²hh³jë h´MRubj)�”}”(hŒ(struct intel_display *display)”h]”j)�”}”(hŒstruct intel_display *display”h]”(j—)�”}”(hjÔh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hj ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj ubh)�”}”(hhh]”j½)�”}”(hŒ intel_display”h]”hŒ intel_display”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj5 ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”j: Œmodname”NŒ classname”NjÚjÝ)�”}”jà]”jã)�”}”jÖj sbŒc.intel_hpd_poll_enable”†”asbuh1hhj ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj ubj )�”}”(hj#h]”hŒ*”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ubj½)�”}”(hŒdisplay”h]”hŒdisplay”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÙ h²hh³jë h´MRubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰ˆuh1j�jŠj‹hjÕ h²hh³jë h´MRubah}”(h]”jÐ ah ]”(j�j�eh"]”h$]”h&]”j”ˆj•)j–huh1jŠh³jë h´MRhjÒ h²hubj˜)�”}”(hhh]”hì)�”}”(hŒ&enable polling for connectors with hpd”h]”hŒ&enable polling for connectors with hpd”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MRhjš h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjÒ h²hh³jë h´MRubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”j¸jÔj¹jµ jºjµ j»‰j¼‰j½‰uh1j…h²hhhØh³Nh´Nubj¿)�”}”(hXK**Parameters** ``struct intel_display *display`` display device instance **Description** This function enables polling for all connectors which support HPD. Under certain conditions HPD may not be functional. On most Intel GPUs, this happens when we enter runtime suspend. On Valleyview and Cherryview systems, this also happens when we shut off all of the powerwells. Since this function can get called in contexts where we're already holding dev->mode_config.mutex, we do the actual hotplug enabling in a separate worker. Also see: intel_hpd_init() and intel_hpd_poll_disable().”h]”(hì)�”}”(hŒ**Parameters**”h]”jÉ)�”}”(hj¿ h]”hŒ Parameters”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj½ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MVhj¹ ubjß)�”}”(hhh]”jä)�”}”(hŒ:``struct intel_display *display`` display device instance ”h]”(jê)�”}”(hŒ!``struct intel_display *display``”h]”jð)�”}”(hjÞ h]”hŒstruct intel_display *display”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjÜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MShjØ ubj)�”}”(hhh]”hì)�”}”(hŒdisplay device instance”h]”hŒdisplay device instance”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jó h´MShjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jó h´MShjÕ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¹ ubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MUhj¹ ubhì)�”}”(hXThis function enables polling for all connectors which support HPD. Under certain conditions HPD may not be functional. On most Intel GPUs, this happens when we enter runtime suspend. On Valleyview and Cherryview systems, this also happens when we shut off all of the powerwells.”h]”hXThis function enables polling for all connectors which support HPD. Under certain conditions HPD may not be functional. On most Intel GPUs, this happens when we enter runtime suspend. On Valleyview and Cherryview systems, this also happens when we shut off all of the powerwells.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MThj¹ ubhì)�”}”(hŒšSince this function can get called in contexts where we're already holding dev->mode_config.mutex, we do the actual hotplug enabling in a separate worker.”h]”hŒœSince this function can get called in contexts where we’re already holding dev->mode_config.mutex, we do the actual hotplug enabling in a separate worker.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MZhj¹ ubhì)�”}”(hŒ8Also see: intel_hpd_init() and intel_hpd_poll_disable().”h]”hŒ8Also see: intel_hpd_init() and intel_hpd_poll_disable().”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M^hj¹ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubju)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œ#intel_hpd_poll_disable (C function)”Œc.intel_hpd_poll_disable”hNt”auh1jthhØh²hh³Nh´Nubj†)�”}”(hhh]”(j‹)�”}”(hŒ;void intel_hpd_poll_disable (struct intel_display *display)”h]”j‘)�”}”(hŒ:void intel_hpd_poll_disable(struct intel_display *display)”h]”(j“)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjxh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Muubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjxh²hh³jŠh´Muubjø)�”}”(hŒintel_hpd_poll_disable”h]”j½)�”}”(hŒintel_hpd_poll_disable”h]”hŒintel_hpd_poll_disable”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj™ubah}”(h]”h ]”(j jeh"]”h$]”h&]”hÅhÆuh1j÷hjxh²hh³jŠh´Muubj)�”}”(hŒ(struct intel_display *display)”h]”j)�”}”(hŒstruct intel_display *display”h]”(j—)�”}”(hjÔh]”hŒstruct”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hjµubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjµubh)�”}”(hhh]”j½)�”}”(hŒ intel_display”h]”hŒ intel_display”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”jÙŒmodname”NŒ classname”NjÚjÝ)�”}”jà]”jã)�”}”jÖjŸsbŒc.intel_hpd_poll_disable”†”asbuh1hhjµubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjµubj )�”}”(hj#h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjµubj½)�”}”(hŒdisplay”h]”hŒdisplay”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj±ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjxh²hh³jŠh´Muubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰ˆuh1j�jŠj‹hjth²hh³jŠh´Muubah}”(h]”joah ]”(j�j�eh"]”h$]”h&]”j”ˆj•)j–huh1jŠh³jŠh´Muhjqh²hubj˜)�”}”(hhh]”hì)�”}”(hŒ'disable polling for connectors with hpd”h]”hŒ'disable polling for connectors with hpd”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Muhj9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjqh²hh³jŠh´Muubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”j¸jÔj¹jTjºjTj»‰j¼‰j½‰uh1j…h²hhhØh³Nh´Nubj¿)�”}”(hX«**Parameters** ``struct intel_display *display`` display device instance **Description** This function disables polling for all connectors which support HPD. Under certain conditions HPD may not be functional. On most Intel GPUs, this happens when we enter runtime suspend. On Valleyview and Cherryview systems, this also happens when we shut off all of the powerwells. Since this function can get called in contexts where we're already holding dev->mode_config.mutex, we do the actual hotplug enabling in a separate worker. Also used during driver init to initialize connector->polled appropriately for all connectors. Also see: intel_hpd_init() and intel_hpd_poll_enable().”h]”(hì)�”}”(hŒ**Parameters**”h]”jÉ)�”}”(hj^h]”hŒ Parameters”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MyhjXubjß)�”}”(hhh]”jä)�”}”(hŒ:``struct intel_display *display`` display device instance ”h]”(jê)�”}”(hŒ!``struct intel_display *display``”h]”jð)�”}”(hj}h]”hŒstruct intel_display *display”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Mvhjwubj)�”}”(hhh]”hì)�”}”(hŒdisplay device instance”h]”hŒdisplay device instance”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j’h´Mvhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j’h´Mvhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjXubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hj¸h]”hŒ Description”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MxhjXubhì)�”}”(hXThis function disables polling for all connectors which support HPD. Under certain conditions HPD may not be functional. On most Intel GPUs, this happens when we enter runtime suspend. On Valleyview and Cherryview systems, this also happens when we shut off all of the powerwells.”h]”hXThis function disables polling for all connectors which support HPD. Under certain conditions HPD may not be functional. On most Intel GPUs, this happens when we enter runtime suspend. On Valleyview and Cherryview systems, this also happens when we shut off all of the powerwells.”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MwhjXubhì)�”}”(hŒšSince this function can get called in contexts where we're already holding dev->mode_config.mutex, we do the actual hotplug enabling in a separate worker.”h]”hŒœSince this function can get called in contexts where we’re already holding dev->mode_config.mutex, we do the actual hotplug enabling in a separate worker.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M}hjXubhì)�”}”(hŒ^Also used during driver init to initialize connector->polled appropriately for all connectors.”h]”hŒ^Also used during driver init to initialize connector->polled appropriately for all connectors.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M�hjXubhì)�”}”(hŒ7Also see: intel_hpd_init() and intel_hpd_poll_enable().”h]”hŒ7Also see: intel_hpd_init() and intel_hpd_poll_enable().”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M„hjXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubju)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œintel_hpd_block (C function)”Œc.intel_hpd_block”hNt”auh1jthhØh²hh³Nh´Nubj†)�”}”(hhh]”(j‹)�”}”(hŒ4void intel_hpd_block (struct intel_encoder *encoder)”h]”j‘)�”}”(hŒ3void intel_hpd_block(struct intel_encoder *encoder)”h]”(j“)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj&h²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Mubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj&h²hh³j8h´Mubjø)�”}”(hŒintel_hpd_block”h]”j½)�”}”(hŒintel_hpd_block”h]”hŒintel_hpd_block”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjGubah}”(h]”h ]”(j jeh"]”h$]”h&]”hÅhÆuh1j÷hj&h²hh³j8h´Mubj)�”}”(hŒ(struct intel_encoder *encoder)”h]”j)�”}”(hŒstruct intel_encoder *encoder”h]”(j—)�”}”(hjÔh]”hŒstruct”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hjcubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjcubh)�”}”(hhh]”j½)�”}”(hŒ intel_encoder”h]”hŒ intel_encoder”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”j‡Œmodname”NŒ classname”NjÚjÝ)�”}”jà]”jã)�”}”jÖjMsbŒc.intel_hpd_block”†”asbuh1hhjcubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjcubj )�”}”(hj#h]”hŒ*”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjcubj½)�”}”(hŒencoder”h]”hŒencoder”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj_ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj&h²hh³j8h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰ˆuh1j�jŠj‹hj"h²hh³j8h´Mubah}”(h]”jah ]”(j�j�eh"]”h$]”h&]”j”ˆj•)j–huh1jŠh³j8h´Mhjh²hubj˜)�”}”(hhh]”hì)�”}”(hŒ(Block handling of HPD IRQs on an HPD pin”h]”hŒ(Block handling of HPD IRQs on an HPD pin”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Mhjçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjh²hh³j8h´Mubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”j¸jÔj¹jjºjj»‰j¼‰j½‰uh1j…h²hhhØh³Nh´Nubj¿)�”}”(hXy**Parameters** ``struct intel_encoder *encoder`` Encoder to block the HPD handling for **Description** Blocks the handling of HPD IRQs on the HPD pin of **encoder**. On return: - It's guaranteed that the blocked encoders' HPD pulse handler (via intel_digital_port::hpd_pulse()) is not running. - The hotplug event handling (via intel_encoder::hotplug()) of an HPD IRQ pending at the time this function is called may be still running. - Detection on the encoder's connector (via drm_connector_helper_funcs::detect_ctx(), drm_connector_funcs::detect()) remains allowed, for instance as part of userspace connector probing, or DRM core's connector polling. The call must be followed by calling intel_hpd_unblock(), or intel_hpd_clear_and_unblock(). Note that the handling of HPD IRQs for another encoder using the same HPD pin as that of **encoder** will be also blocked.”h]”(hì)�”}”(hŒ**Parameters**”h]”jÉ)�”}”(hj h]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Mhjubjß)�”}”(hhh]”jä)�”}”(hŒH``struct intel_encoder *encoder`` Encoder to block the HPD handling for ”h]”(jê)�”}”(hŒ!``struct intel_encoder *encoder``”h]”jð)�”}”(hj+h]”hŒstruct intel_encoder *encoder”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”•ƒEh´Mhj%ubj)�”}”(hhh]”hì)�”}”(hŒ%Encoder to block the HPD handling for”h]”hŒ%Encoder to block the HPD handling for”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j@h´MhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³j@h´Mhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hjfh]”hŒ Description”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Mhjubhì)�”}”(hŒ>Blocks the handling of HPD IRQs on the HPD pin of **encoder**.”h]”(hŒ2Blocks the handling of HPD IRQs on the HPD pin of ”…”�”}”(hj|h²hh³Nh´NubjÉ)�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj|ubhŒ.”…”�”}”(hj|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Mhjubhì)�”}”(hŒ On return:”h]”hŒ On return:”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MhjubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒrIt's guaranteed that the blocked encoders' HPD pulse handler (via intel_digital_port::hpd_pulse()) is not running.”h]”hì)�”}”(hŒrIt's guaranteed that the blocked encoders' HPD pulse handler (via intel_digital_port::hpd_pulse()) is not running.”h]”hŒvIt’s guaranteed that the blocked encoders’ HPD pulse handler (via intel_digital_port::hpd_pulse()) is not running.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M!hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj®ubj²)�”}”(hŒ‰The hotplug event handling (via intel_encoder::hotplug()) of an HPD IRQ pending at the time this function is called may be still running.”h]”hì)�”}”(hŒ‰The hotplug event handling (via intel_encoder::hotplug()) of an HPD IRQ pending at the time this function is called may be still running.”h]”hŒ‰The hotplug event handling (via intel_encoder::hotplug()) of an HPD IRQ pending at the time this function is called may be still running.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M#hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj®ubj²)�”}”(hŒÚDetection on the encoder's connector (via drm_connector_helper_funcs::detect_ctx(), drm_connector_funcs::detect()) remains allowed, for instance as part of userspace connector probing, or DRM core's connector polling. ”h]”hì)�”}”(hŒÙDetection on the encoder's connector (via drm_connector_helper_funcs::detect_ctx(), drm_connector_funcs::detect()) remains allowed, for instance as part of userspace connector probing, or DRM core's connector polling.”h]”hŒÝDetection on the encoder’s connector (via drm_connector_helper_funcs::detect_ctx(), drm_connector_funcs::detect()) remains allowed, for instance as part of userspace connector probing, or DRM core’s connector polling.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M&hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj®ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j¬h³jÅh´M!hjubhì)�”}”(hŒ[The call must be followed by calling intel_hpd_unblock(), or intel_hpd_clear_and_unblock().”h]”hŒ[The call must be followed by calling intel_hpd_unblock(), or intel_hpd_clear_and_unblock().”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M+hjubhì)�”}”(hŒzNote that the handling of HPD IRQs for another encoder using the same HPD pin as that of **encoder** will be also blocked.”h]”(hŒYNote that the handling of HPD IRQs for another encoder using the same HPD pin as that of ”…”�”}”(hjh²hh³Nh´NubjÉ)�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubhŒ will be also blocked.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M.hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubju)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œintel_hpd_unblock (C function)”Œc.intel_hpd_unblock”hNt”auh1jthhØh²hh³Nh´Nubj†)�”}”(hhh]”(j‹)�”}”(hŒ6void intel_hpd_unblock (struct intel_encoder *encoder)”h]”j‘)�”}”(hŒ5void intel_hpd_unblock(struct intel_encoder *encoder)”h]”(j“)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjRh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MGubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hjRh²hh³jdh´MGubjø)�”}”(hŒintel_hpd_unblock”h]”j½)�”}”(hŒintel_hpd_unblock”h]”hŒintel_hpd_unblock”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjsubah}”(h]”h ]”(j jeh"]”h$]”h&]”hÅhÆuh1j÷hjRh²hh³jdh´MGubj)�”}”(hŒ(struct intel_encoder *encoder)”h]”j)�”}”(hŒstruct intel_encoder *encoder”h]”(j—)�”}”(hjÔh]”hŒstruct”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hj�ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj�ubh)�”}”(hhh]”j½)�”}”(hŒ intel_encoder”h]”hŒ intel_encoder”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”j³Œmodname”NŒ classname”NjÚjÝ)�”}”jà]”jã)�”}”jÖjysbŒc.intel_hpd_unblock”†”asbuh1hhj�ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj�ubj )�”}”(hj#h]”hŒ*”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�ubj½)�”}”(hŒencoder”h]”hŒencoder”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‹ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjRh²hh³jdh´MGubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰ˆuh1j�jŠj‹hjNh²hh³jdh´MGubah}”(h]”jIah ]”(j�j�eh"]”h$]”h&]”j”ˆj•)j–huh1jŠh³jdh´MGhjKh²hubj˜)�”}”(hhh]”hì)�”}”(hŒ*Unblock handling of HPD IRQs on an HPD pin”h]”hŒ*Unblock handling of HPD IRQs on an HPD pin”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MGhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjKh²hh³jdh´MGubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”j¸jÔj¹j.jºj.j»‰j¼‰j½‰uh1j…h²hhhØh³Nh´Nubj¿)�”}”(hXk**Parameters** ``struct intel_encoder *encoder`` Encoder to unblock the HPD handling for **Description** Unblock the handling of HPD IRQs on the HPD pin of **encoder**, which was previously blocked by intel_hpd_block(). Any HPD IRQ raised on the HPD pin while it was blocked will be handled for **encoder** and for any other encoder sharing the same HPD pin.”h]”(hì)�”}”(hŒ**Parameters**”h]”jÉ)�”}”(hj8h]”hŒ Parameters”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MKhj2ubjß)�”}”(hhh]”jä)�”}”(hŒJ``struct intel_encoder *encoder`` Encoder to unblock the HPD handling for ”h]”(jê)�”}”(hŒ!``struct intel_encoder *encoder``”h]”jð)�”}”(hjWh]”hŒstruct intel_encoder *encoder”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MHhjQubj)�”}”(hhh]”hì)�”}”(hŒ'Encoder to unblock the HPD handling for”h]”hŒ'Encoder to unblock the HPD handling for”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jlh´MHhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jlh´MHhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj2ubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hj’h]”hŒ Description”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MJhj2ubhì)�”}”(hŒýUnblock the handling of HPD IRQs on the HPD pin of **encoder**, which was previously blocked by intel_hpd_block(). Any HPD IRQ raised on the HPD pin while it was blocked will be handled for **encoder** and for any other encoder sharing the same HPD pin.”h]”(hŒ3Unblock the handling of HPD IRQs on the HPD pin of ”…”�”}”(hj¨h²hh³Nh´NubjÉ)�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¨ubhŒ€, which was previously blocked by intel_hpd_block(). Any HPD IRQ raised on the HPD pin while it was blocked will be handled for ”…”�”}”(hj¨h²hh³Nh´NubjÉ)�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¨ubhŒ4 and for any other encoder sharing the same HPD pin.”…”�”}”(hj¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´MIhj2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubju)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œ(intel_hpd_clear_and_unblock (C function)”Œc.intel_hpd_clear_and_unblock”hNt”auh1jthhØh²hh³Nh´Nubj†)�”}”(hhh]”(j‹)�”}”(hŒ@void intel_hpd_clear_and_unblock (struct intel_encoder *encoder)”h]”j‘)�”}”(hŒ?void intel_hpd_clear_and_unblock(struct intel_encoder *encoder)”h]”(j“)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj÷h²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M_ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj÷h²hh³j h´M_ubjø)�”}”(hŒintel_hpd_clear_and_unblock”h]”j½)�”}”(hŒintel_hpd_clear_and_unblock”h]”hŒintel_hpd_clear_and_unblock”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjubah}”(h]”h ]”(j jeh"]”h$]”h&]”hÅhÆuh1j÷hj÷h²hh³j h´M_ubj)�”}”(hŒ(struct intel_encoder *encoder)”h]”j)�”}”(hŒstruct intel_encoder *encoder”h]”(j—)�”}”(hjÔh]”hŒstruct”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j£ah"]”h$]”h&]”uh1j–hj4ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj4ubh)�”}”(hhh]”j½)�”}”(hŒ intel_encoder”h]”hŒ intel_encoder”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hjSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÔŒreftype”jÖŒ reftarget”jXŒmodname”NŒ classname”NjÚjÝ)�”}”jà]”jã)�”}”jÖjsbŒc.intel_hpd_clear_and_unblock”†”asbuh1hhj4ubj©)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jµah"]”h$]”h&]”uh1j¨hj4ubj )�”}”(hj#h]”hŒ*”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4ubj½)�”}”(hŒencoder”h]”hŒencoder”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jÉah"]”h$]”h&]”uh1j¼hj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj0ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj÷h²hh³j h´M_ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰ˆuh1j�jŠj‹hjóh²hh³j h´M_ubah}”(h]”jîah ]”(j�j�eh"]”h$]”h&]”j”ˆj•)j–huh1jŠh³j h´M_hjðh²hubj˜)�”}”(hhh]”hì)�”}”(hŒ.Unblock handling of new HPD IRQs on an HPD pin”h]”hŒ.Unblock handling of new HPD IRQs on an HPD pin”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M_hj¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjðh²hh³j h´M_ubeh}”(h]”h ]”(jÔŒfunction”eh"]”h$]”h&]”j¸jÔj¹jÓjºjÓj»‰j¼‰j½‰uh1j…h²hhhØh³Nh´Nubj¿)�”}”(hX@**Parameters** ``struct intel_encoder *encoder`` Encoder to unblock the HPD handling for **Description** Unblock the handling of HPD IRQs on the HPD pin of **encoder**, which was previously blocked by intel_hpd_block(). Any HPD IRQ raised on the HPD pin while it was blocked will be cleared, handling only new IRQs.”h]”(hì)�”}”(hŒ**Parameters**”h]”jÉ)�”}”(hjÝh]”hŒ Parameters”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Mchj×ubjß)�”}”(hhh]”jä)�”}”(hŒJ``struct intel_encoder *encoder`` Encoder to unblock the HPD handling for ”h]”(jê)�”}”(hŒ!``struct intel_encoder *encoder``”h]”jð)�”}”(hjüh]”hŒstruct intel_encoder *encoder”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jïhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jéh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´M`hjöubj)�”}”(hhh]”hì)�”}”(hŒ'Encoder to unblock the HPD handling for”h]”hŒ'Encoder to unblock the HPD handling for”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´M`hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãh³jh´M`hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj×ubhì)�”}”(hŒ**Description**”h]”jÉ)�”}”(hj7h]”hŒ Description”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Mbhj×ubhì)�”}”(hŒÒUnblock the handling of HPD IRQs on the HPD pin of **encoder**, which was previously blocked by intel_hpd_block(). Any HPD IRQ raised on the HPD pin while it was blocked will be cleared, handling only new IRQs.”h]”(hŒ3Unblock the handling of HPD IRQs on the HPD pin of ”…”�”}”(hjMh²hh³Nh´NubjÉ)�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjMubhŒ”, which was previously blocked by intel_hpd_block(). Any HPD IRQ raised on the HPD pin while it was blocked will be cleared, handling only new IRQs.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/intel-display/hotplug:10: ./drivers/gpu/drm/i915/display/intel_hotplug.c”h´Mahj×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¾hhØh²hh³Nh´Nubeh}”(h]”Œhotplug”ah ]”h"]”Œhotplug”ah$]”h&]”uh1hÖhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÛNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”jzjwsŒ nametypes”}”jz‰sh}”(jwhØjƒjŒj…jŠjèjíjijnj1 j6 jÐ jÕ jojtjj"jIjNjîjóuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.